Come parte del processo di intervista, inizialmente chiediamo ai candidati di fare "FizzBuzz" al giorno d'oggi la percentuale di candidati che possono rispondere correttamente a FizzBuzz è aumentata drammaticamente - ciò potrebbe essere dovuto alla sua popolarità sul web.
Circa un anno fa, come seconda domanda, abbiamo iniziato a fare una domanda molto simile a FizzBuzz originale. La domanda è stata progettata per essere semplice quanto il FizzBuzz originale e per valutare anche una particolare abilità del candidato, in particolare la capacità di ordinare e dare la priorità in modo significativo e logico a un insieme di "regole aziendali" che sono state fornite in alcuni ordine arbitrario. La formulazione della domanda sembra inizialmente un po 'ambigua, che potrebbe rendere difficile per gli anglofoni non madrelingua, ma se il pensiero può essere risolto correttamente può anche dare al candidato l'opportunità di porre domande per chiarimenti, il che è sempre una buona cosa .
Riteniamo che questa sia una competenza molto importante da avere come sviluppatore, in quanto lo sviluppo del software è tipicamente basato su requisiti funzionali derivati in un ordine particolare nel tempo, che possono porre vincoli e condizioni su altre aree del software senza indicare esplicitamente ed è compito dello sviluppatore astuto indagare per lo più su potenziali problemi e conflitti relativi all'implementazione.
Quello che abbiamo scoperto è che poco più del 65% dei candidati (dimensione del campione di 38) che ha superato FizzBuzz ha completamente fallito FizzBuzz v2.0 Normalmente questi candidati verranno rilevati più avanti nel processo, ma sembra essere un bel modo per rilevarli presto.
La mia domanda non riguarda se FizzBuzz è obsoleto o meno, ma quali fattori potrebbero contribuire a un numero così elevato di candidati che non rispondono alla domanda di FizzBuzz v2.
- La domanda è troppo ambigua?
- Lo stress di un ambiente di intervista riduce la capacità di pensare in modo critico al punto di non essere in grado di completare un compito così banale?
Domanda:
Scrivi una routine nel tuo linguaggio di programmazione preferito che richiederà un elenco di stringhe come input e per ciascuna stringa nell'elenco eseguirà una delle seguenti operazioni:
- Stampa solo Fizz se la stringa contiene la lettera A
- Stampa solo Buzz se la stringa contiene la lettera B
- Stampa solo BuzzBuzz se la stringa contiene sia A che B
- Stampa solo FizzFizz se la stringa non contiene sia A che B
- Stampa solo FizzBuzz se la stringa contiene solo una A e solo una B
Alcune domande tipiche poste dai candidati sono:
- Dovrebbe essere case sensitive?
- Does "contiene A e B" significa che A dovrebbe venire prima di B
- Cosa dovrebbe essere stampato se nessuno dei punti è soddisfatto?
- Cosa dovrebbe succedere se è possibile soddisfare più di una condizione?
Abbiamo scoperto che la stragrande maggioranza dei candidati che ha completato con successo la domanda, non ha chiesto nulla, l'hanno fatto semplicemente come FizzBuzz.