기술 인터뷰 및 프로그래머 능력

내가 말할 것은 본질적으로 다소 논란의 여지가 있지만 오늘 매우 낙담합니다-그래서 나는 이것을 요청할 것입니다.

방금 주요 기술 회사와 인턴쉽에 대한 인터뷰를했는데 여기에서 일반적인 알고리즘 지향 인터뷰 질문이 많이 나왔습니다. 이제 저의 배경을 감안할 때, 저는 알고리즘이 강하다고 생각합니다 (저는 대학원 수준 알고리즘에서도 NP- 완전성 및 그 이상 (근사 및 무작위 알고리즘)을 포함하는 것들에 대해 좋은 성적을 얻었지만 불행히도 인터뷰를 시작했습니다. 약 10 분 안에 문자열 문제를 해결하는 매우 효율적인 방법을 생각하고 인터뷰가 끝나면 물 한 잔을 마시고 바나나를 먹고 잠시 휴식을 취한 후 다시 시도했습니다. 답 : 5 분 안에 도착할 수 있었는데 최악의 상황은-실제로 그 궤도에 있었으며 면접관이 그것에 대해 암시했지만 너무 많은 압력으로 나를 요리했습니다. 나의 전체 경험은 기술 인터뷰에 대해 생각하게했다. 몇 가지 질문이 있었고이 포럼에서 질문을하고 싶었습니다.

  1. 30 분 안에 다른 사람의 기술적 능력을 판단 할 수 있습니까? 솔직히? 아니면 그냥 주사위 던지기입니까?

  2. 기술 면접 질문은 문제 해결 능력을 측정합니까? 이 점은 매우 논쟁의 여지가 있습니까? 박사 과정 학생으로서 나는 수학 문제 해결에는 전에 들어 보지 못했던 무언가를 해결하는 것이 필요하다는 것을 알고 있습니다. 반면에 두 개의 링크 된 목록을 정렬 된 순서로 병합하거나 k 번째 레벨에서 이진 트리의 모든 요소를 ​​인쇄하면 누군가가 해결책을 보거나 사전에 문제를 해결하면 “단순한 연습”이됩니다.

  3. 이 인터뷰에서 색이 나는 사람들이 훌륭한 프로그래머가 되나요? 그들은 매끄러운 게임 엔진, 그래픽 라이브러리를 설계하고 빠른 포크 조인 프레임 워크를 작성합니까? 기술 면접에서 잘 수행하는 것과 실제 프로그래밍 능력 사이에 긍정적 인 상관 관계가 있음을 나타내는 증거가 있습니까? 아니면 이러한 인터뷰는 “일을 끝내는”유형의 사람 (Spolsky)을 찾는 데 더 적합합니까?

ICML, VLDB, Mobicom에 획기적인 아이디어를 출판하는 많은 학자들이 이러한 인터뷰에 크게 도움이 될 것이라고 확신합니다. 그러나 나는 그들이 당신이이 지구상에서 가장 똑똑한 사람들임을 확신 할 수 있습니다.

나는 주로 학계 (학년생)에 있습니다. 그래서 나는 울타리 반대편에있는 누군가의 지각에 크게 감사하겠습니다. 실제로 이러한 인터뷰를 수행하는 사람이 있습니까?

모두들 모든 친절하고 사려 깊은 답변에 감사드립니다. 다른 질문을하고 싶지 않기 때문에이 질문에 대한 답변을 요청합니다.

후보 X가 알려진 공개 소스 프로젝트에 기여한 훌륭한 공개 포트폴리오를 가지고 있다고 가정 해보십시오. 실제로 패치를 확인하고, 닫은 버그를 확인하고 자신이 만든 디자인을 살펴볼 수 있습니다. 이 경우, 질문은 공개적으로 이용 가능하고 검증 가능한 작업에 얼마나 많은 가중치를 주려고 하는가에 비해 15 분 안에 매우 이진 트리 인터뷰 질문에 얼마나 잘 대답하겠습니까?]



답변

명심하십시오.

  1. 면접 절차의 주요 목표는 각 면담 대상의 개인적 능력에 대한 절대적인 진실에 도달하는 것이 아니라 많은 수영장에서 후보자를 거의 선택하지 않는 것입니다.
  2. 좋은 개발자를 고용하는 것보다 나쁜 개발자를 고용하는 것이 훨씬 비쌉니다.

인터뷰를 할 때, 기술 퀴즈와 같은 불완전한 지름길은 여러 번 언급했지만 30 분 안에 사람을 판단 할 수있는 완벽한 과정이 없기 때문에 수행됩니다. 그러나 대부분 나란히 함께 일할 수있는 사치가 없기 때문에 모든 사람이 할 수있는 승률 게임이라는 것을 받아 들여야합니다.


답변

30 분 안에 누군가의 기술적 능력을 판단 할 수 있습니까?

정확히. 전혀 프로그래밍 할 수없는 사람들과 이력서에 물건을 설명 할 수없는 사람들을 제거 할 수 있습니다. 그 외에도 나는 일반적으로 현장에 대한 일반적인 지능과 관심을 측정하려고합니다. 해결해야 할 문제를 모르면 상황에 대해 더 이상 언급하기가 어렵습니다.

기술 면접 질문은 문제 해결 능력을 측정합니까?

그것은 기술적 인 질문의 목표가 아닙니다. 대신 나는 후보자가 컴퓨터 과학의 기초를 파악하고 있는지 알아 내려고 노력 중이다. 문제 해결 능력을 측정하기 위해 후보자에게 그들이 작업 한 흥미로운 문제에 대해 이야기하도록 요청합니다.

이 인터뷰에서 색이 나는 사람들이 훌륭한 프로그래머가 되나요? 아니면 이러한 인터뷰는 “일을 끝내는”유형의 사람 (Spolsky)을 찾는 데 더 적합합니까?

그게 다야. 위대함은 드물다. 유능한 사람을 찾아서 기쁩니다.


답변

  1. 예. 예, 솔직히 이것은 30 분이 사람의 능력에 대한 완전한 그림을 얻기에 충분한 시간이라고 말하는 것은 아닙니다. 면접관의 임무는 인터뷰 대상자가 누구인지, 무엇을 할 수 있는지 느끼기 위해 최선을 다하는 것입니다. 실제로 알지 못하는 이력서에 무언가를 넣은 사람들을 찾는 것은 간단합니다. 모든 기술과 강점을 포함하여 인터뷰 대상자가 수행 할 수있는 작업을 정확히 찾는 것은 아닙니다.

  2. 예. 인터뷰 대상자가 어떻게 생각하는지 확인할 수 있습니다. 정답을 얻는 것이 항상 필요한 것은 아닙니다. 누군가가 어려움을 겪고있는 문제를 다루는 것을 보는 것은 많은 문제없이 누군가가 문제에 올바르게 답하는 것을 보는 것만큼이나 유익합니다. 나는 항상 피면 담자가 대답 할 수 없을 것 같은 질문을합니다.

  3. 기술 인터뷰에서 최고의 후보를 찾는다는 경험적 증거를 모르겠지만, 이것이 제가 시도한 최선의 방법입니다. 다른 사람들이 다른 일에 능숙하고 기술 답변을 올바르게 얻는 것이 누군가를 고용 할 것인지 결정하는 유일한 것은 아닙니다. 회사에 잘 맞는다는 것도 매우 중요합니다.

귀하의 질문에 따라, 당신이 이해해야 할 가장 큰 것은 편지 등급과 같이 명확하게 정의 된 피드백이 끝났다는 것입니다. 정답을 얻는 것은 결과의 일부일뿐입니다. 좋은 코드를 작성하고 아이디어를 전달하며 다른 사람의 의견을 듣는 것도 중요합니다. 그러나 이러한 영역은보다 주관적이므로 그대로 처리해야합니다.

문제를 해결 한 방법과 마찬가지로 한 걸음 물러서서 머리를 치 웁니다. 인터뷰에 참여하는 많은 사람들이 인터뷰어는 그것이 완벽한 시스템이 아니라는 것을 알고 있습니다. 그들은 당신을 위해 최선을 다하는 것처럼 회사를 위해 최선을 다하려고합니다.


답변

30 분 안에 개인의 기술 능력이 최소한 x만큼 우수하다고 판단 할 수 있습니다. 즉, 실력보다 실력이 높을 수 있지만, 나쁘지 않다는 것을 확신 할 수 있습니다. x가 요구 사항보다 높으면 고용합니다. 그렇습니다. 실제 능력 아래에서 설명하면 불공평합니다. 내가 말할 수있는 것은 시연을 잘하는 것입니다.

누군가가 실제로 기억에 남는 대답을 약화 시키면 더 어려운 문제를 낳을 것입니다. 학계에서 암기는 중요한 기술입니다. 직장에서는 구글이있을 때 대부분 중복됩니다.

대부분의 훌륭한 프로그래머들이 어떻게 고용되고 있는지를 살펴보면 어느 시점에서 면접을 통과했다고 가정하는 것이 안전합니다. 아니요, 30 분 동안의 인터뷰에서 누군가 훌륭한 프로그래머가 될 수 있는지 알 수 없습니다. 다행히 대부분의 회사에는 훌륭한 프로그래머가 필요하지 않습니다. 편안한 영역 밖에서 작업을 수행하는 것을 두려워하지 않는 견고하고 안정적인 프로그래머와 함께 잘 지냅니다.

획기적인 사상가들이 면접을 겪을 수있는 이유는 화려하고 획기적인 문제를 해결할 수있는 기회가 매우 드물기 때문에 평범하지만 어려운 문제를 해결할 수 있음을 입증 한 후에 만 ​​해결할 수 있다는 것입니다. 소프트웨어가 16 % 이상로드 될 때 충돌하는 이유와 같이 할 수 없습니다.


답변

인터뷰 기술이 실제로 효과가 있는지 아는 사람은 거의 없습니다. 실패한 사람들에 대해 더 이상 배우지 않기 때문입니다. 그러나 그들의 가설을 반증하는 것이 없을 때 그들은 그것이 사실이라는 확인으로 받아들입니다. 따라서 주사위를 던지는 명확한 요소가 있습니다.

시장이 합리적이고 효율적이라고 말하는 경제 이론이 사실이라면, 회사는 면접 이 나쁜 사람들을 직장에서 나쁘게 만들지 않는 방식 으로 고용 하려고 할 것입니다. 따라서 몸에 맞지 않는 옷을 입고 땀을 흘리고 매우 긴장한 사람이었고 인터뷰의 압력으로 기술적 문제를 해결하는 데 어려움을 겪는 사람이있었습니다. 인터뷰의 (일반적으로는 아니기 때문에)-다른 방법으로 유치 할 수있는 것보다 후보자를 더 잘 얻을 수있는 회사의 최고의 기회를 나타냅니다. (기업 세계를위한 머니 볼을 생각하십시오). 결국 인터뷰 편견이 사라질 것입니다.

실제로 이것은 인간 본성에 위배됩니다. 자신감있는 외향적 인 사람과 같은 면접관은 위치에 관계없이 기술 면접이 이력서와 참조보다 나쁜 정보를 제공하더라도 (귀하의 경우에 해당 될 수 있음)이를 고려할 것입니다.

당신의 질문에 관해서 :

  1. 약간. 이 테스트는 신호 대 잡음비가 좋지 않지만 자격을 갖추었지만 기술 수준이 낮은 면접을 희생하면서 완전히 자격을 갖추지 못하도록 조정될 수 있습니다.

  2. # 1을 참조하십시오. 소음의 일부는 사람들이 이전에 문제를 본 적이 있는지의 변화에서 비롯됩니다.

  3. # 1을 참조하십시오. 이 테스트들과 훌륭한 프로그래머가되는 것 사이에는 작은 긍정적 상관 관계가있을 것입니다.

내 충고-기본 기술을 익히기 위해 몇 가지 샘플 기술 질문을 공부하십시오. 그것은 주사위의 롤의 약간의 기억하십시오, 그래서 인터뷰하는 동안 자신감을 얻으려고 노력하십시오. 실제로 생각하는 데 방해가되지 않고 생각하는 것을 설명 할 수 있다면 그렇게하십시오. 그것이 정말로 나쁘게 진행된다면, 당신이 인터뷰에서 긴장하고 당신이 일반적으로 문제가되지 않는 것처럼 보이는 것을 알리십시오-아마도 당신이 해결했던 비슷하지만 더 어려운 문제의 예를 줄 것입니다.