Utilizzo delle domande modello in un'intervista tecnica [chiuso]


14

Recentemente sono stato in una discussione con un collega su domande tecniche nelle interviste. Come laureato, ho fatto il giro di molte aziende e ho notato che usavano le stesse domande. Un esempio è "Sai scrivere una funzione che determina se un numero è primo o no?", 4 anni dopo, trovo che una domanda particolare sia abbastanza comune anche per uno sviluppatore junior. Potrei non guardare questo nel modo corretto, ma le case del software non dovrebbero essere abbastanza intelligenti da pensare alle proprie domande di intervista? Sono stato a circa 16 interviste come laureato e le stesse domande sono state poste in circa il 75% di esse. Questo mi porta a credere che molte aziende siano pigre e semplicemente Google: "Domande modello per intervistare gli sviluppatori di software" e penso che si stiano comportando in modo disservizi nell'approccio.

Domanda: è meglio usare una serie di domande su alcuni template o le case del software dovrebbero sforzarsi di essere più originali e presentare il proprio materiale per le interviste?

Dal mio punto di vista, se fallissi un'intervista e andassi a cercare buone risposte alle domande su cui avevo sbagliato, avrei potuto passare alla prossima intervista se le domande fossero le stesse.


1
Per curiosità, da dove sono nate le domande sullo stile FizzBuzz?
Desolato pianeta

1
La software house deve stare attenta a non lasciarsi coinvolgere troppo dalla domanda che diventano la persona che ha trascorso migliaia di ore a perfezionare la soluzione che la maggior parte delle persone impiegherebbe qualche giorno per ottenere a meno che non siano state con l'azienda e non abbiano visto la domanda già.
JB King

2
Usa le domande sui modelli, se sei d'accordo con le risposte dei modelli.
back2dos,

Risposte:


18

Molte di queste domande rimangono esattamente perché è difficile trovare domande che siano chiare, che richiedano la minima conoscenza del dominio possibile, che richiedano la capacità di elaborare un algoritmo senza essere una domanda ingannevole che qualcuno " ottenere "o" non ottenere "e che le persone hanno un background storico di risposte per confrontare il candidato. E le domande migliori hanno più livelli di risposte corrette che consentono all'intervistatore di valutare le capacità di problem solving del candidato. Se qualcuno suggerisce un banale algoritmo di ricerca primaria, ad esempio, possiamo quindi parlare di come potresti ottimizzare l'implementazione o l'intervistatore per guidare il candidato verso uno degli algoritmi più sofisticati.

Sono stato in gruppi in cui diversi sviluppatori hanno valutato la difficoltà di un determinato problema per un gruppo di intervistati e le stime erano su tutta la mappa. Molte persone guardano inizialmente FizzBuzz e lo considerano palesemente troppo semplice. Se vai all'intervista senza una buona comprensione di quanto siano difficili le domande, la quinta persona che intervisti ha un enorme vantaggio rispetto alla prima persona perché hai imparato che le persone lottano con FizzBuzz mentre hai creato un'impressione negativa della prima persona hai intervistato perché avevano lotte identiche.

Se gli sviluppatori stanno ponendo nuove domande, tendono anche ad avere conoscenze culturali o di dominio non intenzionali incorporate in esse. Faranno domande su uno sport, ad esempio, che tende a dare un vantaggio a persone che conoscono le regole di quello sport che possono individuare rapidamente un'ambiguità o fare un'ipotesi "ovvia". Qualcuno che non ha assolutamente familiarità con lo sport deve capire al volo le regole del gioco ed è molto più probabile che commetta un errore o che fornisca una risposta meno sofisticata. Oppure faranno una domanda che presume involontariamente che i candidati conoscano / ricordino qualche bocconcino relativamente minore. Qualcuno che ha lavorato sui sistemi contabili per anni, ad esempio, si può presumere che tutti sappiano cos'è un sistema di contabilità a partita doppia o che una domanda che presupponga una semplice definizione dello schema del sistema di contabilità a partita doppia sarebbe chiara per uno sviluppatore competente. Ma potrebbe facilmente buttare un buon sviluppatore che deve aggirare l'idea di un debito in contanti che aumenta il saldo di cassa e un credito che diminuisce il saldo di cassa. Qualcuno che ha preso la contabilità 101, tuttavia, avrebbe rapidamente preso piede. Se la tua intenzione era quella di testare la familiarità del candidato con la contabilità, questa potrebbe essere una domanda perfettamente ragionevole. Ma se non stai cercando un esperto in materia, sarebbe problematico. Ma potrebbe facilmente buttare un buon sviluppatore che deve aggirare l'idea di un debito in contanti che aumenta il saldo di cassa e un credito che diminuisce il saldo di cassa. Qualcuno che ha preso la contabilità 101, tuttavia, avrebbe rapidamente preso piede. Se la tua intenzione era quella di testare la familiarità del candidato con la contabilità, questa potrebbe essere una domanda perfettamente ragionevole. Ma se non stai cercando un esperto in materia, sarebbe problematico. Ma potrebbe facilmente buttare un buon sviluppatore che deve aggirare l'idea di un debito in contanti che aumenta il saldo di cassa e un credito che diminuisce il saldo di cassa. Qualcuno che ha preso la contabilità 101, tuttavia, avrebbe rapidamente preso piede. Se la tua intenzione era quella di testare la familiarità del candidato con la contabilità, questa potrebbe essere una domanda perfettamente ragionevole. Ma se non stai cercando un esperto in materia, sarebbe problematico.

Mentre suppongo sia possibile che qualcuno possa memorizzare le risposte alle poche centinaia di domande "comuni" che le persone usano, ciò non mi dà molto fastidio come intervistatore. In primo luogo, sarebbe piuttosto impressionante se lo facessero e rispecchierebbero un po 'di laboriosità e risoluzione dei problemi. In secondo luogo, sarebbe generalmente un buon allenamento-- se lo sviluppatore sa come invertire una stringa, conosce alcuni algoritmi per trovare numeri primi, sa come scrivere loop e implementare costrutti di controllo per FizzBuzz, conosce i vari algoritmi grafici che vengono regolarmente, ecc. - sono probabilmente uno sviluppatore abbastanza completo. Se lo sviluppatore riuscisse a memorizzare le risposte senza apprendere nulla, verrebbero catturati quando l'intervistatore voleva approfondire un po 'o


7

Penso che ci siano quelle domande facili come fizzbuzz, invertire una stringa, ecc., E poi ci sono alcune domande mentre se non le hai mai viste prima è difficile ottenere la soluzione ottimale prevista con la pressione aggiuntiva dell'intervista e il breve tempo vincoli. La parte peggiore è che a volte i recruiter senza conoscenze tecniche pongono alcune di queste domande e stanno cercando una risposta molto specifica .... Se non dai la risposta ottimale, pensano che tu sia un idiota assoluto. Anche se la tua risposta funziona, risolve il problema e, sebbene possa non essere ottimale, non è troppo inefficiente ....

Alcuni esempi:
come mescolerai un mazzo di carte? Stanno cercando il metodo Fisher-Yates http://it.wikipedia.org/wiki/Fisher%E2%80%93Yates_shufflele altre risposte sono "sbagliate" ..... Questo non è qualcosa che è probabile che tu sappia a meno che tu non abbia voluto mescolare prima le carte e specificatamente cercarle. Potresti inciampare su di esso nel corso della risposta, ma da quello che ho visto si aspettano che tu sappia questo freddo, quindi è dubbio che ci sarà molto tempo per consentire di trovare la soluzione. Un altro modo meno efficiente (ma forse più ovvio) è quello di creare un nuovo array con un puntatore all'array originale e un numero che è un numero casuale, quindi ordinare l'array in base al numero casuale. Quindi utilizzare l'array ordinato per costruire un nuovo array di carte. In ogni caso, ho ottenuto 0 crediti per averlo presentato a un recruiter.

Un altro esempio è la domanda su come rileveresti un numero duplicato in un elenco di n numeri tutti da 1 a n-1. La risposta ovvia (che è relativamente efficiente in una prospettiva temporale) è quella di utilizzare una tabella hash per inserire ogni elemento e se ne trovi uno già inserito, allora hai trovato il duplicato. La risposta ottimale è perché i numeri sono compresi tra 1 e n se non ci sono duplicati, è possibile ottenere la somma prevista come n (n + 1) / n. Quindi, sommando l'array si ottiene la somma effettiva che è inferiore alla somma prevista. Quindi sostanzialmente n - (Somma prevista - Somma effettiva) = numero duplicato ... È un caso abbastanza speciale .... In realtà ho già visto qualcosa prima in qualche post online su problemi di intervista di anni fa su uno correlato con lo stesso trucco, quindi Stavo bene ....

Un altro, inverti tutte le parole in una stringa senza usare spazio aggiuntivo. Ho dovuto pensarci e il recruiter è stato piuttosto impaziente nei 5 minuti in cui ho pensato (dividere e ricollegare la stringa al contrario, o andare parola per parola in un nuovo array sono entrambi molto facili). Mi è venuto in mente di trovare il bordo dell'ultima parola, di trovare la fine della prima parola e di spostare costantemente l'intera lista in basso di 1 e quindi di inserire la lettera appropriata. Quindi ripeti fino a quando non hai raggiunto la fine dell'elenco. Questo metodo ha funzionato e l'intervistatore ha concordato (era un po 'tecnico), ma è piuttosto inefficiente. Quando sono tornato a casa ho cercato la risposta ottimale, ed è solo per invertire l'elenco, quindi invertire ogni singola parola. Alcune persone potrebbero inventarlo,

Ora è vero una volta che hai visto alcuni di questi problemi, puoi risolverli più facilmente. Perché ci sono alcune domande simili con alcuni degli stessi trucchi. Conosco in particolare la formula n (n-1) / 2 e l'elenco dei numeri ha diverse varianti. Ma ancora non so cosa testino queste domande. Un FizzBuzz è qualcosa che tutti dovrebbero essere in grado di fare (anche se ho visto variazioni che non sono così semplici nel qual caso comincio a chiedermi se anche quello è realistico per una situazione di intervista senza essere in grado di digitare / eseguire il debug del codice). Alcune di queste domande sono ovvie quando le vedi, ma se non le hai viste non sono ovvie. Dopo tutto quello che qualcuno ha menzionato, ci sono voluti anni per far apparire la prima corretta implementazione della ricerca binaria ... In questo momento la ricerca binaria è così ovvia perché tutti possono leggerne.

Tuttavia, penso che la parte peggiore sia quando le persone non tecniche stanno ponendo le domande perché non possono apprezzare la tua soluzione sia corretta anche se non ottimale. Sanno solo che la tua soluzione non è quella presentata e quindi è tutto sbagliato, non ottieni credito per il tentativo. Anche le soluzioni non ottimali mostrano spesso una conoscenza dei costrutti di programmazione. A meno che non stia programmando giochi di poker, non mi interessa quanto qualcuno possa mescolare un mazzo di carte. E anche se lo fossi, dopo aver mostrato loro l'algoritmo efficiente sono sicuro che chiunque a metà decente potrebbe seguirlo.

Le domande sui template sembrano dare un vantaggio ai candidati che intervistano più a lungo poiché hanno maggiori probabilità di aver visto più domande sui template. Anche FizzBuzz, la prima volta che lo vedi potresti impazzire, ma quando lo vedi più volte ti abitui. La cosa migliore che potresti fare è dare una sfida alla codifica che richiede una logica aziendale personalizzata. Ad esempio, creare un set di dati (array di oggetti / record), quindi creare alcune regole aziendali da applicare a ciascun oggetto e restituire una risposta. Ad esempio, un tipo di classificazione, ecc. Ma regole molto personalizzate. Mentre probabilmente hanno visto scorrere i record e applicare la logica un milione di volte, le tue regole saranno uniche, quindi almeno dovrebbero capire e implementare con successo le regole che hai creato.

Diciamo che stipendio previsto e un elenco di candidati e i loro primi 3 videogiochi preferiti, e forse uno stipendio iniziale. I candidati a cui piace Zelda ricevono una penalità di 300, i candidati a cui piace la sirenetta ricevono un bonus di 200. I candidati a cui piacciono Donkey Kong e Super Mario Brothers ma non il Dr. Mario ricevono un bonus di 300. I candidati a cui piace Metroid o Kid Icarus ricevono un bonus di 200, ecc. Sembra un po 'folle ma ti mostrerebbe la loro capacità di tradurre le regole di business in costrutti logici di programma e testare anche la loro comprensione della logica booleana. Nel complesso non è molto diverso dal fizzbuzz, tranne per il fatto che non si utilizzano moduli e loop. Ovviamente potresti dare loro l'elenco e farli scorrere attraverso di esso e stampare i risultati sullo schermo usando anche criteri di output specifici.


4

Durante la mia ultima ricerca di lavoro, mi trovavo in una situazione molto simile. Penso di aver avuto la stessa domanda di elenco collegato in tutte le società tranne una (quella in cui sono attualmente impiegato).

Una cosa che ho notato è che queste domande sono state poste nella prima intervista.

Dal punto di vista degli intervistatori, se una persona non riesce a rispondere correttamente a queste domande, allora non si preparano per l'intervista, quindi perché perdere più tempo con loro? Non penso che questa sia l'idea giusta però. La società otterrà un sacco di persone che possono recitare le risposte di Google passando al turno successivo, ma non necessariamente un gruppo di persone che sono sviluppatori competenti.

Ho trovato personalmente fastidiose le domande su FizzBuzz, ma è stato facile per un'intervista. Mi piace un'intervista stimolante. Quando intervisto potenziali dipendenti, mi piace assicurarmi di sapere che possono pensare e risolvere i problemi. Mi aspetto che possano usare Google.

Un'azienda dovrebbe avere un modello di domanda? Sì. Aiuta a valutare i candidati per i primi round. Il modello dovrebbe essere costituito da problemi generici che possono essere facilmente trovati tramite Google? No. Questo è solo un breve cambiamento per tutti i soggetti coinvolti.


4

"Le case produttrici di software dovrebbero sforzarsi di essere più originali e presentare il proprio materiale per le interviste?"

Sì, dovrebbero, ma praticamente ciò che accade è che tu entri al lavoro e trovi un'e-mail da parte delle risorse umane che ti dice che domani sei nel ciclo delle interviste per due candidati. Sei già pronto per il culo in alligatori e il tuo manager non ti ringrazierà per aver impiegato mezza giornata per elaborare alcune nuove, buone domande per l'intervista. Se sei a corto di tempo, torni indietro alle domande che ti sono state poste o che puoi trovare rapidamente su Google.


2
sì, e poi sei davvero felice di avere un documento pieno di buone domande per il colloquio, mentre altrimenti potresti fissare il ragazzo che lotta per qualcosa di significativo da chiedere
Doug T.

3

Le domande come le hai menzionate sono normalmente domande fizzbuzz e non sono una domanda utilizzata per l'assunzione; sono una domanda negatrice (es. risposte corrette non ti faranno trovare un lavoro in alcun modo, ma risposte sbagliate ti faranno buttare nella spazzatura). Quindi non sono molto preziosi.

Sono le domande che vengono dopo che devono essere poste in considerazione e, il più delle volte, avranno una forte relazione con il tipo di lavoro svolto dall'azienda e com'è la dinamica del team.

Quindi la risposta è: entrambi.


4
Sono d'accordo sul fatto che la domanda in stile fizzbuzz sta negando le domande ... ma non bussare tenendo le persone sbagliate fuori dall'autobus!
Peter K.

2

Se la maggior parte o tutte le loro domande sono uguali, è davvero una cosa negativa (per loro, cioè). Ciò dimostra probabilmente che l'intervistatore non è ben preparato per il compito.

Si noti che l'utilizzo di domande "entry-level" come il test di FizzBuzz può essere accettabile per eliminare rapidamente l'inetto totale, senza investire troppo tempo e fatica. Anche se anche allora, le variazioni sul tema sono utili per evitare di ascoltare risposte direttamente da Google. Inoltre, è facile chiedere al candidato cosa fa effettivamente il codice appena scritto e perché funziona (o no). Credo che un intervistatore tecnicamente competente sia in grado di rilevare rapidamente se qualcuno finge di conoscere la risposta.

E, soprattutto, se qualcuno supera il test entry level, dovrebbero sorgere le domande più difficili, in cui non è più sufficiente recitare risposte predefinite. Personalmente sono più interessato ai processi di pensiero dell'intervistato e alle capacità di problem solving in generale, piuttosto che alla soluzione specifica di un indovinello. L'altro argomento importante riguarderebbe i processi e gli approcci di sviluppo: avvio una discussione aperta piuttosto che domande concrete su questi argomenti. Non ci sono risposte giuste o sbagliate su questi argomenti, quindi nessuna possibilità di prepararsi in anticipo. Ma da una discussione ho imparato molto sul fatto che io e il team saremmo a nostro agio nel lavorare con questo candidato.

Quindi un numero limitato di domande "modello" va bene, ma una buona intervista è un processo di flusso, in cui l'intervistatore dovrebbe adattarsi alla situazione, incluso il livello di abilità (pubblicizzato e reale) del candidato, lo stato mentale (nervosismo / stanchezza) ecc.


Sì, ma dì che fai il test FizzBuzz in modo che qualcuno che non è adatto e fallisca. Potrebbero cercare buone risposte e passare quella domanda in un'altra società, questo è ciò che mi preoccupa e penso che le aziende dovrebbero avere l'obbligo di non usare le domande del modello. Qualsiasi buon sviluppatore di software senior dovrebbe essere in grado di elaborare buone domande, che vanno dal facile al difficile.
Desolato pianeta

2
@Desolate Planet: La cosa è però, ho il sospetto che le persone che falliscono il fizzbuzz non siano il tipo che cerca le risposte ... Spereranno solo di non ricevere la domanda alla prossima intervista.
Steven Evers,

Mmm..ma anche dopo aver incasinato 3-4 interviste, saranno abbastanza intelligenti da rilevare schemi nelle domande che gli vengono poste. Ancora una volta, questo è solo un pensiero che ho avuto sulle interviste tecniche in generale e mi sembra un modo scadente per farlo.
Desolato pianeta

1
@Desolate, quindi potrebbero riuscire a trovare un lavoro presso un'azienda a cui apparentemente non interessa nemmeno filtrare bene i candidati ... quindi entrambi ottengono ciò che meritano.
Péter Török,

@Peter, sono d'accordo con quello che dici, ma è piuttosto ingiusto per gli altri candidati che potrebbero essere giusti per il lavoro e avere qualcosa che possono contribuire alla società. Potrebbero non avere la possibilità perché qualcuno ha cercato ottime risposte e si è messo a valere per tutto il processo. Non sto dicendo che tutte le aziende sono così, ma di solito quando mi unisco a una società, hanno un documento word sull'unità di rete con un elenco di domande di intervista e sembrano praticamente uguali. Mi sembra molto pigro.
Desolato pianeta

2

Il mio modello di intervista in pseudo codice:

se la domanda (FizzBuzz_type_question) == corretta allora

per ogni altra domanda (domanda q in array_di_more_interesse_questioni) (q)

fine dell'intervista.


1

Penso che l'intervista dovrebbe essere divisa in:

  • Aspetto sociale (a parte le risorse umane): questa persona si adatta bene alla nostra organizzazione? Ha l'atteggiamento giusto: è disposto a seguire il nostro stile di gestione? Questo deve essere originale poiché le aziende e i team sono diversi.

  • Idoneità generale per il ruolo - Anche in questo caso dovrebbe differire da un luogo all'altro

  • Nucleo: argomenti di materia che si concentrano sull'area principale del lavoro - Questo è scientifico e non deve essere originale poiché è scientifico.

  • Idoneità al lavoro quotidiano: sono domande su argomenti che ti aspetti che il candidato faccia quotidianamente. Può essere scientifico, ma è meglio che provenga dal vero lavoro che ci si aspetta. Questa parte potrebbe variare da un luogo all'altro.

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.