En lisant ce site et SO, j'ai vu beaucoup d'histoires de questions d'entrevue et de réponses disant qu'un candidat devait mettre en place une liste chaînée à partir de zéro. En général, c’est un exercice de "gimme" pour les candidats à un rôle de programmation, comme écrire FizzBuzz. L'idée est que si le candidat ne peut pas faire cela, il ne peut pas programmer et devrait être rejeté presque immédiatement.
Cependant, je ne peux pas m'empêcher de penser que cela pourrait être une mauvaise pratique pour les raisons suivantes:
- Les langages modernes de niveau supérieur tels que C # et Python utilisent nativement les listes de manière intensive; écrire votre propre objet lié à une liste de liens ne serait requis que dans des circonstances inhabituelles et même alors probablement peu judicieux.
- Les langages de niveau inférieur tels que C ++ ont des bibliothèques standard avec des objets et des conteneurs de listes / itérateurs.
- À la lumière des deux premiers points, les codeurs peuvent passer des années sans même penser à mettre en place eux-mêmes une liste (liée, double liaison, etc.). Certains peuvent même pas vraiment voir de telles choses depuis le collège.
- La puissance de calcul n’est pas non plus le facteur qu’elle était il ya des années, de sorte que l’efficacité au moyen de pointeurs n’est plus le problème qu’elle était (en général).
- Une simple recherche sur le Web sur quelque chose du genre "exemple de liste chaînée" ferait apparaître de nombreux exemples de code qui pourraient simplement être mémorisés et rediffusés, sans indiquer vraiment la véritable compétence du demandeur.
Je devrais dire que l'utilisation d'une liste chaînée pour mener à des questions ouvertes / discussions sur les capacités des candidats à la résolution de problèmes / à la pensée critique est probablement une très bonne pratique d'entretien. De toute façon, un intervieweur peut vraiment voir à quoi ressemble un candidat et en quoi son opinion est extrêmement bénéfique.
Je pense que cette approche binaire "pas de code de liste lié, pas de travail" pour les programmeurs travaillant sur une application de bureau ou Web est un peu dépassée. Cela pourrait aussi être très dangereux; un candidat qui ne sait pas comment travailler correctement avec le tête de liste peut être par ailleurs un excellent codeur et collègue et se perdre dans le mélange. Pensées?
EDIT : Il y a beaucoup de (bons) commentaires qui suggèrent que le fait de poser cette question soit bon ou mauvais dépend du contexte du travail. Je suis tout à fait d’accord, alors permettez-moi de reformuler cette question: La mise en œuvre d’une liste chaînée est une question d’entrevue courante pour un large éventail d’emplois de codage, similaire aux questions telles que FizzBuzz ou l’écriture d’une fonction récursive pour le calcul des factoriels. Cette question est-elle suffisamment utile pour être utilisée couramment pour évaluer les candidats à la programmation dans l’ensemble? Ou devrait-on considérer une mauvaise question à poser, à l’exception des postes de "Développeur senior, Équipe de listes chaînées incorporées"?