Kako se pripremiti za intervju u Google-u i ne uspjeti. Dvaput

Kako se pripremiti za intervju u Google-u i ne uspjeti. Dvaput

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

Kako je sve počelo

Jedne hladne kiparske zimske večeri odjednom mi je pala na pamet misao da je moje znanje o klasičnoj informatici veoma daleko od prosječnog i da je trebalo nešto učiniti po tom pitanju. Ako, inače, neko još nije pročitao zašto je veče kiparsko i hladno, onda možete saznati o tome ovdje. Nakon nekog razmišljanja, odlučeno je da počnemo sa online tečajem o algoritmima i strukturama podataka. Od jednog od mojih bivših kolega čuo sam za kurs Roberta Sedgewicka na Courseri. Kurs se sastoji iz dva dela (deo 1-a и deo 2-a). Ako se iznenada veze promijene, uvijek možete pronaći na Googleu ime autora. Svaki dio traje 6 sedmica. Predavanja se održavaju početkom sedmice, a tokom sedmice još treba raditi vježbe. Prvi dio kursa pokriva osnovne strukture podataka, osnovne vrste sortiranja i složenost algoritama. Drugi dio je već napredniji, počevši od grafova i završavajući stvarima kao što su linearno programiranje i neuhvatljivost. Nakon razmišljanja o svemu navedenom, došao sam do zaključka da je to upravo ono što mi treba. Usput, radoznali čitalac može se zapitati, kakve veze Google ima s tim? I zaista, do ovog trenutka nije imao nikakve veze s tim. Ali trebao mi je cilj, pošto je učenje 12 sedmica uveče bez cilja pomalo teško. Šta bi mogla biti svrha sticanja novih znanja? Naravno, njihova primjena u praksi. U svakodnevnom životu to je prilično problematično, ali tokom intervjua u velikoj kompaniji to je lako. Brzi Google je pokazao da je Gugl (oprostite na tautologiji) jedna od najvećih kompanija u Evropi (a ja sam gledao upravo Evropu) koja obavlja takve intervjue. Naime, njihov ured se nalazi u Cirihu u Švicarskoj. Pa je odlučeno - učimo i idemo na intervju u Google.

Priprema za prvi pristup

12 sedmica je prošlo brzo i završila sam oba kursa. Moji utisci o kursevima su više nego pozitivni i mogu ih preporučiti svima koji su zainteresovani. Kursevi su mi se svideli iz sledećih razloga:

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

Moj rad na kursevima je obično išao ovako. Slušao sam predavanja za 1-2 dana. Zatim su izvršili brzi test znanja o gradivu. Ostatak sedmice radio sam vježbu u nekoliko iteracija. Nakon prvog dobio sam svojih 30-70%, slijedeći su doveli rezultat na 97-100%. Vježba je obično uključivala implementaciju nekog algoritma, npr. Rezbarenje šavova ili bzip.

Nakon završenih kurseva shvatila sam da mnogo znanja dolazi sa mnogo tuge. Ako sam prije jednostavno znao da ništa ne znam, sada sam počeo shvaćati da sam ja taj koji ne znam.

Kako je tek bio mjesec maj, a intervju sam zakazala za jesen, odlučila sam da nastavim školovanje. Nakon razmatranja uslova za konkurs, odlučeno je da se ide u dva pravca paralelno: nastavi proučavanje algoritama i polaže osnovni kurs mašinskog učenja. Za prvi cilj, odlučio sam da sa kurseva pređem na knjigu i odabrao sam monumentalno delo Stivena Skiene „Algoritmi. Priručnik za dizajn algoritma. Nije tako monumentalan kao Knut, ali ipak. Za drugi gol, vratio sam se na Coursera i upisao se na kurs Andrewa Nga. machine Learning.

Prošlo je još 3 mjeseca i završio sam kurs i knjigu.

Počnimo s knjigom. Čitanje se pokazalo prilično zanimljivim, iako ne lakim. U principu bih preporučio knjigu, ali ne odmah. Sve u svemu, knjiga pruža detaljniji pogled na ono što sam naučio na kursu. Plus, otkrio sam (sa formalne tačke gledišta) takve stvari kao što su heuristika i dinamičko programiranje. Naravno, koristio sam ih i ranije, ali nisam znao kako se zovu. Knjiga sadrži i niz priča iz autorovog života (Ratna priča), koje donekle razvodnjavaju akademsku prirodu izlaganja. Inače, druga polovina knjige se može izostaviti, već sadrži opis postojećih problema i metode za njihovo rješavanje. Korisno je ako se redovno koristi u praksi, inače će se odmah zaboraviti.

Bio sam više nego zadovoljan kursom. Autor jasno zna svoje stvari i priča na zanimljiv način. Plus dosta toga, odnosno linearne algebre i osnova neuronskih mreža, zapamtio sam sa fakulteta, tako da nisam imao nekih posebnih poteškoća. Struktura kursa je sasvim standardna. Kurs je podijeljen na sedmice. Svake sedmice održavaju se predavanja pomiješana sa kratkim testovima. Nakon predavanja dobijate zadatak koji treba da uradite, predate i on će biti automatski proveren. Ukratko, lista stvari koje se uče na kursu je sljedeća:
- funkcija troškova
- linearna regresija
- gradijentno spuštanje
- skaliranje karakteristika
- normalna jednačina
- logistička regresija
— višeklasna klasifikacija (jedan naspram svih)
— neuronske mreže
- propagacija unazad
- regularizacija
— pristrasnost/varijansa
— krivulje učenja
— metrika greške (preciznost, opoziv, F1)
— Support Vector Machines (klasifikacija velike margine)
— K-znači
—Analiza glavnih komponenti
- otkrivanje anomalija
— kolaborativno filtriranje (recommeder sistem)
— stohastički, mini-batch, batch gradijentni spuštanja
— onlajn učenje
- mapa smanjiti
- analiza plafona
Nakon završenog kursa, prisutno je razumijevanje svih ovih tema. Nakon 2 godine, skoro sve je prirodno zaboravljeno. Preporučujem ga onima koji nisu upoznati s mašinskim učenjem i žele dobro razumjeti osnovne stvari za dalje.

Prvo trčanje

Već je bio septembar i bilo je vrijeme da razmislimo o intervjuu. Pošto je prijavljivanje preko sajta prilično katastrofalno, počeo sam da tražim prijatelje koji rade u Google-u. Izbor je pao datacompboy, pošto je on jedini koga sam poznavao direktno (čak i ako ne lično). Pristao je da prosledi moj životopis i ubrzo sam dobio pismo od regrutera u kojem mi je ponudio da rezervišem mesto u njegovom kalendaru za prvi razgovor.Par dana kasnije poziv je obavljen. Pokušali smo komunicirati putem Hangoutsa, ali je kvalitet bio užasan, 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 „koje je teško ubaciti u hash mapu“, „koja uravnotežena stabla poznajete“. Nije teško ako imate osnovno znanje o ovim stvarima. Projekcija je prošla dobro i na osnovu rezultata odlučili su da organizuju prvi intervju za nedelju dana.

Intervju je također obavljen putem Hangoutsa. Prvo su pričali o meni oko 5 minuta, a onda su prešli na problem. Problem je bio u grafovima. Brzo sam shvatio šta treba da se uradi, ali sam izabrao pogrešan algoritam. Kada sam počeo da pišem kod, shvatio sam to i prešao na drugu opciju, što sam završio. Anketar je postavio nekoliko pitanja o složenosti algoritma i pitao da li se to može učiniti brže. Nekako sam postao dosadan i nisam to mogao. U ovom trenutku, vrijeme je isteklo i mi smo se pozdravili. Zatim, nakon otprilike 10 minuta, sinulo mi je da umjesto Dijkstra algoritma koji sam koristio, u ovom konkretnom problemu mogu koristiti pretragu u širinu, i to bi bilo brže. Nakon nekog vremena, regruter je nazvao i rekao da je intervju u celini prošao dobro i da treba organizovati još jedan. Dogovorili smo se za još jednu sedmicu.

Ovog puta stvari su se pogoršale. Ako je prvi put sagovornik bio prijateljski nastrojen i društven, ovaj put je bio pomalo tmuran. Nisam mogao odmah da shvatim problem, iako su ideje do kojih sam došao u principu mogle dovesti do njegovog rješenja. Na kraju, nakon nekoliko upita sagovornika, rješenje je došlo do mene. Ovog puta se pokazalo da je to opet bila pretraga u širinu, samo sa nekoliko tačaka. Napisao sam rješenja, upoznao ih na vrijeme, ali sam zaboravio na rubne slučajeve. Nakon nekog vremena javio se regruter i rekao da je ovaj put anketar nezadovoljan, jer mi je po njegovom mišljenju trebalo previše savjeta (3 ili 4 komada) i stalno sam mijenjao šifru dok sam pisao. Na osnovu rezultata dva intervjua, odlučeno je da se ne ide dalje, već da se naredni intervju odloži za godinu dana, ako to želim. Zato smo se oprostili.

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

  • Teorija je dobra, ali morate se brzo snalaziti u njoj
  • Teorija bez prakse neće pomoći. Moramo riješiti probleme i dovesti kodiranje do automatizma.
  • Mnogo zavisi od anketara. I tu se ništa ne može učiniti.

Priprema za drugu vožnju

Nakon što sam razmislio o situaciji, odlučio sam da pokušam ponovo za godinu dana. I malo uredio cilj. Ako je ranije glavni cilj bio učenje, a intervju u Guglu bio je kao daleka šargarepa, sada je prolazak na intervju bio cilj, a učenje sredstvo.
Dakle, razvijen je novi plan koji je uključivao sljedeće tač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 video zapise.
  • Nastavite učiti teoriju kroz kurseve.
  • Proučite iskustva drugih ljudi s intervjuima na Googleu.

Plan sam završio u roku od godinu dana. Zatim ću opisati šta sam tačno uradio za svaku od tačaka.

Knjige i članci

Ne sjećam se ni koliko sam pročitao članaka, čitao sam ih i na ruskom i na engleskom. Vjerovatno najkorisnija stranica ovo. 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), Intervju za razbijanje kodiranja, 4. izdanje (Gayle Laakmann), Programming Interviews Exposed 2. izdanje (Mongenan) , 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 kursevima. Samo pismeno. Nema puno smisla da ga pažljivo čitate ako ste pohađali kurs, ali svejedno vrijedi preletjeti. Ako niste gledali kurs, ima smisla da ga pročitate. Cormen mi se činio previše dosadnim. Da budem iskren, bilo mi je teško da ga savladam. Upravo sam ga izvadio odatle master theory, i nekoliko rijetko korištenih struktura podataka (Fibonacci heap, van Emde Boas stablo, radix heap).

Vrijedi pročitati barem jednu knjigu da se pripremite za intervju. Svi su izgrađeni na približno istom principu. Oni opisuju proces intervjua u velikim tehnološkim kompanijama, daju osnovne stvari iz računarstva, probleme za ove osnovne stvari, rješenja problema i analizu rješenja. Od tri gornja, vjerovatno bih preporučio Cracking the Coding Interview kao glavni, a ostali su opcioni.

Algoritamski problemi

Ovo je vjerovatno bila najzanimljivija tačka pripreme. Možete, naravno, sjesti i glupo rješavati probleme. Postoji mnogo različitih sajtova za ovo. Uglavnom sam koristio tri: Hackerrank, CodeChef и LeetCode. Na CodeChefu, problemi su podijeljeni po težini, ali ne po temi. Na Hackerrank-u i po složenosti i po temi.

Ali, kako sam odmah i sam saznao, postoji zanimljiviji način. A to su takmičenja (programerski izazovi ili takmičenja u programiranju). Sve tri stranice ih pružaju. Istina, postoji problem s LeetCodeom - nezgodna vremenska zona. Zato nisam učestvovao na ovoj stranici. Hackerrank i CodeChef pružaju prilično veliki broj različitih takmičenja, u trajanju 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 takmičenja dobra je uvođenje takmičarskog (i opet tautološkog) elementa u proces učenja.

Ukupno sam učestvovao na 37 takmičenja na Hackerrank-u. Od toga, 32 su bile ocjenjivačke, a 5 su bile ili sponzorirane (u jednom sam čak dobio 25 dolara) ili iz zabave. Na rang listi sam 10 puta bio u prvih 4%, u prvih 11% 12 puta i u prvih 5% 25 puta. Najbolji rezultati su bili 27/1459 za 3 sata i 22/9721 u sedmici.

Prešao sam na CodeChef kada je Hackerrank počeo rjeđe da održava takmičenja. Ukupno sam uspeo da učestvujem na 5 takmičenja. Najbolji rezultat bio je 426/5019 u desetodnevnom takmičenju.

Ukupno sam na takmičenjima i tako, riješio nešto više od 1000 zadataka, koji su se uklapali u plan. Sada, nažalost, nema slobodnog vremena za nastavak takmičarskih aktivnosti, kao što ne postoji ni cilj zbog kojeg se neslobodno vrijeme može otpisati. Ali bilo je zabavno. Preporučujem da oni koje ovo zanima nađu istomišljenike. Zajedno ili u grupi je mnogo zanimljivije. Zabavljao sam se sa ovim prijateljem, pa je možda dobro prošlo.

Pogledajte video

Nakon što sam pročitao Skieninu knjigu, zainteresovao sam se za ono što on radi. Kao i Sedgwick, on je univerzitetski profesor. S tim u vezi, video zapisi njegovih kurseva mogu se naći na internetu. Odlučio sam da pregledam kurs COMP300E - Izazovi programiranja - 2009 HKUST. Ne mogu reći da mi se mnogo svidjelo. Prije svega, kvalitet videa nije baš dobar. Drugo, nisam pokušavao sam da riješim probleme o kojima se govorilo na kursu. Tako da angažman nije bio veliki.
Također, rješavajući probleme, pokušavajući pronaći pravi algoritam, naišao sam na video Tushar Roya. Radio je u Amazonu, a sada radi u Appleu. Kako sam kasnije i sam saznao, jeste YouTube kanal, gdje objavljuje analizu različitih algoritama. U trenutku pisanja, kanal sadrži 103 videa. I moram reći da je njegova analiza urađena veoma dobro. Pokušavao sam da gledam druge autore, ali nekako nije išlo. Tako da svakako mogu preporučiti ovaj kanal za gledanje.

Pohađanje kurseva

Nisam uradio ništa posebno ovde. Gledao video od Google-ovog Android Developer Nanodegree i pohađao kurs od ITMO-a Kako pobijediti u natjecanjima u kodiranju: Tajne šampiona. Nanodegree je prilično dobar, iako prirodno nisam naučio ništa novo iz njega. Kurs sa ITMO-a je malo iskrivljen u teoretskom smislu, ali problemi su bili zanimljivi. Ne bih preporučio da počnete s tim, ali u principu je to bilo dobro utrošeno vrijeme.

Učite iz iskustava drugih ljudi

Naravno, mnogo ljudi je pokušalo da uđe u Google. Neki su ušli, neki nisu. Neki su pisali članke o tome. Od zanimljivih stvari koje ću vjerovatno spomenuti ovaj и ovaj. U prvom slučaju, osoba je pripremila za sebe listu onoga što treba da nauči da 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 je napisala Google inženjerka Larisa Agarkova (Larrr). Osim ovog dokumenta, možete i čitati njen blog.

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

Neću davati linkove na druge male članke; lako ih možete pronaći na Google-u.

Druga vožnja

A sada je prošla godina dana. Pokazalo se da je to bilo veoma intenzivno u smislu studija. No, novoj jeseni sam pristupio s mnogo dubljim teorijskim znanjem i razvijenim praktičnim vještinama. Ostalo je još nekoliko sedmica do kraja godine koja mi je bila određena za pripreme, kada je odjednom na poštu stiglo pismo regrutera iz Gugla u kojem me pita da li još uvijek imam želju da radim u Googleu i hoću li Smeta mi da razgovaram sa njim. Naravno, nije mi smetalo. Dogovorili smo se da nazovemo za nedelju dana. Tražili su od mene i ažuriranu biografiju, kojoj sam dodao kratak opis onoga što sam radio tokom godine na poslu i općenito.

Nakon doživotne komunikacije, odlučili smo da za nedelju dana bude Hangout intervju, kao i prošle godine. Prošla je sedmica, došlo je vrijeme za intervju, ali se anketar nije pojavio. Prošlo je 10 minuta, već sam počeo da se nerviram, kada je odjednom neko upao u razgovor. Kako se ispostavilo malo kasnije, moj sagovornik se iz nekog razloga nije mogao pojaviti i hitno mu je pronađena zamjena. Osoba je bila pomalo nespremna kako u pogledu postavljanja kompjutera tako i u pogledu vođenja intervjua. Ali onda je sve dobro prošlo. Brzo sam riješio problem, opisao gdje su moguće zamke i kako ih se može zaobići. Razgovarali smo o nekoliko različitih verzija problema i složenosti algoritma. Potom smo pričali još 5 minuta, inženjer nam je ispričao svoje utiske o radu u Minhenu (u Cirihu očigledno nisu našli hitnu zamenu), a onda smo se rastali.

Istog dana me kontaktirao regruter i rekao da je razgovor prošao dobro i da su spremni da me pozovu na razgovor u kancelariju. Sutradan smo zvali preko Hangoutsa i razgovarali o detaljima. Pošto je trebalo da se prijavim za vizu, odlučili smo da zakažemo intervju za mesec dana.

Dok sam pripremao dokumente, istovremeno sam razgovarao o predstojećem intervjuu sa regruterom. Standardni intervju u Google-u sastoji se od 4 algoritamska intervjua i jednog intervjua za dizajn sistema. Ali, pošto sam se prijavljivao za posao Android programera, rečeno mi je da će dio intervjua biti specifičan za Android. Nisam mogao da izbacim iz regrutera šta će tačno biti i šta će biti specifičnosti. Koliko sam ja shvatio, to je uvedeno relativno nedavno i on sam nije bio mnogo svjestan. Također sam bio prijavljen na dvije sesije obuke: kako proći algoritamski intervju i kako proći intervju za sistem dizajn. Sesije su bile prosečne korisnosti. I tamo mi niko nije znao reći šta pitaju Android programere. Stoga su se moje pripreme za ovaj mjesec svodile na sljedeće:

  • Kupnja ploče za označavanje i pisanje 2-3 tuceta najpopularnijih algoritama na njoj iz memorije. 3-5 komada svaki dan. Ukupno, svaka je napisana nekoliko puta.
  • Osvježite svoje pamćenje raznih informacija na Androidu koje ne koristite svaki dan
  • Gledam nekoliko videa o Big Scale-u i sličnim stvarima

Kao što sam već rekao, u isto vrijeme sam pripremao dokumente za put. Za početak, tražili su od mene podatke za izradu pozivnog pisma. Onda sam dugo pokušavao da saznam ko na Kipru izdaje vize za Švajcarsku, pošto se švajcarska ambasada time ne bavi. Kako se ispostavilo, to radi austrijski konzulat. Nazvao sam i zakazao termin. Tražili su gomilu dokumenata, ali ništa posebno zanimljivo. Fotografija, pasoš, boravišna dozvola, gomila raznih potvrda i, naravno, pozivno pismo. U međuvremenu pismo nije stiglo. Na kraju sam išao sa običnim ispisom i dobro je funkcionirao. Samo pismo je stiglo 3 dana kasnije, a kiparski FedEx nije mogao pronaći moju adresu i morao sam sam otići po njega. U isto vrijeme sam od istog FedEx-a dobio paket, koji mi također nisu mogli dostaviti, jer nisu našli adresu, a koji je tu ležao od juna (5 mjeseci, Karl). Pošto nisam znao za to, naravno, nisam ni pretpostavio da ga imaju. Dobio sam vizu na vrijeme, nakon čega su mi rezervisali hotel i ponudili mi opcije leta. Prilagodio sam opcije kako bih bio praktičniji. Više nije bilo direktnih letova, pa sam na kraju leteo tamo preko Atine i nazad preko Beča.

Nakon što su sve formalnosti oko putovanja bile riješene, prošlo je još nekoliko dana i ja sam zapravo odletio za Cirih. Stigao bez incidenata. Od aerodroma do grada otišao sam vozom - brzo i povoljno. Nakon što sam malo prolutao gradom, našao sam hotel i prijavio se. Pošto je hotel rezervisan bez hrane, večerao sam u susjedstvu i otišao na spavanje, jer je let bio ujutro i već sam htio spavati. Sutradan sam doručkovao u hotelu (za dodatni novac) i otišao u Google ured. Google ima nekoliko ureda u Cirihu. Moj intervju nije bio na centralnom. I generalno, kancelarija je izgledala sasvim obično, tako da nisam imao priliku da pogledam sve dobrote „normalne“ Google kancelarije. Registrovao sam se kod administratora i sjeo da čekam. Nakon nekog vremena, izašao je regruter i rekao mi plan za dan, nakon čega me je odveo u prostoriju u kojoj je trebalo da se obavi razgovor. Zapravo, plan je uključivao 3 intervjua, ručak i još 2 intervjua.

Intervju broj jedan

Prvi intervju je bio samo na Androidu. I to uopšte nije imalo veze sa algoritmima. Ipak iznenađenje. Pa, dobro, ovako je još češći. Zamoljeni smo da napravimo određenu UI komponentu. Prvo smo razgovarali šta i kako. Ponudio je da napravi rešenje koristeći RxJava, opisao šta će tačno uraditi i zašto. Rekli su da je ovo svakako dobro, ali hajde da to uradimo koristeći Android framework. I istovremeno ćemo napisati kod na ploči. I to ne samo komponenta, već cijela aktivnost koja koristi ovu komponentu. To je ono za šta nisam bio spreman. Jedna je stvar napisati algoritam od 30-50 redova na ploči, a druga stvar napisati nudle Android koda, čak i sa skraćenicama i komentarima u duhu "pa, neću to pisati, pošto je to već očigledno." Rezultat je bila neka vrsta vinaigreta za 3 daske. One. Rešio sam problem, ali je izgledalo glupo.

Intervju broj dva

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

Intervju broj tri

Ovaj put System Design, za koji se iznenada pokazalo da je Android. Bilo je potrebno razviti aplikaciju sa određenom funkcionalnošću. Razgovarali smo o zahtjevima za aplikaciju, server i komunikacijski protokol. Zatim sam počeo da opisujem koje komponente ili biblioteke bih koristio prilikom izrade aplikacije. A onda, kada se pominje Job Scheduler, došlo je do neke zabune. Poenta je u tome da ga nikada nisam koristio u praksi, jer sam u trenutku njegovog objavljivanja tek prešao na prateće aplikacije u kojima nije bilo zadataka za njegovu upotrebu. Ista stvar se desila i pri razvoju narednih. Odnosno, u teoriji, znam šta je to, kada i kako se koristi, ali nemam iskustva u korištenju. I činilo se da se to intervjueru nije mnogo dopalo. Onda su me zamolili da napišem neki kod. Da, kada razvijate aplikaciju, morate odmah napisati kod. Opet Android kod na ploči. Opet je ispalo strašno.

Ručak

Još jedna osoba je trebala doći, ali nije. I Google griješi. Kao rezultat toga, otišao sam na ručak sa prethodnom anketarkom, njenom koleginicom, a nešto kasnije se pridružio i sljedeći intervjuer. Ručak je bio sasvim pristojan. Opet, pošto ovo nije glavna kancelarija u Cirihu, trpezarija je izgledala sasvim obično, iako veoma lepo.

Intervju broj četiri

Konačno, algoritmi u svom najčistijem obliku. Prvi problem sam riješio prilično brzo i odmah efikasno, iako sam promašio jedan rubni slučaj, ali sam na upit anketara (on je dao upravo ovaj rubni slučaj) pronašao problem i ispravio ga. Naravno, morao sam napisati kod na ploči. Tada je dat sličan zadatak, ali teži. Za njega sam pronašao par neoptimalnih rješenja i skoro našao ono optimalno, 5-10 minuta nije bilo dovoljno da završim misao. Pa, nisam imao vremena da napišem 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 anketar napisao kod na ploči i tražio da pronađe probleme u njemu. Našao, objasnio, popravio. Discussed. A onda su počela neka neočekivana pitanja u duhu “šta radi metoda Y u klasi X”, “šta je unutar metode Y”, “šta radi klasa Z”. Naravno, nešto sam odgovorio, ali sam onda rekao da se sa tim nisam susreo u poslednje vreme u svom radu i naravno da se ne sećam detaljno ko šta i kako radi. Nakon toga me je intervjuer pitao šta sada radim. I pitanja su se odnosila na ovu temu. Ovde sam već odgovorio mnogo bolje.

Nakon završetka posljednjeg intervjua uzeli su mi propusnicu, poželjeli mi sreću i poslali me dalje. Malo sam prošetao gradom, večerao i otišao u hotel, gde sam legao, pošto je let opet bio rano ujutro. Sutradan sam bezbedno stigao na Kipar. Na zahtjev regrutera, napisao sam povratnu informaciju o intervjuu i ispunio obrazac u posebnoj službi za vraćanje potrošenog novca. Od svih troškova, Google direktno plaća samo karte. Hotel, hranu i put plaća kandidat. Zatim popunjavamo obrazac, prilažemo račune i šaljemo ga u posebnu kancelariju. Oni to obrađuju i dosta brzo prenose novac na račun.

Obrada rezultata intervjua trajala je nedelju i po dana. Nakon toga mi je saopšteno da sam “malo ispod šanka”. Odnosno, malo sam pao. Tačnije, 2 intervjua su prošla dobro, 2 malo ne tako dobro, a sistemski dizajn ne baš dobro. E sad, da su bar 3 prošla dobro, onda bismo mogli da se takmičimo, inače nema šanse. Ponudili su da se vrate za godinu dana.

U početku sam, naravno, bio uznemiren, jer je dosta truda utrošeno na pripreme, a u vrijeme intervjua već sam razmišljao o odlasku s Kipra. Pridruživanje Google-u i preseljenje u Švicarsku činilo se kao odlična opcija.

zaključak

I tu dolazimo do završnog dijela članka. Da, dva puta sam pao na Google intervjuu. To je tužno. Vjerovatno bi bilo zanimljivo raditi tamo. Ali, na stvar možete gledati i sa druge strane.

  • Za godinu i po dana naučio sam ogromnu količinu stvari vezanih za razvoj softvera.
  • Bilo mi je jako zabavno učestvovati na takmičenjima u programiranju.
  • Otišao sam u Cirih na par dana. Kada ću opet tamo?
  • Imao sam zanimljivo iskustvo intervjua u jednoj od najvećih IT kompanija na svijetu.

Dakle, sve što se dešavalo u ovih godinu i po dana jednostavno se može smatrati treningom, odnosno treningom. I rezultati ove obuke su se osjetili. Moja ideja da napustim Kipar sazrela je (zbog porodičnih okolnosti), uspješno sam prošao nekoliko intervjua u drugoj poznatoj kompaniji i nakon 8 mjeseci preselio. Ali to je sasvim druga priča. Ipak, mislim da ipak treba da se zahvalim Google-u i za godinu i po dana koliko sam radio na sebi, i za 2 zanimljiva dana u Cirihu.

Šta da kažem na kraju? Ako radite u IT-u, pripremite se za intervjue u Google-u (Amazon, Microsoft, Apple, itd.). Možda ćete jednog dana otići tamo da stignete tamo. Čak i ako ne želite, vjerujte mi, takva priprema vam neće ništa pogoršati. Onog trenutka kada shvatite da možete (makar samo uz sreću) dobiti intervju u jednoj od ovih kompanija, biće vam otvoreno mnogo više puteva nego prije nego što ste započeli s pripremama. A sve što vam je potrebno na tom putu je svrha, upornost i vrijeme. Želim ti uspjeh :)

izvor: www.habr.com

Dodajte komentar