인터뷰 중 코드 질문의 고용주를위한 장단점은 무엇입니까? [닫은]


16

Joel Test 질문 # 11은 "신입 응시자들이 인터뷰 중에 코드를 작성합니까?"입니다. 면접 중에 새로운 응시자가 코드를 작성하도록 요청하고 이에 대한 결정을 내려야한다는 주장과 반대는 무엇입니까?


연필과 손으로 물리적으로 코드를 작성하거나 기계에서 유형 코드로 작성합니까?
Chris

주된 단점은 어리 석거나 쓸모없는 질문을하고 올바르게 생각했다는 것입니다. 예를 들어, linked_list를 작성하라는 요청을받는 사람에 대한 의견

답변:


13

단점이 보이지 않습니다. 인터뷰에는 많은 부분이 있으며, 후보자는 몇 차례 '사슬 상'을 추천해야합니다.

매주 ~ 10 명을 인터뷰합니다. 저는 정말로 HR이 모든 배경 작업을 수행했으며 많은 메모를 주었다는 사실에 정말로 감사합니다. 그들이 나에게 도착할 때까지, 나는 그들의 시험을 채점 할 시간이다.

테스트는 전적으로 위치에 따라 다릅니다. 일반적으로, 나는 조사하려고합니다 :

  • 일반적인 프로그래밍 기술. 연산자를 효과적으로 사용할 수 있습니까? 기수가 10이 아닌 수치 체계를 상상할 수 있습니까?

  • 우리가 뭘하도록하는지 아십니까?

  • 나열된 오픈 소스 프로젝트에 대한 기여도 평가

나는 짧고 재미있게 유지하려고 노력합니다. 사무실에 들어 오면 답을 잡고 살펴본 후 2 차 면접을 실시합니다. 채용을하려면 일반적으로 3 번의 인터뷰를 거쳐야합니다.

또한 당신을받을 팀과 얼마나 잘 조화를 이루는 지 측정합니다. 그 팀은 저를 효과적으로 수행합니다.

메타 형식으로 질문에 대답하는 것은 실제로 코드를 생성하는 것입니다. 내가 당신을 고용한다면, 나는 당신이 코드를 생산하는 것을 정말로 볼 필요가 있습니다.


흠 ... 나는 자격을 갖춘 개발자로 생각합니다. 마지막 세 번의 인터뷰에서 "특정 방법이하는 일"또는 이와 유사한 일에 대해 물었을 때 나는 포기하기로 결정했습니다. 나는 구직을 전혀하지 않기 때문에 내가 잘 아는 일을하려는 곳입니다. 흥미롭지 않습니다. 전직 보스가 말했듯이 : "재사용 가능? 프로그래머는 재사용 가능해야한다. 프로그램은 아마 가능하다".
duros

@duros 유감입니다. 좋은 면접관은 프로세스를 재미있게 만들 수 있어야하며 다른 프로그래머가 테스트를 싫어한다는 것을 알아야합니다.
Tim Post

테스트를받을 때 불편 함을 느끼지 않습니다. 나는 그들이 코더로 나를 고용 할 경우, 내가 가질 수있는 새로운 것을 배우고 시도 할 수있는 기회를 알고 있습니다 ... 마지막 기회 중에 나는 인터뷰를 보내 javadocs를 읽었습니다 ... :-/ 어쩌면, 나는 m 잘못 ...
duros

10
한 번 인터뷰에서 Perl의 링크 된 목록에 대한 접근자를 작성하라는 요청을 받았습니다. Perl과 함께 일한 8 년 동안 링크 된 목록을 사용하는 단일 프로덕션 프로그램을 경험하지 못했습니다. 물론 종이에 insert () 및 remove () 메소드와 해시 기반 객체를 혼동하여 제작했습니다. 그는 논문에서 보았을 때 우선 면접관은 "당신은 몇 세미콜론 누락"있다고 말했다
leed25d

1
실제로 코드를 생성하는 것도 또 다른 방법 입니다. 나는 그럴듯한 알고리즘을 설명하는 사람들에 의해 반복해서 놀랐지 만 그것을 코드로 축소 할 수조차 없습니다. 또는 코드를 작성할 때 피할 수없는 비 알고리즘 단계를 뛰어 넘었습니다.
poolie

34

Scott Whitlock에 사과드립니다.

단점 :

  • none

장점 :

  • 프로그래밍 할 수없는 사람을 고용하지 않으면 많은 시간과 고통을 덜어줍니다
  • 인터뷰에 기술 담당자가 있어야합니다.

"면접에 기술 담당자가 있어야합니다"를 사기꾼으로 간주 할 수 있습니까?
Yeikel

2
그것은 당신이 역할을 채우거나 의자를 채우려 고하는지에 달려 있습니다. 그러나 IMO 아니요, 사기로 간주 될 수 없습니다.
Armand

19

저글러를 고용하려고한다면, 그를 저글링하지 않는 것은 미치 겠죠. 또는 오디션을받을 음악가. 그렇지 않으면 당신은 멋진 요요 "마스터"K-strass 같은 것들을 얻습니다 .

화이트 보드에서 무언가를 걷는 것은 프로그래머가 빠른 데모 저글링에 해당합니다.


링크의 경우 +1 저글링은 메쏘드 시그너처와 같은 것들을 기억하는 것이 아니라 이전에 한번도 경험하지 못했던 문제를 생각하고 해결할 수 있다고 생각합니다.
duros

4
저글링은 몇 가지 변형만으로 즉각적인 기술을 제외하고는 종종 청중 앞에서 수행됩니다. 프로그래밍은 심오하고 깊은 작업으로 거의 수행되지 않습니다. 또한 종이나 화이트 보드에서 생산성이 훨씬 떨어집니다. 그러나 의사 코드 테스트 (또는 사소한 중간 버그 무시)는 매우 유용 할 수 있습니다.
브루스 앨더 슨

10

나는 그것이 매우 유용하다고 생각하며 항상 그렇게하지만 이점이 잘 다루어 졌기 때문에 (명백한) 부정에 대해서만 논의 할 것입니다.

코드 테스트는 잘못된 긍정을 줄 가능성이 거의 없다고 생각합니다. 실제로 코드를 작성할 수없는 사람이 적어도 난이도가 증가하는 질문이있는 경우 인터뷰에서 코드를 위조 할 가능성이 낮습니다. (아마도 가장 대담한 시나리오는 친구와 대면 인터뷰가 아닌 경우 친구에게 물어 보는 바람을 피우는 것일 수 있습니다.)

문제는 거짓 부정적 측면에 있습니다. 코드 테스트로 실제로 가장 좋은 후보자를 거부하게 될까요?

무대 공포증

실제로는 훌륭한 개발자이지만이 인터뷰에 대해 매우 불안한 ​​사람이있을 수 있습니다. 압박을받는 것은 어느 정도 중요하지만, 무대 공포증을 다루는 것이 프로그래머가되는 데있어 중요한 부분은 아니며 (다른 직업과 비교하여), 심하게 고통받는 사람을 거부하는 것은 불행한 일입니다. 이 질문은 복합적 일 수 있습니다. 그 사람이 자신이 대답해야하는 질문에 대답 할 수없는 경우, 사람들은 더 빡빡해질 수 있습니다. 또는 이 질문에서같이 그들은 동시에 대화하고 코딩 할 수 없다고 생각합니다.

완화 : 기술적 인 질문으로 넘어 가기 전에 배경, 목표 등에 대해 알아야 할 몇 가지 질문으로 시작하십시오. 아마도 더 쉬운 기술적 인 질문으로 시작하여 모멘텀을 얻을 수 있습니다. 인터뷰 중에 성가 시게하지 마십시오 (세미콜론 등에 대한 문제).

시끄러운 측정입니다

흥미로운 코드 질문에는 둘 이상의 정답이있을 수 있습니다. 한 사람이 정답을 쓰고 다른 사람이 정확하고보다 효율적인 답을 쓰면 얼마나 많은 무게를 두어야합니까?

어느 정도는 "퍼즐"질문에 대한 문제와 어느 정도 같습니다. 그 사람은 통찰력이 있거나 거의 이진 결과를 얻습니다. 지능은 아마도 그 통찰력을 가질 확률에 영향을 주지만, 몇 번만 샘플링하면 훌륭한 측정 값을 얻을 수 있습니다.

이것은 코드 질문에 대해 귀찮게합니다 (아직도 여전히 사용하고 있습니다). 내가 생각할 수있는 가장 좋은 완화 방법은 가능한 해결책을 최대한 많이 확보하는 것입니다. 사람은 적어도 거친 무차별 대항 답변 또는 문제의 일부. 그것이 무엇보다 낫다는 것을 깨닫는 것은 좋은 징조입니다. 그런 다음 더 많이 발견하면 더 효율적이거나 우아한 코드로 만들 수 있습니다. 가능한 한 이진 응답을받는 질문을하지 마십시오.

실제로 대표하지 않습니다

프로그래밍은 10 분의 알고리즘 문제를 차례로 해결하는 일이 아닙니다. 대인 관계 기술은 말할 것도없이 더 큰 시스템을 이해하고 설계하고 오랜 기간 동안 집중하는 작업이 더 많습니다. 코드 질문은 실제로 이것을 테스트하지 않습니다.

그러나 코드 질문 만이 당신이 묻고 자하는 유일한 질문은 아닙니다 : 당신은 그들의 배경, 그들의 참조, 그들의 오픈 소스 작업 (있는 경우)을보고 지속적인 노력, 창의성, 대인 관계 기술의 증거를 찾을 수 있습니다.

작은 알고리즘 문제를 해결하는 방법과이를 코드로 줄이는 방법을 아는 것은 필요하지만 충분하지 않은 조건입니다. 작은 문제를 해결할 수없고 사소한 코드를 작성할 수없는 경우 세계의 모든 큰 그림 사고가 아닙니다 생산적인 개발자가 되겠습니다.

누구나 해결할 수 있습니다

아뇨. 으로 유명한 FizzBuzz 포스트는 지적, 당신이 생각하는 문제는 업계 경험의 년 사소한 트랩 졸업생하지만 사람들뿐만 아니라이다. 이유를 모르겠습니다. 코드 테스트는 좋지 않은 측정 (가능하지는 않지만 가능할 수도 있음)이거나 이력서의 프로젝트에 크게 기여하지 않았거나 복사 및 붙여 넣기를 통해 많은 작업을 수행했습니다. 알고리즘 코드 (가능한)

알고리즘 코드를 작성하지 않고도 실제로 많은 작업을 수행 할 수 있음을 인정할 가치가 있습니다. 사람들은 "프로그래밍"이라고 부르지 않는 그래픽이나 비즈니스 로직에 가치가있는 앱에서 많은 돈을 벌고 있습니다. 그러나 실제로 프로그래머가 필요하다면 적합하지 않습니다.

잘 보정되지 않았을 수 있습니다

궁금한 점이 있으면 답변이 매우 쉬운 것 같습니다. 그러나 파란색에서 다른 유사한 질문을 받거나 자신의 특정 관심사와 배경에 비뚤어지지 않는 질문이 있으면 훨씬 어려울 수 있습니다.

완화 : 이미 알고있는 일부 개발자에 대해 테스트를 실행하고 수행 방식을 확인하십시오. 아마 당신이 이미 당신의 팀에 매우 똑똑한 누군가가 그들 중 하나에 문제가있을 수 있고 당신은 그것을 조정하는 것을 고려할 수 있습니다. 아마도 그들은 더 나은 또는 다른 대답을 생각할 것입니다.

사소한 것 같아요

사람들이 마음에 모호한 API를 알고 있거나 구문을 완벽하게 얻거나 사소하지 않은 알고리즘의 정확한 정의를 기억한다고 주장하면 코드 질문이 분명히 사소한 일에 빠질 수 있다고 생각합니다. 그것들은 문서, 웹 검색 또는 컴파일러 오류에 의존하여 선택하는 것이 합리적이며 실제 전문 성과는 거의 관련이 없습니다. API가 어디에 있는지 알지 못하는 것은 아마도 최근에 API를 사용하지 않은 단서 일 수도 있지만, 이력서에 누워 있지 않는 한 반드시 문제는 아닙니다.

따라서 이에 대한 대답은 매우 간단합니다. 사소한 질문을하지 말고 사소한 실수에 매달리지 마십시오. 응시자에게 API가 호출 된 것을 상기 시키거나 그들이 찾게하십시오. 구문 오류를 수정하십시오. 데이터 구조 정의를 암기하는 사람들을 테스트하지 마십시오.

당신은 어떻게 비교합니까?

두 명의 응시자가 있고 질문에 잘 대답하면 어떻게 선택합니까? 가장 빨리 끝내는 사람을 선택할 수 있지만 거북이에서 토끼를 선택하기 시작했을 것입니다. 당신은 다른 라운드를 할 수 있고 훨씬 더 어려운 질문을 할 수 있지만 나는 그것에 대해 확실하지 않습니다. 아마도 당신은 그들에게 A +를주고 다른 기준으로 그들 사이에서 선택하려고 노력할 것입니다 (또는 둘 다 고용 할 돈을 찾으려고 노력하십시오).


7

내가 생각할 수있는 한 가지 단점은 다른 사람들 앞에서 "큰 소리로 코딩하기"어렵다는 것입니다. 나는 내 어깨 너머로보고있는 누군가와 타이핑하는 것이 어렵다는 것을 안다. 나는 혼자가 아니다. 누군가 나를 도와달라고 자신의 워크 스테이션으로 전화를 걸면 갑자기 오타를 시작하고, 잘못된 코드 완성을 선택하고, 실수를 범하기도합니다. 지옥, 나는 사람들이 관찰 중이기 때문에 잘라 내기 및 붙여 넣기 작업에 메뉴를 사용하기 시작하는 것을 보았습니다. 이것은 정상적인 동작이 아니며, 내가 말하는 코더는 뛰어난 프로그래머이며 똑똑합니다.

최근에 면접관이 특정 작업을 어떻게 코딩 할 것인지 물었고 인터뷰에서 "수학을 보여줘"라고 말했습니다. 글쎄, 나는 그 문제를 수학하기 전에 먼저 문제에 대해 생각해야 했으므로 헤밍과 헤이 밍이 발생했습니다. 처음에 화이트 보드에 내려 놓은 것은 당황 스러웠으며, 그 시점에서 내가지고 있다고 느꼈습니다. 나는 결국 A-ha 순간을 얻었고 그 답을 찾았습니다. (실제로 그가 실제로 요청한 것이 실제로 나에게 생겼을 때 ), 제가 도착하기 전에 제가 만든 "메스"는 매우 불편한 느낌을주었습니다. 그럼에도 불구하고, 나는 직업을 얻었지만 면접관이 환자가 적었다면 나는 가지고 있지 않을 수도 있습니다.

인터뷰 대상자에게 코딩 작업을 제공하는 경우 컴퓨터에서, 심지어는 익숙한 IDE에서도 혼자서 작업 할 수있는 시간을 주어야한다고 생각합니다. 그들이 당신을 위해 코드를 작성하고 그것에 대해 이야기하게하십시오. 그들이 어떤 방식으로 일을했는지, 다른 방법으로 나아지지 않는지 물어보십시오. 당신은 그들 앞에서 바로 컵에 오줌을 요구하는 것보다 그런 종류의 과정에서 더 많은 것을 발견 할 것입니다.


4
그래도 괜찮습니다. 코딩 인터뷰 질문의 목표는 입력 능력을 테스트하거나 API에 대한 완벽한 지식을 테스트하는 것이 아닙니다. 오타와 무시할 수없는 것 대신에 후보자의 사고 과정과 프로그래밍 기초에 대한 친숙함에 중점을 둡니다. 예를 들어, 한 번은 인터뷰에서 후보자가 몇 가지 단계를 미리 생각할 수 없다는 것을 보여주었습니다.
Adam Lear

2
"다른 사람들 앞에서 코딩하기가 어렵습니다"? 좋아. 나는 어려운 일을 할 수있는 사람들 만 고용합니다. 그들 중 하나는 다른 사람들과 코드 앞에서 프로그램을 논의 할 수 있습니다.
케빈 클라인

1
@ kevin cline : 당신은 내 요점을 그리워. 사람들이 결과를 얻는 방법에 관심이 있습니까, 아니면 당신의 변덕에 따라 결과를 얻길 원하십니까? 많은 사람들이 팀 환경에서 잘 코딩 할 수 있지만 최고의 효율성으로 생산하려면 "독립 시간"이 필요합니다. Mark Zuckerberg를 고용하지 않았을 때 생산성을 극대화하기 위해 "유선"이되어야했던 것처럼 들립니다.
Robusto

1
@Robusto : 인터뷰에서 깊은 질문을하지 않습니다. 몇 분 안에 간단한 문제를 해결하는 사람이 필요합니다. 그리고 팀에서 일할 수있는 사람들이 필요합니다. 이는 코드에 대해 이야기 할 수있는 능력과 의지를 의미합니다. 물론, 나는 인터뷰의 압력을 감당할 수없는 훌륭한 프로그래머를 그리워 할 수 있습니다. 괜찮아. 그러나 나쁜 고용은 비참합니다.
케빈 클라인

6

단점 : 없음 PC를 설정하고 코드 테스트를 설계하고 검토 할 때마다 향후 전례없는 두통을 줄일 수 있습니다.

장점 : "신뢰하지만 확인"-Ronald Regan. 사람들이 여러 번보고 들었을 때, 마침내 인터뷰에서 당신은 록 스타를 받고 있다고 생각할 것입니다. 증거는 푸딩에 있습니다. 나는 그들이 할 수있는 것을보고 싶다. 그것은 당신이 누군가를 고용하고 시간과 돈을 투자하고 그들 앞에 새로운 프로젝트를 고수하면 무슨 일이 일어날지를 나타냅니다.


4

단점 :

  • 인터뷰에 기술 담당자가 있어야합니다.

장점 :

  • 프로그래밍 할 수없는 사람을 고용하지 않으면 많은 시간과 고통을 덜어줍니다

25
기술 담당자가 참여하지 않고 개발자를 인터뷰하는 경우 어쨌든 운명입니다.
David Thornley

@David : 나는 여기에있는 찬반 자 들이 단점보다 훨씬 크다고 생각하지만, 내가 생각할 수 있는 유일한 "콘"이었습니다.
Scott Whitlock

4

현재 직업에 대해 인터뷰 할 때 모집 담당자가 코드를 작성하는 데 필요한 질문 목록이 제공되었습니다. SQL에 대한 깊은 지식을 가진 사람이 질문을 작성했기 때문에 매우 인상적이었습니다.


2

당신은 정말 인터뷰에서 사람 쓰기 코드를 갖고 싶어 - 더 나은, (당신이 편안하게 시간 / 인력으로 감당할 수있는 무엇이든) 시간의 X 금액에 대한 팀의 구성원으로 페어 프로그램으로 그들을 얻을.

그 사람이 코딩 할 수 있는지 아닌지를 알 수있는 유일한 방법 중 하나입니다.

팀 작업을 보여주고, 작업 할 실제 IDE를 제공하고, '실제'문제에 대해 작업 할 수 있도록 페어 프로그래밍을 선호합니다. 결코 합리적으로 알 수 없었습니다).

우리는이 채용 정책을 사용하기 시작했으며 결과에 정말 만족합니다.


페어 테스트의 경우 +1 : 팀 동료와 함께 작업하는 능력 및 / 또는 코딩 능력을 모두 입증합니다.
브루스 앨더 슨

2

깃털로 새를 평가하고 코드로 프로그래머를 판단합니다.

현재 회사를 시작할 때 그들은 인코딩 또는 디코딩 여부에 따라 일부 이진 입력의 패리티 비트를 생성하거나 확인하는 C 코드를 작성하도록 요청했습니다. 이것은 작업 중에 이러한 종류의 문제가 해결 되었기 때문에 인터뷰 질문이었습니다. 물론 패리티 검사가 아니라 저수준 작업을 생각하고 있습니다.


2

지금까지 (내가 읽은) 모든 답변 은 Joel Test가 기업가를위한 모범 사례 목록이 아니라 잠재 고용주 를 쉽게 평가할 수있는 점검 목록 이라는 사실을 다루지 않았습니다 .

문제는이다 ... 그들은 철저하게 그들의 candiates을 테스트 그들은 아마도 자신의 물건을 알고있는 사람을 고용하는 경우 ... 그 방법 당신을 위해

  1. 덜 두통 과 또한
  2. 동료들로부터 무언가를 배울 확률 증가

버그 수정 대신에 ...


1

내가 말할 것:

찬성

  • 이력서가 제작 / 장식 될 수 있기 때문에 응시자가 프로그래밍에 대한 최소한의 지식을 가지고 있음을 증명
  • 면접관이 필기 시험과는 달리 후보와 코드를 논의하는 경우, 사회적으로 "메쉬"하는 방식과 후보자가 회사 / 회사 및 팀에 적합한 지에 대한 좋은 지표가 될 수 있습니다. 후보자에게 적합

단점

  • 질문이 작업 중에 절대 발생하지 않는 무질서하고 사소한 말도 안되는 경우 응시자에게 모욕적 일 수 있습니다 (예 : 작업에 사용하는 모든 최신 프레임 워크에 정렬이 내장 된 경우 "버블 정렬 작성" "내장 된 Reverse메소드 또는 이와 유사한 것이 있거나, 필기 테스트를 위해" 클래스 의 Foo메소드에 대한 논거는 무엇인가 "와 같은 것들 Bar, 어떤 멍청이도 구글이 문서를 사용하거나 문서를 사용할 수있을 때) 응시자는 업무를 수행 하고 비즈니스 문제를 해결할 수 있습니다 .

1
"문자열 반전"은 코딩 인터뷰에서 훌륭한 시작 질문 이라고 생각 합니다. 그들이 어디에서 시작해야하는지 모른다면 (그리고 많은 사람들이 모르는 경우), 당신은 그들을 고용하고 싶지 않을 것입니다. 그들이 내장 된 방법을 사용한다면, 그것은 좋습니다. 휠이 제공되면 자신의 휠을 만들려고하지 않지만 내장 된 방법에 버그가있는 가상의 상황을 제시합니다. 스스로 작성해야합니다. 그런 다음 버그, 메모리 사용량, 실행 시간 등을 수정하는 방법과 같은 다른 질문을하기위한 시작점으로 코드를 사용할 수 있습니다.
Gabe

0

한 가지 전문가는 누군가 프로그래밍에 대한 기본 지식이나 그 밖의 것을 알고 있음을 보여줍니다 (마지막으로 만났을 때 SQL 질문이 얼마나 기본적인지 놀랐습니다). 또한 후보자가 왜 그렇게했는지, 어떻게 개선 할 수 있는지를 묻는 기술적 토론의 기초가 될 수 있습니다.

인터뷰에는 시간이 걸리며 다른 것들에 사용될 수 있습니다. 또한 화이트 보드에 코드를 작성하는 것은 자연스러운 환경이 아니며 일부 사람들은 점점 심각한 문제를 겪을 것입니다. 일반적인 도구 나 참조없이 긴장한 개발자를 그리워 할 수 있습니다.


3
당신을 더욱 놀라게 할 것은 누가 더 많은 사람들이 그 기본적인 질문에 대답 할 수 없었는가였습니다.
HLGEM

0

프로그래밍은 분명한 "제공 가능"항목을 가진 고도의 기술입니다. 응시자는이를 전달하거나 전달할 수 없습니다. 따라서 기술적 인 질문을하는 것에 대한 "의견"은 없습니다. "이 응용 프로그램에 대한 코드를 보여 주거나"이미 작성된 응용 프로그램에 대한 코드를 보여줘 "라고 전적으로 말합니다.

그렇게하지 않으면 다음과 같은 결과를 초래할 수 있습니다. 부자는 한 교사를 면담하여 자녀들에게 체스를하도록 가르치고 있습니다 (마음 확장 운동). 튜터는 체크 무늬 보드를 열고 64 개의 사각형에 대해 이야기하기 시작했지만 체스 조각을 건드리지 않았습니다. 시간이 지남에 아버지는 어쨌든 교사를 고용했다. 그리고 교사는 아이들에게 CHECKERS를하도록 가르쳤다.


그것은 단지 무능한 면접관의 예를 보여 주지만, 실제로 면접에서 체스를 할 필요는 없습니다. 부자는 방금 나에게 '캐슬 링 설명하기'나 그와 비슷한 것을 물었을 수도 있고 즉시 교사가 알고있는 것에 대한 아이디어를 얻었을 수도 있습니다.
GrandmasterB
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.