Kako se pripremiti za intervju u Googleu i pasti na njemu. Dvaput

Kako se pripremiti za intervju u Googleu i pasti na njemu. Dvaput

Naslov članka zvuči kao epic fail, ali u stvarnosti sve nije tako jednostavno. I općenito, ova je priča završila vrlo pozitivno, iako ne u Googleu. Ali to je tema za drugi članak. U ovom istom članku govorit ću o tri stvari: kako je tekao moj proces pripreme, kako su se odvijali intervjui u Googleu i zašto, po mom mišljenju, nije sve tako jasno kao što se možda čini.

Kako je sve počelo

Jedne hladne ciparske zimske večeri iznenada mi je sinula misao da je moje znanje o klasičnoj informatici jako daleko od prosječnog i da se s tim nešto mora poduzeti. Ako, usput, netko još nije pročitao zašto je večer ciparska i hladna, onda možete saznati o tome здесь. Nakon kraćeg razmišljanja, odlučeno je započeti pohađanjem online tečaja o algoritmima i strukturama podataka. Od jednog od svojih bivših kolega čuo sam za tečaj Roberta Sedgewicka na Courseri. Tečaj se sastoji od dva dijela (Dio 1 и Dio 2). Ako se veze iznenada promijene, uvijek možete na Googleu pronaći ime autora. Svaki dio traje 6 tjedana. Predavanja se održavaju početkom tjedna, a tijekom tjedna još treba raditi vježbe. Prvi dio kolegija pokriva osnovne strukture podataka, osnovne vrste sortiranja i složenost algoritama. Drugi dio je već napredniji, počevši s grafovima i završavajući stvarima kao što su linearno programiranje i intraktabilnost. Nakon razmišljanja o svemu navedenom, došla sam do zaključka da je to upravo ono što mi treba. Usput, radoznali čitatelj može se zapitati, što Google ima s tim? I doista, do ovog trenutka on s tim nije imao nikakve veze. Ali trebao mi je cilj, budući da je učenje 12 tjedana navečer bez cilja donekle teško. Koja bi mogla biti svrha stjecanja novih znanja? Naravno, njihovu primjenu u praksi. U svakodnevnom životu to je prilično problematično, ali tijekom razgovora s velikom tvrtkom to je jednostavno. Brzinski Google pokazao je da je Google (oprostite na tautologiji) jedna od najvećih kompanija u Europi (a ja sam gledao baš u Europu) koja provodi takve intervjue. Naime, njihov ured nalazi se u Zürichu u Švicarskoj. Pa je odlučeno - idemo učiti i otići na intervju u Google.

Priprema za prvi pristup

12 tjedana je brzo prošlo i završila sam oba tečaja. Moji dojmovi o tečajevima su više nego pozitivni i mogu ih preporučiti svima zainteresiranima. Tečajevi su mi se svidjeli iz sljedećih razloga:

  • Predavač govori prilično jasan engleski jezik
  • Materijal je dobro strukturiran
  • Prekrasne prezentacije koje prikazuju unutrašnjost svakog algoritma
  • Kompetentan odabir materijala
  • Zanimljive vježbe
  • Vježbe se automatski provjeravaju na stranici, nakon čega se generira izvješće

Moj rad na tečajevima obično je tekao ovako. Slušao sam predavanja u 1-2 dana. Zatim su pristupili brzom testu znanja gradiva. Ostatak tjedna radio sam vježbu u nekoliko ponavljanja. Nakon prvog dobio sam svojih 30-70%, sljedeći su doveli rezultat do 97-100%. Vježba je obično uključivala implementaciju nekog algoritma, npr. Rezbarenje šavova ili bzip.

Nakon završenih tečajeva shvatio sam da uz puno znanja dolazi i puno tuge. Ako sam prije jednostavno znao da ništa ne znam, sada sam počeo shvaćati da sam ja taj koji ne znam.

Budući da je bio tek mjesec svibanj, a razgovor sam zakazala za jesen, odlučila sam nastaviti školovanje. Nakon pregleda uvjeta za natječaj, odlučeno je da se ide paralelno u dva smjera: nastavak studija algoritama i pohađanje osnovnog tečaja strojnog učenja. Za prvi cilj odlučio sam prijeći s tečajeva na knjigu i odabrao monumentalno djelo Stevena Skiene „Algoritmi. Priručnik za dizajn algoritama. Ne tako monumentalan kao Knutov, ali ipak. Za drugi cilj vratio sam se na Courseru i prijavio se na tečaj Andrewa Nga. Strojno učenje.

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

Počnimo s knjigom. Čitanje se pokazalo prilično zanimljivim, iako ne i lakim. U principu, preporučio bih knjigu, ali ne odmah. Sveukupno, knjiga daje dublji pogled na ono što sam naučio na tečaju. Osim toga, otkrio sam (s formalne točke gledišta) stvari poput heuristike i dinamičkog programiranja. Naravno, koristio sam ih i prije, ali nisam znao kako se zovu. Knjiga sadrži i niz priča iz autorova života (Ratna priča), koje donekle razvodnjavaju akademski karakter izlaganja. Usput, drugu polovicu knjige možemo izostaviti, jer ona sadrži opis postojećih problema i metode za njihovo rješavanje. Korisno je ako se redovito koristi u praksi, inače će se odmah zaboraviti.

Bio sam više nego zadovoljan tečajem. Autor očito zna svoj posao i govori na zanimljiv način. Osim toga, dobar dio toga, naime linearne algebre i osnova neuronskih mreža, zapamtio sam sa sveučilišta, tako da nisam imao posebnih poteškoća. Struktura tečaja prilično je standardna. Tečaj je podijeljen u tjedne. Svaki tjedan održavaju se predavanja pomiješana s kratkim testovima. Nakon predavanja dobivate zadatak koji trebate napraviti, predati i on će biti automatski provjeren. Ukratko, popis stvari koje se podučavaju na tečaju je sljedeći:
- troškovna funkcija
- Linearna regresija
- gradijentni spust
- skaliranje značajki
- normalna jednadžba
- logistička regresija
— višeklasna klasifikacija (jedan protiv svih)
- neuronske mreže
- povratno širenje
- regulacija
— pristranost/odstupanje
— krivulje učenja
— metrika pogreške (preciznost, opoziv, F1)
— Vektorski strojevi podrške (klasifikacija velike margine)
— K-znači
— Analiza glavnih komponenti
- otkrivanje anomalija
— kolaborativno filtriranje (sustav za preporuku)
— stohastički, mini-serijski, serijski gradijentni spuštanja
— online učenje
- smanjenje karte
- analiza stropa
Nakon završenog tečaja bilo je prisutno razumijevanje svih ovih tema. Nakon 2 godine gotovo sve je prirodno zaboravljeno. Preporučujem ga onima koji nisu upoznati sa strojnim učenjem, a žele dobro razumjeti osnovne stvari kako bi krenuli dalje.

Prvo trčanje

Već je bio rujan i vrijeme je bilo razmišljati o intervjuu. Kako je prijava preko stranice poprilično katastrofalna, počeo sam tražiti prijatelje koji rade u Googleu. Izbor je pao na datacompboy, budući da je on bio jedini koga sam izravno poznavao (iako ne osobno). Pristao je proslijediti moj životopis i ubrzo sam dobio pismo od regrutera u kojem mi je ponudio da rezerviram mjesto u njegovom kalendaru za prvi razgovor.Par dana kasnije poziv je uslijedio. Pokušali smo komunicirati putem Hangoutsa, ali kvaliteta je bila užasna, pa smo se prebacili na telefon. Prvo smo brzo razgovarali o standardu kako, zašto i zašto, a zatim smo prešli na tehnički pregled. Sastojao se od desetak pitanja u duhu "koja je poteškoća u umetanju u hash mapu", "koja uravnotežena stabla znate." Nije teško ako imate osnovno znanje o ovim stvarima. Probir je prošao dobro i na temelju rezultata odlučili smo prvi intervju organizirati za tjedan dana.

Intervju se također odvijao putem Hangoutsa. Prvo su oko 5 minuta pričali o meni, a onda su prešli na problem. Problem je bio u grafovima. Brzo sam shvatio što treba učiniti, ali sam odabrao pogrešan algoritam. Kada sam počeo pisati kod, shvatio sam to i prebacio se na drugu opciju, koju sam dovršio. Ispitivač je postavio nekoliko pitanja o složenosti algoritma i pitao može li se to učiniti brže. Nekako sam postao dosadan i nisam to mogao. U ovom trenutku vrijeme je isteklo i pozdravili smo se. Onda, nakon 10-ak minuta, sinulo mi je da umjesto Dijkstra algoritma koji sam koristio, u ovom konkretnom problemu mogu koristiti pretraživanje u širinu, i bilo bi brže. Nakon nekog vremena nazvao je regruter i rekao da je intervju općenito prošao dobro i da treba organizirati još jedan. Dogovorili smo se za još jedan tjedan.

Ovaj put su stvari postale gore. Ako je prvi put ispitivač bio ljubazan i društven, ovaj put je bio pomalo tmuran. Nisam mogao odmah shvatiti problem, iako su ideje do kojih sam došao načelno mogle dovesti do njegovog rješenja. Na kraju, nakon nekoliko upita anketara, došlo mi je rješenje. Ovaj put se opet pokazalo da se traži u širinu, samo s nekoliko točaka. Napisao sam rješenja, ispunio ih na vrijeme, ali sam zaboravio na rubne slučajeve. Nakon nekog vremena nazvao je regrut i rekao da ovaj put anketar nije bio zadovoljan, jer je po njegovom mišljenju trebalo previše savjeta (3 ili 4 komada) i stalno sam mijenjao šifru dok sam pisao. Na temelju rezultata dvaju intervjua odlučeno je da se ne ide dalje, nego da se idući intervju odgodi za godinu dana, ako to želim. Zato smo se oprostili.

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

  • Teorija je dobra, ali se morate brzo snaći u njoj
  • Teorija bez prakse neće pomoći. Moramo riješiti probleme i dovesti kodiranje do automatizma.
  • Puno ovisi o ispitivaču. I tu se ništa ne može učiniti.

Pripreme za drugu vožnju

Nakon razmišljanja o situaciji, odlučio sam pokušati ponovno za godinu dana. I malo uredio gol. Ako je prije glavni cilj bio studirati, a razgovor u Googleu bio kao daleka mrkva, sada je prolazak na intervjuu bio cilj, a učenje sredstvo.
Dakle, razvijen je novi plan koji je uključivao sljedeće točke:

  • Nastavite učiti teoriju čitajući knjige i članke.
  • Riješite algoritamske probleme u količini od 500-1000 komada.
  • Nastavite učiti teoriju gledajući videozapise.
  • Nastavite učiti teoriju kroz tečajeve.
  • Proučite iskustva drugih ljudi s intervjuima u Googleu.

Dovršio sam plan u roku od godinu dana. Zatim ću opisati što sam točno napravio za svaku od točaka.

Knjige i članci

Ne sjećam se ni broja članaka koje sam pročitao, čitao sam ih i na ruskom i na engleskom. Vjerojatno najkorisnije mjesto ovaj. Ovdje možete pronaći opis velikog broja zanimljivih algoritama s primjerima koda.

Pročitao sam 5 knjiga: Algoritmi, 4. izdanje (Sedgewick, Wayne), Uvod u algoritme 3. izdanje (Cormen, Leiserson, Rivest, Stein), Cracking the Coding Interview 4. izdanje (Gayle Laakmann), Programming Interviews Exposed 2. izdanje (Mongan, Suojanen) , Giguere), Elementi programiranja intervjua (Aziz, Lee, Prakash). Mogu se podijeliti u 2 kategorije. Prva uključuje knjige Sedgwicka i Cormana. Ovo je teorija. Ostalo je priprema za intervju. Sedgwick u knjizi govori o istoj stvari kao iu svojim tečajevima. Samo pismeno. Nema puno smisla pažljivo ga čitati ako ste pohađali tečaj, ali svejedno ga vrijedi preletiti. Ako niste gledali tečaj, ima smisla da ga pročitate. Cormen mi se činio predosadnim. Da budem iskren, teško sam to svladao. Upravo sam ga izvadio odande master teorija, te nekoliko rijetko korištenih struktura podataka (Fibonaccijeva gomila, van Emde Boasovo stablo, radix gomila).

Vrijedi pročitati barem jednu knjigu kako biste se pripremili za intervju. Svi su izgrađeni na približno istom principu. Opisuju proces intervjua u velikim tehnološkim tvrtkama, daju osnove informatike, probleme za te osnovne stvari, rješenja problema i analizu rješenja. Od tri gore, vjerojatno bih preporučio Cracking the Coding Interview kao glavni, a ostali su izborni.

Algoritamski problemi

Ovo je vjerojatno bila najzanimljivija točka priprema. Možete, naravno, sjesti i rješavati probleme glupo. Za to postoji mnogo različitih stranica. Uglavnom sam koristio tri: Hackerrank, CodeChef и Leteno kod. Na CodeChefu su problemi podijeljeni po težini, ali ne i po temi. Na Hackerranku i po složenosti i po temi.

Ali kako sam odmah saznao za sebe, postoji zanimljiviji način. A to su natjecanja (programerski izazovi ili natjecanja u programiranju). Sva tri mjesta ih pružaju. Istina, postoji problem s LeetCodeom - nezgodna vremenska zona. Zato nisam sudjelovao na ovoj stranici. Hackerrank i CodeChef pružaju prilično velik broj različitih natjecanja, koja traju od 1 sata do 10 dana. Različiti formati imaju različita pravila, ali o tome bismo mogli dugo pričati. Glavna stvar zašto su natjecanja dobra je uvođenje natjecateljskog (i opet tautološkog) elementa u proces učenja.

Ukupno sam sudjelovao u 37 natjecanja na Hackerranku. Od toga, 32 su bile one s ocjenom, a 5 je bilo ili sponzorirano (čak sam dobio 25 dolara u jednom od njih) ili za zabavu. Na ljestvici sam bio u prvih 10% 4 puta, u prvih 11% 12 puta i u prvih 5% 25 puta. Najbolji rezultati bili su 27/1459 u 3-satnom i 22/9721 u tjednu.

Prešao sam na CodeChef kada je Hackerrank počeo rjeđe organizirati natjecanja. Ukupno sam uspio sudjelovati na 5 natjecanja. Najbolji rezultat bio je 426/5019 u desetodnevnom natjecanju.

Ukupno sam na natjecanjima i samo tako riješio nešto više od 1000 zadataka, koji su se uklopili u plan. Sada, nažalost, nema slobodnog vremena za nastavak natjecateljskih aktivnosti, kao što nema ni cilja za koji se neslobodno vrijeme može otpisati. Ali bilo je zabavno. Preporučam da oni koje to zanima pronađu istomišljenike. Zajedno ili u grupi puno je zanimljivije. Zabavljao sam se ovime s prijateljem, pa je možda dobro prošlo.

Pogledajte video

Nakon što sam pročitao Skieninu knjigu, zainteresirao sam se što on radi. Kao i Sedgwick, on je sveučilišni profesor. S tim u vezi, videozapisi njegovih tečajeva mogu se pronaći na internetu. Odlučio sam pregledati tečaj COMP300E - Izazovi programiranja - 2009 HKUST. Ne mogu reći da mi se baš svidjelo. Prije svega, kvaliteta videa nije baš dobra. Drugo, nisam sam pokušao riješiti probleme o kojima se raspravljalo na tečaju. Tako da angažman nije bio velik.
Također, dok sam rješavao probleme, pokušavajući pronaći pravi algoritam, naišao sam na video Tushara Roya. Radio je u Amazonu, a sada radi u Appleu. Kako sam kasnije i sam saznao, ima YouTube kanal, gdje objavljuje analizu različitih algoritama. U vrijeme pisanja, kanal sadrži 103 videa. I moram reći da je njegova analiza bila jako dobro napravljena. Pokušao sam gledati druge autore, ali nekako nije išlo. Tako da svakako mogu preporučiti ovaj kanal za gledanje.

Pohađanje tečajeva

Ovdje nisam ništa posebno radio. Pogledao video s Googleovog Android Developer Nanodegreea i pohađao tečaj ITMO-a Kako pobijediti u natjecanjima kodiranja: Tajne prvaka. Nanodegree je sasvim dobar, iako iz njega, naravno, nisam naučio ništa novo. Kolegij iz ITMO-a je teorijski malo iskrivljen, ali problemi su bili zanimljivi. Ne bih preporučio da počnem s njim, ali u principu je to bilo dobro potrošeno vrijeme.

Učite iz tuđih iskustava

Naravno, puno je ljudi pokušalo ući u Google. Neki su ušli, neki nisu. Neki su napisali članke o tome. Od zanimljivosti koje ću vjerojatno spomenuti ovaj и ovaj. U prvom slučaju, osoba je za sebe pripremila popis onoga što treba naučiti kako bi postala softverski inženjer i ušla u Google. Na kraju je završio u Amazonu, ali to više nije toliko važno. Drugi priručnik napisala je Googleova inženjerka Larisa Agarkova (Larrr). Osim ovog dokumenta možete pročitati i njezin blog.

Ima smisla čitati recenzije intervjua na Glassdooru. Svi su više-manje slični, ali možete dobiti neke korisne informacije.

Neću dati poveznice na druge male članke; lako ih možete pronaći na Googleu.

Druga vožnja

I sad je prošla godina dana. Ispostavilo se da je studijski vrlo intenzivan. No, novoj sam jeseni pristupio s puno dubljim teorijskim znanjem i razvijenim praktičnim vještinama. Preostalo je još nekoliko tjedana do kraja godine koja mi je bila namijenjena za pripremu, kad je iznenada na poštu stiglo pismo regrutera iz Googlea u kojem me pitao imam li još uvijek želju raditi u Googleu i bih li Ne smeta mi da razgovaram s njim. Naravno, nije mi smetalo. Dogovorili smo se da ćemo nazvati za tjedan dana. Tražili su me i ažurirani životopis kojem sam dodao kratak opis onoga što sam radio tijekom godine na poslu i općenito.

Nakon doživotne komunikacije odlučili smo da će za tjedan dana biti Hangout intervju, kao i prošle godine. Prošao je tjedan dana, došlo je vrijeme za intervju, ali se anketar nije pojavio. Prošlo je 10 minuta, već sam počeo biti nervozan, kad je odjednom netko upao u chat. Kako se malo kasnije pokazalo, moj intervjuer se iz nekog razloga nije mogao pojaviti i hitno mu je pronađena zamjena. Osoba je bila donekle nespremna kako u pogledu postavljanja računala tako i u smislu vođenja intervjua. Ali onda je sve prošlo dobro. Brzo sam riješio problem, opisao gdje su moguće zamke i kako ih se može zaobići. Raspravljali smo o nekoliko različitih verzija problema i složenosti algoritma. Zatim smo razgovarali još 5 minuta, inženjer nam je ispričao svoje dojmove o radu u Münchenu (navodno nisu našli hitnu zamjenu u Zürichu), a onda smo se rastali.

Isti dan me kontaktirao regruter i rekao da je razgovor prošao dobro te da su me spremni pozvati na razgovor u ured. Sljedeći dan smo nazvali putem Hangoutsa i razgovarali o detaljima. Budući da sam trebala podnijeti zahtjev za vizu, odlučili smo zakazati intervju za mjesec dana.

Dok sam pripremao dokumente, paralelno sam s regruterom razgovarao o predstojećem intervjuu. Standardni intervju u Googleu sastoji se od 4 algoritamska intervjua i jednog intervjua za dizajn sustava. No, budući da sam se prijavljivao kao Android programer, rečeno mi je da će dio intervjua biti specifičan za Android. Nisam mogao otresti regrutera što bi točno i koje bi bile specifičnosti. Koliko sam shvatio, to je uvedeno relativno nedavno i on sam nije bio previše svjestan. Također sam bio prijavljen na dva treninga: kako proći intervju za algoritam i kako proći intervju za dizajn sustava. Sesije su bile prosječne korisnosti. Ni tamo mi nitko nije znao reći što pitaju Android programere. Stoga su se moje pripreme za ovaj mjesec svele na sljedeće:

  • Kupnja marker ploče i pisanje 2-3 tuceta najpopularnijih algoritama na nju iz sjećanja. 3-5 komada svaki dan. Ukupno je svaki napisan nekoliko puta.
  • Osvježite pamćenje raznim informacijama o Androidu koje ne koristite svaki dan
  • Gledam nekoliko videa o Big Scale i sličnim stvarima

Kao što sam već rekao, u isto vrijeme sam pripremao dokumente za put. Za početak su me tražili podatke za izradu pozivnog pisma. Zatim sam dugo pokušavao saznati tko na Cipru izdaje vize za Švicarsku, jer se švicarska ambasada time ne bavi. Kako se pokazalo, to radi austrijski konzulat. Nazvala sam i dogovorila termin. Tražili su hrpu dokumenata, ali ništa posebno zanimljivo. Fotografija, putovnica, boravišna dozvola, hrpa različitih potvrda i, naravno, pozivno pismo. U međuvremenu pismo nije stiglo. Na kraju sam išao s običnim ispisom i radio je prilično dobro. Samo pismo je stiglo 3 dana kasnije, a ciparski FedEx nije uspio pronaći moju adresu i morao sam sam otići po njega. Istovremeno sam primio paket od istog FedExa, koji mi također nisu mogli dostaviti, jer nisu pronašli adresu, a koji je tamo ležao od lipnja (5 mjeseci, Karl). Budući da nisam znao za to, naravno, nisam pretpostavljao da ga imaju. Dobio sam vizu na vrijeme, nakon čega su mi rezervirali hotel i ponudili opcije leta. Prilagodio sam opcije kako bi bilo praktičnije. Više nije bilo izravnih letova, pa sam na kraju letio tamo preko Atene i natrag preko Beča.

Nakon što su se riješile sve formalnosti oko puta, prošlo je još nekoliko dana i ja sam doista odletio u Zürich. Stigao bez incidenta. Od zračne luke do grada išla sam vlakom – brzo i povoljno. Nakon što sam malo lutao gradom, pronašao sam hotel i prijavio se. Pošto je hotel bio rezerviran bez hrane, večerala sam u susjedstvu i otišla spavati, jer je let bio ujutro i već sam htjela spavati. Sljedeći dan sam doručkovao u hotelu (za dodatni novac) i otišao u Google ured. Google ima nekoliko ureda u Zürichu. Moj intervju nije bio na središnjem. I općenito, ured je izgledao sasvim obično, tako da nisam imao priliku pogledati sve dobrote "normalnog" Google ureda. Registrirao sam se kod administratora i sjeo čekati. Nakon nekog vremena izašao je regruter i rekao mi plan za taj dan, nakon čega me odveo u prostoriju gdje su se trebali održati razgovori. Zapravo, plan je uključivao 3 intervjua, ručak i još 2 intervjua.

Intervju broj jedan

Prvi intervju je bio upravo na Androidu. I nije imalo nikakve veze s algoritmima. Iznenađenje, doduše. Pa dobro, ovako je još češće. Zamoljeni smo da napravimo određenu UI komponentu. Prvo smo razgovarali što i kako. Ponudio je izradu rješenja pomoću RxJave, opisao što bi točno napravio i zašto. Rekli su da je ovo svakako dobro, ali učinimo to pomoću Android okvira. I u isto vrijeme ćemo napisati šifru na ploču. I to ne samo komponenta, već cijela aktivnost koja koristi ovu komponentu. Na ovo nisam bio spreman. Jedna je stvar napisati algoritam od 30-50 redaka na ploču, a druga je stvar napisati rezanci Android koda, čak i uz kratice i komentare u duhu "pa, neću to napisati, jer je već očito." Rezultat je bio nekakav vinaigrette za 3 daske. Oni. Riješio sam problem, ali izgledalo je glupo.

Intervju broj dva

Ovaj put intervju je bio o algoritmima. I bila su dva anketara. Jedan je stvarni ispitivač, a drugi je mladi padawan (ispitivač u sjeni). Bilo je potrebno osmisliti strukturu podataka s određenim svojstvima. Prvo smo razgovarali o problemu kao i obično. Postavljao sam različita pitanja, anketar je odgovarao. Nakon nekog vremena zamoljeni su da na ploču napišu nekoliko metoda izmišljene strukture. Ovaj put sam bio više-manje uspješan, iako s nekoliko manjih grešaka, koje sam ispravio na upit anketara.

Intervju broj tri

Ovaj put System Design, za koji se odjednom pokazalo da je također Android. Bilo je potrebno razviti aplikaciju s određenim funkcionalnostima. Razgovarali smo o zahtjevima za aplikaciju, poslužitelj i komunikacijski protokol. Zatim sam počeo opisivati ​​koje bih komponente ili biblioteke koristio pri izradi aplikacije. A onda, pri spominjanju Job Schedulera, došlo je do zabune. Poanta je u tome da ga nikad nisam koristio u praksi, budući da sam u trenutku izlaska tek prešao na prateće aplikacije gdje nije bilo zadataka za njegovo korištenje. Ista se stvar dogodila pri razvoju sljedećih. Odnosno, teoretski, znam što je to, kada i kako se koristi, ali nemam iskustva u korištenju. Čini se da se to intervjueru baš i nije svidjelo. Zatim su me zamolili da napišem neki kod. Da, kada razvijate aplikaciju odmah trebate napisati kod. Opet Android kod na ploči. Opet je ispalo zastrašujuće.

Ručak

Trebala je doći još jedna osoba, ali nije. I Google griješi. Zbog toga sam otišla na ručak s prethodnom voditeljicom intervjua, njezinom kolegicom, a nešto kasnije pridružila se i sljedeća anketarka. Ručak je bio sasvim pristojan. Opet, budući da ovo nije glavni ured u Zürichu, blagovaonica je izgledala sasvim obično, iako vrlo lijepo.

Intervju broj četiri

Konačno, algoritmi u svom najčišćem obliku. Prvi sam problem riješio prilično brzo i odmah učinkovito, iako mi je promaknuo jedan rubni slučaj, ali sam na upit ispitivača (dao je upravo ovaj rubni slučaj) pronašao problem i ispravio ga. Naravno, morao sam napisati šifru na ploču. Tada je dobio sličan zadatak, ali teži. Za njega sam našao par neoptimalnih rješenja i skoro pronašao optimalno, 5-10 minuta nije bilo dovoljno da završim misao. Pa, nisam imao vremena napisati kod za to.

Intervju broj pet

I opet Android intervju. Pitam se zašto sam cijelu godinu učio algoritme?
U početku je bilo nekoliko jednostavnih pitanja. Zatim je ispitivač napisao kod na ploču i tražio da u njemu pronađe probleme. Pronašao, objasnio, popravio. Razgovarano. A onda su krenula neka neočekivana pitanja u duhu “što metoda Y radi u klasi X”, “što je unutar metode Y”, “što radi klasa Z”. Naravno, nešto sam odgovorio, ali sam onda rekao da se s tim nisam susreo u posljednje vrijeme u svom radu i naravno da se ne sjećam tko što i kako radi u detalje. Nakon toga, ispitivač me pitao što sada radim. I pitanja su išla na ovu temu. Ovdje sam već mnogo bolje odgovorio.

Nakon završetka posljednjeg razgovora uzeli su mi propusnicu, poželjeli mi puno sreće i poslali me dalje. Prošetao sam malo gradom, večerao i otišao u hotel, gdje sam legao, jer je let opet bio rano ujutro. Sutradan sam sretno stigao na Cipar. Na zahtjev regruta napisao sam povratne informacije o intervjuu i ispunio obrazac u posebnoj službi za povrat potrošenog novca. Od svih troškova Google izravno plaća samo ulaznice. Hotel, hranu i put plaća kandidat. Zatim ispunjavamo obrazac, prilažemo račune i šaljemo u poseban ured. Oni to obrađuju i dosta brzo prenose novac na račun.

Obrada rezultata razgovora trajala je tjedan i pol. Nakon čega sam obaviješten da sam “malo ispod letvice”. Odnosno, malo mi je falilo. Točnije, 2 intervjua su prošla dobro, 2 malo ne tako dobro, a Dizajn sustava ne baš dobro. E sad, da je barem 3 dobro prošlo, onda bismo se mogli natjecati, inače nema šanse. Ponudili su da se vrate za drugu godinu.

U početku sam, naravno, bio uzrujan, jer je puno truda uloženo u pripreme, a do intervjua sam već razmišljao o odlasku s Cipra. Pridruživanje Googleu i preseljenje u Švicarsku činilo se kao odlična opcija.

Zaključak

I tu dolazimo do završnog dijela članka. Da, dvaput sam pao na Google intervjuu. Tužno je. Vjerojatno bi bilo zanimljivo tamo raditi. No, možete stvar pogledati i s druge strane.

  • U godinu i pol sam naučio jako puno stvari vezanih uz razvoj softvera.
  • Bilo mi je zabavno sudjelovati na natjecanjima iz programiranja.
  • Otišao sam u Zurich na par dana. Kada ću opet ići tamo?
  • Imao sam zanimljivo iskustvo intervjua u jednoj od najvećih IT kompanija na svijetu.

Dakle, sve što se događalo u ovih godinu i pol dana jednostavno se može smatrati treningom, odnosno treningom. I rezultati ove obuke su se osjetili. Sazrela je moja ideja da odem s Cipra (zbog nekih obiteljskih okolnosti), uspješno sam prošao nekoliko razgovora s drugom poznatom tvrtkom i preselio se nakon 8 mjeseci. Ali to je sasvim druga priča. Ipak, mislim da ipak trebam zahvaliti Googleu i za godinu i pol dana na kojima sam sam radio, i za 2 zanimljiva dana u Zürichu.

Što da kažem na kraju? Ako radite u IT-u, pripremite se za intervjue u Googleu (Amazon, Microsoft, Apple itd.). Možda ćete jednog dana otići tamo da tamo stignete. Čak i ako ne želite, vjerujte, od takve vam pripreme neće biti ništa gore. Onog trenutka kada shvatite da možete (makar i samo uz sreću) dobiti intervju s nekom od ovih tvrtki, otvorit će vam se mnogo više puteva nego prije nego što ste počeli s pripremama. A sve što trebate na tom putu je svrha, upornost i vrijeme. Želim ti uspjeh :)

Izvor: www.habr.com

Dodajte komentar