Progetti di programmazione di interviste valide [chiuso]


26

Sto cercando alcuni piccoli progetti di programmazione che posso dare ai potenziali dipendenti per valutare le loro capacità di programmazione. Saranno programmatori usciti dal college. Sto cercando progetti che richiederebbero qualcuno un paio d'ore e che rispedirebbero le loro risposte dopo l'intervista.

Un esempio potrebbe essere quello di prendere questo paragrafo di testo e restituire un elenco di parole univoche alfabetiche. Dopo ogni parola dimmi quante volte è apparsa la parola e in quali frasi la parola è apparsa.

Qualcuno ha qualche buon suggerimento?


Domande sul concorso di programmazione ACM. Puoi trovare un archivio di queste domande qui .
whatsisname

1
Questi siti di puzzle di programmazione sarebbero interessanti per te? programmers.stackexchange.com/questions/756/programming-puzzles/…
grokus

Risposte:


43

Ho da tempo concluso che nulla che qualcuno possa fare in breve tempo può dirmi qualcosa di utile su quella persona. Ma ogni buon candidato ha già progetti personali scritti che possono dirti molto. Quindi ho sostituito sfide specifiche con "dammi un pezzo di codice di cui sei orgoglioso e felice di apporre il tuo nome".

La loro scelta del progetto ti dice più di qualsiasi attività di un'ora. E poi puoi passare un'ora a discuterne per saperne di più.


4
Ricordo di aver intervistato un'azienda e di aver ricevuto una funzione abbastanza semplice (15-20 righe) e di essere stato chiesto "Cosa fa?" Ho detto loro, poi ho chiesto "Qualcuno ha sbagliato?". Mi è stato detto che la maggior parte delle persone che avevano intervistato non potevano rispondere. Forse è una rapida alternativa (non conosco nessuno in grado di leggere codice che non sia in grado di scriverlo, ma forse non ho incontrato persone sbagliate).
TMN,

4
@TMN - Oh, lo facciamo anche un po '. Ma ho incontrato persone che sanno leggere il codice e non scriverlo bene .
pdr

@TMN Essendo autodidatta, ho trascorso molto tempo leggendo il codice all'inizio al punto di essere molto più bravo a leggerlo che a scriverlo. Può e succede, ci vuole solo tempo e pratica per migliorare la capacità di scrittura.
Jimmy Hoffa,

28

Sono così stanco di questa schifezza mentale. Sono stato in posti che mi hanno chiesto esempi di codice, li hanno fatti a pezzi e poi mi hanno chiesto di spiegare il codice di esempio dai loro sistemi che sembrava scritto da bambini di 2 anni. Mi è stato chiesto di implementare oscuri algoritmi di ordinamento, servizi di rete, guis, strutture di dati (sempre o un albero o un elenco collegato). Ogni tipo di fastidiosa domanda fastidiosa su qualunque cosa l'intervistatore pensi sia la parte più importante della programmazione.

Alla fine è praticamente inutile. Il modo migliore per valutare un dipendente è assumerlo per 30 giorni e vedere quanto bene svolge il lavoro. Trascorri tutto il tempo che desideri sviluppare test, e non ti dirà nulla su come qualcuno lavora quotidianamente.


8
La codifica di un semplice algoritmo come quello descritto in bigtang non è affatto "mentale". Essere in grado di fare qualcosa del genere dovrebbe essere un prerequisito per ottenere anche un'intervista (ed è, presso la mia azienda). È molto utile per lo screening di candidati che altrimenti sembrano grandi sulla carta. L'ultima cosa che voglio fare è passare ore a intervistare qualcuno che non può scrivere una funzione per dire se una stringa è un palindromo. Sareste sorpresi dal numero di dottorati di CS delle migliori scuole che non possono fare il test di bigtang. In breve, essere in grado di completare un test come questo è necessario ma non sufficiente.
Jer,

+1 @Jer. L'ultima volta che ho intervistato un programmatore, sei candidati su otto non sono stati in grado di completare le attività più elementari (anche con Google e SO). Non è possibile lasciarli vicino alla mia base di codice reale per cinque minuti, figuriamoci 30 giorni.
Julia Hayward

2
@JuliaHayward: mi aspetterei che qualcuno potesse completare un progetto con accesso al web / documentazione. Il problema sorge quando qualcuno inizia a lanciare parole d'ordine e oscuri algoritmi di ordinamento verso di te senza accesso a Internet, con il falso presupposto che aver memorizzato varie tecniche di ordinamento o qualsiasi cosa sia fondamentale per le prestazioni lavorative quotidiane.
Satanicpuppy

12

Permettere a qualcuno di fare un progetto pratico nel proprio tempo non significa necessariamente che sono loro a farlo.

Tutti arrivano in anticipo per un'intervista (beh, almeno dovrebbe). Abbiamo un foglio 'mentre aspetti' per farli lavorare fino a quando non saremo pronti a vederli. Ha otto (8) domande che mettono alla prova la conoscenza di un candidato nella lingua che usiamo principalmente.

Non stiamo cercando le risposte per avere ragione, poiché chiunque può trovarle nel modo giusto davanti a un computer. Stiamo cercando un processo, provano persino la domanda, come arrivano alle loro risposte.

Quando arriviamo al colloquio, lo esaminiamo con loro e rispondiamo a tutte le loro domande che possono anche portarli a ottenere la risposta corretta. Ci permette anche di chiedere come hanno ottenuto le risposte che hanno trovato.

Questo combinato con il lavoro precedente, troviamo, sono i modi migliori per filtrare i candidati.

AGGIORNAMENTO 2016/06/15

Abbiamo notevolmente modificato il nostro processo nel modo in cui assumiamo gli sviluppatori.

Fase 1: un'intervista telefonica di 15 minuti in cui facciamo 7 domande. I primi 2 sono "Qual è la cosa più divertente su cui hai lavorato?" (non deve essere correlato alla programmazione) e "Cosa codifichi per divertimento nel tuo tempo libero?".

Fase 2: un mini progetto che completano secondo il loro tempo. Facciamo quindi una condivisione dello schermo con loro e ci mostrano cosa hanno costruito. Durante la condivisione dello schermo, facciamo anche in modo che apportino due modifiche al loro progetto, quindi li guardiamo mentre lo fanno lavorare e farlo funzionare.

Fase 3: intervista di persona.

Questo processo ci consente di capire subito la cultura (fase 1). Se riescono a fare il lavoro e effettivamente a parlare (fase 2). Infine, assicurati che i loro valori siano in linea con ciò che stiamo cercando (fase 3).


1
È geniale. Mi piace!
davidhaskins,

3
anche se sono stato in molte interviste che si trasformano in curiosità. Fai attenzione a non impantanarti su questo particolare frammento di systax e raggiungi la loro comprensione su larga scala. Soprattutto se si dice che abbiano un po 'di talento o interesse. il risultato è stato che non volevo lavorare per loro, e sono sicuro che fosse reciproco.
John Nicholas,

"Consentire a qualcuno di fare un progetto pratico nel proprio tempo non significa necessariamente che sono loro a farlo" - Vero, ma non ho ancora incontrato qualcuno abbastanza coraggioso da entrare in un'intervista ed essere interrogato sul codice che non hanno scritto. Se dovesse succedere, non supereranno il colloquio e il periodo di prova, ma potrei riconsiderare il mio approccio.
pdr

@John. D'accordo, non può essere "oh, hai dimenticato una virgola lì". Come ho già detto, è necessario capire come l'approccio procede e se comprendono la lingua. Se sanno che le loro cose passano sicuramente alle cose più grandi.
RDL

2
@RDL, La maggior parte del nostro processo di intervista è progettato per essere un po 'divertente per il tipo di sviluppatore che stiamo cercando e l'inferno per il resto. Sai come i bravi sviluppatori non possono resistere a una sfida.
pdr

4

Potresti voler dare un'occhiata al fantastico Cyber-Dojo di Jon Jagger .

È un ambiente integrato basato sul web progettato per fare pratica deliberata di Test Driven Development e conoscere le dinamiche del team. Ha molte piccole attività di programmazione (di kata) e supporta una vasta gamma di linguaggi, da Python e Ruby a Java e C ++.

A differenza degli IDE progettati per la produttività, non esiste il completamento del codice, l'evidenziazione della sintassi o il refactoring automatico, quindi puoi vedere cosa può fare il tuo intervistato senza questi.

La cosa migliore è che dopo aver fatto un kata puoi tornare indietro e guardare la progressione rosso / verde (o forse no se non fanno TDD * 8 ') di ciascuno di kata. Ogni compilazione / test esegue il commit delle modifiche in un repository git insieme ai risultati del test.

Penso che usarlo per i test di codifica delle interviste potrebbe dire molto non solo sulla capacità dei candidati di risolvere un problema, ma anche sul loro approccio alla risoluzione dei problemi e sul processo che usano quando non sono vincolati da fattori esterni, basta selezionare un kata appropriato per il tempo che vuoi che il candidato trascorra su di esso.

Se vuoi il tuo server CyberDojo, l' intero progetto può essere trovato su github e c'è anche una macchina virtuale Linux chiavi in ​​mano collegata da lì, il che significa che supponendo che tu abbia già installato VMware player o VirtualBox , puoi essere attivo e funzionante all'interno pochi minuti per scaricare l'appliance!


3

Ho intervistato solo una volta un'azienda che lo ha fatto. Hanno fornito un foglio di domande con 6 o 7 problemi. Le istruzioni erano di creare un metodo per risolvere ogni problema.

Una parte dell'attività consisteva nel rendersi conto che era possibile riutilizzare il codice. I problemi potrebbero utilizzare il codice di altre soluzioni. Non era neanche sequenziale. Ad esempio, la domanda 3 potrebbe essere scritta usando il metodo usato per la domanda 5.

Suggerirei di provare qualcosa del genere.

Per quanto riguarda le domande? Alcune delle domande iniziali sul sito di Project Euler sono buone.

Puoi anche provare un semplice gioco se vuoi vedere come possono mettere insieme un progetto.

Oppure, se non vuoi inventare qualcosa, chiedi loro di inviarti un codice da un progetto finale.


3

Per chiedere alle persone di completare un progetto, è necessario disporre di un insieme specifico di competenze che si desidera valutare e progettare il progetto per testare tali competenze.

Un esempio potrebbe essere quello di prendere questo paragrafo di testo e restituire un elenco di parole univoche alfabetiche. Dopo ogni parola dimmi quante volte è apparsa la parola e in quali frasi la parola è apparsa.

Cosa stai cercando con questa domanda? Quanti modi ci sono per risolverlo e cosa ti dice ogni approccio sulla persona che ha scritto la risposta? Le competenze dimostrate da una risposta efficace a questa domanda sono le stesse competenze più importanti per la tua azienda?

Non voglio le risposte a queste domande; Voglio solo che tu abbia pensato alle risposte prima di sottoporre un gruppo di candidati al tuo processo. Se sai quali abilità stai cercando, creare una domanda per cercare quelle abilità non è difficile. Se usi la domanda di qualcun altro senza una completa comprensione di ciò che è stato progettato per valutare (se non altro), stai davvero solo prendendo in giro te stesso e stai sprecando il tempo di tutti.


Mi dispiace di aver perso tempo.
Bigtang,

1
@bigtang, non è affatto così. Mi dispiace se quanto sopra viene fuori come un rant - posso vedere come potrebbe - ma il mio obiettivo era quello di costruire un caso per creare il tuo progetto basato sulle competenze che stai cercando nei nuovi assunti. Puoi realizzare un piccolo progetto da quasi tutto, ma per renderlo utile sia per te che per gli intervistati, i requisiti dovrebbero essere guidati dalle competenze che apprezzi di più.
Caleb,

Rimossa completamente la prima frase (Rispettivamente, se non sei abbastanza intelligente da inventare un progetto decente da solo, cosa ti fa pensare di essere abbastanza intelligente da valutare le candidature dei candidati? "). valore e sembrava un po 'sfacciato
Michael Durrant

0

Un esempio potrebbe essere quello di prendere questo paragrafo di testo e restituire un elenco di parole univoche alfabetiche. Dopo ogni parola dimmi quante volte è apparsa la parola e in quali frasi la parola è apparsa.

In che lingua lo scriverebbero? Se stanno uscendo da una scuola che si concentra fortemente su C, questo non sarebbe altrettanto veloce da scrivere come uno che insegna Python / Perl / Ruby ecc ... O persino Java o C #. Tuttavia, è una buona piccola prova.

Suggerisco alcuni più facili durante l'intervista. Nessuna domanda trabocchetto. Sono con TMN su questo. Assegna loro un paio di funzioni che svolgono attività di base e chiedi cosa fanno (leggendo il codice di altre persone). Quindi dai loro un paio di compiti di base (<20 righe) da scrivere in una lingua a loro scelta. Ciò dovrebbe essere sufficiente affinché un entry level sappia se può codificare o meno (in una posizione entry level). Che insieme all'intervista e all'AAP dovrebbero darti una buona idea su ciò che devi sapere.


1
Non trovo il linguaggio critico, può anche essere fatto con pseudo-codice. L'idea principale è vedere se il dipendente presuntivo "entra" e mostra buoni segni di risoluzione dei problemi.
Jonas Byström,

Francamente, qualsiasi lingua con split () e matrici / liste (con push / append) renderebbe questo banale. Consenti a un programmatore C di 'assumere' split () ed elenco, e diventa altrettanto banale :-)
ChuckCottrill

-1

Chiedi loro di implementare Conway's Game of Life per qualsiasi linguaggio tu stia guardando, usando i paradigmi di design di quel linguaggio.

Il gioco della vita di Java o C # Conway dovrebbe essere orientato agli oggetti, LISP o F # sarebbe funzionale, ecc.


2
Quanto tempo daresti loro per completare questo?
Giobbe

Mi ci vogliono circa 4 ore per ottenere un'intera implementazione di OO, ma l'ho fatto circa una dozzina di volte. Se vuoi vedere come pensano e quanto lontano arrivano (e se scrivono o meno un codice testabile), dai loro meno tempo. Se lo fai di persona, dai loro 45 minuti e vedi fino a che punto arrivano e perché hanno scelto il percorso che hanno fatto. È uno di quei problemi che vuoi che sappiano in anticipo, quindi non sono completamente persi, persino incoraggiali a provarlo da soli. Rivela molto su un programmatore.
George Stocker,

8
Chiedere a un candidato di scrivere il test del gioco della vita di Conway per quanto tempo sono stati al college o di aver scritto e studiato quel problema. Assumeresti @George Stocker perché l'ha scritto una dozzina di volte. Quanto è altamente correlato il Gioco della vita a qualsiasi lavoro di sviluppo del mondo reale?
ChuckCottrill,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.