면접 코딩 실습에 실패해야합니까? [닫은]


14

우리는 고위 인터뷰 후보의 뉘앙스 실패했다 FizzBuzz 질문 (1) (2) .
사실, 완전히, 완전히, 그 질문에 실패했습니다.
그를 코치 루프를 사용하는 방법에 대한 것을 사고에 이르기까지 35있었다 정말 특별한 경우로 고려할 가치.

그는 불었다.

품질 관리 목적으로, 나는 세 명의 팀원에게 동일한 질문을하였습니다. 그들에게 5 분을 주었다; 그런 다음 의사 코드를 수집하기 위해 돌아 왔습니다. 그들 모두는 그것을 못 박았 고 전에 질문을 보지 못했습니다. 두 사람은 그 속임수가 무엇인지 물었다.

다른 논리 연습에서 응시자는 사용하기로 선택한 언어 (C #)에서 사용할 수있는 기능 중 일부에 대한 이해를 보여주었습니다. 마치 코드를 한 번도 작성 하지 않은 것처럼 보이지 않습니다 . 그러나 그의 논리는 여전히 멈췄다.

내 질문은 내가 그에게 논리 질문에 대한 대답을 줘야했는지 여부입니다.

그는 그들이 그들을 날려 버렸다는 것을 알고 나중에 인터뷰에서 그것을 인정했다.
반면에, 그는 대답이나 내가 기대했던 것을 결코 요구하지 않았습니다.

코딩 연습을 사용하여 실패 후보를 설정할 수 있다는 것을 알고 있습니다 (다시 위에서 위의 두 번째 링크 참조). 그리고 저는 그 질문의 핵심에 답하는 데 도움이되도록 노력했습니다. 그러나 이것은 고위급 후보였으며 Fizz-Buzz는 솔직히 인터뷰 지터에 대한 회계 처리 후에도 엄청나게 쉽습니다.

나는 그가 그 경험을 통해 적어도 배울 수 있도록 문제를 해결하는 방법을 보여 주어야한다고 느꼈다. 그러나 그는 다시 묻지 않았습니다.

그 상황을 처리하는 올바른 방법은 무엇입니까?


1 , 그것은 실제 FizzBuzz 질문에 대한 링크는 아니지만 FizzBuzz에 대한 좋은 P.SE 토론이며 다양한 측면에 대한 링크입니다.

2 명확히하기 위해, 이것은 내가 요청한 Fizz-Buzz의 뉘앙스이며 Project Euler의 첫 번째 문제 에서 나왔습니다 . 대체 인쇄 피즈 | 숫자를 합산하는 버즈와 동일한 기본 질문이 있습니다.
If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23. Write a function that finds the sum of all the multiples of 3 or 5 below 1000.

3 이 질문은 예상했던 것보다 더 많은 관심을 끌었으며 모든 답장을 보내 주셔서 감사합니다. 나중의 답변 중 일부는 실제로 제 질문의 핵심에 도달 했으므로 커뮤니티에서 "the"답변을 할당하기 전에 검토하고 투표 할 수 있도록하겠습니다.

4 해당 시점의 커뮤니티 투표에 따라 "답변"을 선택했습니다. 그리고 Yannis의 답변은 새로운 개발자와의 인터뷰에 적합하다고 생각합니다. 나는 대답을 요구하지 않는 것에 초점을 맞춘 집단적 대응도 그 자리에 있다고 생각한다.


34
긴장을 풀고 하루를 시작하십시오. 내가 걱정하는 한, "상위 레벨"에서 FizzBuzz를 실패하는 것은 의도적으로 악의적으로 내 시간을 낭비합니다.
Steven Evers

6
나는 최근에 내 지역의 여러 직책에 대해 인터뷰했으며 코드가 필요한 사람들은 자신의 "FizzBuzz"-ish 테스트를 통과 할 수있는 상급 레벨 후보를 찾는 데 어려움을 겪고 있음을 나에게 알렸다. 모든 경우에 제 반응은 "심각 할 수 없습니다"였습니다. 시니어 레벨에 가까워지는 가장 끔찍한 프로그래머가 분명히 있습니다.
Joel Etherton

6
@JoelEtherton-여기도 똑같습니다. 나는 어디를 가든 전화 화면을 강요했다. C #을 사용하여 Senior에 지원하고 값 유형과 참조 유형의 차이점을 알 수없는 경우 인터뷰를받지 못한 것입니다.
Telastyn

3
0A0D @, 팀을 선도하는 것은 다른 종류의 좋은 개발되는 기술의는. 개발자도 나쁜 팀장을 보았습니다.
Kyralessa

4
@JoelEtherton, 놀라지 마십시오. "200 명의 지원자 중 199 명이 코딩 할 수 없다"는 것은 실제로 스크린과 인터뷰 후보자를 돕기 시작하기 전까지는 과장된 것이라고 생각했습니다. 수년 간의 경험은 단순히 중요하지 않습니다. 직책은 중요하지 않습니다. 대부분의 지원자들은 알고 있든 모르 든 정말 후배입니다.
Anthony Pegram

답변:


15

내 인터뷰의 대부분은 학생들이 인턴쉽 직책을 찾고 있었으며, 종종 단순한 (?) 연습을 망쳐 놓지 않았습니다. 나는 그들의 실수를 쉽게 전달할 수있는 쉽고 친숙한 방법을 원했고, 내가 생각해 낸 것은 매우 간단했다. 나는 스스로 연습을 풀었고, 연습을 마친 후에 내 솔루션을 보여 주었다.

나는 같은 문제를 해결하기 위해 서로 다른 접근법을 비교하여 시작한 후보자들과 매우 흥미롭고 공개적인 토론을했습니다. 얼마 후, 나는 어느 학교가 어떤 학교에 다니고 있는지 확인하는 것만으로 오류의 일부를 예상 할 수있었습니다 (일부 "교수"는 ... 모론). 그리고 응시자가 어떤 해결책을 찾지 못했을 경우, 나는 이미 다음에 그들에게 하나를주었습니다.


말이된다; 나는 최근에 새로운 일자리를 찾고 있었는데, 대부분의 면접관들은 그들의 질문에 대해 잘못된 답변을 주었을 때 (또는 약간“정답에서 벗어난”) 동일한 일을했다는 것을 알았습니다. 이것은 실제로 좋은 습관입니다. 대부분 후보자 (예 : 예)를 열고 인터뷰 자체를 양쪽에서 더 매력적으로 보이기 때문입니다. 물론 C ++에서 템플릿, RAII 및 멀티 스레딩에 대해 논의했습니다. 문제는 fizzbuzz를 해결할 수없는 사람에게 무엇이라고 말합니까?
Chani

11
아마, 솔직히 후보가 프로그래밍 위치를 인터뷰하고 fizzbuzz에 대처할 수없는 경우, 나는 것 @RitwikG ... 웃음 (이봐, 나는 내가 말했다 결코 좋은의 인터뷰). 즉, 몇 달 전에 코드에서 매우 사소한 OBOE로 바뀌는 데 이틀이 걸렸 습니다. 우리 모두는 우리의 시간이 지났고, 한 운동을 망치는 후보자를 실제로 고치지 않을 것입니다. 아마 다음 운동으로 빠르게 넘어갈 것입니다. 그들이 다음에 실패했다면 아마 시간을 내 주셔서 감사 할 것입니다.
yannis

1
@YannisRizos 아마도 좋은 접근법 일 것입니다. 인터뷰 상황에서 사람이 잘하지 못하거나 자신의 작업에서 모듈로 작동을 피할 수있는 기회가 항상 있습니다 (최소한 말로는 잘하지는 않지만). 내 경험상, 고위 직책에 대해서도 간단한 루프 (어느 언어로든)를 작성하라는 요청을 받으면 상당수의 지원자가 곤두박질칩니다. 이제 것을 , 나는 정당화하기 완전히 불가능 찾을 수 있습니다.
Daniel B

그것은 프로세스에 대한 좋은 통찰력입니다. 후보는 당연히 긴장했고, 나는 그것에 대해 약간의 여유를 주려고했다. 그가 해결책에 대한 그의 시도를 통해 마침내 이야기를 시작했을 때, 그것은 혼란스럽고 그가 놓친 경계 조건을 만들었습니다.

15

대답하기

후보자가 물어볼만큼 관심이 없다면 숨을 쉬지 않지만 @Yannis_Rizos 답변 이 훨씬 좋습니다.

인터뷰는 매우 빠릅니다. 인터뷰 후 며칠 동안 자주 물건을 찾는다는 것을 알고 있습니다.

FizzBuzz Classic을 코딩 할 수없는 사람들

큰 문제가 % 연산자를 인식하고 있다고 생각합니다. (myInt / 3) == (myDouble / 3.0)FizzBuzz Classic은 누군가가 인터뷰의 스트레스와 비교할 수는 있지만 어쩌면 가장 쉬운 알고리즘 문제의 범주에 놓이는 무차별 대입 방식을 강요 할 수 있기를 바랍니다 . 힌트로, 사람들에게 "Fizz"를 반 신용으로 코딩하고 나중에 "Buzz"를 강화로 추가하도록 요청 했습니까?

귀하의 질문에 대한 궁극적 인 답변은 좋은 후보자를 찾기가 정말 어렵다는 것입니다.

면접 질문

후보자들에게 그들이 마지막으로 기대했던 마지막 프로그래밍 프로젝트를 설명하도록 요청하는 것이 더 쉽고 생산적인 경우가 많았습니다. 나는이 질문에 100 % 성공했습니다. 즉, 프로그래밍 프로젝트에 대해 애니메이션으로 이야기하고 그것에 관한 기술적 질문에 대답 할 수있는 사람들은 훌륭한 고용인이었고 그렇지 않은 사람들은 그렇지 않았습니다. 이것은 후보를 편하게하고 공개 토론을 장려하는 좋은 부작용이 있습니다. 이 질문으로 응시자는 사실상 그들이 가장 적합한 것을 알려줄 것입니다.

아마도 싱크 탱크 알고리즘에 관한 질문도 필요할지 모르지만 "즐겨 찾기 프로젝트"질문에 찬성하여 포기했습니다.

FizzBuzz의 합 (아들)

인터뷰 질문은 FizzBuzz와 동일하지 않습니다.

10 이하의 3 또는 5의 배수 인 모든 자연수를 나열하면 3, 5, 6 및 9가됩니다.이 배수의 합은 23입니다. 3 또는 5의 모든 배수의 합을 구하는 함수를 작성하십시오. 1000 이하

FizzBuzz Classic에서 n 개의 반복 (모든 숫자 또는 Fizz / Buzz를 인쇄하기 위해)을 수행해야하는 경우, n / 5 + n / 3 + n / 15 반복 또는 심지어 반복없이 직접 문제를 해결할 수 있습니다. 포인트 계산이 가능합니다. 다음 프로그램은이 세 가지 방법을 비교합니다.

public static void main(String[] args) {
  long n = Long.valueOf(args[0]).longValue();
  long sum = 0;
  long ms = System.currentTimeMillis();
  // Brute force method  Performance: cn
  for (long i = 1; i <= n; i++) {
    if ((i % 3) == 0) { sum += i;
    } else if ((i % 5) == 0) { sum += i; }
  }
  System.out.print("Brute force sum:    " + sum);
  System.out.println(" time: " + (System.currentTimeMillis() - ms));
  ms = System.currentTimeMillis();

  // Second solution: iterate through only numbers we are
  // interested in.  Performance: c * (n/3 + n/5 + n/15)
  // We counted multiples of 15 twice, so subtract one of them
  sum = countSum(n, 3) + countSum(n, 5) - countSum(n, 15);
  System.out.print("Only multiples sum: " + sum);
  System.out.println(" time: " + (System.currentTimeMillis() - ms));
  ms = System.currentTimeMillis();

  // Third solution: Use high school algebra.  Performance: c
  sum = sumSeries(n, 3) + sumSeries(n, 5) - sumSeries(n, 15);
  System.out.print("Sum of series:      " + sum);
  System.out.println(" time: " + (System.currentTimeMillis() - ms));
}

// Iteravely sum all multiples of skip
private static long countSum(long n, long skip) {
  long skipTotal = skip;
  long grandTotal = 0;
  while (skipTotal <= n) {
    grandTotal += skipTotal; skipTotal += skip;
  }
  return grandTotal;
}

// Thanks to @Caleb for pointing this out!  High school algebra
// tells us that the sum of a series is: (n * (a1 + an)) / 2
// where a1 is the first term and an is the nth term.  E.g. The
// sum of a series of 3 is: (n/3 * (3 + n - (n % 3))) / 2
// Since we are thinking about performance here, we'll shift
// right one instead of dividing by 2 for style points.  ;-D
private static long sumSeries(long n, long skip) {
  return (n/skip * (skip + n - (n % skip))) >> 1;
}

출력 (FizzBuzz의 합 <1000) :

$JDK_HOME/bin/java FizzBuzzNot 999
Brute force sum:    233168 time: 0
Only multiples sum: 233168 time: 0
Sum of series:      233168 time: 0

성능 비교를 위해 n이 더 큰 경우 :

$JDK_HOME/bin/java FizzBuzzNot 1000000000
Brute force sum:    233333334166666668 time: 4744
Only multiples sum: 233333334166666668 time: 818
Sum of series:      233333334166666668 time: 0

이 주제를 주 제외로 다운 투표 한 사람들에게

이 질문에 대한 해결책을 제시하는 요점은 Sum of FizzBuzz에 대한 무차별 대입 솔루션은 FizzBuzz Classic과 유사하지만 Sum 문제에 대한 더 나은 솔루션을 사용할 수 있으며 근본적으로 다른 문제가된다는 것입니다. FizzBuzz의 합은 시리즈의 합에 대한 적절한 공식을 기억하지 않거나 3 또는 5 씩 밟을 때 적용된다는 것을 모르는 경우 매우 까다 롭습니다.

시리즈를 반으로 나누고 반을 뒤집고 쌍을 이루면 시리즈의 합에 대한 공식을 다시 도출하면 (n + 1) (n / 2)가되어 정말 지저분한 길을 밟을 수 있습니다 정수 나누기와 잘린 나머지 부분에 관한 한. 이 공식의 (n (a1 + an)) / 2 버전은 n의 모든 값에 대한 간단한 대답에 절대적으로 중요합니다.


3
직접 계산할 수 있습니다 (Ruby) : t = { |i| (i * (i+1)) / 2 }; fizzbuzz = { |n| 3 * t((n-1)/3) + 5 * t((n-1)/5) }
kevin cline


1
@ GlenH7 그래, 난 내 버즈 킬이기 때문에 내 의견을 삭제했습니다. 글렌은 전혀 질문에 대답하지 않는 경우에도, 자신의 분석을 위해 소품을받을 권리 : D (게다가, 나는 완전히 코딩을하고 내 자신의 솔루션 순간 전에 시도)
안드레스 F.

2
이 계열이 모듈로 = 0 인 경우 계열 n의 합계를 찾고 있습니다. n / 2 * (m + nm) 공식을 사용할 수 있습니다. 여기서 m = 모듈로 수와 n = 계열의 요소 수 (일명 floor (x / m). 그 후 쉬움, S (3) + S (5)-S (3 * 5) [일부 숫자는 두 번 계산하지 않습니다]
jmoreno

3
문제가 발생할 수있는 한 가지 이유는 일부 숫자를 두 번 계산하기 때문입니다 (15로 나눌 수 있음). 예제 프로그램은 ideone.com/clone/oNWrhJ
jmoreno 11:15

8

나는 그가 그 경험을 통해 적어도 배울 수 있도록 문제를 해결하는 방법을 보여 주어야한다고 느꼈다. 그러나 그는 다시 묻지 않았습니다. 그 상황을 처리하는 올바른 방법은 무엇입니까?

나는 인터뷰의 레벨과 상관없이 "FizzBuzz"레벨의 질문인지 아니면 고급 질문인지는 상관하지 않습니다. 응시자에게 질문을하도록 요청했는데 을 할 수는 없지만 정답요구하지 않아도 시간이 가치가 없습니다. 세상에서 어떻게 그렇게 지적 게으름을 피울 수 있습니까?!?

그리고 당신이 프로그래머로 완전히 악취를 물고 직업에 버팔로를 가려고한다고하더라도 지금 당장 정답을 얻는 것만 큼 실용적이지 않아서 다음 인터뷰에서 알 수 있을까요?

따라서, 답변을 "주지" 말아야 하지만 , 응시자가 정답을 풀지 못하도록해야합니다. 그렇지 않은 경우 내 책에 적의 큰 깃발이 있습니다.

만약 누군가 모듈러 연산자를 기억하지 못하고 그것 없이는 스스로 움직일 수 없어서 주니어 레벨 데브 인터뷰에서 FizzBuzz를 날려 버렸다면, 정답을 설명하고 나면 다시 사용하는 것에 대한 열정을 얻었습니다. 또는 최소한 올바른 코드를 통해 대화하면 올바르게 응답하는 것만 큼 좋습니다.


1
왜? 나중에 Google에서 답을 얻을 수 있습니다. FizzBuzz는 꽤 인기가 있습니다. 누군가 계수 계수를 모르면 솔직히 걱정할 것입니다.
브라이언

나는 그에게 계수 연산자 대신에 무언가를 찾으려고 노력한 것에 대해 그에게 신용을 주었지만, 그는 그 시점까지 도달하지 못했습니다. 나는 당신이 그의 대답을 요구하지 않는 것에 초점을 두는 것이 좋다고 생각합니다. 귀하의 관찰은 인터뷰 중에 제기 된 다른 도전과 일치합니다.

나는 FizzBuzz에 대해 정말로 의견을 얻습니다 ... 그러나 이것이 정답입니다. 응시자가 답변을 요구하지 않으면 답변하지 마십시오.
제임스 P. 라이트

@ JamesP.Wright-어느 정도 동의하고 인터뷰에 들어가면 그것을 코딩 문제로 사용하는 것이 조금 당황했습니다. 그것은 한 가정 말도 안되게 쉽게하고, 심지어 질문을 과도하게 읽을 수있는 경고를 앞에는. 또한 후속 작업도 쉬워야했고, 그에 따라 더 높은 수준의 개발 / 디자인 기술을 보여줄 수있는 3 분의 1이있었습니다. 우리는 세 번째 질문에

1
@ 0A0D에서 FizzBuzz와 관련된 "수학"은 주어진 변수가 3 및 / 또는 5로 나눌 수 있는지 여부를 확인하는 것입니다. 나와 같은 "비즈니스 개발자"조차도 같은 수준의 프로젝트를 반복해서 사용하여이 수준의 수학을 사용합니다. GlenH7, FizzBuzz에서 재귀를 사용하는 것이 나에게 깊은 인상을 주거나 놀라게 할 지 확신 할 수 없습니다 .... 확실히 위험한 과잉 인 것 같습니다.
Graham

4

사전 화면에서 면접관과 통화하는 동안 fizzbuzz를 입력했습니다. 그것은 모든 사람들이 듣지 못하더라도 학기 한 학기 후에도 분명히 "학년"지위를 획득 한 후에는 서로 뭉칠 수 있어야하는 것입니다.

그렇게 할 수 없다는 점에서 실제로 회복은 없습니다. 그것은 당신이 필요한 경우를 피하기 위해 필요한 그러한 성가신 것 중 하나입니다.

사전 스크린으로 제공하는 것이 합리적이므로 모든 사람이 인터뷰를 위해 현장에 데려 오는 데 시간을 낭비하지 않도록해야합니다.


사전 검사를 위해 제공된 샘플 코드를 요청했습니다. 이 코드에는 중급에서 고급 C # 언어 기능이 있었기 때문에 1 ~ 2 분 안에 논리 문제를 해결할 것이라고 기대했습니다.

7
제공된 샘플 코드가 인터뷰에서 입증 된 지식과 일치하지 않으면 뇌가 즉시 샘플 코드를 의심하게됩니다.
Graham

@Graham : 그를 6 개월 동안 임시 직원으로 고용하십시오.
Brian

@ 0A0D 슬프게도 나는 그런 종류의 유연성을 허용 한 곳에서 일한 적이 없다. 광고 된 포지션이 풀 타임 공연이라면 그게 우리가 그 사람에게 제공 할 수있는 전부입니다.
Graham

3
이 시나리오에는 울타리가 없습니다. 그의 "샘플 코드"가 강력한 지식을 보여주고 피즈 버즈를 코딩 할 수 없다면, 샘플을 뽑아 세부 사항을 물어보십시오. 그가 그것을 백업 할 수 없다면, 내가 가장 좋아하는 라인은 "우리는 여전히 일부 후보자를 검토 할 것입니다. 우리는 당신에게 돌아올 것입니다."
Michael Brown

4

나는 심지어 루프를 사용하는 것에 대해 생각하도록 코치했으며 3과 5는 실제로 특별한 경우로 고려할 가치가 있다고 말했습니다.

무엇인지 알고 재미있을 거라고 당신이 당신의 FizzBuzz 틱 질문에 "정확한"대답은 생각합니다. 내가 앉아있는 곳에서 질문의 편지에 쓰여진 좋은 것 (C로)은 다음과 같습니다.

int f(void) {
    // sum the multiples of 3 and of 5 and subtract multiples of 15 so we don't count them twice
    return ((1000/3)/2)*(999+3) + ((1000/5)/2)*(995+5) - ((1000/15)/2)*(990+15);
}

더 좋은 방법은 다음과 같습니다.

왜 직접 계산할 수있는 프로그램을 작성해야합니까?

요점은 고양이를 껍질을 벗기는 방법은 여러 가지가 있으며 문제의 후보자가 즉시 for루프를 작성하기 시작 mod하지 않았다는 사실은 그가 멍청하다는 의미는 아닙니다. 응시자가 알고있는 것을 알고 싶다면 문제에 대해 토론 하십시오. 그가 생각하는 것을 찾으십시오. 그가 갇혀 있거나 혼란 스러우면 어디에서 왜 그런지 알아보십시오. 그는 당신을 결코 고려하지 않은 접근법으로 이끌 수 있습니다.

내 질문은 내가 그에게 논리 질문에 대한 대답을 줘야했는지 여부입니다.

면접관으로서, 응시자에게 수업을 가르치는 것은 귀하의 장소가 아닙니다 . 그들이 실제로 코드를 작성하는 방법을 모른다면, 자신이 모르는 정도에 집착하여 당황 할 필요는 없습니다. 그들이 물어볼만큼 관심이 있다면, 언제든지 공유하십시오. 그렇지 않으면 인터뷰를 마무리하고 시간을 내 주셔서 감사하며 다음 후보로 넘어갑니다.


마지막 단락에서 확실한 답을 얻으려면 +1하십시오. 그리고 당신은 내가 "대답"대신 "답"이라고 말해야한다는 점에서 좋은 지적을합니다. 특정 방법을 해결하는 방법에는 여러 가지가 있습니다. 에 관해서는 discuss the problem, 그 요소는 인터뷰 중에 다른 질문을 제기했습니다. 유감스럽게도, 후보자는 답장에서 다가오는 것보다 적었습니다. 나는 "좋은 주관적"에 대한 P.SE 가이드 라인을 지키려고 노력하면서 원래의 질문에 그러한 측면을 추가하지 않았다.

1
"입후보자에게 수업을 가르치는 것은 당신의 장소가 아닙니다"-나는 동의하지 않습니다. 좋은 프로그래머는 항상 배우고 있습니다. 그들이 새로운 것을 배우는 것에 대해 감사하게 행동함으로써 당신의 교훈에 응답한다면, 그것은 훌륭한 프로그래머라는 신호입니다. 그들이 당신의 수업을 으 If한다면, 그들은 가장 시끄러운 프로그래머 일 것입니다.
nbv4

면접관이되어서 그런 대답을한다면 대수 교사가 필요한 학군을 소개해 드리겠습니다. FizzBuzz는 면접관이 기본적으로 괜찮은 프로그래머와 차별화 할 수있는 질문으로 넘어갈 수 있도록 프로그래밍에 대한 기본 지식을 보여줍니다. 답은 영리하지만, 대수를 아는 사람들이 프로그래밍 (잘못)을 알고 있거나 단순히 악수를한다는 가정하에 인터뷰를 남기면서 루핑, 모듈 식 산술 등을 이해한다는 것을 입증하지는 못합니다. (더 가능성이 높습니다).
user1172763

요점은 FizzBuzz와 달리 OP의 인터뷰 질문에 단일 계산으로 답변 할 수 있다는 것입니다. 따라서 후보자가 루프를 작성할 수 있는지 여부를 확인하는 것이 바람직하지 않습니다. 특정 (및 명시되지 않은) 이유에 대해 질문을한다는 가정하에 후보자가 더 느리고 더 자세한 솔루션을 선택할 것으로 기대할 수 없습니다. 실제로, 인터뷰자는 응시자가 루핑이 완전히 불필요하다는 것을 알아 차리는 것을 쉽게 알아볼 수있는 "속임수"질문 일 수 있습니다. 당신의 마음을 읽는 것은 응시자의 책임이 아닙니다.
Caleb

2

당신의 "문제"는 당신이 공감적인 인간이라는 것입니다. 그래서 누군가가 당신이 답을 알고있는 문제로 어려움을 겪는 것을 보는 것은 어렵습니다 (이것은 유용성 연구를 실행하면 문제이기도합니다). 면담 자로서의 관점에서, 귀하는 인터뷰 대상자에게 프로그램이나 문제 해결 방법, 또는 귀하가 요청한 문제에 대한 해결책을 가르쳐 줄 의무가 없습니다.

인터뷰 대상자를 코치 할 때 정답을 얻을 수있는 것은 아닙니다. 실제로 문제를 해결할 수 없는지 또는 한두 가지 실수 나 오해에 매달린 지 확인할 수 있습니다.

따라서 사실 후에 인터뷰 대상자에게 솔루션을 제공하려면 순전히 스스로 해내는 것입니다. 일반적으로, 나는 인터뷰 대상자가 다른 문제를 시도 할 수 있도록 그 시간을 사용하고 싶습니다. 그러나 FizzBuzz에 대답 할 수없는 "고급"프로그래머가 목록에서 제외되었을 수 있습니다. 만약 당신이 해결책을 제시하기로 결정했다면 당신은 인터뷰가 생각보다 나아 졌다고 생각하지 말아야합니다. 만약 당신이 생각을하면, "그는 문제를 해결할 수 없었지만, 그것을 설명했을 때 잘 이해했습니다", 당신은 위험한 길을 가고 있습니다).

그리고 네, 나는 그의 머리 위에 있었고 인터뷰 문제를 해결하기위한 첫 번째 시도조차 할 수 없었던 인터뷰 대상자였습니다. 그것은 단순히 그 분야에서 직업을 추구하기 위해 더 많은 것을 배워야한다는 것을 의미했습니다.


2

정답을 얻는 것이이 테스트의 중요한 부분은 아닙니다. 당신이 측정하고있는 것은 문제 해결에 대한 누군가의 접근 방식, 질문에 어떻게 참여하는지, 그들이 창의적이고 흥미로워지는 것들입니다. 그런 종류의 것들. 그들이 틀린 답을 얻더라도 이러한 기준에 의해 여전히 실행 가능할 수 있습니다.

좋아, mod 연산자를 알 수 없다는 사실을 알지 못하고이 후보에 부여 한 메트릭으로 인해 여전히 찬성 인 것처럼 보이지만이 후보에 대한 올바른 대답을하는 것만으로도 믿을 수는 없습니다. 이익.

이것은 여기에서 당신의 개인적인 의견에 귀착됩니다. 향후 인터뷰에서 응시자가 더 나은 결과를 얻을 수 있도록하기 위해 인터뷰 피드백을 제공하고 싶습니까? 그렇다면 위에서 설명한 용어로 의견을 정리하십시오. 정답에 대한 것이 아니라 답변에 도달하는 방식이 결정적인 요소라는 것을 알려주십시오.


의 코멘트 +1 how they work to arrive at the answer is a critical factor. 방법 해당의 때문에 내가 사용하는 나머지 연산자를 예상하는 동안은, 그건 내가 그것을 해결 한 것이다. 나는 경계 조건 오류가 눈에 띄지 않고 문제를 해결 한 다른 접근법을 보게되었습니다.

2

나는 그가 그 경험을 통해 적어도 배울 수 있도록 문제를 해결하는 방법을 보여 주어야한다고 느꼈다. 그러나 그는 다시 묻지 않았습니다. 그 상황을 처리하는 올바른 방법은 무엇입니까?

내가 보는 방식으로는 처리 할 상황이 없습니다. 당신이 그의 신청을 거절했다고 가정하면, 후보자의 (명백한) 관심 부족은 당신이 걱정해야 할 것이 아닙니다.

사실, 그 경우에도 않았다 물어, 당신은하지 않는 빚을 그에게 설명을. HR 담당자와 이야기를 나눈 경우, 법적인 이유로 후보와의 추가 논의는 바람직하지 않다고 조언 할 수 있습니다 .


또한 FizzBuzz 문제는 요청 방법에 따라 "최상의"답변이 다르다는 점에 주목할 가치가 있습니다. "가장 간단한"솔루션과 "가장 효율적인"솔루션을 요청하면 최상의 답변이 근본적으로 다릅니다. 그리고 이것은 당신이 질문을하는 방식이 불분명하다면 당신 판단을 불공평하게 할 수 있습니다 . (반면에, 좋은 / 경험이있는 응시자는 코딩을 시작하기 전에 그 점을 명확히 할 수있는 선견지명이있을 것입니다 ...)


2

귀하의 질문에 대답하기 위해, 나는 대답하지 않을 것입니다. 그 사람이 더 나은 소프트웨어 엔지니어가되기를 원한다면 답을 찾을 것입니다. 당신이 그들에게 대답을 주면 당신은이 기회를 빼앗아 가고 있습니다.

가장 관련성이 높은 질문은 언제 자신을 선임 개발자라고 부를 수 있습니까? 이것은 조직과 국가마다 다릅니다. 예를 들어, 제가 함께 일한 회사는 5 년의 경험을 가진 소프트웨어 엔지니어를 선임으로 간주했습니다. 경험의 질, 길이에 중점을 두지 않았습니다.

언어에 관계없이 모든 소프트웨어 엔지니어를 분류하는 표준을 만들 때까지 우리는 기술 수준을 결정하는 개인이 남게됩니다. 그리고 우리는 가장 초보적인 기술 테스트에 실패한 "선임 엔지니어들"에 대해 계속들을 것입니다.

몇 주 전에 "언제 개발자에게 전화해야합니까?" 라는 질문이있었습니다 . 나는 또한 주제에 대한 블로그 게시물 을 썼습니다 .


블로그 링크를 친절하게 수정 하시겠습니까?
André

@ André 링크가 업데이트되었습니다.
척 콘웨이
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.