회사 신입 면접시 손코딩 문제 혹은 질문으로 적당한게 뭐가 있을까요?
저는 개발한지 한 3년 6개월 정도 되었습니다.
현재는 회사에서 들어온지 5개월 정도 된, 신입을 교육하고 있습니다.
제가 만든 프로그램을 이 친구가 수정을 해야되고 짜야되서 한 한달정도 교육을 했는데요.
정확히 말하자면 C#에 관한 .NET의 전반적인 기술에 대한 강의라고 해야겠네요.
실제로 제 프로그램에서는 다양한 기술들이 사용됩니다.
그런데 알려주다보니 좀 놀라운 면이 있었습니다.
값형식과 참조형식을 설명하다가 스택과 힙에 대해서 물어보니 모르더군요.
모를 수 있다고 생각했는데, 갈수록 더한건...
Hashtable을 모르고, IPC에 관해서 간략한 질문을 했습니다.
공유메모리, 세마포어, 메세지큐, 파이프 등등... 질문하는 족족 처음 들어봤다고 하더군요.
그래도 4년제 대학 컴공 졸업자 인데요.
override를 왜 하냐고 물어봐도 눈을 껌뻑이고, 다형성을 설명하는데 많은 시간이 소요되었습니다.
(물론 모델링과 설계라는 부분이 같이 포함되어야 하기 때문에 이해하기 힘들수도 있다고 생각합니다.)
함수포인터도 처음 들어보고, callback도 처음들어보고... - -;;
모르는 것도 문제라고 생각하지만, 처음 들어봤다는 건... - -;;
그리고 솔직히 개발자는 How보다 Why를 깨우치고 있어야 된다고 생각하는데요. 그 Why에 대한 고민의 흔적이 별로 없어보였습니다.
그래서 이러한 것들을 걸르기 위해서 면접때 좀 심도 있는 질문이 필요할 것 같아요.
좋은 질문이나 손코딩 문제같은 것이 없을까요?
그리고 추가로, 이 친구 교육을 어떻게 해야할까요? 제가 화를 잘 내는 스타일이 아닌지라, 처음부터 끝까지 알려주고는 있어요.
소규모 프로젝트도 하라고 시키고는 있는데, 솔직히 잘 해낼지 의문이긴 해요.
운영체제 책도 추천해 주기도 했습니다. 뭐 좋은 방법이 없을까요?
숙제를 내주세요.
한 달 정도 일정으로 숙제 내세요.
교재를 정해주시거나, 아니면 주제만 던져주시고
하루에 한 2시간 정도 빠듯하게 공부해야 할 수 있을 정도로 숙제를 내세요.
그리고 무조건 구술로 검사하시구요.
하나하나 알려주는 것에 대한 거부감이 없으신듯 한데요,
신입사원도 그렇다면 그게 좋겠지요.
물론 버릇 나쁘게 들 수 있으니 조심하시구요.
신입사원 면접시에는 OS, 컴파일러, 프로그래밍 이론, 자료구조 및 알고리즘처럼
중요한 부분을 나누시고, 그 중에서 자신 있는 것 선택하게 한다음
어느 정도 수준인가를 검사하는 것이 좋을 듯 싶습니다.
하나라도 만족할만한 수준에 이르렀다면,
비록 접해보지 않은 회사 일이라도 충분히 해낼 수 있기 때문이죠.
무엇보다, 노력하려는 마인드에 비중을 두세요.
---------------------
Go to the U-City
----------------------------------------------------------------------------------------
Don't Feed the Trolls!
----------------------------------------------------------------------------------------
간단하면서 나름
간단하면서 나름 복잡하고 Why를 이해못하면 못짜는 그것 quicksort 아닐까요?
------------------------------
How many legs does a dog have?
------------------------------
How many legs does a dog have?
ㄷㄷㄷ
회사 면접시 칠판에다 quicksort를 짜라고 하면 과연 몇이나 제대로 짤 수 있을까요?
아무 것도 찾아보지 말고 칠판에 quicksort 짜라고 하면 짤 수 있으신 분?
void qsort(int a[],int
예외처리 없이 이정도면 될지 모르겠군요. 10분 정도 걸린 것 같네요.
손코딩이라 틀린 부분은 많겠지만 qsort 의도는 틀리지 않았을 것 같은데 의도만 이해하고 있다면야 문제가 없겠죠?
------------------------------
How many legs does a dog have?
------------------------------
How many legs does a dog have?
quicksort의 정의랄까
quicksort의 정의랄까 원리를 알고 있다면 짤 수 있을겁니다.
정의가 헷갈린다면 그 정의나 원리를 말로 설명해서 알려주면 정상적인 4년제 컴퓨터 관련 학과 전공자라면 짤 수 있는 사람은 많이 있을겁니다.
좀 긴장해서 요구하는 언어로 못 짠다고 하더라도 가장 익숙한 언어로 짜라고 하면 웬만한 실력 있는 사람들은 잘 짤걸요.
임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin
[예진아씨 피카사 웹앨범] 임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin
전 부정적입니다
주워들은 풍월로, quicksort는 자잘한 boundary case가 많아서 보기보다 어렵고 실수하기 매우 좋은 알고리즘이라고 알고 있습니다. 알고리즘 과목 기말고사라면 모를까, 시험치는 사람이 매우 긴장하게 되는 입사면접 문제로는 부적절하다고 생각합니다.
긴장하면 제 실력을 반도 못내는 사람들도 있으니까요. 게다가 "실수가 중요한 게 아니라 원리를 아느냐가 중요하다"라고 하지만 실제로 면접을 보는 당사자는 그렇게 생각 안할 확률이 높습니다. 반쯤 쓰다가 "앗 잠깐 이러면 배열 길이가 1일 때 망가질 텐데" 이런 생각하기 시작하면 실력있는 사람도 당황해서 어버버 얼어버릴 수 있죠. (한번 그렇게 되면 그 사람이 면접 시간 내에 다시 정신을 차리고 제 실력을 발휘하기는 매우 어렵습니다.)
갑이 등뒤에서 노려보는 상황에서 디버깅을 해야 하는 extreme SI programmer(...???)의 자질을 가려내는 데에는 매우 훌륭한 방법일 수도... 있겠습니다만... -.-;;;
* 면접인터뷰 깐깐하기로 유명한 다국적 검색기업 G모사 직원입니다. --;
혁..xxxgle..;;
면접 문제 출제 유형 보려 클릭했다가 댓글보고 놀란..;;
다른 댓글에서 Erlang
다른 댓글에서 Erlang 코드로도 나왔지만 in place일 필요가 없으면 퀵소트도 그렇게 짜기 복잡하지 않고요, 그렇지 않고 꼭 in place로 해야만 한다는 조건이 붙는다면 퀵소트보다는 머지소트가 더 깔끔한 면접 문제라고 생각합니다.
임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin
[예진아씨 피카사 웹앨범] 임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin
언어만 상관 없다면야 금방 짤듯 합니다.
대충 펑셔널로 짜면 3~4줄 안쪽에서 끝나니까요 ..
-export([qsort/1]).
qsort([]) -> [];
qsort([Pivot|T]) -> qsort([X || X <- T, X < Pivot]) ++ [Pivot] ++ qsort([X || X <- T, X >= Pivot]).
erlang 버전.
함수형 언어가
함수형 언어가 퀵소트만 잘 짤 수 있는 언어(...)라는 오해를 불러 일으키기 딱이죠. 게다가 저 코드는 공간 복잡도가 지나치게 크고, 최악의 경우 O(n^2) 공간 복잡도를 불러 일으킬 수 있습니다. 보통 공간 복잡도를 최적화하기 위해서는 제자리에서 정렬하게 하는 편이 낫습니다만 함수형 언어로 쓰기 편한 알고리즘인지는 모르겠습니다.
in place 로 하라는 조건이 없었으니 저렇게 짜도 되긴 하죠
뭐 이런 문제로 수십년간 플레임 워가 워낙에 많이 일어났었기 때문에 순수 함수형 언어에서 array library 등을 이용해 in place로 짜는 방법을 모아다 아예 따로 위키에 정리해 놓았더군요 -_-
http://www.haskell.org/haskellwiki/Introduction/Direct_Translation
임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin
[예진아씨 피카사 웹앨범] 임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin
몇몇 연구 결과에
몇몇 연구 결과에 따르면 직원 채용 시의 다양한 테스트 중에 나중에 만족도와 가장 높은 상관 관계를 보인 것은 앞으로 해야할 업무와 유사한 것을 시켜보는 것이라고 합니다. 그러니까 그 친구가 앞으로 해야할 업무를 잘 축소해서 시키면 알아서 필요한 내용을 공부하겠지요. 그리고, 그렇게 시켜보았을 때 결과가 만족스럽지 않으면 수습 단계에서 걸러내면-_-a
지금까지는 좀 단편적인 질문을 했었습니다만...
그러니까 좀 단편적인 질문이랑 단순한 코딩 같은 것을 질문했었습니다.
데드락이 뭐냐? 이런거요.
앞으로는 그런 것 보다는 문제 해결을 좀 시켜볼까 합니다. 물론 기술적인
지식도 중요하겠습니다만 그런건 미리 숙제로 들고 오라고 하는 정도로
검사할까 싶구요.
--
B/o/o/k/w/o/r/m/
--
Minimalist Programmer
맥주시험을 해보는 것도 좋은 방법입니다.
맥주시험.. 영어로 옮기면 Beer Test입니다.
(영어가 친숙해 지는 세상에 살고 있습니다)
신입사원과 맥주한잔 하며, 두런두런 얘기 나누면서
아래 질문을 해봅니다.
1. 지원한 회사 일이 내가 추구하는 가치와 일치하는가?
2. 개발환경(언어,도구,DB...)은 나와 맞는가?
3. 인화력은 좋은가?
1번은 아주 중요합니다.
무슨 일이든 동기부여가 되어야 열심히 하거든요.
1번 질문을 신입사원에게 던졌을때,
진실성 있고 성의있는 대답이 오면, 일단 합격입니다.
적어도 자신의 가치추구에 대해서 고민을 해봤다는 것입니다.
회사의 가치추구 == 자신의 가치관 == 자아실현 == 동기부여 == 공익과 사회공헌
이것이 갖추어지면, 장기적으로 함께할 가능성이 커집니다.
그러나, 1번만으로는 부족합니다.
2번을 질문해서 파악합니다.
가령, 우리회사는 MS 닷넷환경에서 C#언어를 주로 사용하고 오라클DB를 사용하는데,
너는 그동안 어떤 개발환경을 (공부)해왔는가?
기술적인 내용이므로 개인 감정을 배제하고 아주 객관적으로 판단해야 합니다.
정확히 일치하면 아주 좋습니다.
일치하지 않는 부분이 있으면,
공부하는 방법은 알고 있는가?
공부할 준비는 되어 있는가? 등을 판단해야 겠지요.
1번, 2번 만으로도 부족합니다.
3번이 좋아야죠.
맥주를 먹다보면, 어느정도 파악되리라 봅니다.
3번은 면접보는 사람의 가치관도 중요합니다.
3번은 저마다 판단하는 자(ruler)가 다르기 때문에,
저도 엄청 노력하고 있는 부분이고,
하면 할 수록 어렵더군요.
3번에 따라서 사람을 울고, 웃게 만들 수 있습니다.
그냥 자주 술한잔 해보세요.
술이 싫으면, 커피한잔, 담배라도 한대...
커~ 다들 몸에 해로운 것이네요.
왜 사람은 몸에 해로운것을 서로 나누며 친해 지는지 모르겠군요.
그냥, 자판기에서 율무차 한잔 할까요?
헉~ 이건 또 정력에 좋지 않다는...
From:
*알지비 (메신저: rgbi3307(at)nate.com)
*학창시절 마이크로마우스를 만들었고, 10년동안 IT관련 개발자로 일하고 있음.
*틈틈히 커널연구회(http://www.kernel.kr/) 내용물들을 만들고 있음.
*((공부해서 남을 주려면 남보다 더많이 연구해야함.))
From:
*알지비 (메일: rgbi3307(at)nate.com)
*커널연구회(http://www.kernel.bz/) 내용물들을 만들고 있음.
*((공부해서 남을 주려면 남보다 더많이 연구해야함.))
딴소리인데요.
딴소리인데요. 잡코리아로 개발자 찾으면 안된다고 생각합니다(?).
홍민희 (VLAAH, LangDev)
이유가 궁금합니다.
혹시 어떤 사연이 있으신지??
찬성
맞습니다.
그리고, 잡코리아로 IT회사 찾아도 안된다고 생각합니다.
잘 하는 사람은 퇴사
잘 하는 사람은 퇴사 전에 이직할 곳이 결정된다 이론?
헉 잡코리아 통해서 지금 회사 왔는데.. 제가 잘못했습니다. ^.^
---------------------------------------------
git init
git add .
git commit -am "project init"
---------------------------------------------
---------------------------------------------
git init
git add .
git commit -am "project init"
---------------------------------------------
제가 신입면접시 회사에서 내준 손코딩 문제는.
1. pi 값을 소숫점 100자리까지 구하는 문제. (3.14.......)
2. 파일 입출력 문제(파일 읽고 쓰기)
3. 자료구조론 책에 있는 쥐의 길찾기 문제 구현.
이게 생각나네요....
1번이 의외로
1번이 의외로 어려운데요. pi의 정의는 알아도 그걸 어떻게 수식으로 쓰는지 알지 못 하면 (이게 필요 조건은 아니잖습니까?) 못 쓰는 경우가 많을 겁니다. 당장 저 보고 짜라면 4 arctan(1/4)를 구하는 코드를 짜겠지만요. 좀 더 시간이 남으면 4 arctan(1/5) - 16 arctan(1/239)인가...를 짜거나 spigot algorithm을 구현하겠습니다만 이 정도까진 필요하진 않겠죠 설마.
(음 글 써 보고 찾아 보니 16과 4가 바뀌었군요.;)
이건 관심이 있느냐 없느냐인 것 같은데...
수치해석에 관심이 있느냐 없느냐 같아요. 짧은 시간 내에 수식을 만들기는 아무리 생각해도 어렵군요.
주입식 교육에 대한
주입식 교육에 대한 평가를 단답형으로 하는 바람에 나라가 이꼴이지 않습니까 ?
면접도 토론식으로 봐야합니다 !
예를 들면
가지고 있는 스킬이나 지식도 볼 수 있고,
사고의 깊이와 넓이도 볼 수 있고,
원리주의 과격파인지 현실주의 온건파인지 알아 볼 수도 있고...
OTL
신입은 같이 앉아서
신입은 같이 앉아서 일하는 거 외엔 방법 없는 것 같습니다.
틈틈히 질문하고 답변 못하거나 좀 더 심화할 필요가 있는 거 숙제로 내고...
숙제 진도체크 겸 간단한 QnA는 일별로 진행하고 주 단위 정도로 간단하게 발표하게 하고
신입사원 한명 붙으면 기존사원 일도 많이 느려진다고 봐야하는데 오히려 인력추가투입했다고 생각하는 분위기가 힘들긴 하지만 그 외에 방법은 그다지 효과를 보지 못했습니다.
학원도 보내봤지만 비용과 시간대비하면 형편없었던 거 같습니다.
그리고 면접 시에 전공관련 질문이라면 사실 전 부정적입니다. 경력사원이라면 경력관련 질문과 레퍼런스 체크 그리고 면접관의 능력으로 충분히 가려 뽑을 수 있습니다. 만약에 경력사원을 뽑으면서 이런 질문으로 자질을 가려야 한다면 회사가 그 사원을 뽑을 준비가 안되어있다는 뜻으로 보입니다. 저라면 경력 면접갔는데 이런 질문하면 회사에 대한 평가가 확 나빠질 것 같습니다.
신입사원이라면 초봉이 얼마나 쎈지는 모르겠지만 인력들이 어차피 다 거기서 거기였던거 같아서 능력에 크게 무게를 두지 않는 편이고 컴퓨팅관련 질문을 하면 구체적인 프로그래밍보단 고맘때 이슈가 많이 되는 주제를 가지고 뭔 생각이 있었는지 물어보는게 더 많았던 거 같습니다.
물론 종종 여기서 만나는 몇몇 분들처럼 면접관들을 흥분시키는 "두기"들이 있긴 합니다만 그 사람들은 굳이 저런 거 안물어봐도 티나죠.
=======================================================================
오늘 우리는 동지를 땅에 묻었습니다. 그러나 땅은 이제 우리들의 것입니다.
아직도 우리의 적은 강합니다. 그러나 우리는 그들보다 많습니다.
항상 많을 것입니다.
오늘 우리는 동지를 땅에 묻었습니다. 그러나 땅은 이제 우리들의 것입니다.
아직도 우리의 적은 강합니다. 그러나 우리는 그들보다 많습니다.
항상 많을 것입니다.
ㅋㅋ
저도 그런 "두기"를 본적이 있어요.
입사한지 1년이 딱 지나니, "괴물"로 바뀌어 있더군요. 어찌나 스펀지 같던지... 다 빨아드리더라고요.
저는 개발자를 뽑는
저는 개발자를 뽑는 것이 아니라서 어려운 것은 묻지 않지만, C를 사용하시는 분들께 묻는 질문이 있습니다. 예전 제가 현재 회사 입사 인터뷰 시에 받은 질문 이었는데..
"2^64의 값을 구하는 코드를 아는대로 작성하시오"
제가 원하는 답은 shift 를 이용할 줄 아느냐 모르냐 입니다. 즉, bit 처리에 대한 고민을 해 보았는지 여부에 대해서 확인을 하는건데, 쉽게 나온다면 나름대로 언어 자체에 대한 고민을 하면서 공부를 해오지 않았나 싶습니다. 개발자 면접에 들어가 본적이 없어서 어떨지 모르곘지만, engineer 면접에서 C를 4~5년씩 써 보셨다는 분들도 shift를 생각하지 못하시는 분들이 많더군요. (물론 당락에 직접적인 영향은 주지 않지만, 간접적인 영향을 꽤 주고 있습니다.)
모르겠네요.
십진표기를 원하시는 것 같은데 shift? 거기에 2^64 라면 32bit로는 표현이 안되는데...
어떻든 쉽지는 않을 것 같네요.
취지가 어려운거
취지가 어려운거 묻는게 아닌것 같습니다.
그냥 64bit unsigned int 에 저장되기만 하면 되는것 아닐까요?
2 << 63
emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇 개 안돼요~
http://xenosi.de/
https://xenosi.de/
64bit여도 표현이 안되는데요.
통상 64bit는 2^64 - 1 까지 표현할 수 있습니다. 2 << 63 은 산술 overflow가 발생하고요.
gmp 써야하나요?
gmp 써야하나요? ㄷㄷㄷ
------------------------------
How many legs does a dog have?
------------------------------
How many legs does a dog have?
단순히 생각해서
단순히 생각해서 자리수가 맞는 줄 알았는데 안되는거였군요-_-;
2<<62 까지는 나오네요.
emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇 개 안돼요~
http://xenosi.de/
https://xenosi.de/
비트가 문제라서 안되면
2<<32를 하나 구해서 가지고 있다가 on demand로 처리하면 안되나요
2**32 * 2**32 = 2**64
이런문제도 재미있을듯,
1부터 n까지 더하는것도 루프로 돌리는 사람 많이 봤는데...
n/2*(n+1)
O(n)이 O(1)에 끝남
------------------------------
모든것은 모든것에 잇닿아 있다.
------------------------------
모든것은 모든것에 잇닿아 있다.
1<<63 + 1<<63이 낫지
1<<63 + 1<<63이 낫지 않을까요?
Real programmers /* don't */ comment their code.
If it was hard to write, it should be /* hard to */ read.
일단은 shift 를
일단은 shift 를 생각하느냐 못하느냐가 1차 관문이고, high bit, low bit를 나눠서 계산을 제시할 정도면 제가 많이 좋아합니다. 하지만 3-4년차 면접시에 아직까지 shift까지 생각하신 분도 만나지 못했습니다. 물론 개발자 면접이 아니니 크게 바라지도 않고, 몰라도 상관 없기는 하지만요.
뭐, 꼭 shift 가 답은 아니기 때문에, 다른 방법 제시도 좋은데, 대부분이 루프를 열심이 돌리는 정도의 답변을 말씀 하시더군요. :-)
앞으로가 중요한거기 때문에..
신입이라면 실력보다는 프로그램에 대한 센스를 보는게 맞지 않을까요?
신입이 알고있는 언어로(보통 java나 c겠죠?!) IO프로그램 간략하게 짜서 설명해준다음,
파이썬이나 펄같은 경험해보지 못한 언어로 똑같이 구현해보시요.
API만 제공하구요..
뭐 완벽하게 짜지 못하더라도 얼마나 민첩하게 대응하는지가 중요한거라 봅니다.
고통이 지천에 있다한들 어이해 멈출수있더냐
..
아직 사람을 뽑을 처지가 아닙니다만 그냥 하던 일가지고 얘기해보면 되지 않을까요?
배경과 코드 설명해주고 이 상황에서 뭘 할 수 있는지, 뭘 스터디 할 건지 혹은 당장 닥친 문제를 의논해보면 될 것 같습니다.
A rose is a rose is a rose..
웬지 그사람...
엄청 멋진사수만난거같네요..
복받은듯합니다...부럽...T.T
-----새벽녘의 흡혈양파-----
-----새벽녘의 흡혈양파-----
2^64?
2^64 = 0x42?
XOR를 말하는거면 위가 답인데요
2의 64 제곱을 말하는건가요?
흠 근데 왜 기호를 XOR기호를 썼는지 모르겠네요
cats96님, 말씀하신 ^는 c와 같은 프로그래밍 언어상에서의 연산자구요,
논리식에서 XOR라고 하면 +를 원이 감싸고 있는 형태이고,
선형대수에서는 'Direct sum of modules'으로 표기합니다.
원래의 의도는 거듭제곱(power)을 나타내기 위해
대수학에서 이항 연산자(binary operation) 표기법의 하나로 사용된 것입니다.
지수(exponent)가 익숙하긴 하지만, 그것을 표현하기 힘들어 저렇게 씁니다.
--------------------------
Go to the U-City
----------------------------------------------------------------------------------------
Don't Feed the Trolls!
----------------------------------------------------------------------------------------
놀랍네요. 저는 댓글에 부정적입니다.
저는 저런 문제 하나도 못풉니다.
아마 저런 문제를 내는 회사는 합격하지 못할것 같네요.
몇년동안 UI를 해왔다고해도.
윈도우 API로 빈 창을 보여주는 프로그램을 아무것도 안보고 작성하라고 해도 못합니다.
저도 못하는데 누굴 시험하겠습니까.
제가 신입을 뽑는다면.
그 사람이 앞으로 무엇을 하고 싶어하는지.
많은 대화를 해보고 싶습니다.
의지가 있고 노력할 마음의 자세가 되었다면.
밑바닥부터 같이 가고 싶습니다.
실력 좋은 사람 뽑으시려고들 하지만.
정작 저희 삶에 그분들의 실력이 필요한지. 도움이 되는지 모르겠습니다.
그들의 실력은 연봉과 지위. 회사의 이익을 위해서 존재하는 수단.으로 느껴집니다.
실력 없어도 되니. 꿈과 열정으로 가득한 사람이라면 좋겠습니다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
농담이죠?
전 본문만 읽었습니다만
1,2학년때 다 배웠습니다. 어떻게 안 배울수가 있죠?
까먹을 순 있다고 봅니다만.. 스택이나 힙은 기초of기초 아닙니까?? (1학년1학기때 배웠는데)
___________________________
I like Small Linux.
___________________________
I like Small Linux.