Beim Lesen dieser Website und SO habe ich viele Geschichten über Interviewfragen und -antworten gesehen, in denen gesagt wurde, ein Kandidat müsse eine verknüpfte Liste von Grund auf neu implementieren. Normalerweise ist dies eine "Gimme" -Übung zum Programmieren von Rollenkandidaten wie dem Schreiben von FizzBuzz. Die Idee ist, dass wenn der Kandidat dies nicht kann, er nicht programmieren kann und fast sofort abgelehnt werden sollte.
Ich kann jedoch nicht anders, als zu glauben, dass dies aus den folgenden Gründen eine schlechte Praxis sein könnte:
- Moderne höhere Sprachen wie C # und Python verwenden Listen häufig. Das Schreiben eines eigenen verknüpften Listenobjekts wäre nur unter ungewöhnlichen Umständen erforderlich und selbst dann wahrscheinlich nicht ratsam.
- Untergeordnete Sprachen wie C ++ haben Standardbibliotheken mit Iteratoren / Listencontainern und Objekten.
- In Anbetracht der ersten beiden Punkte können Programmierer Jahre vergehen, ohne überhaupt daran zu denken, eine Liste (verknüpft, doppelt verknüpft usw.) selbst zu implementieren. Einige mögen solche Dinge seit College-Tagen nicht mehr wirklich sehen.
- Die Rechenleistung ist auch nicht der Faktor, der vor Jahren war, daher ist die Effizienz über Zeiger (im Allgemeinen) nicht mehr das Problem, das es früher war.
- Eine einfache Websuche nach so etwas wie "Beispiel für verknüpfte Listen" würde viele Codebeispiele hervorbringen, die einfach auswendig gelernt und ausgespuckt werden könnten und nicht wirklich die wahre Kompetenz des Antragstellers anzeigen.
Ich sollte sagen, dass die Verwendung einer verknüpften Liste, die zu offenen Fragen / Diskussionen über die Fähigkeiten zur Problemlösung / zum kritischen Denken der Kandidaten führt, höchstwahrscheinlich eine wirklich gute Interviewpraxis ist. Auf jede Weise kann ein Interviewer wirklich sehen, wie ein Bewerber aussieht und wie er dies für äußerst nützlich hält.
Ich denke, dass dieser binäre Ansatz von "kein Code für verknüpfte Listen, kein Job" für Programmierer, die an einem Desktop oder einer Webanwendung arbeiten, etwas veraltet ist. Es könnte auch ziemlich schädlich sein; Ein Kandidat, der sich nicht erinnern kann, wie man richtig mit dem Kopf einer Liste arbeitet, kann ein ansonsten ausgezeichneter Kodierer und Mitarbeiter sein und in der Mischung verloren gehen. Gedanken?
EDIT : Es gibt viele (gute) Kommentare, die darauf hindeuten, dass es vom Kontext des Jobs abhängt, ob es sich um eine gute oder eine schlechte Frage handelt. Ich stimme voll und ganz zu, also lassen Sie mich diese Frage umformulieren: Das Implementieren einer verknüpften Liste ist eine häufige Interviewfrage für eine Vielzahl von Codierungsaufgaben, ähnlich wie bei Fragen wie FizzBuzz oder dem Schreiben einer rekursiven Funktion zur Berechnung von Fakultäten. Hat diese Frage genug Nutzen, um allgemein für die Bewertung von Programmierkandidaten verwendet zu werden? Oder sollte es eine schlechte Frage sein, die man sich stellen sollte, mit Ausnahme der Stellen bei "Senior Developer, Embedded Linked Lists Team"?