Al leer este sitio y SO, he visto muchas historias de preguntas y respuestas de entrevistas que dicen que un candidato tuvo que implementar una lista vinculada desde cero. Por lo general, este es un ejercicio "dame" para programar candidatos a roles como escribir FizzBuzz. La idea es que si el candidato no puede hacer esto, no puede programar y debe ser rechazado casi de inmediato.
Sin embargo, no puedo evitar pensar que esto podría ser una mala práctica por las siguientes razones:
- Los lenguajes modernos de nivel superior como C # y Python usan de forma nativa las listas de manera extensa; escribir su propio objeto de lista vinculada solo sería necesario en circunstancias inusuales e incluso entonces probablemente desaconsejado.
- Los lenguajes de nivel inferior como C ++ tienen bibliotecas estándar con iteradores / contenedores de listas y objetos.
- A la luz de los primeros dos puntos, los codificadores pueden pasar años sin siquiera pensar en implementar una lista (vinculada, doblemente vinculada, etc.). Es posible que algunos ni siquiera vean tales cosas desde los días de la universidad.
- El poder de cálculo tampoco es el factor que era hace años, por lo que la eficiencia a través de punteros no es el problema que solía ser (en general).
- Una simple búsqueda en la web de algo como "ejemplo de lista enlazada" generaría muchos ejemplos de código que podrían memorizarse y escupirse, sin indicar realmente la verdadera competencia del solicitante.
Debo decir que usar una lista vinculada para conducir a preguntas abiertas / discusiones sobre la capacidad de resolución de problemas / pensamiento crítico de los candidatos es muy probablemente una muy buena práctica de entrevista. De cualquier manera, un entrevistador puede ver realmente cómo es un solicitante y cómo cree que es enormemente beneficioso.
Creo que este enfoque binario de "sin código de lista vinculada, sin trabajo" para los programadores que trabajan en una aplicación de escritorio o web está un poco desactualizado. También podría ser bastante dañino; un candidato que no puede recordar cómo trabajar adecuadamente con el líder de una lista podría ser un codificador y compañero de trabajo excelente y perderse en la mezcla. Pensamientos?
EDITAR : Hay muchos comentarios (buenos) que sugieren que si esta es una pregunta buena o mala, depende del contexto del trabajo. Estoy totalmente de acuerdo, así que permítanme reformular esta pregunta: la implementación de una lista vinculada es una pregunta de entrevista común para una amplia gama de trabajos de codificación, similar a preguntas como FizzBuzz o escribir una función recursiva para calcular factoriales. ¿Esta pregunta tiene suficiente utilidad para ser utilizada comúnmente para evaluar candidatos de programación en todos los ámbitos? ¿O debería considerarse una mala pregunta para hacer excepto para los puestos de "Desarrollador Senior, Equipo de Listas Vinculadas Integradas"?