Buoni progetti di programmazione di interviste [chiuso]

22

Sto cercando alcuni piccoli progetti di programmazione che posso dare ai potenziali dipendenti per valutare le loro capacità di programmazione. Questi saranno programmatori appena usciti dal college. Sto cercando progetti che richiederebbero un paio d'ore a qualcuno e loro rispedirebbero via e-mail 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 quale sentanza è stata inserita la parola.

Qualcuno ha qualche suggerimento?

    
posta bigtang 18.03.2011 - 15:13
fonte

8 risposte

41

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

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

    
risposta data 18.03.2011 - 15:30
fonte
26

Sono così stanco di questa schifezza giocosa. Sono stato in posti che mi hanno chiesto esempi di codice, li ho divelti e poi mi hanno chiesto di spiegare il codice di esempio dai loro sistemi che sembravano scritti da due bambini di 2 anni. Mi è stato chiesto di implementare algoritmi di ordinamento, servizi di rete, guis, strutture dati oscuri (sempre una struttura ad albero o una lista collegata). Ogni sfumatura di fastidiosa domanda 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 fa il lavoro. Spendi tutto il tempo che vuoi sviluppare test e non ti dirà nulla su come qualcuno lavora quotidianamente.

    
risposta data 18.03.2011 - 18:46
fonte
11

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

Tutti arrivano presto per un'intervista (beh, almeno dovrebbe). Abbiamo un foglio 'while you wait' su cui lavorare finché non siamo pronti a vederli. Ha otto (8) domande che mettono alla prova le conoscenze dei candidati nella lingua che usiamo principalmente.

Non stiamo cercando le risposte a tutti, visto che chiunque può ottenerle correttamente con un computer di fronte a loro. Cerchiamo processi, ci provano persino, come arrivano alle loro risposte.

Quando entriamo nel colloquio, lo esaminiamo e rispondiamo a qualsiasi domanda che possa avere, che può 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.

UPDATE 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 chiediamo 7 domande. I primi 2 sono "Qual è la cosa più divertente a cui hai lavorato?" (non deve essere correlato alla programmazione) e "Cosa codice per divertimento nel tempo libero?".

Fase 2: un mini progetto che completano nel loro tempo libero. Facciamo quindi una condivisione dello schermo con loro e ci mostrano cosa hanno costruito. Durante la condivisione dello schermo, li facciamo anche fare due modifiche al loro progetto e poi guardarlo mentre lo lavorano e farlo funzionare.

Fase 3: intervista in persona.

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

    
risposta data 18.03.2011 - 16:01
fonte
4

Potresti voler controllare Jon Jagger 's fantastico Cyber-Dojo .

È un ambiente integrato basato sul Web progettato per eseguire pratica deliberata di Test Driven Development e apprendimento delle dinamiche di squadra. Ha un sacco di piccoli compiti di programmazione (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 c'è il completamento del codice, l'evidenziazione della sintassi o il refactoring automatico, quindi puoi vedere cosa può fare l'intervistato senza questi.

La cosa migliore è che, dopo aver eseguito un kata, puoi tornare indietro e osservare la progressione rosso / verde (o forse no se non fanno TDD * 8 ') di ciascuno dei kata. Ogni compila / test impegna le modifiche a un repository git insieme ai risultati del test.

Penso che usare questo per i test di codifica dell'intervista potrebbe dirvi molto non solo sulla capacità di un candidato di risolvere un problema, ma anche sul loro approccio alla risoluzione dei problemi e del processo che usano quando non sono vincolati da fattori esterni, basta selezionare un kata appropriato al momento in cui si desidera che il candidato spenda su di esso.

Se vuoi il tuo server CyberDojo, il intero progetto può essere trovato su github e c'è anche un Linux chiavi in mano macchina virtuale dell'appliance collegata da lì, il che significa che supponendo che tu abbia già lettore VMware o VirtualBox installati, puoi essere installato e funzionante entro pochi minuti dal download dell'appliance!

    
risposta data 05.04.2012 - 13:34
fonte
3

Ho intervistato solo una volta una compagnia che ha fatto questo. Hanno dato una domanda di 6 o 7 problemi. Le istruzioni erano di fare un metodo per risolvere ogni problema.

Una parte del compito consisteva nel rendersi conto che si poteva riutilizzare il codice. I problemi potrebbero utilizzare il codice di altre soluzioni. Non era nemmeno sequenziale. Ad esempio, la domanda 3 potrebbe essere scritta utilizzando il metodo utilizzato per la domanda 5.

Suggerirei di provare qualcosa di simile.

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

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

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

    
risposta data 18.03.2011 - 15:34
fonte
3

Per chiedere alle persone di completare un progetto, dovresti avere una serie specifica di competenze che vuoi valutare e progettare il progetto per testare tali competenze.

One example would be to take this paragraph of text and return a list of alphabetized unique words. After each word tell me how many times the word appeared and in what sentance(s) the word appreared in.

Che 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 capacità dimostrate da una risposta efficace a questa domanda sono le stesse competenze che sono più importanti per la tua attività?

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 competenze stai cercando, creare una domanda per cercare quelle abilità non è difficile. Se usi la domanda di qualcun altro senza una conoscenza approfondita di ciò che è stato progettato per valutare (se possibile), stai davvero ingannando te stesso e perdendo il tempo di tutti.

    
risposta data 31.08.2011 - 08:06
fonte
0

One example would be to take this paragraph of text and return a list of alphabetized unique words. After each word tell me how many times the word appeared and in what sentance(s) the word appreared in.

In che lingua scriverebbero questo? Se stanno uscendo da una scuola che si concentra pesantemente su C, questo non sarebbe altrettanto veloce da scrivere come uno che insegna Python / Perl / Ruby ecc ... O anche Java o C #. Ciò nonostante, è un buon piccolo test.

Suggerisco alcuni più facili in realtà durante l'intervista. Nessuna domanda trabocchetto. Sono con TMN su questo. Offri loro un paio di funzioni che svolgono compiti di base e chiedono che cosa fanno (leggendo il codice di altre persone). Quindi dai loro un paio di compiti di base (< 20 linee) per scrivere in una lingua a loro scelta. Questo dovrebbe essere sufficiente per un entry level per sapere se possono codificare o meno (in una posizione entry level). Insieme all'intervista e al GPA dovresti darti una buona idea su ciò che devi sapere.

    
risposta data 18.03.2011 - 20:44
fonte
-1

Invitali a implementare Conway's Game of Life per qualsiasi lingua tu stia guardando, usando i paradigmi di design di quella lingua .

Un Game of Life di Java o C # Conway dovrebbe essere orientato agli oggetti, LISP o F # sarebbero funzionali, ecc.

    
risposta data 18.03.2011 - 16:04
fonte

Leggi altre domande sui tag