나는 인터뷰에서 알고리즘 질문을하는 사람들 중 하나라는 것을 인정해야하지만 질문에 대한 실제 대답은 절대적으로 관련이 없다는 것을 강조해야합니다. 인터뷰 대상자가 답을 알고 있는지에 대해서는 조금도 신경 쓰지 않습니다. 대신,이 질문은 다음과 같은 다양한 측면을 대상으로합니다.
요구 사항
이러한 질문은 일부러 명시되어 있지 않습니다. 귀하의 예에서는 시퀀스에 대한 추가 세부 정보가 없습니다. 이 번호가 실제로 정렬되어 있는지 묻는 인터뷰 대상자가 있다면 이는 좋은 징조입니다. 그는 고객에게 더 자세한 정보를 요구할 수있는 올바른 사고 방식을 가지고 있으며, 이는 짧은 시간 내에 더 나은 솔루션을 제공하는 데 도움이됩니다. 응시자는 O (n) 공간을 사용하여 N 개의 배열을 저장한다는 아이디어를 가지고 장난감을 가지고있을 수도 있지만 X와 Y에 대한 자세한 내용을 묻지 않고는 그렇게하지 말아야합니다. X와 Y는 1과 1000 사이에 있다고 가정하겠습니다. 그런 다음 어레이 기반 솔루션을 시작하십시오. 그러나 간격이 10 억과 10 억이라고 말하면 문제는 완전히 다릅니다. 솔루션에 신경 쓰지 않는다고 다시 강조하겠습니다.
표준 기법
O (n)의 의미를 모르는 프로그래머를 고용하고 싶지 않습니다. 그것은 당신이 그 지역에서 괜찮은 교육을 받았다면 반드시 알아야 할 것입니다. 그러나 그것이 의미하는 바를 아는 것이 아니라 그 지식을 실제로 적용하는 것도 중요합니다. 귀하의 예에서 후보자는 필요한 정렬 (O (n log n)으로 인해 버킷 정렬 또는 다른 O (n) 정렬 방법의 옵션을 대상으로 추가 질문을하지 않고) 데이터를 정렬 할 수 없다는 것을 알고 싶습니다. 일반적으로.
마찬가지로 다른 알고리즘 질문은 트리 또는 그래프 순회 또는 재귀와 같은 표준 기술을 대상으로합니다. 응시자는 이러한 기술 중 하나에 빠질 수 있으며 이는 좋은 인상을주지 않습니다. 그러나 그런 경우에는 후보자에게 CS 배경이 있는지 여부를 더 깊이 파고 들었습니다. 물론 대상 위치가 무엇인지에 달려 있지만 일반적으로 런타임 복잡성이나 일반적인 데이터 구조 및 순회에 대해 모르는 개발자는 도움이되지 않습니다.
문제 해결 사고
질문을 한 후 응시자를 면밀히 모니터링하십시오. 그녀는 어떻게 반응합니까? 처음 에는 문제를 해결하는 방법에 대한 단서가없는 후보들로부터 최상의 결과를 얻을 수 있습니다. 그런 점에서,이 문제는 나중에 직장에서 비슷한 상황이 발생하면 어떤 일이 일어날 수 있는지 점검합니다. 개발 과정에서 이러한 문제가 발생할 수 있으며 후보자가 스스로 문제를 모두 해결할 수없는 경우에도 후보자가 이러한 문제를 처리하는 방법을 아는 것이 좋습니다.
예 : 응시자가 다음 30 분 동안 무음 모드로 전환되는 것을 원하지 않습니다! 그가 현명한 질문을 할 수 있는지 확인하십시오 (요구 사항 참조). "전화로 동료 옵션을 사용해도 될까요?"와 같은 "재미있는"반대 질문도 있습니다. 좋은 징조입니다.
대답하는 방법
일반적으로 이러한 종류의 질문에 가장 적합한 답변은 반대 질문입니다! 정답을 말하는 것은 기본적으로 모든 것을 실패하며, 실제로는 정답이 아닙니다. 왜냐하면 이러한 모든 질문은 당신이 지능적으로 만들지 않아도 필요한 정보를 얻지 못한 채 당신의 대답이 암시하는 절충점을 암시하기 때문입니다. 거래. 물론, 반대 질문의 질은 후보자마다 다릅니다.
면접 질문에 대한 일반적인 참고 사항 : 반대 질문은 거의 나쁜 일이 아닙니다. 내 인터뷰 중 하나에서 예를 들어 다음과 같은 질문을했다. "X를 구현해야한다면 C ++ 또는 Java를 선택하겠습니까?" -나는 단순히 "이 두 가지로 제한되어 있습니까?" 면접관으로부터 그러한 반대 질문에 대해 어떤 반응을 보 였는지, 실제로 면접관에게 자신이 할 수있는 일을 실제로 보여주는 것이 얼마나 쉬운 지 생각해보십시오.
find the missing element in O(N) or better
의미는 무엇입니까 ? 간단한 while 루프로 해결할 수있는 것 같지만 어쨌든 이해하지 못합니다- 해결 되었거나 해결되지 않았습니다 .