Kako se pripremiti za intervju u Googleu i ne proći ga. Dva puta

Kako se pripremiti za intervju u Googleu i ne proći ga. Dva puta

Naslov članka može zvučati kao epic fail, ali situacija nije tako jednostavna. U globalu, ova priča završila je prilično pozitivno, iako ne u Googleu. No, to je već tema za drugi tekst. U ovom članku ću govoriti o tri stvari: kako je izgledao moj proces pripreme, kako su prošla intervjua u Googleu i zašto smatram da situacija nije tako jednostavna kao što se može činiti.

Kako je sve počelo

Jedne hladne zimske večeri na Cipru, odjednom sam shvatio da su moja znanja iz klasične računalne znanosti prilično daleko od prosjeka, i s tim treba nešto učiniti. Ako netko, usput rečeno, još nije pročitao zašto je večer ciparska i hladna, može saznati. ovdje. Nakon nekog razmišljanja, odlučeno je da prvo krenem na online tečaj o algoritmima i strukturama podataka. Čuo sam od jednog bivšeg kolege za tečaj Roberta Sedgewicka na Courseri. Tečaj se sastoji od dva dijela (dio 1 i dio 2). Ako se slučajno poveznice promijene, uvijek se može pronaći na temelju imena autora. Svaki od dijelova traje 6 tjedana. Na početku tjedna dodjeljuju se predavanja, a tijekom tjedna treba raditi vježbe. Prvi dio tečaja pokriva osnovne strukture podataka, osnovne vrste sortiranja i složenost algoritama. Drugi dio je već napredniji, počinje s grafovima i završava s stvarima kao što su linearno programiranje i neizvedivost. Razmislivši o svemu navedenom, došao sam do zaključka da je to upravo ono što mi treba. Usput, radoznao čitatelj može pitati što Google ima s time. I doista, do tog trenutka nije imao nikakve veze. Ali trebala mi je svrha, jer učiti 12 tjedana večerima bez cilja pomalo je otežano. A koja bi mogla biti svrha stjecanja novih znanja? Naravno, njihova primjena u praksi. U svakodnevnom životu to je prilično problematično, ali na intervjuu u velikoj firmi sasvim lako. Brzo pretraživanje pokazalo je da je Google (oprostite na tautologiji) jedna od najvećih kompanija u Europi (a ja sam razmatrao upravo Europu), gdje održavaju takve intervjue. Njihov ured nalazio se u Zürichu, Švicarska. Dakle, odlučeno — učimo i idemo na intervju u Google.

Priprema za prvi pokušaj

Prošlo je 12 tjedana, i završio sam oba tečaja. Moji dojmovi o tečajevima su više nego pozitivni, i mogu ih preporučiti svima zainteresiranima. Ovi su mi tečajevi bili zanimljivi iz sljedećih razloga:

  • Predavač govori dovoljno jasnim engleskim.
  • Materijal je dobro strukturiran.
  • Izvrsne prezentacije koje prikazuju unutarnje funkcioniranje svakog algoritma.
  • Dobro odabran materijal.
  • Zanimljive vježbe.
  • Vježbe se automatski provjeravaju na web stranici, nakon čega se generira izvještaj.

Rad na tečajevima obično je izgledao ovako. Unutar 1-2 dana slušao sam predavanja. Zatim bih prošao brzi test o znanju materijala. Ostatak tjedna radio bih vježbu u nekoliko iteracija. Nakon prve dobivao sam svojih 30-70%, a sljedeće bi me dovele do 97-100%. Vježba je obično uključivala implementaciju nekog algoritma, na primjer, Seam carving. ili bzip..

Nakon završetka tečajeva shvatio sam da mnoge spoznaje donose mnoge brige. Ako sam prije samo znao da ništa ne znam, sada sam počeo shvaćati što točno ne znam.

Budući da je još bio svibanj, a ja sam planirao intervju na jesen, odlučio sam nastaviti svoje obrazovanje. Nakon pregleda zahtjeva za posao, donesena je odluka da se paralelno usmjerim na dva područja: nastaviti s proučavanjem algoritama i pohađati osnovni tečaj o strojnome učenju. Za prvi cilj odlučio sam prebaciti se s tečajeva na knjigu i odabrao monumentalno djelo Stevena Skiene "Algoritmi. Vodič za dizajn". Nije tako monumentalno kao kod Knutha, ali svejedno. Strojno učenje..

Prošlo je još 3 mjeseca, i završio sam tečaj i knjigu.

Počnimo s knjigom. Čitanje je bilo poprilično zanimljivo, iako ne i jednostavno. U suštini, preporučio bih knjigu, ali ne odmah. Sve u svemu, knjiga nudi dublju analizu onoga što sam naučio na tečajevima. Osim toga, otkrio sam neke formalne stvari poput heuristika i dinamičkog programiranja. Naravno, ranije sam ih koristio, ali nisam znao kako se zovu. Također, u knjizi ima nekoliko priča iz života autora (War Story) koje malo olakšavaju akademičnost izlaganja. Drugu polovicu knjige, usput rečeno, može se preskočiti, jer se tu uglavnom opisuje postojeće probleme i metode njihovog rješavanja. Korisno je ako se redovito primjenjuje u praksi, inače se odmah zaboravi.

Tečaj me više nego zadovoljio. Autor očito zna svoje zanimanje i priča zanimljivo. Osim toga, veći dio, to jest linearnu algebru i osnove neuronskih mreža, pamtio sam još s fakulteta, pa nisam iskusio velike poteškoće. Struktura tečaja je prilično standardna. Tečaj je podijeljen na tjedne. Svaki tjedan najprije idu predavanja pomiješana s kratkim testovima. Nakon predavanja zadaje se zadatak koji treba riješiti, poslati i automatski će se provjeriti. Ukratko, popis onoga što se predaje na tečaju je sljedeći:
— funkcija troška
— linearna regresija
— gradijentni spust
— normalizacija značajki
— normalna jednadžba
— logistička regresija
— višeklasna klasifikacija (jedan protiv svih)
— neuronske mreže
— povratna propagacija
— regularizacija
— pristranost/varijansa
— krivulje učenja
— metrički podaci o pogrešci (preciznost, povratak, F1)
— potporne vektorske mašine (klasifikacija s velikom margina)
— K-srednji
— analiza glavnih komponenti
— otkrivanje anomalija
— kolaborativno filtriranje (sustav preporuka)
— stohastički, mini-serijski, serijski gradijentni spust
— online učenje
— map reduce
— analiza plafona
Nakon završetka tečaja, razumijevanje svih ovih tema bilo je prisutno. Nakon 2 godine gotovo sve je naravno zaboravljeno. Preporučujem onima koji nisu upoznati s strojnim učenjem i žele dobiti dobro razumijevanje osnovnih stvari za daljnji napredak.

Prvi pokušaj

Bilo je već rujan i došlo je vrijeme za razmišljanje o razgovoru za posao. Budući da je prijavljivanje putem stranice prilično neefikasno, počeo sam tražiti poznanike koji rade u Googleu. Odabir je pao na datacompboy, budući da je on bio jedini koga sam poznavao izravno (iako ne osobno). Složio se prenijeti moj životopis, a ubrzo sam od rekruitera dobio e-mail koji nudi rezervaciju termina u njegovom kalendaru za prvi razgovor. Nakon nekoliko dana održali smo poziv. Pokušali smo se povezati putem Hangoutsa, ali je kvaliteta bila užasna, pa smo prešli na telefon. Najprije smo brzo razgovarali o standardnim pitanjima kako, zašto i zbog čega, a zatim prešli na tehničko testiranje. Sastojao se od desetero pitanja u stilu „koja je složenost umetanja u hash mapu“, „koja balansirana stabla poznajete“. Nije teško, ako imate osnovno znanje o tim stvarima. Testiranje je prošlo dobro i na temelju rezultata odlučili smo organizirati prvi intervju za tjedan dana.

Intervju je također bio putem Hangoutsa. Prvo smo razgovarali o meni pet minuta, a zatim prešli na zadatak. Zadatak je bio o grafovima. Brzo sam shvatio što treba učiniti, ali sam odabrao pogrešan algoritam. Kada sam počeo pisati kod, shvatio sam to i prešao na drugu opciju koju sam dovršio. Intervjuer je postavio nekoliko pitanja o složenosti algoritma, pitao je je li moguće brže. Na neki način sam zablokirao i nisam mogao odgovoriti. Na kraju, vrijeme je isteklo i oprostili smo se. Nakon desetak minuta shvatio sam da umjesto Dijkstra algoritma, koji sam koristio, u ovom bi zadatku zapravo moglo biti brže koristiti pretraživanje u širinu. Ubrzo je rekruiter nazvao i rekao da je intervju generalno prošao dobro i da bi trebali organizirati još jedan. Dogovorili smo se za još jedan za tjedan dana.

Ovaj put je intervju prošao lošije. Dok je prvi put intervju bio prijateljski i komunikativan, ovaj put je bio nekako mračan. Zadatak nisam odmah shvatio, iako su ideje koje sam izneo mogle dovesti do rešenja. Nakon nekoliko sugestija intervjuer je pomogao da dođem do rešenja. Ovaj put to je ponovo bio pretraživan nakon široko, samo iz nekoliko tačaka. Napisao sam rešenja, vreme sam ispoštovao, ali sam zaboravio na rubne slučajeve. Onda me je pozvao rekruter i obavestio me da ovog puta intervju nije bio zadovoljan, jer je smatrao da su mi bile potrebne previše sugestija (3 ili 4) i da sam neprekidno menjao kod tokom pisanja. Nakon dva intervjua doneta je odluka da ne idemo dalje, već da odložimo sledeći intervju na godinu dana, ako budem imao takvu želju. Ovdje završavam.

I iz ove priče izvukao sam nekoliko zaključaka:

  • Teorija je dobra, ali je potrebno brzo se orijentisati u njoj.
  • Teorija bez prakse neće pomoći. Potrebno je rešavati zadatke i dovesti pisanje koda do automatizma.
  • Mnogo toga zavisi od intervjuera. Tu se ne može ništa učiniti.

Priprema za drugi pokušaj

Razmislivši o situaciji, odlučio sam pokušati ponovo kroz godinu dana. Blago sam preformulisao cilj. Ako je ranije glavni cilj bila obuka, a intervju u Googleu kao daleka mrkva, sada je prošlost intervjua bio cilj, a obuka sredstvo.
Dakle, razvijen je novi plan, koji je uključivao sledeće tačke:

  • Nastaviti proučavati teoriju čitajući knjige i članke.
  • Rešiti algoritamske zadatke u količini od 500-1000 komada.
  • Nastaviti proučavati teoriju gledajući video materijale.
  • Nastaviti proučavati teoriju kroz kurseve.
  • Proučiti iskustva drugih ljudi u vezi sa prolaskom intervjua u Googleu.

Plan sam ispunio u roku od godine. Dalje ću opisati šta sam tačno radio po svakoj od tačaka.

Knjige i članci

Količinu pročitanih članaka više ni ne pamtim, čitao sam ih na ruskom, ali i na engleskom. Najkorisnija stranica bila je verovatno ova. Ovde je prikazan opis velikog broja zanimljivih algoritama sa primerima koda.

Pročitao sam 5 knjiga: Algorithms, 4. izdanje (Sedgewick, Wayne), Introduction to Algorithms 3. izdanje (Cormen, Leiserson, Rivest, Stein), Cracking the Coding Interview 4. izdanje (Gayle Laakmann), Programming Interviews Exposed 2. izdanje (Mongan, Suojanen, Giguere), Elements of Programming Interviews (Aziz, Lee, Prakash). Mogu se podijeliti u 2 kategorije. U prvu spadaju knjige Sedgewick i Cormen. To je teorija. Ostale su priprema za intervju. Sedgewick u knjizi govori otprilike isto što i u svojim tečajevima. Samo u pisanom obliku. Nema posebnog smisla pažljivo čitati ako ste prošli tečaj, ali vrijedi preletjeti u svakom slučaju. Ako niste gledali tečaj, onda ima smisla pročitati. Cormen mi je bio pomalo dosadan. Iskreno, teško sam to prešao. Od tamo sam iznio samo master theorem, i nekoliko rijetko korištenih struktura podataka (Fibonacci heap, van Emde Boas tree, radix heap).

Knjigu za pripremu za intervju vrijedi pročitati barem jednu. Sve su građene otprilike prema istom principu. Opisuju proces razgovora u velikim tehnološkim tvrtkama, daju osnovne stvari iz računalnih znanosti, zadatke vezane uz te osnovne stvari, rješenja zadataka i analizu rješenja. Od tri navedene, vjerojatno bih preporučio Cracking the Coding Interview kao glavnu, a ostale po želji.

Algoritamski zadaci

To je vjerojatno bila najzanimljivija točka pripreme. Možete, naravno, sjesti i jednostavno rješavati zadatke. Za to postoji mnogo različitih stranica. Ja sam uglavnom koristio tri: Hackerrank, CodeChef i LeetCode. Na CodeChef zadaci su podijeljeni po težini, ali ne i po temama. Na Hackerrank i po težini i po temama.

Ali kako sam odmah shvatio, postoji zanimljiviji način. A to su natjecanja (programming challenges ili programming contests). Sva tri web mjesta to pružaju. Ipak, s LeetCode postoji problem — neugodna vremenska zona. Stoga nisam sudjelovao na toj stranici. Hackerrank i CodeChef nude prilično veliki broj različitih natjecanja, s trajanjem od 1 sata do 10 dana. Različiti formati imaju različita pravila, ali o tome se može dugo pričati. Glavna suština, zašto su natjecanja dobra, je uvođenje natjecateljskog (i opet tautologija) elementa u proces učenja.

Ukupno sam sudjelovao u 37 natjecanja na Hackerranku. Od njih je 32 bila rangirana, a 5 ili sponzorirano (čak sam dobio 25$ na jednom od njih) ili prijavljeno iz zabave. U rangiranim natjecanjima deset puta sam bio među top 4%, 11 puta među top 12% i 5 puta među top 25%. Najbolji rezultati bili su 27/1459 u trosatnom i 22/9721 u tjednom natjecanju.

Na CodeChef sam prešao kada su na Hackerranku natjecanja počela rjeđe. Ukupno sam uspio sudjelovati u 5 natjecanja. Najbolji rezultat bio je 426/5019 u desetodnevnom natjecanju.

Ukupno, na natjecanjima i jednostavno, riješio sam malo više od 1000 zadataka, što se uklapalo u plan. Nažalost, trenutno nemam slobodnog vremena za nastavak natjecateljske aktivnosti, niti cilja pod kojim bih mogao opravdati neslobodno vrijeme. Ali bilo je zabavno. Preporučujem onima koje to zanima da pronađu istomišljenike. U paru ili grupi je mnogo zanimljivije. Ovo sam radio s prijateljem, pa možda zbog toga ideja ide tako dobro.

Gledanje videa

Nakon što sam pročitao knjigu Skiena, zapravo sam se zainteresirao za ono čime se bavi. Kao i Sedgwick, on je profesor na sveučilištu. U tom smislu, na internetu se mogu pronaći videozapisi njegovih tečajeva. Odlučio sam pogledati tečaj COMP300E — Programming Challenges — 2009 HKUST. Neću reći da mi se jako svidjelo. Prvo, kvaliteta videa nije bila baš dobra. Drugo, nisam pokušavao sam riješiti zadatke obrađene u okviru tečaja. Tako da je angažman bio prilično nizak.
Također, tijekom rješavanja zadataka, pokušavajući pronaći pravi algoritam, naišao sam na video Tushara Royja. Radio je u Amazonu, a sada radi u Appleu. Kasnije sam otkrio da ima kanal na YouTubeu, gdje objavljuje razradu raznih algoritama. U trenutku pisanja ovog članka kanal sadrži 103 videa. I moram reći, razrada u njegovom izvođenju je vrlo pristojna. Pokušavao sam gledati i druge autore, ali nisu mi baš odgovarali. Tako da ovaj kanal definitivno mogu preporučiti za gledanje.

Pohađanje tečajeva

Ovdje nisam posebno ništa radio. Pogledao sam video iz Android Developer Nanodegreea od Googlea i prošao tečaj od ITMO-a How to Win Coding Competitions: Secrets of Champions. Nanodegree je u redu, iako odatle nisam naučio ništa novo. Tečaj od ITMO-a u teoriji je malo sveden, ali zadaci su bili zanimljivi. Ne bih ga preporučio kao početak, ali u principu, vrijeme utrošeno na njega nije izgubljeno.

Istražiti iskustva drugih ljudi

Naravno, mnogo ljudi je pokušalo doći do Google-a. Neki su uspjeli, neki nisu. Neki su o tome pisali članke. Od zanimljivih stvari, svakako bih istaknuo ovu i ovu. U prvom slučaju, osoba je pripremila popis onoga što mora naučiti kako bi postala Software Engineer i ušla u Google. Na kraju je završio u Amazonu, ali to nije tako važno. Drugi vodič napisala je inženjerka iz Googlea, Larisa Agarova (Larrr). Osim ovog dokumenta, možete pročitati i njen blog.

Ima smisla pročitati recenzije o intervjuima na Glassdooru. Sve su otprilike slične, ali neke korisne informacije se mogu izvući.

Neću navoditi linkove na druge manje članke, sami ih možete lako pronaći na Googleu.

Sada ćemo mjeriti performanse višenitnog servera:

I evo, prošla je godina. Bila je to vrlo aktivna godina u smislu učenja. Međutim, novoj jeseni pristupio sam s mnogo dubljim teorijskim znanjem i usavršenim praktičnim vještinama. Do isteka mog roka od godine dana pripreme ostalo je još nekoliko tjedana, kada me iznenada kontaktirao regruter iz Googlea putem e-maila, pitajući imam li još uvijek želju raditi u Googleu i da li sam spreman razgovarati s njim. Naravno, bio sam spreman. Dogovorili smo se da se čujemo kroz tjedan dana. Također, tražili su mi ažurirani životopis, kojem sam dodao kratki pregled onoga što sam radio tijekom godine na poslu.

Nakon razgovora odlučili smo da će kroz tjedan dana biti Hangouts intervju, sve kao prošle godine. Tjedan je prošao, došlo je vrijeme za intervju, ali intervjuator se nije pojavio. Prošlo je 10 minuta, već sam počeo biti nervozan, kad je neko iznenada ušao u razgovor. Kako se ispostavilo nešto kasnije, moj intervjuator nije se mogao pojaviti iz nekog razloga i hitno su mu našli zamjenu. Osoba nije bila potpuno spremna ni u smislu postavki računala, ni u smislu vođenja intervjua. No, tada je sve prošlo dobro. Zadatak sam riješio brzo, opisao gdje su moguće zamke i kako ih zaobići. Razgovarali smo o nekoliko različitih varijanti zadatka, složenosti algoritma. Potom smo još 5 minuta razgovarali, inženjer je komentirao svoja iskustva s radom u Münchenu (u Zürichu očito nisu našli hitnu zamjenu), i na tome smo se rastali.

Iste je dan recruiter kontaktirao me i rekao da je intervju prošao odlično i da su spremni pozvati me na intervju u ured. Sljedećeg dana razgovarali smo preko Hangoutsa i raspravili detalje. Budući da mi je bila potrebna viza, odlučili smo zakazati intervju za mjesec dana.

Dok sam pripremao dokumente, razgovarao sam s recruiterom o predstojećem intervjuu. Standardni intervju u Googleu sastoji se od 4 algoritamska i jednog System Design intervjua. No, budući da sam se prijavio kao Android developer, rekli su mi da će dio intervjua biti specifičan za Android. Koji će biti specifični aspekti nisam uspio saznati od recruitera. Koliko sam shvatio, to je uvedeno relativno nedavno i ni on sam nije bio potpuno upoznat s tim. Također su me upisali na dvije probne sesije: kako proći algoritamski intervju i kako proći System Design intervju. Sesije su bile umjereno korisne. Nitko mi također nije mogao reći što se zapravo pita Android developere. Tako da je moja priprema za ovaj mjesec bila sljedeća:

  • Kupovina marker ploče i pisanje 2-3 desetak najpopularnijih algoritama na njoj iz pamćenja. Po 3-5 svakog dana. Sveukupno, svaki je napisan nekoliko puta.
  • Osvježavanje raznih informacija o Androidu koje ne koristim svaki dan.
  • Gledanje nekoliko videa o Big Scale i sličnim temama.

Kao što sam već spomenuo, paralelno sam pripremao dokumente za putovanje. Na početku su tražili podatke kako bi napravili pozivno pismo. Onda sam dugo pokušavao saznati tko na Cipru izdaje vize za Švicarsku, jer švicarska ambasada time nije zadužena. Kako se ispostavilo, to radi austrijsko konzulstvo. Nazvao sam i dogovorio termin. Tamo su tražili gomilu dokumenata, ali ništa posebno zanimljivo. Fotografiju, pasoš, boravišnu dozvolu, hrpu raznih potvrda i naravno, pozivno pismo. Pismo, u međuvremenu, nikako nije stizalo. Na kraju sam otišao s običnom kopijom i to je prošlo bez problema. Samo je pismo stiglo još tri dana kasnije, a ciparski FedEx nije mogao pronaći moju adresu, pa sam morao otići po njega osobno. Usput sam u istom FedEx-u preuzeo pakete koje također nisu mogli dostaviti jer nisu našli adresu, i koji je tamo ležao od lipnja (5 mjeseci, Karl). Budući da o njemu nisam znao, niti sam pretpostavljao da ga imaju. Vizum sam dobio na vrijeme, nakon čega su mi rezervirali hotel i ponudili opcije putovanja. Opcije sam malo prilagodio da bi bile udobnije. Direktnih letova više nije bilo, na kraju sam letio preko Atene, a natrag preko Beča.

Nakon što su svi formalnosti za putovanje bile sređene, prošlo je još nekoliko dana i konačno sam letio za Zürich. Stigao sam bez ikakvih neugodnosti. Od aerodroma do grada došao sam vlakom — brzo i praktično. Malo sam se izgubio po gradu, ali sam našao hotel i smjestio se. Budući da je hotel bio rezerviran bez obroka, večerao sam u obližnjem restoranu i zaspao, jer je let bio jutarnji i već sam bio umoran. Sljedeći dan doručkovao sam u hotelu (uz plaćanje) i otišao u ured Googlea. U Zürichu Google ima nekoliko ureda. Moj intervju nije bio u središnjem. Ujedno je ured izgledao prilično običan, tako da nisam imao prilike vidjeti sve pogodnosti

Intervju broj jedan

Prvo intervju je bio vezan za Android. I zapravo nije imao nikakve veze s algoritmima. Ipak, iznenađenje. No, dobro, tako je i naviknut. Tražili su da napravim određenu UI komponentu. Prvo smo razgovarali o tome što i kako. Predložio sam rješenje na RxJava, objasnio što i zašto bih to napravio. Rekli su da je to naravno dobro, ali hajde da to uradimo sredstvima Android okvira. A uz to, napisat ćemo kod na ploči. I to ne samo komponente, već cijele Activity koja koristi tu komponentu. Na ovo nisam bio spreman. Jedna je stvar pisati algoritam od 30-50 redaka na ploči, a druga stvar je pisati Android kod, čak i s skraćenicama i komentarima u stilu 'pa, to neću pisati, jer je i tako očito'. Ispalo je nešto poput salate na 3 ploče. Drugim riječima, zadatak sam riješio, ali izgledalo je užasno.

Intervju broj dva

Ovaj put intervju je bio vezan za algoritme. I bilo je dvoje intervjuera. Jedan je bio stvarni intervju, a drugi mladi padawan (shadow interviewer). Trebalo je smisliti strukturu podataka s određenim svojstvima. Prvo smo, kao obično, razgovarali o problemu. Postavljao sam razna pitanja, intervju je odgovarao. Nakon nekog vremena zamolili su me da na ploči napišem nekoliko metoda smišljene strukture. Ovog puta sam više-manje uspio, premda s nekoliko sitnih grešaka koje sam ispravio uz pomoć intervjuera.

Intervju broj tri

Ovaj put System Design, koji je iznenada također bio vezan za Android. Trebalo je razviti aplikaciju s određenim funkcionalnostima. Razgovarali smo o zahtjevima za aplikaciju, poslužitelju, protokolu komunikacije. Zatim sam počeo opisivati koje bih komponente ili biblioteke koristio prilikom izrade aplikacije. A zatim, kada je spomenut Job Scheduler, nastao je određeni zastoj. Naime, nikada ga nisam koristio u praksi, jer sam u trenutku njegovog izlaska prešao na podršku aplikacijama u kojima nije bilo zadataka za njegovu primjenu. I prilikom izrade sljedećih aplikacija bilo je isto. Drugim riječima, teorijski znam što je to i kada se koristi, ali nemam iskustva u primjeni. I čini se da se intervjuu to nije previše svidjelo. Zatim su me zamolili da napišem kod. Da, prilikom izrade aplikacije odmah treba pisati kod. Opet, Android kod na ploči. Ponovo je ispalo ružno.

Ručak

Trebao je doći još jedna osoba, ali nije se pojavio. I Google ponekad griješi. Na kraju sam otišao na ručak s prethodnim intervjuatorom, njezinim kolegom, a nešto kasnije pridružio se sljedeći intervjuator. Ručak je bio sasvim pristojan. Opet, budući da to nije glavni ured u Zürichu, kantina je izgledala prilično obično, iako prilično ugodno.

Intervju broj četiri

Napokon algoritmi u čistom obliku. Prvi zadatak sam riješio prilično brzo i odmah efikasno, ali sam promašio jedan rubni slučaj, no uz pomoć intervjuatora (on je dao taj rubni slučaj) pronašao sam problem i ispravio ga. Naravno, trebao sam pisati kod na ploči. Zatim je dana slična, ali složenija zadaća. Za nju sam pronašao nekoliko neoptimalnih rješenja i gotovo našao optimalno, nedostajalo mi je 5-10 minuta da završim misao. A kod za nju nisam uspio napisati.

Intervju broj pet

I ponovno Android intervju. Zanimljivo, zašto sam učio algoritme cijelu godinu?
Isprva je bilo nekoliko jednostavnih pitanja. Zatim je intervjuator napisao kod na ploči i zamolio me da pronađem probleme u njemu. Pronašao sam, objasnio, ispravio. Razgovarali smo o tome. A onda su počela neka neočekivana pitanja u duhu: „što radi metoda Y u klasi X“, „što se unutra događa s metodom Y“, „što radi klasa Z“. Nešto sam naravno odgovorio, ali potom sam rekao da se u poslu zadnje vrijeme s tim nisam susretao i naravno ne sjećam se tko, što i kako u detaljima radi. Nakon toga, intervjuator je pitao što sada radim. I pitanja su išla u tom smjeru. Ovdje sam već odgovarao mnogo bolje.

Nakon završetka posljednjeg intervjua, oduzeli su mi propusnicu, poželjeli sreću i poslali me dalje. Malo sam prošetao gradom, večerao i otišao u hotel, gdje sam legao spavati, jer je let ponovno bio rano ujutro. Sljedeći dan sam sigurno stigao do Kipra. Po zahtjevu regrutera, napisao sam povratne informacije o intervjuu i popunio obrazac u posebnoj usluzi za povrat troškova. Od svih troškova Google izravno plaća samo karte. Hotel, hrana i prijevoz plaća kandidat. Zatim popunjavamo obrazac, prilažemo račune i šaljemo u posebnu agenciju. Oni to obrađuju i prilično brzo prebacuju novac na račun.

Obrada rezultata intervjua trajala je malo više od tjedan i pol. Nakon toga su mi javili da sam bio „malo ispod očekivanja“. Drugim riječima, nisam se dovoljno istaknuo. Konkretno, 2 intervjua su prošla dobro, 2 malo lošije, a System Design vrlo loše. Da su barem 3 prošla dobro, imao bih šanse, ovako nisam imao šanse. Predložili su mi da pokušam ponovno za godinu dana.

Isprva sam, naravno, bio razočaran, jer je za pripremu uloženo mnogo truda, a do trenutka intervjua već sam razmišljao o napuštanju Cipra. Zapošljavanje u Googleu i preseljenje u Švicarsku činilo se kao odlična opcija.

Zaključak

A sada dolazimo do završnog dijela članka. Da, dvaput nisam prošao intervju u Googleu. To je razočaravajuće. Vjerojatno bi bilo zanimljivo raditi tamo. No, na situaciju se može gledati i s druge strane.

  • Tokom godine i pol naučio sam ogromnu količinu informacija vezanih uz razvoj softvera.
  • Uživao sam u sudjelovanju na natjecanjima u programiranju.
  • Išao sam na nekoliko dana u Zürich. Kada ću opet otići tamo?
  • Stekao sam zanimljivo iskustvo intervjua u jednoj od najvećih IT kompanija na svijetu.

Dakle, sve što se dogodilo u ovih godinu i pol može se smatrati samo učenjem ili obukom. I rezultati te obuke su se pokazali. Midea o napuštanju Cipra sazrela je (zbog nekih obiteljskih okolnosti), uspješno sam prošao nekoliko intervjua u drugoj poznatoj kompaniji i preselio se nakon 8 mjeseci. No, to je već sasvim druga priča. Ipak, mislim da se i dalje isplati zahvaliti Googleu za ovih godinu i pol u kojima sam radio na sebi, kao i za 2 zanimljiva dana u Zürichu.

Što mogu reći za kraj. Ako radite u IT-u, pripremite se za intervju u Googleu (Amazon, Microsoft, Apple itd.). Možda ćete jednog dana uspjeti dobiti posao tamo. Čak i ako to ne želite, vjerujte mi, takva priprema vam neće naštetiti. U trenutku kada shvatite da možete (čak i samo uz povoljan splet okolnosti) proći intervju u jednoj od ovih kompanija, pred vama će se otvoriti mnogo više puteva nego na početku vaše pripreme. A sve što će vam trebati na tom putu je cilj, upornost i vrijeme. Želim vam uspjeh 🙂

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster