Читая этот сайт и ТАК, я видел много историй вопросов и ответов на собеседования, в которых говорилось, что кандидат должен был создать связанный список с нуля. Обычно это упражнение «дай мне» для кандидатов на роль в программировании, таких как написание FizzBuzz. Идея состоит в том, что если кандидат не может этого сделать, он не может программировать и должен быть отклонен почти сразу.
Тем не менее, я не могу не думать, что это может быть плохой практикой по следующим причинам:
- Современные языки высокого уровня, такие как C # и Python, широко используют списки; написание собственного объекта связанного списка потребовалось бы только при необычных обстоятельствах и даже тогда, вероятно, опрометчиво.
- Языки более низкого уровня, такие как C ++, имеют стандартные библиотеки с контейнерами итераторов / списков и объектами.
- В свете первых двух пунктов кодеры могут идти годами, даже не задумываясь о реализации списка (связанного, двусвязного и т. Д.). Некоторые могут даже не видеть такие вещи со времен колледжа.
- Вычислительная мощность также не является фактором, который был несколько лет назад, поэтому эффективность с помощью указателей не является проблемой, которой она была (в целом).
- Простой веб-поиск чего-то вроде «связанного списка» привел бы к множеству примеров кода, которые можно было бы просто запомнить и выплюнуть, не указывая на истинную компетенцию кандидата.
Я должен сказать, что использование связанного списка, чтобы вести открытые вопросы / обсуждения проблем кандидатов / способности критического мышления, - это, скорее всего, действительно хорошая практика интервью. В любом случае, интервьюер действительно может увидеть, на что похож заявитель и как он думает, что это очень полезно.
Я думаю, что этот двоичный подход «нет кода связанного списка, нет работы» для программистов, работающих над настольным компьютером или веб-приложением, несколько устарел. Это также может быть довольно вредно; кандидат, который не может вспомнить, как правильно работать с главой списка, может быть отличным программистом и коллегой и потеряться в миксе. Мысли?
РЕДАКТИРОВАТЬ : Есть много (хороших) комментариев, предполагающих, что это хороший или плохой вопрос, зависит от контекста работы. Я полностью согласен, поэтому позвольте мне перефразировать этот вопрос: реализация связанного списка - это распространенный вопрос интервью для широкого круга заданий по кодированию, аналогичный таким вопросам, как FizzBuzz или написание рекурсивной функции для вычисления факториалов. Достаточно ли полезен этот вопрос, чтобы его можно было широко использовать для оценки кандидатов на программирование по всем направлениям? Или следует считать плохим вопрос, за исключением должностей «Старший разработчик, команда встроенных связанных списков»?