Cum să te pregătești pentru un interviu la Google și să eșuezi. De două ori

Cum să te pregătești pentru un interviu la Google și să eșuezi. De două ori

Titlul articolului sună a eșec epic, dar în realitate totul nu este atât de simplu. Și, în general, această poveste s-a încheiat foarte pozitiv, deși nu în Google. Dar acesta este un subiect pentru alt articol. În același articol, voi vorbi despre trei lucruri: cum a decurs procesul meu de pregătire, cum s-au desfășurat interviurile la Google și de ce, în opinia mea, totul nu este atât de clar pe cât ar părea.

Cum a început totul

Într-o seară rece de iarnă cipriotă, mi-a venit brusc gândul că cunoștințele mele de informatică clasică erau foarte departe de a fi chiar medii și trebuia făcut ceva în acest sens. Dacă, apropo, cineva nu a citit încă de ce seara este cipriotă și rece, atunci puteți afla despre asta aici. După câteva gândiri, s-a decis să începem prin a urma un curs online despre algoritmi și structuri de date. De la unul dintre foștii mei colegi am auzit despre cursul lui Robert Sedgewick despre Coursera. Cursul constă din două părți (parte 1 и parte 2). Dacă brusc linkurile se schimbă, puteți oricând să căutați pe Google numele autorului. Fiecare parte durează 6 săptămâni. Prelegerile sunt date la începutul săptămânii, iar în timpul săptămânii mai trebuie să faci exerciții. Prima parte a cursului acoperă structurile de bază ale datelor, tipurile de bază de sortare și complexitatea algoritmilor. A doua parte este deja mai avansată, începând cu grafice și terminând cu lucruri precum Programarea liniară și Intractabilitatea. După ce m-am gândit la toate cele de mai sus, am ajuns la concluzia că exact de asta am nevoie. Apropo, un cititor curios se poate întreba, ce legătură are Google cu asta? Și într-adevăr, până în acest moment nu a avut absolut nimic de-a face cu asta. Dar aveam nevoie de un scop, deoarece studiul timp de 12 săptămâni seara fără un obiectiv este oarecum dificil. Care ar putea fi scopul dobândirii de noi cunoștințe? Desigur, aplicarea lor în practică. În viața de zi cu zi, acest lucru este destul de problematic, dar în timpul unui interviu cu o companie mare este ușor. Un Google rapid a arătat că Google (iertați tautologia) este una dintre cele mai mari companii din Europa (și mă uitam în mod special la Europa) care realizează astfel de interviuri. Și anume, biroul lor este situat în Zurich, Elveția. Așa că s-a decis - să studiem și să mergem la un interviu la Google.

Pregătirea pentru prima abordare

Cele 12 săptămâni au trecut repede și am terminat ambele cursuri. Impresiile mele despre cursuri sunt mai mult decât pozitive și le pot recomanda oricui este interesat. Mi-au plăcut cursurile din următoarele motive:

  • Lectorul vorbește o engleză destul de clară
  • Materialul este bine structurat
  • Prezentări superbe care arată interiorul fiecărui algoritm
  • Selecția competentă a materialului
  • Exerciții interesante
  • Exercițiile sunt verificate automat pe site, după care se generează un raport

Munca mea la cursuri mergea de obicei așa. Am ascultat prelegeri în 1-2 zile. Apoi au făcut un test rapid al cunoștințelor lor despre material. În restul săptămânii am făcut exercițiul în mai multe iterații. După prima mi-am luat 30-70%, cele ulterioare au adus rezultatul la 97-100%. Exercițiul presupunea de obicei implementarea unui algoritm, de ex. Sculptura cusături sau bzip.

După finalizarea cursurilor, mi-am dat seama că multe cunoștințe vin cu multă durere. Dacă înainte știam pur și simplu că nu știu nimic, acum am început să-mi dau seama că eu am fost cel care nu știam.

Întrucât era abia luna mai și am programat interviul pentru toamnă, am decis să-mi continui studiile. După revizuirea cerințelor pentru postul vacant, s-a decis să mergem în două direcții în paralel: să continuați studiul algoritmilor și să urmați un curs de bază de învățare automată. Pentru primul obiectiv, am decis să trec de la cursuri la o carte și am ales lucrarea monumentală a lui Steven Skiena „Algoritmi. Manualul de proiectare a algoritmului. Nu la fel de monumental ca al lui Knut, dar totuși. Pentru al doilea gol, m-am întors la Coursera și m-am înscris la cursul lui Andrew Ng. Invatare mecanica.

Au mai trecut 3 luni si am terminat cursul si cartea.

Să începem cu cartea. Lectura s-a dovedit a fi destul de interesantă, deși nu ușoară. În principiu, aș recomanda cartea, dar nu imediat. În general, cartea oferă o privire mai detaliată asupra a ceea ce am învățat la curs. În plus, am descoperit (din punct de vedere formal) lucruri precum euristica și programarea dinamică. Desigur, le mai folosisem, dar nu știam cum se numesc. Cartea conține și o serie de povești din viața autorului (Povestea războiului), care diluează oarecum caracterul academic al prezentării. Apropo, a doua jumătate a cărții poate fi omisă; conține mai degrabă o descriere a problemelor existente și a metodelor de rezolvare a acestora. Este util dacă este folosit în mod regulat în practică, altfel va fi uitat imediat.

Am fost mai mult decât mulțumit de curs. Autorul își știe clar lucrurile și vorbește într-un mod interesant. În plus, mi-am amintit de la universitate, și anume algebra liniară și elementele de bază ale rețelelor neuronale, așa că nu am întâmpinat dificultăți deosebite. Structura cursului este destul de standard. Cursul este împărțit în săptămâni. În fiecare săptămână au loc prelegeri amestecate cu teste scurte. După cursuri, vi se dă o temă pe care trebuie să o faceți, să o trimiteți și aceasta va fi verificată automat. Pe scurt, lista lucrurilor predate în cadrul cursului este următoarea:
- functia de cost
- regresie liniara
- coborâre în gradient
- scalarea caracteristicilor
- ecuația normală
- regresie logistică
- clasificare multiclasă (unu vs toți)
- rețele neuronale
- retropropagare
- regularizare
— părtinire/varianță
- curbe de învățare
— valori de eroare (precizie, rechemare, F1)
— Suport Vector Machines (clasificare cu marjă mare)
— K-înseamnă
-Analiza componentelor principale
- detectarea anomaliilor
— filtrare colaborativă (sistem de recomandare)
— coborâri stocastice, mini-loturi, coborâri în gradient
- învățarea online
- reduce harta
- analiza plafonului
După finalizarea cursului, a fost prezentă o înțelegere a tuturor acestor subiecte. După 2 ani, aproape totul a fost uitat în mod natural. Îl recomand celor care nu sunt familiarizați cu învățarea automată și doresc să înțeleagă bine lucrurile de bază pentru a merge mai departe.

Prima alergare

Era deja septembrie și era timpul să ne gândim la un interviu. Deoarece aplicarea prin site este destul de dezastruoasă, am început să caut prieteni care lucrează la Google. Alegerea a căzut datacompboy, întrucât era singurul pe care îl cunoșteam direct (chiar dacă nu personal). A fost de acord să-mi trimită CV-ul și, în curând, am primit o scrisoare de la recrutor care se oferea să-mi rezerv un loc în calendarul său pentru prima conversație. Câteva zile mai târziu, a avut loc apelul. Am încercat să comunicăm prin Hangouts, dar calitatea a fost teribilă, așa că am trecut la telefon. Mai întâi, am discutat rapid despre standardul cum, de ce și de ce, apoi am trecut la screeningul tehnic. Acesta a constat dintr-o duzină de întrebări în spiritul „care este dificultatea de a introduce într-o hartă hash”, „ce arbori echilibrați cunoașteți”. Nu este dificil dacă ai cunoștințe de bază despre aceste lucruri. Screening-ul a decurs bine și pe baza rezultatelor au decis să organizeze primul interviu într-o săptămână.

Interviul a avut loc și prin Hangouts. Mai întâi au vorbit despre mine vreo 5 minute, apoi au trecut la problemă. Problema era pe grafice. Mi-am dat repede seama ce trebuie făcut, dar am ales algoritmul greșit. Când am început să scriu cod, mi-am dat seama de asta și am trecut la o altă opțiune, pe care am completat-o. Intervievatorul a pus mai multe întrebări despre complexitatea algoritmului și a întrebat dacă se poate face mai rapid. Am devenit cumva plictisitor și nu am putut. În acest moment, timpul a trecut și ne-am luat la revedere. Apoi, după aproximativ 10 minute, mi-am dat seama că, în loc de algoritmul Dijkstra pe care l-am folosit, în această problemă anume aș putea folosi căutarea pe lățime, și va fi mai rapid. După ceva timp, recrutorul a sunat și a spus că interviul a decurs bine și că ar trebui organizat altul. Ne-am convenit pentru încă o săptămână.

De data asta lucrurile s-au înrăutățit. Dacă prima dată intervievatorul a fost prietenos și sociabil, de data aceasta a fost oarecum posomorât. Nu mi-am putut da seama imediat de problema, deși ideile cu care mi-am venit ar putea, în principiu, să ducă la rezolvarea ei. Până la urmă, după mai multe îndemnuri de la intervievator, mi-a venit soluția. De data aceasta s-a dovedit a fi din nou o căutare pe lățime, doar din mai multe puncte. Am scris soluțiile, le-am întâlnit la timp, dar am uitat de cazurile marginale. După ceva timp, recrutorul a sunat și a spus că de data aceasta intervievatorul a fost nemulțumit, pentru că după părerea lui aveam nevoie de prea multe indicii (3 sau 4 bucăți) și am schimbat constant codul în timp ce scriam. Pe baza rezultatelor a două interviuri, s-a decis să nu merg mai departe, ci să amân următorul interviu cu un an, dacă îmi doresc acest lucru. De aceea ne-am luat rămas bun.

Și din această poveste am tras câteva concluzii:

  • Teoria este bună, dar trebuie să o navigați rapid
  • Teoria fără practică nu va ajuta. Trebuie să rezolvăm probleme și să aducem codificarea la automatitate.
  • Multe depind de intervievator. Și nu se poate face nimic în privința asta.

Pregătirea pentru a doua cursă

După ce m-am gândit la situație, am decis să încerc din nou peste un an. Și ușor editat obiectivul. Dacă mai devreme scopul principal era studiul, iar un interviu la Google era ca un morcov îndepărtat, acum trecerea unui interviu era scopul, iar studiul era mijlocul.
Astfel, a fost elaborat un nou plan, care a inclus următoarele puncte:

  • Continuați să studiați teoria citind cărți și articole.
  • Rezolvați probleme algoritmice în cantitate de 500-1000 de bucăți.
  • Continuați să învățați teoria urmărind videoclipuri.
  • Continuați să studiați teoria prin cursuri.
  • Studiați experiențele altor persoane cu interviuri la Google.

Am finalizat planul într-un an. În continuare voi descrie ce am făcut exact pentru fiecare dintre puncte.

Cărți și articole

Nici nu-mi amintesc numărul de articole pe care le-am citit; le-am citit atât în ​​rusă, cât și în engleză. Probabil cel mai util site acest. Aici puteți găsi o descriere a unui număr mare de algoritmi interesanți cu exemple de cod.

Am citit 5 cărți: Algoritmi, ediția a 4-a (Sedgewick, Wayne), Introducere în algoritmi ediția a 3-a (Cormen, Leiserson, Rivest, Stein), Cracking the Coding Interview ediția a 4-a (Gayle Laakmann), Programming Interviews Exposed ediția a 2-a (Mongan, Suojanen) , Giguere), Elemente de programare a interviurilor (Aziz, Lee, Prakash). Ele pot fi împărțite în 2 categorii. Prima include cărți de Sedgwick și Corman. Aceasta este o teorie. Restul este pregătirea pentru interviu. Sedgwick spune despre același lucru în carte ca și în cursurile sale. Doar în scris. Nu prea are rost să-l citiți cu atenție dacă ați urmat cursul, dar oricum merită să-l citiți. Dacă nu ați urmărit cursul, este logic să îl citiți. Cormen mi s-a părut prea plictisitor. Sincer să fiu, mi-a fost greu să-l stăpânesc. Tocmai l-am scos de acolo teoria maestru, și câteva structuri de date rar utilizate (heap Fibonacci, arbore van Emde Boas, heap radix).

Merită să citești măcar o carte pentru a te pregăti pentru un interviu. Toate sunt construite pe aproximativ același principiu. Ei descriu procesul de interviu în marile companii de tehnologie, oferă lucruri de bază din Informatică, probleme pentru aceste lucruri de bază, soluții la probleme și analiza soluțiilor. Dintre cele trei de mai sus, probabil că aș recomanda Cracking the Coding Interview ca principală, iar restul sunt opționale.

Probleme algoritmice

Acesta a fost probabil cel mai interesant punct de pregătire. Poți, desigur, să te așezi și să rezolvi problemele prost. Există multe site-uri diferite pentru asta. Am folosit în principal trei: Hackerrank, CodeChef и LeetCode. Pe CodeChef, problemele sunt împărțite după dificultate, dar nu după subiect. Pe Hackerrank atât după complexitate, cât și după subiect.

Dar după cum am aflat imediat pentru mine, există o modalitate mai interesantă. Și acestea sunt competiții (provocări de programare sau concursuri de programare). Toate cele trei site-uri le oferă. Adevărat, există o problemă cu LeetCode - un fus orar incomod. De aceea nu am participat pe acest site. Hackerrank și CodeChef oferă un număr destul de mare de competiții diferite, cu o durată de la 1 oră la 10 zile. Formatele diferite au reguli diferite, dar despre asta am putea vorbi mult timp. Principalul motiv pentru care competițiile sunt bune este introducerea unui element competitiv (și din nou tautologic) în procesul de învățare.

În total, am participat la 37 de competiții pe Hackerrank. Dintre acestea, 32 au fost evaluate, iar 5 au fost fie sponsorizate (am primit chiar 25 de dolari într-una dintre ele), fie pentru distracție. În clasament am fost în top 10% de 4 ori, în top 11% de 12 ori și în top 5% de 25 ori. Cele mai bune rezultate au fost 27/1459 în 3 ore și 22/9721 în săptămână.

Am trecut la CodeChef când Hackerrank a început să găzduiască competiții mai rar. În total am reușit să particip la 5 competiții. Cel mai bun scor a fost 426/5019 în competiția de zece zile.

În total, la concursuri și doar așa, am rezolvat puțin mai mult de 1000 de probleme, care se încadrau în plan. Acum, din păcate, nu există timp liber pentru a continua activitățile competitive, la fel cum nu există nici un scop pentru care timpul liber să poată fi anulat. Dar a fost distractiv. Recomand celor care sunt interesați de acest lucru să găsească oameni cu gânduri asemănătoare. Împreună sau în grup este mult mai interesant. M-am distrat cu asta cu un prieten, așa că poate a mers bine.

Urmărește videoclip

După ce am citit cartea lui Skiena, am devenit interesat de ceea ce făcea el. La fel ca Sedgwick, este profesor universitar. În acest sens, videoclipurile cursurilor sale pot fi găsite online. Am decis să revizuiesc cursul COMP300E - Provocări de programare - 2009 HKUST. Nu pot spune că mi-a plăcut foarte mult. În primul rând, calitatea video nu este foarte bună. În al doilea rând, nu am încercat să rezolv singur problemele discutate la curs. Deci logodna nu a fost foarte mare.
De asemenea, rezolvând probleme, încercând să găsesc algoritmul potrivit, am dat peste videoclipul lui Tushar Roy. A lucrat la Amazon și acum lucrează la Apple. După cum am aflat mai târziu pentru mine, el a făcut-o Canalul canalului YouTube, unde postează o analiză a diverșilor algoritmi. La momentul scrierii, canalul conține 103 videoclipuri. Și trebuie să spun că analiza lui a fost făcută foarte bine. Am încercat să urmăresc alți autori, dar cumva nu a funcționat. Așa că pot recomanda cu siguranță acest canal pentru vizionare.

Urmează cursuri

Nu am făcut nimic special aici. Am vizionat un videoclip de la Google Android Developer Nanodegree și am urmat un curs de la ITMO Cum să câștigi competiții de codificare: Secretele campionilor. Nanodegree este destul de bun, deși în mod natural nu am învățat nimic nou din el. Cursul de la ITMO este puțin denaturat din punct de vedere teoretic, dar problemele au fost interesante. Nu aș recomanda să începeți cu el, dar în principiu a fost timp bine petrecut.

Învață din experiențele altora

Desigur, mulți oameni au încercat să intre în Google. Unii au intrat, alții nu. Unii au scris articole despre asta. Dintre lucrurile interesante pe care probabil le voi menționa acesta и acesta. În primul caz, persoana și-a pregătit pentru sine o listă cu ceea ce trebuie să învețe pentru a deveni inginer software și a intra în Google. În cele din urmă a ajuns în Amazon, dar asta nu mai este atât de important. Al doilea manual a fost scris de inginerul Google, Larisa Agarkova (Larrr). Pe lângă acest document, puteți și citi blogul ei.

Este logic să citiți recenzii ale interviurilor pe Glassdoor. Toate sunt mai mult sau mai puțin asemănătoare, dar puteți obține câteva informații utile.

Nu voi oferi link-uri către alte articole mici; le puteți găsi cu ușurință pe Google.

A doua cursă

Și acum a trecut un an. S-a dovedit a fi foarte intens din punct de vedere al studiilor. Dar am abordat noua toamnă cu cunoștințe teoretice mult mai profunde și abilități practice dezvoltate. Au mai rămas câteva săptămâni până la sfârșitul anului care mi-au fost alocat pentru pregătire, când dintr-o dată a picat pe e-mail o scrisoare a unui recrutor de la Google, în care mă întreba dacă mai am dorința de a lucra la Google și Mă deranjează să vorbesc cu el. Desigur, nu m-a deranjat. Am fost de acord să sunăm într-o săptămână. Mi-au cerut și un CV actualizat, la care am adăugat o scurtă descriere a ceea ce am făcut pe parcursul anului la serviciu și în general.

După ce am comunicat pe viață, am decis ca într-o săptămână să fie un interviu Hangout, la fel ca anul trecut. A trecut o săptămână, a venit vremea interviului, dar intervievatorul nu s-a prezentat. Au trecut 10 minute, deja începeam să devin nervos, când deodată cineva a izbucnit în chat. După cum sa dovedit puțin mai târziu, intervievatorul meu din anumite motive nu a putut apărea și i s-a găsit urgent un înlocuitor. Persoana era oarecum nepregătită atât în ​​ceea ce privește configurarea computerului, cât și în ceea ce privește desfășurarea interviului. Dar apoi totul a mers bine. Am rezolvat problema rapid, am descris unde erau posibile capcane și cum puteau fi ocolite. Am discutat mai multe versiuni diferite ale problemei și complexitatea algoritmului. Apoi am vorbit încă 5 minute, inginerul ne-a spus impresiile despre munca la München (se pare că nu au găsit un înlocuitor urgent la Zurich), apoi ne-am despărțit.

În aceeași zi, un recrutor m-a contactat și mi-a spus că interviul a decurs bine și că sunt gata să mă invite la un interviu în birou. A doua zi am sunat prin Hangouts și am discutat detaliile. Deoarece trebuia să aplic pentru o viză, am decis să programăm un interviu într-o lună.

În timp ce pregăteam documentele, am discutat simultan despre viitorul interviu cu recrutorul. Un interviu standard la Google constă din 4 interviuri algoritmice și un interviu System Design. Dar, din moment ce am aplicat ca dezvoltator Android, mi s-a spus că o parte a interviului va fi specifică pentru Android. Nu am putut să-l scot de la recrutor exact ce și care ar fi specificul. Din câte am înțeles, acest lucru a fost introdus relativ recent și el însuși nu era prea conștient. De asemenea, m-am înscris la două sesiuni de formare: cum să promovez un interviu algoritmic și cum să trec un interviu pentru proiectarea sistemului. Sesiunile au fost de o utilitate medie. Nici acolo nimeni nu mi-a putut spune ce întreabă dezvoltatorii Android. Prin urmare, pregătirea mea pentru această lună s-a rezumat la următoarele:

  • Cumpărarea unei plăci de marcare și scrierea a 2-3 zeci dintre cei mai populari algoritmi pe ea din memorie. 3-5 bucăți în fiecare zi. În total, fiecare a fost scris de mai multe ori.
  • Reîmprospătează-ți memoria cu diverse informații pe Android pe care nu le folosești în fiecare zi
  • Vizionează câteva videoclipuri despre Big Scale și chestii de genul ăsta

După cum am spus deja, în același timp pregăteam documentele pentru călătorie. Pentru început, mi-au cerut informații pentru a face o scrisoare de invitație. Apoi am încercat multă vreme să aflu cine eliberează vize în Cipru în Elveția, întrucât ambasada Elveției nu se ocupă de asta. După cum sa dovedit, consulatul austriac face acest lucru. Am sunat si am facut o programare. Au cerut o grămadă de documente, dar nimic deosebit de interesant. Fotografie, pașaport, permis de ședere, o grămadă de certificate diferite și, bineînțeles, o scrisoare de invitație. Între timp scrisoarea nu a sosit. În cele din urmă, am mers cu o imprimare obișnuită și a funcționat destul de bine. Scrisoarea în sine a sosit 3 zile mai târziu, iar FedEx din Cipru nu a reușit să-mi găsească adresa și a trebuit să o iau eu. În același timp, am primit un colet de la același FedEx, pe care nici ei nu mi l-au putut livra, deoarece nu au găsit adresa și care zăcea acolo din iunie (5 luni, Karl). Din moment ce nu știam despre asta, firește, nu am presupus că au avut. Mi-am primit viza la timp, după care mi-au rezervat un hotel și mi-au oferit opțiuni de zbor. Am ajustat opțiunile pentru a fi mai convenabil. Nu mai existau zboruri directe, așa că am ajuns să zbor acolo prin Atena și înapoi prin Viena.

După ce s-au rezolvat toate formalitățile cu călătoria, au mai trecut câteva zile și chiar am zburat la Zurich. Am ajuns acolo fără incidente. De la aeroport la oraș am luat trenul - rapid și convenabil. După ce m-am plimbat puțin prin oraș, am găsit un hotel și m-am cazat. Deoarece hotelul era rezervat fără mâncare, am luat cina alături și m-am culcat, pentru că zborul era dimineața și deja îmi doream să dorm. A doua zi am luat micul dejun la hotel (pentru bani in plus) si am mers la biroul Google. Google are mai multe birouri în Zurich. Interviul meu nu a fost la cel central. Și, în general, biroul arăta destul de obișnuit, așa că nu am avut ocazia să mă uit la toate bunătățile unui birou Google „normal”. M-am înregistrat la administrator și m-am așezat să aștept. După ceva timp, recrutorul a ieșit și mi-a spus planul zilei, după care m-a dus în camera unde urmau să aibă loc interviurile. De fapt, planul a inclus 3 interviuri, prânz și încă 2 interviuri.

Interviul numărul unu

Primul interviu a fost doar pe Android. Și nu a avut nicio legătură cu algoritmii. Surpriză, totuși. Ei bine, bine, este și mai frecvent în acest fel. Ni s-a cerut să facem o anumită componentă a UI. Mai întâi am discutat despre ce și cum. S-a oferit să facă o soluție folosind RxJava, a descris exact ce ar face și de ce. Ei au spus că acest lucru este cu siguranță bun, dar să o facem folosind cadrul Android. Și în același timp vom scrie codul pe tablă. Și nu doar o componentă, ci întreaga Activitate care utilizează această componentă. Pentru asta nu eram pregătit. Una este să scrii un algoritm de 30-50 de linii pe tablă și alta este să scrii tăiței de cod Android, chiar și cu abrevieri și comentarii în spiritul „ei bine, nu voi scrie asta, deoarece este deja evident”. Rezultatul a fost un fel de vinegretă pentru 3 plăci. Acestea. Am rezolvat problema, dar părea prost.

Interviul numărul doi

De data aceasta interviul a fost despre algoritmi. Și au fost doi intervievatori. Unul este intervievatorul propriu-zis, iar al doilea este un tânăr padawan (intervievatorul din umbră). A fost necesar să se vină cu o structură de date cu anumite proprietăți. În primul rând, am discutat problema ca de obicei. Am pus diferite întrebări, a răspuns intervievatorul. După ceva timp, li s-a cerut să scrie pe tablă mai multe metode ale structurii inventate. De data aceasta am avut mai mult sau mai puțin succes, deși cu câteva erori minore, pe care le-am corectat la îndemnul intervievatorului.

Interviul numărul trei

De data aceasta System Design, care s-a dovedit brusc a fi și Android. A fost necesară dezvoltarea unei aplicații cu anumite funcționalități. Am discutat despre cerințele pentru aplicație, server și protocolul de comunicare. Apoi, am început să descriu ce componente sau biblioteci aș folosi atunci când construiesc aplicația. Și apoi, când am menționat Job Scheduler, a existat o confuzie. Ideea este că nu l-am folosit niciodată în practică, deoarece la momentul lansării sale tocmai treceam la aplicații de suport în care nu existau sarcini pentru utilizarea sa. Același lucru s-a întâmplat la dezvoltarea celor ulterioare. Adică, în teorie, știu ce este acest lucru, când și cum este folosit, dar nu am experiență în folosirea lui. Iar intervievatorului nu părea să-i placă prea mult. Apoi mi-au cerut să scriu un cod. Da, atunci când dezvoltați o aplicație trebuie imediat să scrieți cod. Din nou cod Android pe placă. S-a dovedit din nou înfricoșător.

Prânz

Trebuia să vină o altă persoană, dar nu a venit. Și Google face greșeli. Drept urmare, m-am dus la prânz cu intervievatorul precedent, colegul ei, iar puțin mai târziu s-a alăturat următorul intervievator. Prânzul a fost destul de decent. Din nou, din moment ce acesta nu este biroul principal din Zurich, sala de mese arăta destul de obișnuită, deși foarte drăguță.

Interviul numărul patru

În cele din urmă, algoritmii în forma lor cea mai pură. Am rezolvat prima problemă destul de rapid și imediat eficient, deși am ratat un caz marginal, dar la solicitarea intervievatorului (a dat chiar acest caz marginal) am găsit problema și am corectat-o. Desigur, a trebuit să scriu codul pe tablă. Apoi a fost dată o sarcină similară, dar mai dificilă. Pentru asta, am găsit câteva soluții neoptimale și aproape am găsit-o pe cea optimă, 5-10 minute nu au fost suficiente pentru a termina gândul. Ei bine, nu am avut timp să scriu codul pentru el.

Interviul numărul cinci

Și din nou interviu Android. Mă întreb de ce am studiat algoritmi tot anul?
La început au fost câteva întrebări simple. Apoi intervievatorul a scris cod pe tablă și a cerut să găsească probleme în el. L-am găsit, l-am explicat, l-am reparat. Discutat. Și apoi au început câteva întrebări neașteptate în spiritul „ce face metoda Y în clasa X”, „ce este în interiorul metodei Y”, „ce face clasa Z”. Bineînțeles, am răspuns ceva, dar apoi am spus că nu am întâlnit asta în munca mea recent și, firește, nu-mi amintesc cine face ce și cum în detaliu. După aceea, intervievatorul a întrebat ce fac acum. Și întrebările au mers pe această temă. Am raspuns deja mult mai bine aici.

După încheierea ultimului interviu, mi-au luat permisul, mi-au urat succes și m-au trimis pe drum. M-am plimbat puțin prin oraș, am luat cina și m-am dus la hotel, unde m-am culcat, deoarece zborul era din nou dimineața devreme. A doua zi am ajuns cu bine în Cipru. La solicitarea recrutorului, am scris feedback la interviu și am completat un formular într-un serviciu special pentru a returna banii cheltuiți. Dintre toate cheltuielile, Google plătește direct doar biletele. Hotelul, mâncarea și călătoria sunt plătite de candidat. Apoi completăm formularul, atașăm chitanțele și îl trimitem la un birou special. Ei procesează acest lucru și transferă bani în cont destul de repede.

A durat o săptămână și jumătate pentru a procesa rezultatele interviului. După care am fost informat că sunt „puțin sub bară”. Adică am rămas puțin scurt. Mai exact, 2 interviuri au mers bine, 2 puțin nu atât de bine și System Design nu foarte bine. Acum, dacă măcar 3 ar fi mers bine, atunci am fi putut concura, altfel nu mai avem nicio șansă. S-au oferit să revină peste un an.

La început, bineînțeles, am fost supărat, pentru că s-au depus mult efort pentru pregătire, iar la momentul interviului mă gândeam deja să plec din Cipru. Să te înscrii la Google și să te muți în Elveția mi s-a părut o opțiune grozavă.

Concluzie

Și aici ajungem la partea finală a articolului. Da, am picat interviul Google de două ori. Este trist. Probabil că ar fi interesant să lucrezi acolo. Dar, puteți privi problema din cealaltă parte.

  • Într-un an și jumătate, am învățat o mulțime de lucruri legate de dezvoltarea de software.
  • M-am distrat foarte mult participând la concursuri de programare.
  • Am fost la Zurich pentru câteva zile. Când voi merge din nou acolo?
  • Am avut o experiență interesantă de interviu la una dintre cele mai mari companii IT din lume.

Astfel, tot ce s-a întâmplat în acest an și jumătate poate fi considerat pur și simplu antrenament, sau antrenament. Și rezultatele acestui antrenament s-au făcut simțite. Ideea mea de a pleca din Cipru s-a maturizat (din cauza unor circumstante familiale), am trecut cu succes de mai multe interviuri cu o alta companie cunoscuta si m-am mutat dupa 8 luni. Dar asta este o cu totul altă poveste. Cu toate acestea, cred că ar trebui să-i mulțumesc în continuare Google atât pentru anul și jumătate în care am lucrat la mine, cât și pentru 2 zile interesante în Zurich.

Ce pot sa spun pana la urma? Dacă lucrezi în IT, pregătește-te pentru interviuri la Google (Amazon, Microsoft, Apple etc.). Poate că într-o zi vei merge acolo să ajungi acolo. Chiar dacă nu vrei, crede-mă, o astfel de pregătire nu te va face mai rău. În momentul în care îți dai seama că poți (chiar și numai cu noroc) să obții un interviu cu una dintre aceste companii, ți se vor deschide mult mai multe drumuri decât înainte de a-ți începe pregătirea. Și tot ce ai nevoie pe parcurs este scop, persistență și timp. Vă doresc succes :)

Sursa: www.habr.com

Adauga un comentariu