
Artikli pealkiri vĂ”ib kĂ”lada nagu epic fail, kuid tegelikult pole kĂ”ik nii ĂŒheselt mĂ”istetav. Ăldiselt lĂ”ppes see lugu siiski ĂŒsna positiivselt, kuigi mitte Google'is. Kuid sellest on juba juttu jĂ€rgmises artiklis. Selles artiklis rÀÀgin kolmest asjast: kuidas kĂ€is minu ettevalmistus, kuidas toimusid intervjuud Google'is ja miks minu arvates ei ole kĂ”ik nii lihtne, nagu esmapilgul tunduda vĂ”iks.
Kuidas kÔik algas
Ăhel kĂŒlmal KĂŒprose talveĂ”htul tuli mulle Ă€kki mĂ”te, et minu teadmised klassikalisest arvutiteadusest on kaugel isegi keskmisest, ja sellega tuleb midagi ette vĂ”tta. Kui muide keegi veel ei ole lugenud, miks Ă”htu oli KĂŒproses kĂŒlm, siis saab sellest teada . PĂ€rast mĂ”ningast mĂ”tlemist otsustasin alustada veebikursiga algoritmidest ja andmestructuuridest. Ăksendine kolleeg rÀÀkis mulle Robert Sedgewicki kursusest Courseras. Kursus koosneb kahest osast ( ja ). Kui juhuslikult lingid muutuvad, siis saab alati otsida autori nime jĂ€rgi. Iga osa kestab 6 nĂ€dalat. NĂ€dala alguses antakse loengud ja nĂ€dala jooksul tuleb veel ĂŒlesandeid lahendada. Kursuse esimene osa katab pĂ”histruktuurid, pĂ”hilised sorteerimismeetodid ja algoritmide keerukuse. Teine osa on juba edasijĂ”udnum, alustades graafidest ja lĂ”petades selliste asjadega nagu lineaarne programmeerimine ja keerukus. KĂ”ike eelnevat kaaludes jĂ”udsin jĂ€reldusele, et see on just see, mida ma vajan. Siinkohal vĂ”ib uurida kĂŒsiv lugeja, milleks Google sellega seondub. TĂ”epoolest, kuni selle hetkeni ei olnud Google sellega ĂŒldse seotud. Aga mul oli vaja eesmĂ€rki, sest 12 nĂ€dalat Ă”htuti Ă”ppida eesmĂ€rgita on veidi keeruline. Ja mis vĂ”iks olla eesmĂ€rk uute teadmiste omandamisel? Muidugi, nende rakendamine praktikas. IgapĂ€evaelus on see piisavalt keeruline, kuid suurte ettevĂ”tete intervjuudes vĂ”ib see toimida. Kiire Google'i otsing nĂ€itas, et Google (palun vabandage tautoloogiat) on ĂŒks suurimaid ettevĂ”tteid Euroopas (kuna ma keskendusin just Euroopale), kus selliseid intervjuusid korraldatakse. Nimelt asub nende kontor ZĂŒrichis, Ć veitsis. Nii et otsustatud â Ă”pime ja lĂ€heme Google'isse intervjuule.
Valmistumine esimesele katsele
12 nÀdalat möödus mÀrkamatult ja lÔpetasin mÔlemad kursused. Minu kogemused kursustega on vÀga positiivsed ja soovitan neid kÔigile huvilistele. Mulle meeldisid need kursused jÀrgmiste pÔhjuste tÔttu:
- Lektor rÀÀgib piisavalt selges inglise keeles
- Materjal on hÀsti struktureeritud
- Ainulaadsed esitused, mis nÀitavad iga algoritmi sisemust
- Kvaliteetne materjali valik
- Huvitavad harjutused
- Harjutused kontrollitakse automaatselt veebis, mille jÀrel moodustatakse aruanne
Minu töö kursuste kallal kulges tavaliselt jĂ€rgmise kava kohaselt. 1-2 pĂ€evaga kuulasin loengud Ă€ra. SeejĂ€rel sooritasin kiire testi teadmiste kohta. ĂlejÀÀnud nĂ€dalal tegin harjutust mitmes iteratsioonis. PĂ€rast esimest sain 30-70%, jĂ€rgmised tĂ”id tulemuse 97-100%. Harjutus koosnes tavaliselt mingi algoritmi rakendamisest, nĂ€iteks vĂ”i .
Kursuste lĂ”petamisest sain aru, et teadmised toovad sageli kurbusi. Kui varem teadsin lihtsalt, et ei tea midagi, siis nĂŒĂŒd hakkasin teadma, mida ma tegelikult ei tea.
Kuna oli alles mai kuu ja olin planeerinud vestluse sĂŒgisel, otsustasin jĂ€tkata oma haridusteed. PĂ€rast töökuulutuste nĂ”udmiste vaatamist tehti otsus jĂ€tkata kahe suunaga: jĂ€tkata algoritmide uurimist ja lĂ€bida pĂ”hikursus masinĂ”ppes. Esimese eesmĂ€rgi saavutamiseks otsustasin vahetada kursused raamatu vastu ning valisin Steven Skiena mahuka teose âAlgsed viisid. Arendamise juhendâ (The Algorithm Design Manual). See ei ole nii monumentaalne kui Knuthi oma, aga siiski. Teise eesmĂ€rgi tĂ€itmiseks lĂ€ksin taas Courserasse ja registreerusin Andrew Ăng'i kursusele .
Möödus veel 3 kuud ja lÔpetasin kursuse ja raamatu.
Alustame raamatust. Lugemine oli ĂŒsna huvitav, ehkki mitte lihtne. Asjaomaste soovituste korral vĂ”iksin ma raamatut soovitada, kuid mitte nii lihtsalt. Ăldiselt annab raamat pĂ”hjalikuma analĂŒĂŒsi sellest, mida ma kursustel Ă”ppisin. Lisaks avasin ma enda jaoks (formaalsest vaatenurgast) selliseid asju nagu heuristikad ja dĂŒnaamiline programmeerimine. Loomulikult olen ma nendega varem kokku puutunud, kuid ma ei teadnud nende nimetusi. Raamat sisaldab ka autori elust mĂ”ned anekdoodid (War Story), mis natuke leevendavad akadeemilist sisu. Raamat tuvi teine pool, muide, vĂ”iks isegi vahele jĂ€tta, seal on pigem olemasolevate probleemide ja nende lahendamise meetodite kirjeldus. See on kasulik, kui rakendad seda praktikas regulaarselt, vastasel juhul unustad kohe.
Kursus rÔÔmustas mind rohkem kui eelnevad. Autor teab selgelt, mida teeb, ja rÀÀgib huvitavalt. Samuti mĂ€letasin ma suure osa sisu, eelkĂ”ige lineaarset algebrat ja tehisnĂ€rvivĂ”rgustike algtĂ”desid, veel ĂŒlikoolist, nii et eriliselt suuri raskusi ei tekkinud. Kursuse struktuur on ĂŒsna tavaline. Kursus on jagatud nĂ€dalateks. Igal nĂ€dalal toimuvad esmalt loengud koos lĂŒhikeste testidega. PĂ€rast loengut antakse ĂŒlesanne, mis tuleb teha, saata ja see kontrollitakse automaatselt. LĂŒhidalt, kursusel kĂ€sitletavad teemad on jĂ€rgmised:
â kulu funktsioon
â lineaarne regressioon
â gradientne langus
â tunnuste skaleerimine
â normaalne vĂ”rrand
â logistiline regressioon
â mitmeklassiline klassifikatsioon (ĂŒks versus kĂ”ik)
â tehisnĂ€rvivĂ”rgud
â tagasiminek
â regulariseerimine
â kallutus/variatsioon
â Ă”ppimiskĂ”verad
â veamÔÔdikud (tĂ€psus, mĂ€lestus, F1)
â toetavad vektor masinad (suure marginaali klassifikatsioon)
â K-mean
â Peamised Komponendid AnalĂŒĂŒs
â anomaaliate tuvastamine
â koostööfilter (soovitussĂŒsteem)
â stokastilised, mini-partii, partiiliste gradientide langused
â online Ă”ppimine
â kaardi vĂ€hendamine
â lae analĂŒĂŒs
PÀrast kursuse lÀbimist oli mul arusaam kÔigist neist teemadest. 2 aasta pÀrast olin juba peaaegu kÔik loomulikult unustanud. Soovitan neid, kes ei ole tuttavad masinÔppega ja soovivad saada head arusaama pÔhikontseptsioonidest edasiviimiseks.
Esimene lÀhenemine
KĂ€es oli juba september ja oli aeg mĂ”elda intervjuu peale. Kuna veebisaidi kaudu kandideerimine on ĂŒsna keeruline, keskendusin tuttavate leidmisele, kes töötavad Google'is. Valik langes , kuna ta oli ainus, keda ma isiklikult tundsin (kuigi mitte isiklikult). Ta nĂ”ustus edastama mu CV ja varsti sain vĂ€rbajalt kirja, kus pakuti, et broneerin kalendris aja esimeseks kĂ”neks. Paar pĂ€eva hiljem toimus kĂ”ne. Proovisime suhelda Hangouts'is, aga kvaliteet oli kohutav, seega vahetasime telefoni peale. Alguses rÀÀkisime kiiresti tavakĂŒsimustest, miks ja kuidas, seejĂ€rel lĂ€ksime tehnilisele skriiningule. See koosnes kĂŒmnest kĂŒsimusest stiilis âkui keeruline on sisestamine hash map'iâ, âmilliseid tasakaalustatud puid sa teadâ. Ei midagi keerulist, kui on baasteadmised. Skriining kulges hĂ€sti ja tulemuste pĂ”hjal otsustati korraldada esimene intervjuu nĂ€dala pĂ€rast.
Intervjuu toimus samuti Hangouts'is. Alguses rÀÀkisime viis minutit minust, seejĂ€rel lĂ€ksime ĂŒlesande juurde. Ălesanne oli grafide kohta. MĂ”istsin kiiresti, mida teha, kuid valisin vale algoritmi. Kui hakkasin koodi kirjutama, taipasin seda ja vahetasin teise variandi peale, mille lĂ”puks ka lĂ”petasin. Intervjueerija esitas mitu kĂŒsimust algoritmi keerukuse teemal, kĂŒsis, kas on vĂ”imalik kiiremini. Ma jĂ€in kuidagi toppama ja ei osanud vastata. Sellega aeg sai otsa ja me hĂŒvasti jĂ€ime. Peaaegu 10 minutiga jĂ”udis minuni, et selle ĂŒlesande puhul oleks Dijkstra algoritmi asemel sobilikum kasutada laiendamatut otsingut, mis oleks olnud kiirem. MĂ”ne aja pĂ€rast helistas vĂ€rbaja ja ĂŒtles, et intervjuu lĂ€ks tervikuna hĂ€sti ning tuleks korraldada veel ĂŒks. Lepisime kokku uue nĂ€dala pĂ€rast.
Seekord lĂ€ksid asjad halvemini. Kui esimeses intervjuus oli kĂŒsitleja sĂ”bralik ja avatud, siis seekord oli ta kuidagi sĂŒnge. Ălesannet ma kohe Ă€ra ei arvanud, kuigi need ideed, mida ma andsin, oleks pĂ”himĂ”tteliselt vĂ”inud viia lahenduseni. LĂ”puks, pĂ€rast mitmeid kĂŒsitleja vihjeid, sain ma lĂ”puks lahenduse kĂ€tte. Seekord keeras see jĂ€lle vĂ€lja laiutamisena, ainult mitmest punktist. Lahenduse kirjutasin ĂŒles, ajaliselt sain hakkama, kuid unustasin ÀÀrmiste juhtumite kohta. MĂ”ne aja pĂ€rast helistas vĂ€rbaja ja ĂŒtles, et seekord ei olnud kĂŒsitleja rahul, sest tema arvates vajas ma liiga palju vihjeid (3 vĂ”i 4 tĂŒkki) ja ma pidevalt muutsin koodi kirjutamise ajal. Kahe intervjuu pĂ”hjal tehti otsus edasi mitte minna, vaid jĂ€rgmine intervjuu edasi lĂŒkata aastaks, kui mul on selleks soov. Sellega oligi kĂ”ik.
Ja sellest loost tegin ma mÔned jÀreldused:
- Teooria on hea, kuid selles tuleb kiiresti orienteeruda.
- Teooria ilma praktikata ei aita. Tuleb lahendada ĂŒlesandeid ja viia koodi kirjutamine automaatseks.
- Palju sĂ”ltub kĂŒsitlejast. Sellega ei saa midagi teha.
Teise katse ettevalmistus
MĂ”eldes olukorrale, otsustasin proovida aasta pĂ€rast uuesti. Ning mu eesmĂ€rki muudeti veidi. Kui varem oli peamine eesmĂ€rk Ă”ppimine ja intervjuu Google'is nagu kauge porgand, siis nĂŒĂŒd oli intervjuu lĂ€bimine eesmĂ€rk, Ă”ppimine aga vahend.
Seega oli vÀlja töötatud uus plaan, mis sisaldas jÀrgmisi punkte:
- JÀtkata teooria Ôppimist raamatute ja artiklite lugemise kaudu.
- Lahendada algoritmilisi ĂŒlesandeid koguses 500-1000 tĂŒkki.
- JÀtkata teooria Ôppimist videote vaatamise kaudu.
- JÀtkata teooria Ôppimist kursuste kaudu.
- Uurida teiste inimeste kogemusi Google'i intervjuude lÀbimisel.
Plaan viidi ellu aasta jooksul. Edasi kirjeldan, mida tÀpselt ma iga punkti juures tegin.
Raamatud ja artiklid
Lugemiseni jÔudnud artiklite arvu ma isegi ei mÀleta, lugesin neid nii vene kui ka inglise keeles. KÔige kasulikumaks said ilmselt . Siin on kokku pandud suur hulk huvitavate algoritmide kirjeldusi koos koodinÀidetega.
Olen lugenud 5 raamatut: Algorithms, 4. vĂ€ljaanne (Sedgewick, Wayne), Introduction to Algorithms 3. vĂ€ljaanne (Cormen, Leiserson, Rivest, Stein), Cracking the Coding Interview 4. vĂ€ljaanne (Gayle Laakmann), Programming Interviews Exposed 2. vĂ€ljaanne (Mongan, Suojanen, Giguere), Elements of Programming Interviews (Aziz, Lee, Prakash). Need vĂ”ib jagada kaheks kategooriaks. Esimene sisaldab Sedgewicki ja Cormeni raamatuid. See on teooria. ĂlejÀÀnud raamatud on ettevalmistuseks intervjuudeks. Sedgewick rÀÀgib oma raamatus enam-vĂ€hem sama, mis tema kursustes. Lihtsalt kirjalikult. Pole eriliselt mĂ”tet hoolikalt lugeda, kui olete kursuse lĂ€binud, kuid kiirkatsuda tasub igal juhul. Kui te kursust ei ole vaadanud, siis on mĂ”tet lugeda. Cormen tundus mulle liigagi igav. Ausalt öeldes ma piirdusin raskustega sellega. , ja mĂ”ned harva kasutatavad andmestruktuurid (Fibonacci heap, van Emde Boas tree, radix heap).
Intervjuu ettevalmistamiseks tasub lĂ€bi lugeda vĂ€hemalt ĂŒks raamat. Need kĂ”ik on ĂŒles ehitatud enam-vĂ€hem ĂŒhe ja sama printsiibi jĂ€rgi. Need kirjeldavad intervjuu protsessi suurtes tehnoloogiaettevĂ”tetes, pakuvad pĂ”hilisi asju arvutiteadusest, ĂŒlesandeid nende pĂ”hiteadmiste kohta, ĂŒlesannete lahendusi ja lahenduste analĂŒĂŒsi. Nendest kolmest soovitaksin ma Cracking the Coding Interview kui peamist, ĂŒlejÀÀnud soovi korral.
Algoritmilised ĂŒlesanded
See oli ilmselt kĂ”ige huvitavam ettevalmistuse punkt. Loomulikult vĂ”ib istuda ja lihtsalt ĂŒlesandeid lahendada. Selleks on palju erinevaid saite. Ma kasutasin enamasti kolme: , ja . CodeChef`is on ĂŒlesanded jagatud keerukuse jĂ€rgi, kuid mitte teemade kaupa. Hackerrank`is on jagatud nii keerukuse kui ka teemade jĂ€rgi.
Aga nagu ma kohe endale selgeks tegin, on olemas huvitavam viis. Ja see on vĂ”istlused (programming challenges vĂ”i programming contests). KĂ”ik kolm saiti pakuvad neid. TĂ”si, LeetCode`iga on probleem â ebamugav ajavöönd. Seega ma ei osalenud sellel saidil. Hackerrank ja CodeChef pakuvad piisavalt suurt hulka erinevaid vĂ”istlusi, kestusega 1 tunnist kuni 10 pĂ€evani. Erinevatel formaatidel on erinevad reeglid, aga jah, sellest vĂ”ib pikalt rÀÀkida. PĂ”hjuseks, miks vĂ”istlused on head, on see, et nad toovad Ă”ppimise protsessi konkurentsiti elemente.
Kokku olen osalenud 37 vĂ”istluses Hackerrankis. Nendest 32 olid hinnatud ja 5 kas sponsorite poolt (ma isegi teenisin 25 dollarit ĂŒhes neist) vĂ”i lihtsalt lĂ”bu pĂ€rast. Hinnatud vĂ”istlustes olen ma 10 korda jĂ”udnud 4% parimasse, 11 korda 12% parimasse ja 5 korda 25% parimasse. Parimad tulemused olid 27/1459 kolme tunni jooksul ja 22/9721 nĂ€dalas.
Tulin CodeChef'i, kui Hackerrankis hakkasid vĂ”istlused harvemaks jÀÀma. Kokku olen suutnud osaleda 5 vĂ”istluses. Parim tulemus oli 426/5019 kĂŒmme pĂ€eva kestnud vĂ”istlusel.
Kokku olen vĂ”istlustel ja lihtsalt niisama lahendanud ĂŒle 1000 ĂŒlesande, mis mahtus plaani. Kahjuks ei ole praegu vaba aega vĂ”istlusjĂ€rgsete tegevuste jĂ€tkamiseks, samuti ei ole eesmĂ€rki, mille alla vĂ”iksin liigitada oma mittevaba aega. Aga see oli lĂ”bus. Soovitan neil, kes sellest huvitatud, leida kaaslasi. Kahekesi vĂ”i grupina on palju huvitavam. Ma tegelesin sellega koos sĂ”braga, seetĂ”ttu vĂ”ib-olla lĂ€ks see nii hĂ€sti.
Videote vaatamine
Lugedes Skeen'i raamatut, huvitusin pĂ”himĂ”tteliselt temast, mida ta teeb. Nagu Sedgwick, on ta professor ĂŒlikoolis. SeetĂ”ttu on internetis vĂ”imalik leida videoklippe tema kursustest. Otsustasin vaadata kursust . Ma ei saa öelda, et see mulle vĂ€ga meeldis. Esiteks ei olnud video kvaliteet eriti hea. Teiseks ei proovinud ma ise lahendada kursuse kĂ€igus kĂ€sitletud ĂŒlesandeid. SeetĂ”ttu ei olnud kaasatus eriti kĂ”rge.
Samuti ĂŒlesandeid lahendades, pĂŒĂŒdes leida Ă”iget algoritmi, leidsin ma Tushar Roy videoid. Ta töötas Amazonis ja praegu töötab Apple'is. Hiljem selgus, et tal on , kus ta avaldab erinevate algoritmide analĂŒĂŒse. Artikli kirjutamise hetkel sisaldab kanal 103 videot. Ja peab ĂŒtlema, et tema analĂŒĂŒs on vĂ€ga korralik. Proovisin vaadata ka teisi autoreid, kuid need ei olnud just minu jaoks. Seega vĂ”in seda kanalit kindlasti soovitada vaatamiseks.
Kursuste lÀbimine
Siin ma eriti millegagi ei tegelenud. Vaatasin Google'i Android Developer Nanodegree'i videosid ja lĂ€bis ITMO kursuse . Nanodegree oli tĂ€iesti korralik, kuigi ma ei Ă”ppinud sealt loomulikult midagi uut. ITMO kursus oli teoorias pisut kokku tĂ”mmatud, kuid ĂŒlesanded olid huvitavad. Ma ei soovitaks alustada sellest, kuid pĂ”himĂ”tteliselt ei olnud aega selle peale raisatud.
Uurida teiste inimeste kogemusi
Loomulikult on palju inimesi pĂŒĂŒdnud Googleâi pÀÀseda. Keegi pÀÀses, keegi mitte. MĂ”ned kirjutasid sellest artikleid. Huvitav on vĂ”ib-olla mĂ€rkida ja . Esimeses variandis koostas inimene endale nimekirja asjadest, mida ta peab Ă”ppima, et saada Software Engineerâiks ja pÀÀseda Googleâi. LĂ”puks jĂ”udis ta Amazoni, kuid see ei ole enam nii oluline. Teine kĂ€siraamat on kirjutatud Googleâi inseneri, Larissa Agarova poolt (). Lisaks sellele dokumendile saab lugeda ka .
. Tasub lugeda Glassdoorâi intervjuude arvustusi. Need on enam-vĂ€hem sarnased, kuid mingit kasulikku teavet saab siiski vĂ€lja noppida.
Ma ei hakka linkima teisi vĂ€ikeseid artikleid, te suudate need ise Googleâist kenasti leida.
Teine katse
Ja nĂŒĂŒd on aasta möödunud. See oli ĂŒsna intensiivne Ă”pingute osas. Kuid uue sĂŒgise lĂ€henedes omasin ma palju sĂŒgavamaid teoreetilisi teadmisi ja harjutatud praktilisi oskusi. Aega, mis mul oli ette nĂ€htud ettevalmistamiseks, jĂ€i veel mĂ”ni nĂ€dal, kui ĂŒhtĂ€kki tuli mu Gmaili inboxi kiri Googleâi vĂ€rbajalt, kes kĂŒsis, kas mul on endiselt soov töötada Googleâis ning kas ma oleksin nĂ”us temaga vestlema. Loomulikult olin ma nĂ”us. Leppisime kokku, et helistame nĂ€dalal.
Kuna vestlemise kĂ€igus otsustati, et nĂ€dal hiljem toimub Hangouts intervjuu, kĂ”ik nagu eelmisel aastal. NĂ€dal möödus, tuli intervjuu aeg, kuid intervjuuer ei ilmunud. 10 minutit möödus, hakkasin juba nĂ€rvitsema, kui Ă€kki keegi liitus vestlusega. Nagu selgus, ei saanud mu intervjuuer mingil pĂ”hjusel tulla ja talle leiti kiiresti asendus. Inimene ei olnud ette valmistatud ega arvuti seadistamiseks ega intervjuu lĂ€biviimiseks. Kuid seejĂ€rel lĂ€ks kĂ”ik hĂ€sti. Lahendasin ĂŒlesande kiiresti, selgitasin, kus vĂ”ivad olla konksud ja kuidas neid vĂ€ltida. RÀÀkisime erinevatest ĂŒlesande variantidest ja algoritmi keerukusest. Siis vestlesime veel 5 minutit, insener rÀÀkis oma muljetest tööst MĂŒnchenis (ZĂŒrichis ei leitud ilmselt kiiret asendajat), ja sellega meie kohtumine lĂ”ppes.
Sama pĂ€ev kontaktis minuga vĂ€rbaja ja ĂŒtles, et vestlus lĂ€ks suurepĂ€raselt ning nad on valmis mind kutsub kontorisse intervjuule. JĂ€rgmisel pĂ€eval helistasime Hangoutsi kaudu ning arutasime detailselt. Kuna mul oli vaja viisat taotleda, otsustasime intervjuu kuu aja pĂ€rast kokku leppida.
Kui ma dokumente ette valmistasin, arutasin koos vĂ€rbajaga eelseisvat intervjuud. Standardne intervjuu Googles koosneb neljast algoritmilisest ja ĂŒhest sĂŒsteemidisaini osast. Kuid kuna ma kandideerisin Android arendajana, öeldi mulle, et osa intervjuust on seotud Android spetsiifikaga. Millised konkreetselt ja milles see spetsiifika seisneb, ei suutnud ma vĂ€rbajalt vĂ€lja kaevata. Nii palju kui ma aru sain, on see suhteliselt hiljuti kehtestatud ja tema ei olnud ka vĂ€ga kursis. Samuti registreeriti mind kahele harjutussessioonile: kuidas lĂ€bida algoritmilist intervjuud ja kuidas lĂ€bida sĂŒsteemidisaini intervjuud. Sessioonid olid keskmise kasulikkusega. Seal ei suutnud ka keegi rÀÀkida, mida kĂŒsitakse Android arendajatelt. SeetĂ”ttu piirdus minu ettevalmistus sellel kuul jĂ€rgnevaga:
- Markeritahvli ostmine ja 2-3 tosinat kĂ”ige populaarsemat algoritmi sellel mĂ€lus kirjutamine. 3-5 tĂŒkki iga pĂ€ev. Kokku on igaĂŒks kirjutatud mitu korda.
- Erineva teabe meelde tuletamine Androidi kohta, mida ma iga pÀev ei kasuta.
- MÔne video vaatamine Big Scale'ist ja kÔigest muust sellisest.
Kuidas ma juba rÀÀkisin, tegin samaaegselt reisi jaoks dokumente. Esiteks kĂŒsiti minult andmeid, et koostada kutsekaart. Siis ĂŒritasin kaua vĂ€lja selgitada, kes KĂŒprosel teeb Ć veitsi viisasid, kuna Ć veitsi saatkond ei tegele sellega. Selgus, et sellega tegeleb Austria konsulaat. Helistasin ja registreerisin end vastuvĂ”tule. Seal nĂ”uti hulka dokumente, kuid mitte midagi eriti huvitavat. Foto, pass, elamisluba, hunnik erinevaid tĂ”endeid ja loomulikult kutsekaart. Kutsekaart ei tulnud siiski kaua. LĂ”puks sĂ”itsin tavalise vĂ€ljak printimisega ja see toimis kenasti. Kutsekaart tuli jĂ”udnud uus kolm pĂ€eva hiljem, ning KĂŒprose FedEx ei suutnud mu aadressi leida, nii et pidin ise selle jĂ€rele minema. Samuti sain seal samas FedExâis paki, mida nad ei suutnud mulle ka toimetada, kuna nad ei leidnud aadressi, ja mis seal oli langenud juunist (5 kuud, Karl). Kuna ma ei teadnud sellest, siis ei osanud ma ka arvata, et see neile on. Viisa sain Ă”igeaegselt, pĂ€rast mida broneeriti mulle hotell ja pakkus mulle lennuvariandid. Tegin lendude vĂ”imalusi mugavamaks. Otselende ei olnud, seega lendasin sinna lĂ€bi Ateena ja tagasi lĂ€bi Viini.
PĂ€rast seda, kui kĂ”ik reisiga seotud formaalsused olid aetud, möödus veel mĂ”ned pĂ€evad ja ma lendasin ZĂŒrichisse. JĂ”udsin kohale ilma seiklusteta. Lennujaamast linna sĂ”itsin rongiga â kiire ja mugav. Natuke eksledes leidsin hotelli ja registreerisin end sisse. Kuna hotell oli broneeritud ilma söögita, Ă”htustasin kĂ”rval ning heitsin magama, sest lend oli hommikune ja vĂ€simus oli suur. JĂ€rgmisel pĂ€eval sĂ”in hotellis hommikusööki (eraldi tasu eest) ja suundusin Google'i kontorisse. ZĂŒrichis on Google'il mitmeid kontoreid. Minu intervjuu ei toimunud keskuses. Ăldiselt nĂ€gi kontor vĂ€lja ĂŒsna tavaline, nii et ei saanud ma nĂ€ha kĂ”iki
Intervjuu number ĂŒks
Esimene intervjuu oli just Androidi teemal. Pealegi ei olnud see ĂŒldse seotud algoritmidega. Ăllatus, eks. Nojah, pole hullu, nii on isegi harjumuslikum. Paluti luua teatud UI-komponent. Esiteks arutasime, mida ja kuidas teha. Pakun lahendust RxJava'ga, selgitasin, mida ja miks ma teeksin. Ăeldi, et see on muidugi hea, aga teeme Androidi raamistiku vahenditega. Ja samal ajal kirjutame koodi tahvlile. Ja see polnud lihtsalt komponent, vaid kogu Activity, mis kasutas seda komponenti. Selliseks ettepanekuks ei olnud ma valmis. Ăks asi on kirjutada algorĂŒtm 30-50 rida tahvlile, aga midagi sellist nagu Androidi kood, isegi kui see on lĂŒhendatud ja kommenteeritud stiilis "noh, seda ma ei hakka kirjutama, sest see on ju selge". Tuli mingi segapuder kolmele tahvlile. See tĂ€hendab, et probleemi lahendasin, kuid see nĂ€gi nĂ”nda vĂ€lja, et...
Intervjuu number kaks
Seekord oli intervjuu algoritmide teemal. Ja intervjuereid oli kaks. Ăks oli tegelik intervjuuer, teine noor Ă”ppur (shadow interviewer). Tuleb vĂ€lja mĂ”elda and estrutura, millel on teatud omadused. Esiteks arutasime probleemi nagu tavaliselt. Esitasin erinevaid kĂŒsimusi, intervjuuer vastas. Ăsna pea paluti kirjutada mĂ”ned meetodid vĂ€ljamĂ”eldud struktuuri tahvlile. Seekord Ă”nnestus enam-vĂ€hem, kuigi mĂ”ne vĂ€ikese vea tĂ”ttu, mille parandasin intervjuu eest kostitaja nĂ”uande alusel.
Intervjuu number kolm
Seekord oli tegemist sĂŒsteemi disainiga, mis Ă€kitselt osutus ka Androidiks. Tuleb arendada rakendust, millel on kindel funktsionaalsus. Arutasime rakenduse, serveri ja suhtlusprotokolli nĂ”udeid. SeejĂ€rel hakkasin kirjeldama, milliseid komponente vĂ”i teeke kasutaksin rakenduse loomisel. Ja siis, kui mainisin Job Schedulerit, tekkis vĂ€ike takistus. Asi on selles, et ma pole kunagi seda praktikas kasutanud, sest selle turule tulekul hakkasin toetama rakendusi, kus selliseks rakenduseks polnud vajadust. JĂ€rgmiste vĂ€ljatöötamiste puhul oli sama. Teoreetiliselt tean, mis asi see on, millal ja kuidas seda kasutatakse, kuid kogemust ei ole. Ja intervjuuerile see nĂ€ib eriti ei meeldinud. Siis paluti kirjutada kood. Jah, rakenduse vĂ€ljatöötamisel peab kohe koodi kirjutama. Taas Androidi kood tahvlile. Tulemus oli jĂ€lle kohmakas.
LÔuna
Pidi veel ĂŒks inimene tulema, aga ta ei tulnud. Isegi Google'il on möödalaskmisi. LĂ”puks lĂ€ksin lĂ”unale koos eelneva intervjuu korraldaja, tema kolleegi ja hiljem liitunud jĂ€rgmise intervjuijaga. LĂ”una oli tĂ€iesti arvestatav. Taaskord, kuna see ei olnud ZĂŒrichis peamine kontor, nĂ€gi kantseleid ĂŒsna tavalised, kuigi vĂ€ga meeldivad.
Intervjuu number neli
LĂ” finally, puhastest algoritmidest. Esimese ĂŒlesande lahendasin piisavalt kiiresti ja kohe tĂ”husalt, kuid eksisin ĂŒhe piirjuhtumi osas, kuid intervjuija vihje abil (ta tĂ”i vĂ€lja selle piirjuhtumi) leidsin probleemi ja parandasime. Loomulikult pidi kirjutama koodi tahvlile. Siis anti sarnane, kuid keerulisem ĂŒlesanne. Selle jaoks leidsin paar mitteoptimaalset lahendust ja peaaegu leidsin optimaalse, lihtsalt puudus 5-10 minutit, et mĂ”tet lĂ”puni viia. Niisiis, ei jĂ”udnud ma selle jaoks koodi kirjutada.
Intervjuu number viis
Ja jÀlle Androidi intervjuu. Huvi, miks ma Ôpetasin algoritme terve aasta?
Alguses kĂŒsiti paar lihtsat kĂŒsimust. Siis kirjutas intervjuija tahvlile koodi ja palus leida selles probleemid. Leidsin, selgitasin, parandasime. Arutlesime. Ja siis tuli paar ootamatut kĂŒsimust vaimus "mida teeb klassis X meetod Y", "mida teeb meetod Y sees", "mida teeb klass Z". Midagi vastasin kindlasti, kuid siis ĂŒtlesin, et ei ole viimase aja töös sellega kokku puutunud ja loomulikult ei mĂ€leta, kes, mis ja kuidas detailides teeb. PĂ€rast seda kĂŒsis intervjuija, mida ma praegu teen. Ja kĂŒsimused lĂ€ksid selle teema peale. Siin vastasin juba palju paremini.
PĂ€rast viimase intervjuu lĂ”ppu vĂ”eti mul pass, sooviti edu ja saadeti minema. Jalutasin veidi ringi, sĂ”in Ă”htusööki ja lĂ€ksin hotelli, kus kukkusin magama, kuna lend oli jĂ€lle varakult hommikul. JĂ€rgmisel pĂ€eval sain probleemideta KIPL'i. Kirjutasin rekruuteri soovitusel tagasiside intervjuu kohta ja tĂ€itsin spetsiaalses teenuses vormi tagasi saadud kulude jaoks. KĂ”igist kulutustest katab Google otse ainult lennupiletid. Hotell, toit ja transport makstakse kandidaadi poolt. SeejĂ€rel tĂ€idame vormi, lisame tĆĄekid ja saadame spetsiaalsesse bĂŒroosse. Nad töötlevad selle ja piisavalt kiiresti kantakse raha kontole.
Intervjuu tulemuste töötlemiseks kulus ĂŒks ja pool nĂ€dalat. PĂ€rast seda teavitasid nad mind, et olin "veidi alla oodatava taseme". Siiski, kaks intervjuud lĂ€ksid hĂ€sti, kaks mitte nii hĂ€sti ja sĂŒsteemidisain oli vĂ€ga kehv. Kui vĂ€hemalt kolm intervjuud oleks lĂ€inud hĂ€sti, oleks olnud vĂ”imalus (vĂ”idelda), aga praegu pole mingit lootust. Pakuti, et vĂ”iksin proovida uuesti aasta pĂ€rast.
Alguses olin muidugi kurvastanud, kuna ettevalmistuseks kulus palju vaeva, ja intervjuu ajaks olid mul juba kĂŒpsenud mĂ”tted Ciprust lahkuda. Töö leidmine Googles ja kolimine Ć veitsi tundusid suurepĂ€rase vĂ”imalusena.
KokkuvÔte
Siin jĂ”uame artikli lĂ”pupoole. Jah, ma ei saanud Googleâis kahel korral intervjuust lĂ€bi. See on kahetsusvÀÀrne. Eks oleks seal töötada huvitav. Kuid asja vĂ”ib vaadata ka teisest kĂŒljest.
- Poolteise aastaga olen Ôppinud tohutult palju tarkvaraarendusega seotud asju.
- Osalemine programmeerimisvÔistlustel pakkus mulle suurt nautimist.
- KĂ€isin paar pĂ€eva ZĂŒrichis. Millal ma sinna veel satun?
- Sain huvitava intervjuukogemuse ĂŒhes maailma suurimas IT-ettevĂ”ttes.
Nii et kĂ”ike, mis nende poolteise aasta jooksul juhtus, saab pidada lihtsalt Ă”ppimiseks vĂ”i treeninguks. Ja selle treeningu tulemused on tuntavad. Minu mĂ”tted Ciprust lahkuda kĂŒpses (mĂ”ningatel peresuhtega seotud asjaoludel), ma lĂ€bis mitu intervjuud teises tuntud ettevĂ”ttes ja kaheksa kuu pĂ€rast kolisin. Kuid see on juba hoopis teine lugu. Sellegipoolest arvan, et peaksin aitama tĂ€nada Googleâit nende poolteise aasta eest, mille ma enda arendamisele pĂŒhendasin, ning kahe huvitava pĂ€eva eest ZĂŒrichis.
Mida ma lĂ”puks öelda saan. Kui töötate IT-s, valmistuge Googleâi (Amazon, Microsoft, Apple jne) intervjuudeks. VĂ”ib-olla pÀÀsete kunagi sinna sisse. Isegi kui ei taha, uskuge mind, sellisest ettevalmistusest ei ole kahju. Ainult siis, kui mĂ”istate, et saate (isegi ainult siis, kui tingimused on soodsad) ĂŒhe neist ettevĂ”tetest intervjuust lĂ€bi, avab see teie ees palju rohkem vĂ”imalusi, kui enne ettevalmistuse algust. KĂ”ik, mida vajate teel, on eesmĂ€rk, visadus ja aega. Soovin teile edu đ
Allikas: habr.com
