Leggendo questo sito e SO ho visto molte storie di domande e risposte di interviste dicendo che un candidato doveva implementare da zero un elenco collegato. Di solito si tratta di un esercizio "gimme" per la programmazione di candidati come la scrittura di FizzBuzz. L'idea è che se il candidato non può farlo, non può programmare e dovrebbe essere respinto quasi immediatamente.
Tuttavia, non posso fare a meno di pensare che questa potrebbe essere una cattiva pratica per i seguenti motivi:
- I moderni linguaggi di livello superiore come C # e Python utilizzano in modo nativo elenchi estensivi; scrivere l'oggetto della tua lista collegata sarebbe richiesto solo in circostanze insolite e anche allora probabilmente sconsiderato.
- I linguaggi di livello inferiore come C ++ hanno librerie standard con iteratori / contenitori di elenchi e oggetti.
- Alla luce dei primi due punti, i programmatori possono passare anni senza nemmeno pensare all'implementazione di un elenco (collegato, doppiamente collegato, ecc.). Alcuni potrebbero addirittura non vedere queste cose dai tempi del college.
- Anche la potenza di calcolo non è il fattore che era anni fa, quindi l'efficienza tramite puntatori non è il problema che era (in generale).
- Una semplice ricerca sul Web di qualcosa come "esempio di elenco collegato" porterebbe molti esempi di codice che potrebbero essere semplicemente memorizzati e respinti, senza indicare la vera competenza del richiedente.
Dovrei dire che l'uso di un elenco collegato per portare a domande / discussioni aperte sulle capacità di problem solving / pensiero critico dei candidati è probabilmente una buona pratica di intervista. In qualsiasi modo un intervistatore può davvero vedere com'è un candidato e come ritiene che sia di grande beneficio.
Penso che questo approccio binario di "nessun codice elenco collegato, nessun lavoro" per i programmatori che lavorano su un desktop o un'applicazione web sia un po 'obsoleto. Potrebbe anche essere abbastanza dannoso; un candidato che non ricorda come lavorare correttamente con il capo di un elenco potrebbe essere un programmatore e un collega altrimenti eccellente e perdersi nel mix. Pensieri?
EDIT : Ci sono molti (buoni) commenti che suggeriscono che se questa è una domanda buona o cattiva da fare dipende dal contesto del lavoro. Sono pienamente d'accordo, quindi vorrei riformulare questa domanda: l'implementazione di un elenco collegato è una domanda di intervista comune per una vasta gamma di lavori di codifica, simile a domande come FizzBuzz o la scrittura di una funzione ricorsiva per il calcolo dei fattoriali. Questa domanda ha abbastanza utilità per essere usata comunemente per valutare i candidati alla programmazione su tutta la linea? O dovrebbe essere considerata una cattiva domanda da porre ad eccezione delle posizioni "Senior Developer, Embedded Linked Lists Team"?