Leyendo este sitio y SOY he visto muchas historias de preguntas y respuestas de entrevistas que dicen que un candidato tenía que implementar una lista vinculada desde cero. Por lo general, este es un ejercicio "dame" para los candidatos de rol de programación, como escribir FizzBuzz. La idea es que si el candidato no puede hacer esto, no puede programar y debe ser rechazado casi inmediatamente.
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 las listas de forma nativa en forma nativa; escribir su propio objeto de lista enlazada solo sería necesario en circunstancias inusuales e incluso en ese caso probablemente no sería aconsejable.
- Los lenguajes de nivel inferior como C ++ tienen bibliotecas estándar con iteradores / contenedores y objetos de listas.
- A la luz de los dos primeros puntos, los programadores pueden pasar años sin pensar siquiera en implementar una lista (vinculados, doblemente vinculados, etc.). Es posible que algunos ni siquiera vean esas cosas desde los días de la universidad.
- La potencia de cálculo tampoco es el factor que era hace años, por lo que la eficiencia a través de los punteros no es el problema que solía ser (en general).
- Una simple búsqueda en la web de algo así como "ejemplo de lista enlazada" mostraría muchos ejemplos de código que podrían simplemente ser memorizados y escupidos, sin realmente indicar la verdadera competencia del solicitante.
Debo decir que el uso de una lista enlazada para llevar a preguntas / discusiones abiertas sobre la capacidad de resolución de problemas / pensamiento crítico de los candidatos es probablemente una buena práctica de entrevista. De cualquier manera, un entrevistador puede ver realmente cómo es un solicitante y cómo piensan que es enormemente beneficioso.
Creo que este enfoque binario de "no hay código de lista enlazado, no hay trabajo" para los programadores que trabajan en un escritorio o aplicación 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 jefe de una lista podría ser un excelente codificador y compañero de trabajo y estar perdido en la mezcla. ¿Pensamientos?
EDITAR : hay muchos (buenos) comentarios que sugieren que si esta es una pregunta buena o mala que se debe hacer depende del contexto del trabajo. Estoy totalmente de acuerdo, así que permítame reformular esta pregunta: implementar una lista enlazada es una pregunta de entrevista común para una amplia gama de trabajos de codificación, similar a las preguntas como FizzBuzz o escribir una función recursiva para calcular factoriales. ¿Esta pregunta tiene la utilidad suficiente para ser utilizada comúnmente para evaluar a los candidatos de programación en general? ¿O debería considerarse una mala pregunta, a excepción de las posiciones de "Desarrollador principal, Equipo de listas vinculadas incrustadas"?