이 사이트와 SO를 읽으면 응시자가 링크 된 목록을 처음부터 구현해야한다는 인터뷰 질문과 답변에 대한 많은 이야기를 보았습니다. 일반적으로 이것은 FizzBuzz 작성과 같은 역할 후보자를 프로그래밍하기위한 "gimme"연습입니다. 아이디어는 응시자가이 작업을 수행 할 수 없으면 프로그래밍 할 수 없으며 거의 즉시 거부해야한다는 것입니다.
그러나 나는 도움이 될 수 없지만 다음과 같은 이유로 이것이 나쁜 습관 일 수 있다고 생각합니다.
- C # 및 Python과 같은 최신 고급 언어는 기본적으로 목록을 광범위하게 사용합니다. 자신 만의 링크 된리스트 객체를 작성하는 것은 비정상적인 상황에서만 필요하며 심지어는 어쩌면 좋지 않은 조언 일 수도 있습니다.
- C ++과 같은 저급 언어에는 반복자 / 목록 컨테이너 및 객체가있는 표준 라이브러리가 있습니다.
- 처음 두 가지 요점에 비추어 코더는 목록 (연결, 이중 연결 등) 자체를 구현하지 않아도 몇 년이 걸릴 수 있습니다. 일부는 심지어 대학 시절 이후 그러한 것들을 실제로 보지 못할 수도 있습니다.
- 컴퓨팅 파워도 수년 전의 요소가 아니기 때문에 포인터를 통한 효율성은 일반적인 문제가 아닙니다.
- "linked list example"과 같은 간단한 웹 검색은 신청자의 진정한 능력을 나타내지 않고 단지 암기하고 다시 뱉어 낼 수있는 많은 코드 예제를 불러옵니다.
링크 된 목록을 사용하여 개방형 질문 / 후보자의 문제 해결 / 비판적 사고 능력에 대한 토론 을 이끌어내는 것이 실제로 좋은 면접 관행이라고 생각합니다. 면접관이 실제로 신청자가 어떤지, 그들이 어떻게 도움이된다고 생각하는지 알 수 있습니다.
데스크톱 또는 웹 응용 프로그램에서 작업하는 프로그래머를위한 "연결된 목록 코드, 작업 없음"이라는 이진 방식은 다소 구식이라고 생각합니다. 또한 매우 해로울 수 있습니다. 목록의 헤드와 올바르게 작업하는 방법을 기억할 수없는 후보자는 그렇지 않으면 뛰어난 코더 및 동료가 될 수 있으며 믹스에서 길을 잃을 수 있습니다. 생각?
편집 : 이것이 좋은 질문인지 나쁜 질문인지는 작업의 맥락에 달려 있다고 제안하는 많은 (좋은) 의견이 있습니다. 동의합니다.이 질문을 다시 말하겠습니다. 연결 목록 구현은 FizzBuzz와 같은 질문이나 계승 계산을위한 재귀 함수 작성과 유사한 광범위한 코딩 작업에 대한 일반적인 인터뷰 질문입니다. 이 질문에 전반적으로 프로그래밍 후보를 평가하는 데 일반적으로 사용할 수있는 충분한 유틸리티가 있습니까? 아니면 "임베디드 링크드리스트 팀 수석 개발자"직책을 제외하고는 나쁜 질문으로 간주해야합니까?