Con il secondo grande boom tecnologico della Silicon Valley, gli ingegneri hanno richiesto una crescita incredibile sia alle startup che ai giganti della tecnologia. Per coloro che hanno una formazione ingegneristica o stanno studiando informatica, il mondo è la tua ostrica in questo momento.
Detto questo, le aziende non stanno semplicemente dando lavoro. I programmatori devono ancora sottoporsi a processi di intervista specializzati, inclusa l'intervista tecnica a volte temuta.
Prepararsi a questi può essere confusione. Dovresti studiare progetti tecnici specifici o in genere aggiornarti su molti argomenti? Dovresti esercitarti su un computer o con un amico?
Come terzo ingegnere di Pocket Gems, che ha circa 165 impiegati tecnici, ho condotto centinaia di interviste telefoniche e sul posto. Durante questo periodo, ho imparato molto su come prepararmi adeguatamente per uno. Ecco i suggerimenti necessari per inchiodare il tuo prossimo colloquio tecnico.
Concentrarsi sui fondamenti
Gli intervistatori ti porranno principalmente domande sui tuoi fondamenti: strutture di dati, analisi della complessità algoritmica, progettazione di classi e simili. Queste saranno domande sia dirette sui fondamenti (ad esempio, usa X per fare Y) sia domande per le quali utilizzerai i tuoi fondamenti (approfondirai più avanti).
Pensa ai fondamenti come agli strumenti nella tua cassetta degli attrezzi. Rimarranno gli stessi, indipendentemente dalla nuova straordinaria tecnologia. Con solidi fondamenti, sarai più preparato ad affrontare i problemi a tempo indeterminato, i tipi di problemi che noi e molte altre startup risolviamo quotidianamente. Concentrandosi sui fondamenti, gli intervistatori possono dedicare meno tempo alla preparazione delle domande di intervista e più tempo a vedere come pensi.
Ad esempio, ti potrebbe essere chiesto qualcosa del tipo: Ti viene dato un albero binario e due nodi nella struttura. Trova l'antenato comune più basso dei due nodi dati in O (n) tempo.
Attraverso questa domanda, l'intervistatore sta cercando di vedere come è possibile comunicare il processo di pensiero e la soluzione. Il modo in cui pensi al problema, organizzi i tuoi pensieri e comunichi la tua risposta è spesso importante quanto la tua conclusione. Lavoriamo in ambienti complessi e in continua evoluzione e abbiamo bisogno di persone in grado sia di risolvere problemi difficili sia di comunicarli efficacemente ai loro compagni di squadra tecnici e non tecnici.
Per quest'area del colloquio, dovresti essere a tuo agio nel discutere cose come stringhe, array, sintassi di base, tipi di dati, elenchi collegati, alberi, grafici, pile, code e tabelle hash. Oh, e assicurati di poter rispondere a FizzBuzz senza battere ciglio.
Preparati a risolvere le cose in modi diversi
Ognuno dei tuoi fondamenti ha pro e contro e offre una soluzione unica per un particolare tipo di problema. Dopo che gli intervistatori ti hanno posto una domanda esclusivamente sui tuoi fondamenti, probabilmente vedranno come puoi usarli in pratica. Ciò si ottiene ponendo domande aperte che possono essere risolte in vari modi.
Una domanda di esempio qui sarebbe: ti viene data un'equazione aritmetica come una stringa. Questa equazione avrà cifre singole 0-9, addizione, sottrazione, moltiplicazione e parentesi. Scrivi una funzione che accetta questa equazione e calcola la risposta corretta. Gli input di esempio includono “1 + 1” e “2 * (1 + 9) - ((2 + 5) -9”).
Come prima, l'intervistatore vuole vedere come si scompongono le domande aperte e il processo di pensiero nella scelta della soluzione. Soprattutto, vogliono vedere che puoi comunicare efficacemente problemi complessi.
Non importa quale sia la domanda o la soluzione che scegli, assicurati di pensare ad alta voce! Se hai diversi modi per risolvere il problema, parla attraverso le opzioni prima di decidere quale utilizzare. Aiuta l'intervistatore a vedere e comprendere il tuo processo di pensiero. Inoltre, l'intervistatore può raccomandare una soluzione rispetto alle altre perché sa che le altre potrebbero avere alcune insidie o potrebbero non rientrare nell'ambito del colloquio.
Non abbiate paura di porre domande se qualcosa non è chiaro o non ci sono molti dettagli forniti. Questi mostrano anche che stai pensando - e danno all'intervistatore la sensazione di come lavoreresti con gli altri. Assicurati di porre domande di chiarimento per comprendere appieno la domanda e di non allargare l'ambito del problema (ad esempio, quali sono alcuni input di esempio? Devo preoccuparmi di dividere per 0? Devo preoccuparmi di ora legale?)
Infine, assicurati di eseguire verbalmente alcuni casi di test prima di dire che hai finito. Ciò ti consente sia di controllare il codice sia di mostrare all'intervistatore che stai controllando il tuo codice. Per quanto facile sarebbe fare colloqui di lavoro, purtroppo non possiamo leggere la tua mente.
Quindi, mentre ti prepari, esercitati a risolvere domande con strumenti diversi dalla tua cassetta degli attrezzi in modo da sviluppare un'intuizione al riguardo. Scopri quando utilizzare ciascuno dei tuoi strumenti in modo da non inciampare durante l'intervista. E assicurati di esercitarti a descrivere completamente il tuo processo di pensiero: questa può essere la parte più difficile per i programmatori che sono abituati a lavorare in isolamento.
Pratica, pratica, pratica
Più ti alleni, più sarai pronto per il colloquio di programmazione tecnica. Questo è vero per la maggior parte delle cose, ma particolarmente rilevante per le interviste tecniche: richiedono davvero di riscaldare il cervello.
Ecco alcuni suggerimenti per aiutarti a ottenere il massimo dal tuo tempo di pratica:
- Assicurati di simulare l'ambiente di intervista. Concediti un limite di tempo ai problemi. Se stai per fare un'intervista telefonica, fai pratica su Stypi e Google Docs. (Lo so per me stesso, non avere il completamento automatico e l'evidenziazione della sintassi mi ha fatto scattare nelle interviste telefoniche.) Se hai intenzione di fare un'intervista di persona, fai pratica facendo problemi su carta o su una lavagna.
- Chiedi a un amico non tecnico di farti le domande del colloquio e guidalo attraverso le tue risposte. Se puoi spiegarglielo, sono sicuro che puoi spiegarlo al tuo intervistatore tecnico.
- Non pensare di imbrogliare se usi alcuni degli strumenti di preparazione disponibili. Spesso offrono grandi spunti e domande pratiche. I miei preferiti sono siti web come TopCoder e Head First . Alcuni altri libri che parlano di più del processo di intervista sono Programmazione di interviste esposte e Cracking the Code Interview .
Le interviste di codifica tecnica possono sembrare piuttosto scoraggianti, ma con i giusti tipi di pratica focalizzata, sarai pronto per farle. Ricorda di concentrarti su pane e burro, principi fondamentali e pratica molto. Segui i suggerimenti sopra e sarai pronto per il tuo prossimo colloquio di codifica tecnica.
Vuoi maggiori informazioni? Di recente ho presentato questo argomento alla conferenza di carriera tecnico / tecnica di UC Berkeley. Dai un'occhiata alle mie diapositive dal discorso qui sotto per ulteriori pensieri e risorse!




