알고리즘 질문은 좋은 인터뷰 질문입니까? [닫은]


25

최근 동료 프로그래머와 논쟁을 벌였습니다. 그는 새로운 직책에 대해 인터뷰하고 있었고 다음과 같은 질문을 받았습니다.

X에서 시작하여 Y로 끝나는 일련의 숫자를 제공하지만 하나의 요소가 누락되어 N이 YX-1이면 누락 된 요소를 O (N) 이상으로 찾으십시오.

이제 대답은 여기와 관련이 없습니다 (그러나 흥미 롭습니다). 이것은 인터뷰 중에 질문하기 좋은 질문인지에 대한 토론을 시작했습니다.

한쪽 : 알고리즘은 프로그래밍의 상속 부분이며이 질문에 답할 수있는 응시자 능력은이 응시자가 좋은 프로그래머가되고 더 큰 문제를 해결할 수 있으며 궁극적으로 이해하고 대답하기 쉬운 대부분의 프로그래밍 작업을 처리 할 수 ​​있음을 지원합니다.

다른 측면 : 처음부터 알고리즘을 작성하는 것은 현대 프로그래밍에서 거의 사용되지 않으므로 사람이 훌륭한 프로그래머가 될지 여부에 대한 더 큰 문제와 관련이 없습니다. 사람은이 질문에 성공적으로 대답 할 수는 있지만 여전히 일반적인 프로그래밍 작업을 수행 할 수는 없습니다.

당신의 생각? 좋은 면접 질문?


죄송 합니다만 이해할 수 없습니다이 문맥에서 "또는 더 나은"find the missing element in O(N) or better 의미는 무엇입니까 ? 간단한 while 루프로 해결할 수있는 것 같지만 어쨌든 이해하지 못합니다- 해결 되었거나 해결되지 않았습니다 .
Camilo Martin

"또는 더 나은"성능을 나타냅니다-O (ln (n)) 솔루션이 더 좋습니다.
Ethel Evans

알고리즘 질문은 실제로 프로그래밍 또는 기술 면접에서 예상되는 질문 중 하나입니다. Gayle Laakmaan McDowell은 알고리즘에 대한 섹션이있는 "코딩 인터뷰 균열"이라는 책을 썼습니다.
hagubear

답변:


20

알고리즘 질문을하는 데 동의하지만 특정 big-O 품질 수준을 주장하는 것에 동의하지 않습니다.

이런 종류의 질문을하는 것은 그 사람이 어떻게 문제에 접근 하는가와 그들이 시도 할 때 어떤 함정을 고려 하는지를 보는 것은 흥미롭지 만, 그들이 잘못한 내용을 작성하지 않으면 그들이 쓴 내용의 실제 세부 사항은 그들이 사실을 말하는 것만으로는 아닙니다 일관된 방식으로 문제 해결 / 디자인 단계를 수행합니다.

나는 비슷한 질문을하지만, 고용 후 최고의 행운을 얻은 사람들은 잘못된 답변을 주었지만 그들의 접근 방식에 맞는 아이디어를 가진 사람들입니다.


9

나는 알고리즘을 작성할 수있는 능력이 그 사람이 좋은 프로그래머인지에 대한 더 큰 문제와 관련이 없다는 생각에 동의하지 않을 것이다. 그가 그것을 사용할 필요가 없더라도 (의심스러운), 그는 이미 작성되고 정리 된 단순한 요구 사항보다 복잡한 문제에 대한 논리적 해결책을 해결하는 데 필요한 정신적 유연성이 여전히 있는지를 보여줍니다. 클라이언트가 자세히 설명합니다.

생각하고 분석하는 방법을 모르는 사람을 고용하고 싶지 않습니다. 그것이 바로 코드 원숭이와 컴퓨터 프로그래머의 차이를 만드는 것입니다.


6

나는 인터뷰에서 알고리즘 질문을하는 사람들 중 하나라는 것을 인정해야하지만 질문에 대한 실제 대답은 절대적으로 관련이 없다는 것을 강조해야합니다. 인터뷰 대상자가 답을 알고 있는지에 대해서는 조금도 신경 쓰지 않습니다. 대신,이 질문은 다음과 같은 다양한 측면을 대상으로합니다.

요구 사항

이러한 질문은 일부러 명시되어 있지 않습니다. 귀하의 예에서는 시퀀스에 대한 추가 세부 정보가 없습니다. 이 번호가 실제로 정렬되어 있는지 묻는 인터뷰 대상자가 있다면 이는 좋은 징조입니다. 그는 고객에게 더 자세한 정보를 요구할 수있는 올바른 사고 방식을 가지고 있으며, 이는 짧은 시간 내에 더 나은 솔루션을 제공하는 데 도움이됩니다. 응시자는 O (n) 공간을 사용하여 N 개의 배열을 저장한다는 아이디어를 가지고 장난감을 가지고있을 수도 있지만 X와 Y에 대한 자세한 내용을 묻지 않고는 그렇게하지 말아야합니다. X와 Y는 1과 1000 사이에 있다고 가정하겠습니다. 그런 다음 어레이 기반 솔루션을 시작하십시오. 그러나 간격이 10 억과 10 억이라고 말하면 문제는 완전히 다릅니다. 솔루션에 신경 쓰지 않는다고 다시 강조하겠습니다.

표준 기법

O (n)의 의미를 모르는 프로그래머를 고용하고 싶지 않습니다. 그것은 당신이 그 지역에서 괜찮은 교육을 받았다면 반드시 알아야 할 것입니다. 그러나 그것이 의미하는 바를 아는 것이 아니라 그 지식을 실제로 적용하는 것도 중요합니다. 귀하의 예에서 후보자는 필요한 정렬 (O (n log n)으로 인해 버킷 정렬 또는 다른 O (n) 정렬 방법의 옵션을 대상으로 추가 질문을하지 않고) 데이터를 정렬 할 수 없다는 것을 알고 싶습니다. 일반적으로.

마찬가지로 다른 알고리즘 질문은 트리 또는 그래프 순회 또는 재귀와 같은 표준 기술을 대상으로합니다. 응시자는 이러한 기술 중 하나에 빠질 수 있으며 이는 좋은 인상을주지 않습니다. 그러나 그런 경우에는 후보자에게 CS 배경이 있는지 여부를 더 깊이 파고 들었습니다. 물론 대상 위치가 무엇인지에 달려 있지만 일반적으로 런타임 복잡성이나 일반적인 데이터 구조 및 순회에 대해 모르는 개발자는 도움이되지 않습니다.

문제 해결 사고

질문을 한 후 응시자를 면밀히 모니터링하십시오. 그녀는 어떻게 반응합니까? 처음 에는 문제를 해결하는 방법에 대한 단서가없는 후보들로부터 최상의 결과를 얻을 수 있습니다. 그런 점에서,이 문제는 나중에 직장에서 비슷한 상황이 발생하면 어떤 일이 일어날 수 있는지 점검합니다. 개발 과정에서 이러한 문제가 발생할 수 있으며 후보자가 스스로 문제를 모두 해결할 수없는 경우에도 후보자가 이러한 문제를 처리하는 방법을 아는 것이 좋습니다.

예 : 응시자가 다음 30 분 동안 무음 모드로 전환되는 것을 원하지 않습니다! 그가 현명한 질문을 할 수 있는지 확인하십시오 (요구 사항 참조). "전화로 동료 옵션을 사용해도 될까요?"와 같은 "재미있는"반대 질문도 있습니다. 좋은 징조입니다.

대답하는 방법

일반적으로 이러한 종류의 질문에 가장 적합한 답변은 반대 질문입니다! 정답을 말하는 것은 기본적으로 모든 것을 실패하며, 실제로는 정답이 아닙니다. 왜냐하면 이러한 모든 질문은 당신이 지능적으로 만들지 않아도 필요한 정보를 얻지 못한 채 당신의 대답이 암시하는 절충점을 암시하기 때문입니다. 거래. 물론, 반대 질문의 질은 후보자마다 다릅니다.

면접 질문에 대한 일반적인 참고 사항 : 반대 질문은 거의 나쁜 일이 아닙니다. 내 인터뷰 중 하나에서 예를 들어 다음과 같은 질문을했다. "X를 구현해야한다면 C ++ 또는 Java를 선택하겠습니까?" -나는 단순히 "이 두 가지로 제한되어 있습니까?" 면접관으로부터 그러한 반대 질문에 대해 어떤 반응을 보 였는지, 실제로 면접관에게 자신이 할 수있는 일을 실제로 보여주는 것이 얼마나 쉬운 지 생각해보십시오.


"전화 동료 옵션을 사용할 수 있습니까?" 좋은 징조? 이것은 인터뷰 대상자가 문제를 해결하는 방법을 모르고 항상 도움을 요청한다는 것을 나타내지 않습니까?
Uooo

인터뷰 대상자가 단순히 대답 할 수없는 질문이 항상있을 것입니다. 이 경우 좋은 징조이지만 물론 인터뷰 대상자는 몇 가지 질문에 대해 해당 동작을 반복해서는 안됩니다. 어려운 과제는 후보자가 지식이없는 (허용 가능한) 단 하나의 스위트 스팟에 도달했는지 또는 일반적으로 어려운 문제에서 벗어나려고하는 경우 (아직 불가능한지) 알아내는 것입니다.
Frank

누군가 한때 저급 개발자와 상급 개발자의 차이점은 수석 개발자가 더 빨리 도움을 요청한다는 것입니다. 동료에게 전화하는 것은 중요한 기술입니다. 이 업계에는 많은 자아가 있으며 "모르겠다"는 말이 좋은 징조입니다. 내가 디자인 / 작성한 최고의 코드 중 일부는 내 아이디어뿐만 아니라 사람들과의 작업에서 나왔습니다.
MBonig

5

알고리즘 / 공식에 대한 질문을하지 않는 한 후보자가 직업에 대해 알아야 할 경우 (예 : 유체 역학, 위치가 필요한 경우), 나는 그 가치를 보지 못합니다. 응시자는 이미 옷을 입는 방법, 말하는 방법 등에 대해 걱정하고있을 것입니다. 즉석에서 수학 질문에 대답 할 수 있는지 여부는 TV 게임 쇼에서 어떻게 돈을 벌 수 있을까요?

인터뷰 할 때 '프로그래밍'질문도하지 않습니다. 나는 후보자들에게 과거 프로젝트, 그들의 코드가 어떻게 목표를 달성했는지, 그들의 접근법이 무엇인지 등을 설명하게한다. 그로부터 후보자가 자신이하는 일을 알고 있는지 또는 그가 포즈를 취하는 사람인지를 빠르게 알 수있다.


4

나는 프로그래머가 멋진 새로운 프레임 워크를 사용하더라도 알고리즘을 잘 알아야한다는 데 동의하지만 인터뷰에서 뇌 맛보기에 대해 완전히 확신하지는 못합니다. 가장 큰 관심사는 실제 환경에서 매우 다른 조건에서 알고리즘을 작성한다는 것입니다. 일명, 모든 사람이 당신을 볼 때마다 압력을 가하지 않고 적어도 몇 분 동안 침묵으로 그것을 생각해야합니다. 이 평가 방법을 옹호하는 사람들을 위해, 일반적으로이 평가 방법을 얼마나 오래 해결할 수 있습니까? 나는 코드가 열렬한 3 분의 공포에서 해결책을 찾는 것에 관한 것이 아니라고 생각합니다. 그래서 이것이 실제로 누군가가 일상적인 작업을 처리하는 방법을 보는 좋은 방법이라고 확신합니다.


2

이 특정 질문의 문제점은 거의 까다로운 질문이라는 것입니다. 하나의 특별한 통찰력으로 쉽게 O (n)을 얻을 수 있습니다. 그렇지 않으면 O (n log n)보다 더 나아지기 위해 고심 할 것입니다. "이것을 본 적이 있습니까?"

좋은 알고리즘 질문이 있는지 잘 모르겠습니다. 그래프 이론을 바탕으로 한 질문을 한 경우, 인터뷰 대상이 그래프 이론에 얼마나 익숙한 지에 따라 달라지며, 고용 한 경우 그래프 이론에 상당히 빠르게 적응할 수 있습니다. 다시, "이전에 노출 된 적이 있습니까?"

정기 면접으로 심각한 문제 해결을 할 시간이 없으며, 앉아서 앉아서 Wikipedia를 사용할 수있을 때 다르게 접근하고 일반적으로 시간을내어 문제를 파악합니다. 면접관이 면담자가 알고있는 내용을 면밀히 논의하고 적절한 알고리즘 질문을 선택할 시간이 없을 것입니다.


1
O (n)을 보는 데 대한 특별한 통찰력은 무엇입니까? 본질적으로 O (n) 문제로 "누락 된 N 개의 순차 값의 정렬 된 목록 검색"을 참조하십시오. 어떻게하면 더 나빠질 수 있을까요? (솔직히, 나는 호기심이 많고 O (n) 솔루션이 명백하지 않은 방법을 보지 못하며 심지어 O (log n) 솔루션도 나에게 분명해 보입니다.)
dash-tom-bang

@ dash-tom-bang : 목록을 정렬 된 것으로 생각하지 않았습니다 (내가 뭔가 잘못 이해 했습니까?) 쪽으로.
David Thornley

아,-그럴 수 있습니다-나는 목록이 정렬되지 않았다고 생각하지 않았습니다. :) ( "목록은 X에서 시작하고 Y에서 끝납니다.")
dash-tom-bang

2
빠른 선택의 변형도 여기에서 작동합니다. (상단 + 하단) / 2를 피봇 팅하면 각 반이 얼마나 커야하는지 알기 때문에 누락 된 항목의 절반을 쉽게 확인할 수 있습니다. 누락 된 요소를 찾을 때까지 반복하십시오.
Paul Hankin

1
질문은 X에서 시작하여 Y로 끝나는 시퀀스 (세트 등이 아닌)를 의미하므로 항목이 정렬되어 있음을 의미합니다. 다소 사소한 질문처럼 보입니다.
FinnNk

1

정기적으로 사용하는 알고리즘과 같은 몇 가지 질문이 있지만 그중 일부는 매우 어렵습니다. 나는 그들이 정신적으로 문제를 어떻게 공격하는지, 어떤 개념을 이해했는지를 알아 내기 위해 그것들을 사용합니다. (포인터를 이해하지 못하는 개발자 후보자가 너무 많았습니다.)


개 같은 포인터? :)
JoshD

1

후보자에 대한 통찰력을 줄 수있는 질문이 필요합니다. 알고리즘 질문은 좋은 응답을 줄 수도 있고 그렇지 않을 수도 있습니다. 그리고 나는 그들이 대답 할 수 있는지 말하고 있지 않습니다. 그들이 그것을 통해 일하고 당신이 그들의 추론을 이해하고 따르는 경우, 그것은 좋은 지표입니다. 그들이 단지 거기에 앉아, 실제 반응이 없다면, 어디서부터 시작 해야할지 모르는 것 같습니다. 아마도 나쁜 지표입니다. 문제는 일부 사람들이 얼어 붙어 문제 해결 능력이없는 것과 얼어 붙는 것을 구별하는 것이 어려울 수 있다는 것입니다.

사람들은 여러 가지 이유로 인터뷰에서 무엇이든 요구하는 것에 대해 불평 할 것입니다. 신청자가 동결 될 수 있고, 신청자가 그 질문을 방금 찾은 것일 수 있으며, 신청자가 특정 퀴즈 / 기술 / 무엇을 알지 못할 수도 있습니다. 이 모든 것이 사실이지만, 여전히 인터뷰가 필요하며,이 직업에 종사하는 많은 사람들이 그것을 싫어합니다. 우리는 누군가 우리의 판단에 앉아 있다는 생각을 싫어합니다. 우리는 불공정하게 판단 될 수있는 이유 또는 테스트가 허위이거나 게임 될 수있는 이유를 즉시 구체화합니다. 결론은 중요하지 않습니다.

당신이 정말로 원하는 것은 면접 중에 제시되거나 제시되지 않을 기술을 결정할 수있는 능력을 가진 면접관입니다. 질문은 도구 일뿐입니다. 나에게 모든 망치는 똑같아 보인다. 그러나 그들에게 충분히 숙련 된 사람에게는 차이가 있다고 확신합니다.


0

나는 우리가하는 일이기 때문에 알고리즘 질문을 좋아합니다. 나는 우리가 사용하는 것이기 때문에 제약을 좋아합니다. Big-O는 특히 내 산업과 관련이 있습니다.

나는 이런 종류의 질문에 대한 답변이 "화이트 보드에 코드를 작성"해야하는 것을 좋아하지 않습니다. 면담자는 토론이 진행되는 동안 면접관이 요구 사항을 변경함에 따라 솔루션에 대한 접근 방식에 대해 지능적으로 이야기하고 지속적인 토론에 참여할 수 있어야합니다.

인터뷰 대상자는 "처음부터 시작하여 '구멍'을 찾기 위해 끝까지 행진한다"는 최초의 질문이 제기된다. 면담자는 N이 과장이기 때문에 너무 느리다고 말합니다. 인터뷰 대상자는 이진 검색에 대해 논의하기 시작합니다. 인터뷰어는 갑자기 데이터가 더 이상 정렬되지 않는다고 말합니다. 인터뷰 대상자는 "정렬 한 후 검색"이라고 말합니다. "이제 너무 느립니다." 등

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.