Dovresti rispondere alle domande di intervista di programmazione con la biblioteca? [chiuso]

4

Alcune domande possono essere risolte facilmente utilizzando una libreria linguistica specifica. Ad esempio, Java ha Set, Maps e List. È possibile rispondere a queste domande di codifica durante l'intervista usando queste librerie o dovremmo andare di più con un approccio tradizionale con i piedi per terra, rendendolo un tipo di risposta C?

    
posta EquinoX 20.06.2011 - 03:36
fonte

7 risposte

17

Penso che la soluzione migliore sia quella di offrire una risposta con entrambi !

Inizia con " Se non c'è una ragione convincente per non farlo, userei la blah della blat biblioteca, ma se ciò non fosse appropriato per qualche ragione, prenderei in considerazione l'implementazione da zero. Vuoi che io passi attraverso l'algoritmo? "

    
risposta data 20.06.2011 - 11:50
fonte
8

In genere, almeno nella mia esperienza, l'intervistatore specificherà se è necessario utilizzare le funzionalità della libreria standard o meno. E anche se le strutture di dati come quelle che hai elencato non esistono nella libreria standard del linguaggio, a volte sono d'accordo con il fatto che tu le usi comunque e presumendo che siano implementate o sai come implementarle.

Di solito stanno cercando un concetto di alto livello (nel qual caso ti diranno di sentirti libero di presupporre che Set, List, ecc. esista e possa essere usato), o ti chiederanno specificatamente di implementa un Set, un Elenco, ecc. da zero, nel qual caso è chiaro che non useresti quello integrato.

E se non è chiaro, chiedi!

    
risposta data 20.06.2011 - 03:42
fonte
6

Forse dovresti saperlo, purtroppo non puoi. Una volta ho intervistato una grande azienda (penso 10 ^ 100), in cui un intervistatore ha scritto un elenco sulla lavagna come:

1, 4, 2, 2, 12, -3

e mi ha chiesto di descrivere come lo avrei risolto. Ho risposto così:

.sort();

perché ecco come I ordinerebbe quell'elenco . Conosco Big-O e i costi di alcuni algoritmi di ordinamento, ma scommetto che qualcuno il cui compito è scrivere un metodo di libreria per l'ordinamento di un elenco può fare un lavoro molto migliore di quello che posso. Io sostengo che essere in grado di fare affidamento, comprendere e utilizzare il lavoro di altre persone è molto più importante per l'ingegneria del 21 ° secolo che essere in grado di reimplementare la soluzione a un problema che era già stato risolto dalle macchine IBM prima della Seconda Guerra Mondiale.

[Naturalmente, non mi è stato offerto il lavoro ...]

    
risposta data 20.06.2011 - 12:20
fonte
5

Dipende davvero dalla domanda. Se ti chiedono di implementare una lista collegata, molto probabilmente ti mettono alla prova sulle tue abilità nella struttura dei dati e non nella memorizzazione del nome della classe LinkedList dal framework di raccolta. Inoltre, se stanno chiedendo di risolvere un enigma usando una struttura dati, usare una classe dal framework di raccolta potrebbe essere la scelta appropriata. Basta riconoscere l'intenzione della domanda e se non sei sicuro, basta chiedere.

    
risposta data 20.06.2011 - 03:45
fonte
3

Se qualcuno ti chiede come fare qualcosa in Java, la risposta corretta dovrebbe sempre essere quella di usare le strutture incorporate nella libreria standard. Un ex mio collaboratore che era uno sviluppatore C avrebbe intervistato gli sviluppatori Java e avrebbe chiesto loro di scrivere come invertire una lista collegata su una lavagna bianca, stava cercando la sua soluzione specifica C, che per uno sviluppatore che solo fare Java è la soluzione sbagliata. La soluzione corretta in Java può essere solo Collections.reverse () , qualsiasi altra cosa mostra una mancanza di familiarità con idiomatic Java.

Se stanno chiedendo e aspettandosi qualcosa di diverso da idiomatico Java, allora devi chiarirlo.

    
risposta data 20.06.2011 - 04:42
fonte
1

Onestamente non vedo che domande di questo tipo possano dare a un intervistatore. Suppongo che se tu dovessi intervistare uno stagista e volessi essere sicuro di averlo avuto, e non aver bocciato le loro classi di strutture dati, certo ... ma non vedo come queste domande in realtà rispondano a qualcosa di utile. Essere in grado di rigurgitare l'implementazione di una lista collegata su richiesta non fa un programmatore, e anche una persona che non può non è necessariamente senza tracce.

D'altra parte, chiedere come utilizzare queste strutture può essere utile. Questo è ciò che un programmatore in realtà farà comunque. Se conosci i componenti di base delle tue strutture di dati, puoi valutare meglio che è utile e dove. Quindi puoi prendere il tuo tempo per realizzare la tua implementazione se è effettivamente necessario, con l'ausilio di test unitari e un compilatore (piuttosto che una lavagna).

Alcuni intervistatori affermano che li aiuta a valutare come pensa una persona. Si aspettano che tu parli del tuo processo di risoluzione del problema ad alta voce. Vedo due problemi con questo:

1) Non è un problema interessante. Non c'è niente a cui pensare.

2) Molte persone sono deragliate quando cercano di "pensare" ad alta voce. La quantità di centri cerebrali che devono essere coinvolti in quel processo sono molto più grandi della semplice risoluzione del problema. Alcune persone sono aiutate da questo, altre (e possono essere anche molto buone), le persone finiscono per diventare troppo distratte. Questo non significa che siano cattivi comunicatori, solo che sono il tipo che siedono lì in silenzio per risolvere il problema e POI a proporre la soluzione che trovano.

Ad ogni modo, non esagerare .. Direi che se l'intervistatore ti ha chiesto di risolvere un problema che riguarda una struttura di dati, dovresti sentirti libero di usarne uno. Arriverò al punto di proporre che puoi semplicemente creare la tua API della struttura dati e dire semplicemente (questa operazione di base è XXXX). Se ti chiedono specificatamente di scrivere parte di una struttura dati, allora naturalmente hai incontrato una di queste persone e dovresti semplicemente farlo.

    
risposta data 20.06.2011 - 04:44
fonte
1

Suggerirei di usare la libreria. Se l'intervistatore vuole davvero che io spieghi il nocciolo della questione, può dire "come faresti senza usare una biblioteca?" o "come funziona quella classe di biblioteca?".

Se prende la mia risposta iniziale come un'indicazione che non conosco le mie cose, allora è chiaramente un numbskull, e non vorrei comunque lavorare per lui!

    
risposta data 20.06.2011 - 13:29
fonte

Leggi altre domande sui tag