Come prepararsi per un colloquio presso Google e fallirlo. Due volte

Come prepararsi per un colloquio presso Google e fallirlo. Due volte

Il titolo dell'articolo sembra un fallimento epico, ma in realtà non tutto è così semplice. E in generale, questa storia si è conclusa in modo molto positivo, anche se non su Google. Ma questo è argomento per un altro articolo. In questo stesso articolo ti parlerò di tre cose: come è andato il mio processo di preparazione, come si sono svolti i colloqui presso Google e perché, secondo me, non è tutto così chiaro come potrebbe sembrare.

Come tutto ebbe inizio

Una fredda sera d'inverno cipriota, mi venne all'improvviso il pensiero che la mia conoscenza dell'informatica classica era molto lontana dalla media e che bisognava fare qualcosa al riguardo. Se, a proposito, qualcuno non ha ancora letto perché la sera è cipriota e fredda, allora puoi scoprirlo qui. Dopo qualche riflessione, si è deciso di iniziare frequentando un corso online su algoritmi e strutture dati. Da uno dei miei ex colleghi ho sentito parlare del corso di Robert Sedgewick su Coursera. Il corso si compone di due parti (parte 1 и parte 2). Se improvvisamente i collegamenti cambiano, puoi sempre cercare su Google il nome dell'autore. Ogni parte dura 6 settimane. Le lezioni si tengono all'inizio della settimana e durante la settimana devi ancora fare degli esercizi. La prima parte del corso riguarda le strutture dati di base, i tipi base di ordinamento e la complessità degli algoritmi. La seconda parte è già più avanzata, iniziando con i grafici e terminando con argomenti come Programmazione Lineare e Intrattabilità. Dopo aver riflettuto su tutto quanto sopra, sono giunto alla conclusione che questo è esattamente ciò di cui ho bisogno. A proposito, un lettore curioso potrebbe chiedersi: cosa c'entra Google con questo? E in effetti, fino a quel momento non aveva avuto nulla a che fare con tutto ciò. Ma avevo bisogno di un obiettivo, dato che studiare per 12 settimane la sera senza un obiettivo è piuttosto difficile. Quale potrebbe essere lo scopo di acquisire nuove conoscenze? Naturalmente, la loro applicazione pratica. Nella vita di tutti i giorni questo è abbastanza problematico, ma durante un colloquio con una grande azienda è facile. Un rapido Google ha mostrato che Google (perdona la tautologia) è una delle più grandi aziende in Europa (e stavo guardando specificamente all'Europa) che conduce tali interviste. Vale a dire, il loro ufficio si trova a Zurigo, in Svizzera. Quindi è deciso: studiamo e andiamo a fare un colloquio su Google.

Preparazione al primo approccio

Le 12 settimane sono passate velocemente e ho completato entrambi i corsi. Le mie impressioni sui corsi sono più che positive e posso consigliarli a chiunque sia interessato. I corsi mi sono piaciuti per i seguenti motivi:

  • Il docente parla un inglese abbastanza chiaro
  • Il materiale è ben strutturato
  • Splendide presentazioni che mostrano gli interni di ciascun algoritmo
  • Selezione competente del materiale
  • Esercizi interessanti
  • Gli esercizi vengono controllati automaticamente sul sito, dopodiché viene generato un report

Il mio lavoro sui corsi di solito andava così. Ho ascoltato le lezioni in 1-2 giorni. Quindi hanno fatto un rapido test sulla loro conoscenza del materiale. Il resto della settimana ho svolto l'esercizio in diverse iterazioni. Dopo il primo ho ottenuto il mio 30-70%, i successivi hanno portato il risultato al 97-100%. L'esercizio di solito prevedeva l'implementazione di alcuni algoritmi, ad es. Intaglio della cucitura o bzip.

Dopo aver completato i corsi, mi sono reso conto che molta conoscenza porta con sé molto dolore. Se prima sapevo semplicemente di non sapere nulla, ora cominciavo a rendermi conto che ero io a non sapere.

Dato che era solo il mese di maggio e avevo programmato il colloquio per l'autunno, ho deciso di continuare gli studi. Dopo aver esaminato i requisiti per il posto vacante, si è deciso di andare in due direzioni parallele: continuare a studiare algoritmi e seguire un corso base di machine learning. Per il primo obiettivo ho deciso di passare dai corsi a un libro e ho scelto la monumentale opera di Steven Skiena “Algorithms. Il manuale di progettazione degli algoritmi. Non monumentale come quello di Knut, ma comunque. Per il secondo obiettivo sono tornato a Coursera e mi sono iscritto al corso di Andrew Ng. machine Learning.

Passarono altri 3 mesi e terminai il corso e prenotai.

Cominciamo dal libro. La lettura si è rivelata piuttosto interessante, anche se non facile. In linea di principio consiglierei il libro, ma non subito. Nel complesso, il libro fornisce uno sguardo più approfondito su ciò che ho imparato durante il corso. Inoltre, ho scoperto (da un punto di vista formale) cose come l'euristica e la programmazione dinamica. Naturalmente li avevo già usati, ma non sapevo come si chiamavano. Il libro contiene anche una serie di racconti della vita dell'autore (War Story), che in qualche modo diluiscono la natura accademica della presentazione. A proposito, la seconda metà del libro può essere omessa, contiene piuttosto una descrizione dei problemi esistenti e dei metodi per risolverli. È utile se viene utilizzato regolarmente nella pratica, altrimenti verrà immediatamente dimenticato.

Sono rimasto più che soddisfatto del corso. L'autore conosce chiaramente il fatto suo e parla in modo interessante. Inoltre una buona parte di esso, vale a dire l'algebra lineare e le basi delle reti neurali, me lo ricordavo dall'università, quindi non ho riscontrato particolari difficoltà. La struttura del corso è abbastanza standard. Il corso è suddiviso in settimane. Ogni settimana ci sono lezioni frontali miste a brevi prove. Dopo le lezioni, ti verrà assegnato un compito che devi svolgere, inviare e verrà controllato automaticamente. In breve, l'elenco delle cose insegnate nel corso è il seguente:
- funzione di costo
- regressione lineare
- discesa del gradiente
- ridimensionamento delle funzionalità
- equazione normale
- regressione logistica
— classificazione multiclasse (uno contro tutti)
- reti neurali
- propagazione all'indietro
- regolarizzazione
- bias/varianza
— curve di apprendimento
— metriche di errore (precisione, richiamo, F1)
— Supporta macchine vettoriali (classificazione ad ampio margine)
— K-significa
—Analisi dei componenti principali
- rilevamento anomalie
— filtraggio collaborativo (sistema di raccomandazione)
— discese stocastiche, mini-batch, batch gradiente
- apprendimento online
- Riduci mappa
- analisi del soffitto
Dopo aver completato il corso, era presente una comprensione di tutti questi argomenti. Dopo 2 anni, quasi tutto è stato naturalmente dimenticato. Lo consiglio a coloro che non hanno familiarità con l'apprendimento automatico e vogliono comprendere bene le cose di base per andare avanti.

Prima corsa

Era già settembre ed era ora di pensare a un'intervista. Dato che fare domanda tramite il sito è piuttosto disastroso, ho iniziato a cercare amici che lavorassero presso Google. La scelta è caduta datacompboy, poiché era l'unico che conoscevo direttamente (anche se non personalmente). Ha accettato di inoltrare il mio curriculum e presto ho ricevuto una lettera dal reclutatore che si offriva di riservare un posto sul suo calendario per la prima conversazione.Un paio di giorni dopo ha avuto luogo la chiamata. Abbiamo provato a comunicare tramite Hangouts, ma la qualità era pessima, quindi siamo passati al telefono. Innanzitutto, abbiamo discusso rapidamente dello standard come, perché e perché, per poi passare allo screening tecnico. Consisteva in una dozzina di domande nello spirito di "qual è la difficoltà di inserimento in una mappa hash", "quali alberi equilibrati conosci". Non è difficile se hai una conoscenza base di queste cose. Lo screening è andato bene e sulla base dei risultati hanno deciso di organizzare il primo colloquio entro una settimana.

L'intervista è avvenuta anche tramite Hangouts. Prima hanno parlato di me per circa 5 minuti, poi sono passati al problema. Il problema era sui grafici. Ho capito subito cosa bisognava fare, ma ho scelto l'algoritmo sbagliato. Quando ho iniziato a scrivere codice me ne sono reso conto e sono passato a un'altra opzione, che ho completato. L'intervistatore ha posto diverse domande sulla complessità dell'algoritmo e ha chiesto se fosse possibile farlo più velocemente. In qualche modo sono diventato ottuso e non potevo farlo. A questo punto il tempo era scaduto e ci siamo salutati. Poi, dopo circa 10 minuti, mi è venuto in mente che invece dell'algoritmo Dijkstra che avevo usato, in questo particolare problema avrei potuto usare la ricerca in ampiezza, e sarebbe stato più veloce. Dopo un po' di tempo, il reclutatore ha chiamato e ha detto che il colloquio nel complesso era andato bene e che se ne doveva organizzare un altro. Ci siamo accordati per un'altra settimana.

Questa volta le cose sono peggiorate. Se la prima volta l'intervistatore era stato amichevole e socievole, questa volta era piuttosto cupo. Non sono riuscito a capire subito il problema, anche se le idee che mi sono venute potrebbero, in linea di principio, portare alla sua soluzione. Alla fine, dopo diversi suggerimenti da parte dell’intervistatore, la soluzione è arrivata. Anche questa volta si è rivelata una ricerca in ampiezza, solo da più punti. Ho scritto le soluzioni, le ho incontrate in tempo, ma ho dimenticato i casi limite. Dopo un po', il reclutatore ha chiamato e ha detto che questa volta l'intervistatore era scontento, perché secondo lui avevo bisogno di troppi suggerimenti (3 o 4 pezzi) e cambiavo costantemente il codice mentre scrivevo. Sulla base dei risultati di due colloqui si è deciso di non andare oltre, ma di rinviare il prossimo colloquio di un anno, se lo desidero. Ecco perché ci siamo salutati.

E da questa storia ho tratto diverse conclusioni:

  • La teoria è buona, ma è necessario esplorarla rapidamente
  • La teoria senza la pratica non aiuta. Dobbiamo risolvere i problemi e portare la codifica all’automaticità.
  • Molto dipende dall'intervistatore. E non si può fare nulla al riguardo.

Preparazione per la seconda manche

Dopo aver riflettuto sulla situazione, ho deciso di riprovare tra un anno. E leggermente modificato l'obiettivo. Se prima l'obiettivo principale era studiare e un colloquio su Google era come una carota lontana, ora l'obiettivo era superare un colloquio e studiare era il mezzo.
Pertanto, è stato sviluppato un nuovo piano, che includeva i seguenti punti:

  • Continua a studiare la teoria leggendo libri e articoli.
  • Risolvi problemi algoritmici per un importo di 500-1000 pezzi.
  • Continua ad apprendere la teoria guardando i video.
  • Continuare a studiare la teoria attraverso i corsi.
  • Studia le esperienze di altre persone con le interviste su Google.

Ho completato il piano entro un anno. Successivamente descriverò cosa ho fatto esattamente per ciascuno dei punti.

Libri e articoli

Non ricordo nemmeno quanti articoli ho letto, li ho letti sia in russo che in inglese. Probabilmente il sito più utile questo. Qui puoi trovare una descrizione di un gran numero di algoritmi interessanti con esempi di codice.

Ho letto 5 libri: Algorithms, 4th edition (Sedgewick, Wayne), Introduction to Algorithms 3rd Edition (Cormen, Leiserson, Rivest, Stein), Cracking the Coding Interview 4th edition (Gayle Laakmann), Programming Interviews Exposed 2nd edition (Mongan, Suojanen , Giguere), Elementi di programmazione e interviste (Aziz, Lee, Prakash). Possono essere divisi in 2 categorie. Il primo include libri di Sedgwick e Corman. Questa è una teoria. Il resto è preparazione per il colloquio. Sedgwick racconta la stessa cosa nel libro e nei suoi corsi. Solo per iscritto. Non ha molto senso leggerlo attentamente se hai seguito il corso, ma vale comunque la pena sfogliarlo. Se non hai guardato il corso, ha senso leggerlo. Cormen mi sembrava troppo noioso. Ad essere sincero, ho avuto difficoltà a padroneggiarlo. L'ho appena portato via da lì teorema principalee diverse strutture dati usate raramente (heap di Fibonacci, albero di van Emde Boas, heap di radice).

Vale la pena leggere almeno un libro per prepararsi a un colloquio. Sono tutti costruiti approssimativamente sullo stesso principio. Descrivono il processo di intervista nelle grandi aziende tecnologiche, forniscono nozioni di base sull'informatica, problemi per queste cose di base, soluzioni ai problemi e analisi delle soluzioni. Dei tre precedenti, probabilmente consiglierei Cracking the Coding Interview come principale, mentre il resto è facoltativo.

Problemi algoritmici

Questo è stato probabilmente il punto più interessante della preparazione. Ovviamente puoi sederti e risolvere i problemi stupidamente. Ci sono molti siti diversi per questo. Ne ho utilizzati principalmente tre: Hackerrank, CodeChef и LeggiCodice. Su CodeChef i problemi sono divisi per difficoltà, ma non per argomento. Su Hackerrank sia per complessità che per argomento.

Ma come ho subito scoperto da solo, esiste un modo più interessante. E queste sono competizioni (sfide di programmazione o concorsi di programmazione). Tutti e tre i siti li forniscono. È vero, c'è un problema con LeetCode: un fuso orario scomodo. Ecco perché non ho partecipato a questo sito. Hackerrank e CodeChef offrono un numero abbastanza elevato di concorsi diversi, della durata da 1 ora a 10 giorni. Formati diversi hanno regole diverse, ma di questo potremmo parlare a lungo. Il punto principale per cui le competizioni sono positive è l’introduzione di un elemento competitivo (e ancora una volta tautologico) nel processo di apprendimento.

In totale, ho partecipato a 37 concorsi su Hackerrank. Di questi, 32 erano di valutazione e 5 erano sponsorizzati (ho ricevuto anche $ 25 in uno di essi) o per divertimento. Nella classifica sono stato nel 10% dei migliori 4 volte, nel 11% dei migliori 12 volte e nel 5% dei migliori 25 volte. I migliori risultati sono stati 27/1459 nelle 3 ore e 22/9721 nella settimana.

Sono passato a CodeChef quando Hackerrank ha iniziato a ospitare concorsi meno frequentemente. In totale sono riuscito a partecipare a 5 concorsi. Il miglior punteggio è stato 426/5019 nei dieci giorni di gara.

In totale, alle competizioni e proprio così, ho risolto poco più di 1000 problemi che rientravano nel piano. Ora, purtroppo, non c'è tempo libero per proseguire l'attività agonistica, così come non c'è obiettivo per cui si possa ammortizzare il tempo non libero. Ma è stato divertente. Consiglio a coloro che sono interessati a questo di trovare persone che la pensano allo stesso modo. Insieme o in gruppo è molto più interessante. Mi sono divertito con un amico, quindi forse è andata bene.

Guarda il video

Dopo aver letto il libro di Skiena, mi sono interessato a quello che stava facendo. Come Sedgwick, è un professore universitario. A questo proposito si possono trovare online i video dei suoi corsi. Ho deciso di rivedere il corso COMP300E - Sfide di programmazione - 2009 HKUST. Non posso dire che mi sia piaciuto molto. Innanzitutto la qualità del video non è molto buona. In secondo luogo, non ho provato a risolvere da solo i problemi discussi nel corso. Quindi il coinvolgimento non era molto alto.
Inoltre, mentre risolvevo i problemi, cercando di trovare l'algoritmo giusto, mi sono imbattuto nel video di Tushar Roy. Ha lavorato in Amazon e ora lavora in Apple. Come ho scoperto più tardi, lo ha fatto Canale Youtube, dove pubblica un'analisi di vari algoritmi. Al momento in cui scrivo, il canale contiene 103 video. E devo dire che la sua analisi è stata fatta molto bene. Ho provato a guardare altri autori, ma in qualche modo non ha funzionato. Quindi posso sicuramente consigliare questo canale per la visualizzazione.

Seguire corsi

Non ho fatto niente di speciale qui. Ho guardato un video dello sviluppatore Android Nanodegree di Google e ho seguito un corso di ITMO Come vincere gare di programmazione: i segreti dei campioni. Nanodegree è abbastanza buono, anche se naturalmente non ho imparato nulla di nuovo da esso. Il corso dell'ITMO è un po' distorto dal punto di vista teorico, ma i problemi erano interessanti. Non consiglierei di iniziare con quello, ma in linea di principio è stato tempo ben speso.

Impara dalle esperienze degli altri

Naturalmente, molte persone hanno provato ad entrare in Google. Alcuni l'hanno capito, altri no. Alcuni hanno scritto articoli su questo. Tra le cose interessanti probabilmente menzionerò questo и questo. Nel primo caso, la persona ha preparato per sé un elenco di ciò che deve imparare per diventare un ingegnere del software ed entrare in Google. Alla fine è finito in Amazon, ma non è più così importante. Il secondo manuale è stato scritto dall'ingegnere di Google, Larisa Agarkova (larrù). Oltre a questo documento, puoi anche leggere il suo blog.

Ha senso leggere le recensioni delle interviste su Glassdoor. Sono tutti più o meno simili, ma puoi ottenere alcune informazioni utili.

Non fornirò link ad altri piccoli articoli; li potete trovare facilmente su Google.

Seconda corsa

E ormai è passato un anno. Si è rivelato molto intenso dal punto di vista degli studi. Ma mi sono avvicinato al nuovo autunno con una conoscenza teorica molto più profonda e ho sviluppato abilità pratiche. Mancavano ancora alcune settimane alla fine dell'anno assegnatomi per la preparazione, quando all'improvviso arrivò per posta una lettera di un reclutatore di Google, in cui mi chiedeva se avevo ancora voglia di lavorare in Google e avrei voluto Mi dispiace parlare con lui. Naturalmente non mi importava. Abbiamo deciso di chiamare tra una settimana. Mi hanno chiesto anche un curriculum aggiornato, al quale ho aggiunto una breve descrizione di quello che avevo fatto durante l'anno a livello lavorativo e in generale.

Dopo aver comunicato per tutta la vita, abbiamo deciso che tra una settimana ci sarebbe stato un colloquio Hangout, proprio come l'anno scorso. Passò una settimana, era il momento del colloquio, ma l'intervistatore non si presentò. Passarono 10 minuti, cominciavo già a innervosirmi, quando all'improvviso qualcuno irruppe nella chat. Come si è scoperto poco dopo, il mio intervistatore per qualche motivo non ha potuto presentarsi e per lui è stato trovato urgentemente un sostituto. La persona era alquanto impreparata sia per quanto riguarda la configurazione del computer che per quanto riguarda lo svolgimento dell'intervista. Ma poi è andato tutto bene. Ho risolto rapidamente il problema, descritto dove erano possibili le insidie ​​e come potevano essere aggirate. Abbiamo discusso diverse versioni del problema e la complessità dell'algoritmo. Poi abbiamo parlato altri 5 minuti, l'ingegnere ci ha raccontato le sue impressioni sul lavoro a Monaco (a Zurigo a quanto pare non hanno trovato un sostituto urgente), e poi ci siamo lasciati.

Lo stesso giorno, il reclutatore mi ha contattato e mi ha detto che il colloquio era andato bene e che erano pronti a invitarmi a un colloquio in ufficio. Il giorno successivo abbiamo chiamato tramite Hangouts e abbiamo discusso i dettagli. Dato che dovevo richiedere un visto, abbiamo deciso di fissare un colloquio tra un mese.

Mentre preparavo i documenti, ho discusso contemporaneamente del prossimo colloquio con il reclutatore. Un'intervista standard presso Google è composta da 4 interviste algoritmiche e un'intervista di System Design. Ma, poiché stavo facendo domanda per un lavoro come sviluppatore Android, mi è stato detto che parte del colloquio sarebbe stata specifica per Android. Non riuscivo a chiedere al reclutatore esattamente quali sarebbero state le specifiche. A quanto ho capito, questo è stato introdotto relativamente di recente e lui stesso non ne era molto consapevole. Sono stato anche iscritto a due sessioni di formazione: come superare un colloquio algoritmico e come superare un colloquio di System Design. Le sessioni sono state di utilità media. Anche lì nessuno potrebbe dirmi cosa chiedono agli sviluppatori Android. Pertanto, la mia preparazione per questo mese si è ridotta a quanto segue:

  • Acquistare un pennarello e scriverci sopra dalla memoria 2-3 dozzine di algoritmi più popolari. 3-5 pezzi al giorno. In totale, ciascuno è stato scritto più volte.
  • Aggiorna la tua memoria con varie informazioni su Android che non usi tutti i giorni
  • Guardare alcuni video su Big Scale e cose del genere

Come ho già detto, contemporaneamente stavo preparando i documenti per il viaggio. Per cominciare mi hanno chiesto informazioni per fare una lettera di invito. Poi ho cercato a lungo di scoprire chi a Cipro rilascia i visti per la Svizzera, dal momento che l'ambasciata svizzera non si occupa di questo. A quanto pare, è il consolato austriaco a farlo. Ho chiamato e ho preso un appuntamento. Hanno chiesto un mucchio di documenti, ma niente di particolarmente interessante. Foto, passaporto, permesso di soggiorno, tanti certificati diversi e, ovviamente, una lettera di invito. Intanto la lettera non è arrivata. Alla fine, ho utilizzato una stampa normale e ha funzionato abbastanza bene. La lettera stessa è arrivata 3 giorni dopo e la FedEx di Cipro non è riuscita a trovare il mio indirizzo e sono dovuto andare a prenderla da solo. Allo stesso tempo, ho ricevuto un pacco dalla stessa FedEx, che anche loro non hanno potuto consegnarmi, poiché non hanno trovato l'indirizzo, e che era rimasto lì da giugno (5 mesi, Karl). Dato che non lo sapevo, naturalmente, non ho pensato che lo avessero. Ho ricevuto il visto in tempo, dopodiché mi hanno prenotato un hotel e mi hanno offerto opzioni di volo. Ho modificato le opzioni per renderlo più conveniente. Non c'erano più voli diretti, quindi alla fine sono volato lì via Atene e ritorno via Vienna.

Dopo aver sbrigato tutte le formalità per il viaggio, sono passati ancora alcuni giorni e sono volato effettivamente a Zurigo. Siamo arrivati ​​lì senza incidenti. Dall'aeroporto alla città ho preso il treno, velocemente e comodamente. Dopo aver girovagato un po’ per la città, ho trovato un albergo e ho fatto il check-in. Dato che l'hotel era prenotato senza cibo, ho cenato lì accanto e sono andato a letto, perché il volo era mattina e volevo già dormire. Il giorno dopo ho fatto colazione in hotel (per soldi extra) e sono andato all'ufficio di Google. Google ha diversi uffici a Zurigo. La mia intervista non era quella centrale. E in generale, l'ufficio sembrava abbastanza ordinario, quindi non ho avuto la possibilità di vedere tutte le chicche di un "normale" ufficio di Google. Mi sono registrato presso l'amministratore e mi sono seduto ad aspettare. Dopo un po', il reclutatore è uscito e mi ha spiegato il programma della giornata, dopodiché mi ha portato nella stanza dove avrebbero dovuto svolgersi i colloqui. In realtà il piano prevedeva 3 colloqui, il pranzo e altri 2 colloqui.

Интервью номер раз

La prima intervista è stata solo su Android. E non aveva assolutamente nulla a che fare con gli algoritmi. Sorpresa, però. Bene, ok, è ancora più comune in questo modo. Ci è stato chiesto di realizzare un determinato componente dell'interfaccia utente. Per prima cosa abbiamo discusso cosa e come. Si è offerto di creare una soluzione utilizzando RxJava, descrivendo cosa avrebbe fatto esattamente e perché. Hanno detto che questo è sicuramente positivo, ma facciamolo utilizzando il framework Android. E allo stesso tempo scriveremo il codice sulla lavagna. E non solo un componente, ma l'intera attività che utilizza questo componente. Questo è ciò per cui non ero pronto. Una cosa è scrivere un algoritmo di 30-50 righe sulla lavagna, un'altra cosa è scrivere noodles di codice Android, anche con abbreviazioni e commenti nello spirito di "beh, non lo scriverò, dato che è già ovvio". Il risultato è stato una sorta di vinaigrette per 3 tavole. Quelli. Ho risolto il problema, ma sembrava stupido.

Intervista numero due

Questa volta l’intervista riguardava gli algoritmi. E c'erano due intervistatori. Uno è il vero intervistatore e il secondo è un giovane padawan (intervistatore ombra). Era necessario inventare una struttura dati con determinate proprietà. Per prima cosa abbiamo discusso il problema come al solito. Ho posto domande diverse, ha risposto l'intervistatore. Dopo un po' di tempo, è stato chiesto loro di scrivere alla lavagna diversi metodi della struttura inventata. Questa volta ho avuto più o meno successo, anche se con alcuni piccoli errori, che ho corretto su suggerimento dell’intervistatore.

Intervista numero tre

Questa volta System Design, che all'improvviso si è rivelato essere anche Android. Era necessario sviluppare un'applicazione con determinate funzionalità. Abbiamo discusso i requisiti per l'applicazione, il server e il protocollo di comunicazione. Successivamente, ho iniziato a descrivere quali componenti o librerie avrei utilizzato durante la creazione dell'applicazione. E poi, quando si menziona Job Scheduler, c'è stata un po' di confusione. Il punto è che in pratica non l'ho mai usato, dato che al momento del suo rilascio ero appena passato ad applicazioni di supporto dove non c'erano compiti per il suo utilizzo. La stessa cosa è accaduta durante lo sviluppo di quelli successivi. Cioè, in teoria, so cos'è questa cosa, quando e come viene utilizzata, ma non ho esperienza nell'usarla. E all'intervistatore non sembrava piacere molto. Poi mi hanno chiesto di scrivere del codice. Sì, quando sviluppi un'applicazione devi immediatamente scrivere il codice. Ancora una volta il codice Android sulla scheda. Si è rivelato di nuovo spaventoso.

Pranzo

Doveva venire un'altra persona, ma non è arrivata. E Google commette errori. Di conseguenza, sono andato a pranzo con l'intervistatore precedente, il suo collega, e poco dopo si è unito l'intervistatore successivo. Il pranzo era abbastanza decente. Ancora una volta, poiché non si tratta dell'ufficio principale di Zurigo, la sala da pranzo sembrava piuttosto ordinaria, anche se molto carina.

Intervista numero quattro

Infine, gli algoritmi nella loro forma più pura. Ho risolto il primo problema abbastanza rapidamente e immediatamente in modo efficace, anche se mi sono perso un caso limite, ma su richiesta dell'intervistatore (ha fornito proprio questo caso limite) ho trovato il problema e l'ho corretto. Ovviamente ho dovuto scrivere il codice sulla lavagna. Quindi è stato assegnato un compito simile, ma più difficile. Per questo ho trovato un paio di soluzioni non ottimali e ho quasi trovato quella ottimale, 5-10 minuti non sono bastati per finire il pensiero. Bene, non ho avuto il tempo di scrivere il codice per questo.

Intervista numero cinque

E ancora intervista su Android. Mi chiedo perché ho studiato algoritmi tutto l'anno?
All'inizio c'erano alcune semplici domande. Quindi l'intervistatore ha scritto il codice sulla lavagna e ha chiesto di trovarvi dei problemi. Trovato, spiegato, risolto. Discusso. E poi sono iniziate alcune domande inaspettate nello spirito di "cosa fa il metodo Y nella classe X", "cosa c'è all'interno del metodo Y", "cosa fa la classe Z". Certo, ho risposto a qualcosa, ma poi ho detto che non l'ho riscontrato di recente nel mio lavoro e naturalmente non ricordo chi sta facendo cosa e come in dettaglio. Successivamente, l'intervistatore mi ha chiesto cosa stavo facendo adesso. E le domande sono andate su questo argomento. Ho già risposto molto meglio qui.

Dopo la fine dell'ultimo colloquio, mi hanno preso il pass, mi hanno augurato buona fortuna e mi hanno mandato via. Ho camminato un po' per la città, ho cenato e sono andato in albergo, dove sono andato a letto, visto che il volo era di nuovo la mattina presto. Il giorno successivo sono arrivato sano e salvo a Cipro. Su richiesta del reclutatore, ho scritto un feedback sul colloquio e ho compilato un modulo in un servizio speciale per restituire i soldi spesi. Di tutte le spese, Google paga direttamente solo i biglietti. Hotel, vitto e viaggio sono a carico del candidato. Quindi compiliamo il modulo, alleghiamo le ricevute e lo inviamo ad un ufficio apposito. Lo elaborano e trasferiscono il denaro sul conto abbastanza rapidamente.

Ci è voluta una settimana e mezza per elaborare i risultati dell'intervista. Dopo di che sono stato informato che ero "un po' al di sotto del livello". Cioè, sono rimasto un po' all'altezza. Nello specifico, 2 interviste sono andate bene, 2 un po' meno e System Design non molto bene. Ora, se almeno 3 fossero andate bene, allora avremmo potuto competere, altrimenti non c’è alcuna possibilità. Si sono offerti di tornare un altro anno.

All'inizio, ovviamente, ero sconvolto, perché erano stati spesi molti sforzi per la preparazione e al momento del colloquio stavo già pensando di lasciare Cipro. Unirsi a Google e trasferirsi in Svizzera mi è sembrata un'ottima opzione.

conclusione

Ed eccoci arrivati ​​alla parte finale dell'articolo. Sì, non ho superato il colloquio con Google due volte. È triste. Probabilmente sarebbe interessante lavorare lì. Ma puoi guardare la questione dall'altra parte.

  • In un anno e mezzo ho imparato moltissime cose relative allo sviluppo del software.
  • Mi sono divertito molto partecipando alle gare di programmazione.
  • Sono andato a Zurigo per un paio di giorni. Quando ci tornerò?
  • Ho avuto un'interessante esperienza di colloquio presso una delle più grandi aziende IT del mondo.

Pertanto, tutto ciò che è accaduto in questo anno e mezzo può essere semplicemente considerato formazione o addestramento. E i risultati di questa formazione si sono fatti sentire. La mia idea di lasciare Cipro è maturata (a causa di alcune circostanze familiari), ho superato con successo diversi colloqui con un'altra nota azienda e mi sono trasferita dopo 8 mesi. Ma questa è una storia completamente diversa. Penso però che dovrei comunque ringraziare Google sia per l'anno e mezzo in cui ho lavorato su me stesso, sia per 2 giorni interessanti a Zurigo.

Cosa posso dire infine? Se lavori nel settore IT, preparati per i colloqui presso Google (Amazon, Microsoft, Apple, ecc.). Forse un giorno andrai lì per arrivarci. Anche se non vuoi, credimi, tale preparazione non ti farà peggiorare. Nel momento in cui ti rendi conto che puoi (anche se solo con un po' di fortuna) ottenere un colloquio con una di queste aziende, ti si apriranno molte più strade rispetto a prima di iniziare la tua preparazione. E tutto ciò di cui hai bisogno lungo il percorso è scopo, tenacia e tempo. Vi auguro il successo :)

Fonte: habr.com

Aggiungi un commento