
Artikli pealkiri kĂ”lab nagu epic fail, kuid tegelikult ei ole kĂ”ik nii ĂŒheselt mĂ”istetav. Ăldiselt lĂ”ppes see lugu ĂŒsna positiivselt, kuigi mitte Googleâis. Kuid see on juba teema teiseks artikliks. Selles artiklis rÀÀgin kolmest asjast: kuidas toimus minu ettevalmistusprotsess, kuidas kĂ€isid intervjuud Googleâis ja miks ma arvan, et kĂ”ik ei ole nii ĂŒheselt mĂ”istetav, nagu see paista vĂ”ib.
Kuidas kÔik algas
Ăhel kĂŒlmal kĂŒprose talveĂ”htul tuli mulle jĂ€rsku meelde, et minu teadmised klassikalisest arvutiteadusest on kaugel isegi keskmisest, ja selle kallal tuleb midagi teha. Kui keegi pole veel lugenud, miks Ă”htu oli kĂŒprose ja kĂŒlm, siis sellest saab teada . PĂ€rast mĂ”ningaid mĂ”tteid otsustasin alguses lĂ€bida veebikursuse algoritmidest ja andmestruktuuridest. Ăhelt endiselt kolleegilt kuulsin Robert Sedgewicki kursusest Courseras. Kursus koosneb kahest osast ( ja ). Kui lingid peaksid muutuma, on alati vĂ”imalik autorinime jĂ€rgi otsida. Iga kursuse osa kestab 6 nĂ€dalat. NĂ€dala alguses antakse loengud ja nĂ€dala jooksul tuleb teha ka harjutusi. Esimene kursuse osa kĂ€sitleb pĂ”histruktuure, peamisi sortimisviise ja algoritmide keerukust. Teine osa on juba keerulisem, alustades graafidest ja lĂ”petades selliste teemadega nagu lineaarne programmeerimine ja lahendamatud probleemid. MĂ”eldes kĂ”igile eelnevatele punktidele, jĂ”udsin jĂ€reldusele, et see on just see, mida ma vajan. Siinkohal vĂ”ib tĂ€helepanelik lugeja kĂŒsida, mis seos on Google'iga. Ja tĂ”epoolest, enne seda hetke ei olnud ta siia ĂŒldse seotud. Aga mul oli vajalik eesmĂ€rk, sest 12 nĂ€dalat Ă”htuti Ă”ppida eesmĂ€rgita on keeruline. Mis vĂ”iks olla eesmĂ€rk uute teadmiste omandamisel? Loomulikult nende rakendamine praktikas. IgapĂ€evaelus on see piisavalt keeruline, kuid suure ettevĂ”tte tööintervjuul seda teha pole palju raskusi. Kiire Google'i otsing nĂ€itas, et Google (palun andestasite tautoloogia) on ĂŒks Euroopa suurimaid ettevĂ”tteid (ja ma vaatasin just Euroopa), kus selliseid intervjuusid viiakse lĂ€bi. TĂ€psemalt öeldes, nende kontor asub ZĂŒrichis, Ć veitsis. Nii et on otsustatud â Ă”pime ja lĂ€heme Google'isse tööintervjuule.
Valmistumine esimeseks katseks
12 nÀdalat möödusid mÀrkamatult ja lÔpetasin mÔlemad kursused. Minu muljed kursustest on rohkem kui positiivsed ja soovitan neid kÔigile huvilistele. Mulle meeldisid need kursused jÀrgmiste pÔhjuste tÔttu:
- Lektor rÀÀgib piisavalt selget inglise keelt
- Materjal on hÀsti struktureeritud
- VÔrratud esitused, mis nÀitavad iga algoritmi sisemust
- Asjakohane materjali valik
- Huvitavad harjutused
- Harjutusi kontrollitakse automaatselt saidil, mille jÀrel genereeritakse aruanne
Minu töö kursustega kulges tavaliselt jĂ€rgmiselt. 1-2 pĂ€eva jooksul kuulasin loenguid. Siis tegin kiire testi aine tundmise kohta. NĂ€dala ĂŒlejÀÀnud osa tegin harjutust mitmes voorus. Esimese korraga sain 30-70%, jĂ€rgmiste kordadega tĂ”stsin tulemuse 97-100%-ni. Harjutus sisaldas tavaliselt mĂ”ne algoritmi rakendamist, nĂ€iteks vĂ”i .
Kursuste lĂ”petamisel mĂ”istsin, et paljusid teadmisi saadab palju muresid. Kui varem teadsin lihtsalt, et ma ei tea midagi, siis nĂŒĂŒd hakkasin vaikselt mĂ”istma, mida ma tĂ”eliselt ei tea.
Kuna oli alles mai ja ma olin plaane teinud interjueerimiseks sĂŒgisel, otsustasin jĂ€tkata oma haridusteed. PĂ€rast töökuulutuse nĂ”udmiste lĂ€bivaatamist otsustasin taotleda kahte suunda: jĂ€tkata algoritmide uurimist ja lĂ€bida pĂ”hikursus masinĂ”ppe osas. Esimese eesmĂ€rgi jaoks otsustasin kursustelt raamatule ĂŒle minna ja valisin Steven Skiena monumendilise teose âAlgotid. Kujundamise juhendâ (The Algorithm Design Manual). Mitte nii monumendiline kui Knuthi oma, kuid siiski. Teise eesmĂ€rgi jaoks lĂ€ksin taas Courserasse ja registreerisin end Andrew Ng kursusele. .
KÀis veel 3 kuud ja ma lÔpetasin kursuse ning raamatu.
Alustame raamatust. Lugemine osutus piisavalt huvitavaks, kuigi mitte lihtsaks. Ăldiselt soovitaksin raamatut, kuid mitte kohe. Raamat annab sĂŒgavamalt ĂŒlevaate sellest, mida ma kursustel Ă”ppisin. Lisaks avastasin ma (formaalsetest aspektidest vaadatuna) sellised asjad nagu heuristikad ja dĂŒnaamiline programmeerimine. Loomulikult olen ma neid varem kasutanud, kuid ma ei teadnud, kuidas neid nimetatakse. Raamat sisaldab ka mĂ”ned autorite elulood (War Story), mis leevendavad akadeemilise kĂ€sitluse tĂ”sidust. Raamatu teise poole vĂ”ib muide utiliseerida, seal on pigem olemasolevate probleemide ja nende lahendamise meetodite kirjeldus. Kasulik, kui seda regulaarselt praktikas rakendada, vastasel juhul ununeb kiiresti.
Kursus meelitas mind rohkem kui ootasin. Autor tunneb selgelt oma teemat ja tutvustab seda huvitaval viisil. Mulle oli abiks, et mĂ€letasin palju, sh lineaarset algebra ja neuronaalsete vĂ”rkude aluseid, juba ĂŒlikoolist, seega ei kohanud ma erilisi raskusi. Kursuse struktuur on piisavalt tavaline. Kursus on jagatud nĂ€dalateks. Igal nĂ€dalal on kĂ”igepealt loengud koos lĂŒhikeste testidega. Loengute jĂ€rel antakse ĂŒlesanne, mille tuleb lahendada, saata ja see kontrollitakse automaatselt. LĂŒhidalt, kursuse sisu on jĂ€rgmine:
â kulu funktsioon
â lineaarne regressioon
â gradientide langetamine
â tunnuste skaleerimine
â normaalne vĂ”rrand
â logistiline regressioon
â mitmeklassiline klassifitseerimine (ĂŒks vs kĂ”ik)
â neuronaalvĂ”rgud
â tagasivoolu meetod
â regulaarimine
â kallutamine/variatsioon
â Ă”ppimiskĂ”verad
â veavaldused (tĂ€psus, tagasikutsumine, F1)
â Tugivektorite masinad (suurte marginaalide klassifitseerimine)
â K-means
â Peamised komponendid analĂŒĂŒs
â anomaalia tuvastamine
â koostööpĂ”hine filtreerimine (soovitussĂŒsteem)
â stohhastilised, mini-grupi, grupi gradientide langetamine
â online Ă”pe
â kaardi vĂ€hendamine
â lae analĂŒĂŒs
Kursuse lÀbimise jÀrel oli arusaam kÔikidest neist teemadest olemas. Kaks aastat hiljem on enamik juba loomulikult ununenud. Soovitan neile, kes ei ole masinÔppega tuttavad ja soovivad arendada head arusaama pÔhiasjadest, et edasi liikuda.
Esimene katse
Aeg oli juba september ja oli aeg mĂ”elda intervjuule. Kuna veebisaidi kaudu kandideerimine on ĂŒsna keeruline, hakkasin otsima tuttavaid, kes töötavad Google'is. Valik langes , kuna ta oli ainus, keda ma isiklikult (kui mitte otseselt) tundsin. Ta nĂ”ustus edastama mu CV ja varsti sai rekruuterilt kiri, kus pakuti aega, et broneerida vestluse jaoks koht tema kalendris. Paari pĂ€eva pĂ€rast toimus kĂ”ne. Proovisime suhelda Hangoutsis, kuid kvaliteet oli kohutav, seega lĂŒlitusime telefonile. Alguses arutasime kiiresti tavalisi kĂŒsimusi, nagu kuidas, miks ja millal, kuid seejĂ€rel lĂ€ksime tehnilise skriinimise juurde. See koosnes kĂŒmmekonnast kĂŒsimusest stiilis "mis on keerukus hash mapi sisestamisel", "millised on tasakaalustatud puud, mida sa tead". Mitte raske, kui sul on nende asjade kohta pĂ”hiline teadlikkus. Skriinimine lĂ€ks hĂ€sti ja tulemuste pĂ”hjal otsustati korraldada esimene intervjuu umbes nĂ€dala pĂ€rast.
Intervju toimus samuti Hangoutsis. Esiteks rÀÀkisime umbes 5 minutit minust, seejĂ€rel lĂ€ksime ĂŒlesande juurde. Ălesanne puudutas graafikuid. Ma mĂ”istsin kiiresti, mida teha, kuid valisin vale algoritmi. Kui hakkasin koodi kirjutama, taipasin seda ning lĂŒlitusin teisele variandile, mille ma ka lĂ”pule viisin. Intervjueerija kĂŒsis mitu kĂŒsimust algoritmi keerukuse kohta ja uuris, kas on vĂ”imalik kiiremini. Ma kuidagi takerdusin ja ei osanud vastata. Sellega lĂ”ppes aeg ja me jĂ€tsime hĂŒvasti. Umbes 10 minuti pĂ€rast taipasin, et antud ĂŒlesandes oleks Dijkstra algoritmi asemel olnud otstarbekam kasutada laiendamist, mis oleks olnud kiirem. MĂ”ne aja pĂ€rast helistas vĂ€rbaja ja ĂŒtles, et intervjuu lĂ€ks ĂŒldiselt hĂ€sti ning oleks vaja korraldada veel ĂŒks. Lepisime kokku, et teeme veel nĂ€dala pĂ€rast.
Seekord lĂ€ks asi halvemini. Kui esmakordselt oli intervjueerija sĂ”bralik ja jutukas, siis seekord oli ta kuidagi sĂŒnge. Ălesande ma kohe kohe ei saanud aru, kuigi need ideed, mida jagasin, oleksid pĂ”himĂ”tteliselt vĂ”inud lahenduseni viia. LĂ”puks, pĂ€rast mitmeid juhiseid intervjueerijalt, sain ma lahenduse kĂ€tte. Seekord oli see taas laiendatud otsing, ainult mitmest punktist. Lahenduse kirjutasin, ajas sobis, kuid unustasin servapunktid. MĂ”ne aja pĂ€rast helistas rekruuter ja teatas, et seekord jĂ€i intervjueerija rahulolematuks, kuna tema arvates kulus mul liiga palju vihjeid (3 vĂ”i 4 tĂŒkk) ja ma muudkui muutsin koodi kirjutamise ajal. Kahest intervjuust vĂ”eti vastu otsus edasi ei minna, vaid jĂ€rgmine intervjuu lĂŒkata aasta vĂ”rra edasi, kui mul peaks olema selline soov. Sellega jĂ€ime hĂŒvasti.
Ja sellest loo tÔin vÀlja mitmeid jÀreldusi:
- Teooria on hea, kuid selles tuleb kiiresti orienteeruda.
- Teooria ilma praktikata ei aita. Tuleb lahendada ĂŒlesandeid ja viia koodi kirjutamine automaatika tasemele.
- Palju sÔltub intervjueerijast. Sellega pole midagi teha.
Valmistumine teiseks ĂŒrituseks
PĂ€rast olukorra ĂŒle mĂ”tlemist otsustasin proovida veel kord aasta pĂ€rast. Ja muutsin veidi eesmĂ€rki. Kui varem oli peamiseks eesmĂ€rgiks Ă”ppimine ja intervjuu Google'is kauge unistus, siis nĂŒĂŒd oli intervjuu lĂ€bimine eesmĂ€rk ning Ă”ppimine vahend.
Nii töötati vÀlja uus plaan, mis sisaldas jÀrgmisi punkte:
- JĂ€tkata teooria uurimist raamatute ja artiklite lugemise kaudu.
- Lahendada algoritmilisi ĂŒlesandeid koguses 500-1000 tĂŒkki.
- JĂ€tkata teooria uurimist videote vaatamise kaudu.
- JĂ€tkata teooria uurimist kursuste kaudu.
- Uurida teiste inimeste kogemusi Google'i intervjuudest.
Plaan tÀideti minu poolt aasta jooksul. Edasi kirjeldan, mida ma iga punkti osas tegin.
Raamatud ja artiklid
Ma isegi ei mÀleta, kui palju artikleid ma lugesin, lugesin neid nii vene kui inglise keeles. KÔige kasulikumaks said ilmselt . Siit leiab suure hulga huvitavate algoritmide kirjeldusi koos koodinÀidete ja nÀidetega.
Olen lugenud 5 raamatut: Algorithms, 4th edition (Sedgewick, Wayne), Introduction to Algorithms 3rd Edition (Cormen, Leiserson, Rivest, Stein), Cracking the Coding Interview 4th edition (Gayle Laakmann), Programming Interviews Exposed 2nd edition (Mongan, Suojanen, Giguere), Elements of Programming Interviews (Aziz, Lee, Prakash). Need raamatud vĂ”ib jagada kahte kategooriasse. Esimesse kuuluvad Sedgewicki ja Cormeni teosed. See on teooria. ĂlejÀÀnud on ettevalmistus intervjuudeks. Sedgewick rÀÀgib raamatus peaaegu sama, mis tema kursustel. Lihtsalt kirjalikus vormis. Pole erilist mĂ”tet sĂŒveneda, kui olete kursuse lĂ€binud, kuid pilk peale visata tasub igal juhul. Kui kursust ei ole vaadanud, siis on mĂ”tet lugeda. Cormen tundus mulle liialt igav. Ausalt öeldes oli seda raske lĂ€bi lugeda. Seal sain kaasa vaid , ja mĂ”ned harva kasutatavad andmestruktuurid (Fiboonachi kuhja, van Emde Boas puu, radix kuhja).
Ăks raamat intervjuudeks ette valmistumiseks tasub kindlasti lĂ€bi lugeda. Need kĂ”ik on enam-vĂ€hem ĂŒhesugused. Need kirjeldavad intervjuuprotsessi suurtel tehnoloogiaettevĂ”tetel, annavad pĂ”hiteadmisi arvutiteadusest, ĂŒlesandeid nende pĂ”hiteadmiste kohta, ĂŒlesannete lahendusi ja lahenduste analĂŒĂŒse. Nendest kolmest soovitaksin ma tĂ”enĂ€oliselt 'Cracking the Coding Interview' pĂ”hiraamatuna, ĂŒlejÀÀnud vastavalt soovile.
Algotitmilised ĂŒlesanded
See oli ilmselt ettevalmistuse kĂ”ige huvitavam punkt. Loomulikult vĂ”iks lihtsalt istuda ja ĂŒlesandeid lahendada. Selleks on palju erinevaid saite. Kasutasin peamiselt kolme: , ja . CodeChefi ĂŒlesanded on jagatud raskusastme jĂ€rgi, kuid mitte teemade jĂ€rgi. Hackerrankis nii raskusastme kui ka teemade jĂ€rgi.
Kuid nagu ma kohe selgitasin, 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. SeetÔttu ma ei osalenud sellel saidil. Hackerrank ja CodeChef pakuvad piisavalt suurt arvu erinevaid vÔistlusi, kestvusega 1 tunnist kuni 10 pÀevani. Erinevatel formaatidel on erinevad reeglid, aga sellest vÔiks kaua rÀÀkida. Peamine pÔhjus, miks vÔistlused on head, on vÔistlusliku (ja jÀlle tautoloogia) elemendi lisamine Ôppimisprotsessi.
Kokku olen osalenud 37 vĂ”istlusel Hackerrankis. Nendest 32 olid reitinguvĂ”istlused ja 5 olid sponsoreeritud (ma sain isegi 25$ ĂŒhes neist) vĂ”i pigem lĂ”busad. ReitinguvĂ”istlustel olen 10 korda olnud top 4% hulgas, 11 korda top 12% hulgas ja 5 korda top 25% hulgas. Parimad tulemused olid 27/1459 kolmeks tunniks ja 22/9721 nĂ€dalase vĂ”istluse.
CodeChefi kolisin, kui Hackerrankis hakati vĂ”istlusi harvem korraldama. Kokku olen suutnud osaleda 5 vĂ”istlusel. Parim tulemus oli 426/5019 kĂŒmne pĂ€eva vĂ”istlusel.
KokkuvĂ”ttes olen ma lahendanud veidi ĂŒle 1000 ĂŒlesande, mis mahtus plaani. Kahjuks ei ole mul praegu enam vaba aega vĂ”istlustegevuseks, samuti puudub eesmĂ€rk, mille raames saaksin oma mitte-vaba aega kasutada. Kuid see oli lĂ”bus. Soovitan neil, kes on sellest huvitatud, leida kaaslasi. Kahe vĂ”i grupiga on see palju huvitavam. Ma tegelesin sellega koos sĂ”braga, seega vĂ”is see nii hĂ€sti ka minna.
Video vaatamine
PĂ€rast Skiena raamatuga tutvumist hakkasin ma pĂ”himĂ”tteliselt huvi tundma tema tegevuse vastu. Nagu Sedgwick, on ka tema professor ĂŒlikoolis. SeetĂ”ttu on internetis vĂ”imalik leida videoid tema kursustest. Otsustasin vaadata kursust . Ma ei saa öelda, et see mulle vĂ€ga meeldis. Esiteks ei olnud video kvaliteet vĂ€ga hea. Teiseks ei proovinud ma iseseisvalt lahendada kursuse raames kĂ€sitletud ĂŒlesandeid. Seega ei olnud kaasatus eriti kĂ”rge.
Samuti ĂŒlesannete lahendamise protsessis, pĂŒĂŒdes leida Ă”iget algoritmi, sattusin ma Tushar Roy video peale. Ta töötas Amazoni jaoks ja praegu töötab ta Apple'is. Kuidas ma hiljem selgitasin, on tal , kus ta jagab erinevate algoritmide analĂŒĂŒse. Artikli kirjutamise hetkel sisaldab kanal 103 videot. Ja peab ĂŒtlema, et tema analĂŒĂŒs on tehtud vĂ€ga korralikult. Olen proovinud vaadata muid autoreid, aga need ei tĂ”mmanud mind nii palju. Seega vĂ”in seda kanalit tĂ”epoolest soovitada.
Kursuselt lÀbimine
Siin ma eriti ei tegelenud. Vaatasin Google'i Android Developer Nanodegree'i videoid ja lĂ€bis ITMO kursuse. . Nanodegree oli pĂ€ris korralik, kuigi ma ei saanud sealt midagi uut. ITMO kursus oli teooria osas veidi kokku tĂ”mmatud, aga ĂŒlesanded olid huvitavad. Ma ei soovitaks alustada sellega, aga pĂ”himĂ”tteliselt ei olnud aega sinna raisatud.
Uurida teiste inimeste kogemusi
Muidugi on palju inimesi, kes pĂŒĂŒdsid Google'i sattuda. Kedagi lĂ€ks, kedagi mitte. MĂ”ned on sellest artikleid kirjutanud. HuviĂ€ratavatest asjadest tasub ehk mĂ€rkida ja . Esimeses juhul koostas inimene endale nimekirja sellest, mida ta peab Ă”ppima, et saada Software Engineerâiks ja pÀÀseda Google'i. LĂ”ppude lĂ”puks jĂ”udis ta Amazonisse, aga see ei ole enam nii oluline. Teise kĂ€siraamatu kirjutas Google'i insener Larisa Agarova (). Lisaks sellele dokumendile on vĂ”imalik lugeda ka .
On mÔistlik lugeda arvustusi intervjuude kohta Glassdooris. Need on enam-vÀhem sarnased, aga sealt on vÔimalik vÀlja pigistada kasulikku teavet.
Ma ei hakka viitama teistele vÀiksematele artiklitele, te leiate need Google'ist ise suurepÀraselt.
Teine katse
Ja nii möödus aasta. See oli Ă”pingute osas ĂŒsna tihe aasta. Kuid uue sĂŒgise eel lĂ€hendasin ma end palju sĂŒgavamate teoreetiliste teadmiste ja lihvitud praktiliste oskustega. Enne mÀÀratud ettevalmistusaasta lĂ”ppu jĂ€i veel paar nĂ€dalat aega, kui Ă€kki sain e-kirja Google'i vĂ€rbajalt, kes kĂŒsis, kas mul on endiselt huvi Google'is töötada ja kas ma oleksin nĂ”us temaga rÀÀkima. Loomulikult olin ma nĂ”us. Leppisime kokku, et helistame nĂ€dala pĂ€rast. Samuti paluti mul esitada uuendatud CV, millele lisasin lĂŒhikese kirjelduse sellest, mida ma aasta jooksul tööl ja ĂŒldiselt tegin.
PĂ€rast elust rÀÀkimist otsustasime, et nĂ€dal pĂ€rast seda toimub Hangoutsi intervjuu, nagu eelmisel aastal. NĂ€dal on möödunud, intervjueerimise aeg on kĂ€es, kuid intervjueerija ei ilmunud. 10 minutit möödus, hakkasin juba nĂ€rvitsema, kui Ă€kitselt keegi chati sisenes. Hiljem selgus, et mu intervjueerija ei saanud mingil pĂ”hjusel kohale tulla ja talle leiti kiiresti asendus. Inimene oli natuke ettevalmistamata nii arvuti seadistamise kui ka intervjuu korraldamise osas. Kuid seejĂ€rel lĂ€ks kĂ”ik hĂ€sti. Lahendasin ĂŒlesande kiiresti, kirjeldasin, kus vĂ”ivad olla kased, ja kuidas neid vĂ€ltida. Arutasime erinevaid ĂŒlesande variante ja algoritmi keerukust. Siis rÀÀkisime veel 5 minutit, insener jagas oma muljeid tööst MĂŒnchenis (ZĂŒrichis ei leidnud ilmselt kiiret asendust), ning sellega meie kohtumine ka lĂ”ppes.
Sama pĂ€eva Ă”htul vĂ”ttis minuga ĂŒhendust vĂ€rbaja ning teatas, et intervjuu lĂ€ks suurepĂ€raselt ning nad on valmis mind kutsuma kontori intervjuule. JĂ€rgmisel pĂ€eval helistasime lĂ€bi Hangoutsi ja arutasime ĂŒksikasju. Kuna mul oli vaja viisa vormistada, otsustasime, et teeme intervjuu kuu aja pĂ€rast.
Kuna ma valmistasin dokumente, arutasin samal ajal rekruuteriga eelseisvat intervjuud. Standardses Google'i intervjuus on 4 algoritmilist ja ĂŒks sĂŒsteemitöötluse osa. Kuid kuna ma kandideerisin Android arendajana, öeldi mulle, et osa intervjuust tuleb Android spetsiifika kohta. Millised tĂ€pselt ja milles see spetsiifika seisneb, ei suutnud ma rekruuterilt vĂ€lja uurida. Nii palju kui ma aru sain, on see hiljaaegu sisse viidud ja tema ei olnud ka vĂ€ga kursis. Samuti registreeriti mind kaheks treeningsessiooniks: kuidas lĂ€bida algoritmilist intervjuud ja kuidas lĂ€bida sĂŒsteemitöötluse intervjuud. Sessioonid olid keskmise kasulikkusega. Seal samuti ei suutnud keegi rÀÀkida, mida Android arendajatelt kĂŒsitakse. Seega piirdus minu ettevalmistus sellel kuul jĂ€rgmisega:
- Markeritahvli ostmine ja 2-3 kĂŒmne kĂ”ige populaarsema algoritmi kirjutamine sellel mĂ€lust. Iga pĂ€ev 3-5 tĂŒkki. Kokku oli igaĂŒks kirjutatud mitu korda.
- Erineva Androidi teabe vÀrskendamine mÀlus, mida ma igapÀevaselt ei kasuta
- MÔne video vaatamine Big Scale'ist ja sellisest
Nagu ma juba ĂŒtlesin, tegin samal ajal ka reisidokumente. Esmalt kĂŒsiti minult andmeid kutsekirja koostamiseks. Siis pĂŒĂŒdsin kaua vĂ€lja selgitada, kes KĂŒprosel Schengeni viisasid vĂ€ljastab, kuna Ć veitsi saatkond sellega ei tegele. Selgus, et sellega tegeleb Austria konsulaat. Helistasin ja broneerisin aja. Seal nĂ”utakse hulka dokumente, aga midagi eriti huvitavat seal ei olnud. Foto, pass, elamisluba, hunnik erinevaid tĂ”endeid ja loomulikult kutse kiri. Kiri aga ei tulnud ikka veel. LĂ”puks lĂ€ksin tavalise vĂ€ljalĂ”ikega ja see toimis kenasti. Kiri saabus kolm pĂ€eva hiljem, kuigi KĂŒprose FedEx ei suutnud leida minu aadressi ning pidin ise seda jĂ€rgi minema. Samuti sain sealt FedExist pakki, mille nad samuti ei suutnud mulle toimetada, kuna ei leidnud aadressi ja mis oli seal ootel juunist (5 kuud, Karl). Kuna ma ei teadnud sellest, ei osanud ma eeldadagi, et see neil on. Viisa sain Ă”igeks ajaks ja seejĂ€rel broneeriti mulle hotell ning pakuti lennuvariantide valikut. Muutsin variante veidi, et need oleks mugavamad. Otselende ei olnud, nii et lendasin sinna Ateena kaudu ja tagasi Viini kaudu.
PĂ€rast seda, kui kĂ”ik reisiga seotud formaalsused olid korda aetud, möödus veel paar pĂ€eva ja ma lendasin ZĂŒrichi. JĂ”udsin kohale ilma seiklusi kogemata. Lennujaamast linna sĂ”itsin rongiga â kiire ja mugav. Kui olin linna natuke eksinud, leidsin hotelli ja registreerisin end. Kuna hotell oli broneeritud ilma toiduta, Ă”htustasin naabruses ja lĂ€ksin magama, sest lend oli varahommikune ja uni oli juba kĂ€es. JĂ€rgmisel pĂ€eval sĂ”in hommikusööki hotellis (tasuliselt) ja sĂ”itsin Google'i kontorisse. ZĂŒrichis on Google'il mitu kontorit. Minu intervjuu ei toimunud keskuses. Kontor nĂ€gi vĂ€lja ĂŒsna tavaline, nii et mul ei Ă”nnestunud nĂ€ha kĂ”iki âtavaliseâ Google'i kontori mugavusi. Registreerisin end administraatorile ja ootasin. PĂ€rast mĂ”nda aega tuli vĂ€lja vĂ€rbaja ja tutvustas pĂ€eva plaani, seejĂ€rel viis mind ruumi, kus intervjuud pidid toimuma. Plaanis olid 3 intervjuud, lĂ”unasöök ja veel 2 intervjuud.
Intervjuu number ĂŒks
Esimene intervjuu oli just Androidi teemal. Tegelikult ei olnud see ĂŒldse seotud algoritmidega. Ăllatus, aga nojah, nii on isegi harjumuslikum. Paluti luua teatud UI komponent. Alustasime arutelu selle ĂŒle, mis ja kuidas. Soovitasin lahendust RxJavas, selgitasin, mida ja miks ma teeks. Ăeldi, et see on muidugi hea, aga teeme seda Androidi raamistikuga. Ja kirjutame koodi ka tahvlile. Ei mitte lihtsalt komponenti, vaid kogu Activity, mis kasutab seda komponenti. Selliseks ma ei olnud valmis. Ăks asi on kirjutada tahvlil algoritm 30-50 rida, ja teine asi on kirjutada Androidi koodi, isegi kui sinna jÀÀvad lĂŒhendid ja kommentaarid stiilis ânoh, seda ma ei hakka kirjutama, sest see on ju selgeâ. Tulemus oli mingi vinjett kolme tahvli peale. St, ĂŒlesande ma lahendasin, aga see nĂ€gi inetu vĂ€lja.
Teine intervjuu
Seekord oli intervjuu pĂŒhendatud algoritmidele. Intervjuuer oli kahel osalusel. Ăks oli peamine intervjueerija ja teine noor padawan (shadow interviewer). Pidin vĂ€lja mĂ”tlema andmestruktuuri, millel olid kindlad omadused. Esiteks arutasime nagu tavaliselt probleemi. KĂŒsisin erinevaid kĂŒsimusi, intervjueerija vastas. Teatud aja pĂ€rast paluti mul kirjutada mĂ”ned meetodid vĂ€lja mĂ”eldud struktuuri tahvlile. Seekord sujus see enam-vĂ€hem, kuigi esines mĂ”ned vĂ€ikesed vead, mille ma intervjueerija vihje jĂ€rgi parandasin.
Intervjuu number kolm
Seekord oli tegemist System Designiga, mis ĂŒllatuslikult osutus Androidiks. Pidi arendama rakendust teatud funktsionaalsusega. Arutasime rakenduse, serveri ja suhtlusprotokolli nĂ”udeid. SeejĂ€rel hakkasin kirjeldama, milliseid komponente vĂ”i teeke kasutaksin rakenduse ehitamiseks. Kuid kui tuli juttu Job Schedulerist, tekkis natuke takistus. Asi on selles, et ma ei ole kunagi seda pĂ€riselus kasutanud, kuna selle vĂ€lja tulekul hakkasin ma toetama rakendusi, kus selle kasutamiseks polnud ĂŒlesandeid. JĂ€rgnevate rakenduste arendamisel oli samuti sama olukord. Teoorias tean, mis see on, millal ja kuidas seda kasutatakse, kuid praktikas mul pole kogemusi. See ei tĂŒkkinud intervjuuerile kuigi meeltmööda. Siis paluti kirjutada kood. Jah, rakenduse arendamisel tuleb kohe kirjutada kood. JĂ€lle Androidi kood tahvelarvutil. Tulemuseks oli jĂ€lle midagi koledat.
LÔuna
Ăks inimene pidi veel tulema, kuid ei tulnud. Isegi Googlel on vahel eksimusi. LĂ”puks lĂ€ksin lĂ”unale koos eelneva intervjueerija ja tema kolleegiga, ja veidi hiljem liitus jĂ€rgmine intervjueerija. LĂ”una oli tĂ€iesti normaalne. JĂ€llegi, kuna see ei olnud peamine kant ZĂŒrichis, nĂ€gi kantine vĂ€lja piisavalt tavaline, kuigi ka vĂ€ga meeldiv.
Intervjuu number neli
LĂ” finally tĂ”id algoritmid puhtal kujul. Esimese ĂŒlesande lahendasin piisavalt kiiresti ja kohe tĂ”husalt, kuigi eksisin ĂŒhe piiri juhtumi osas, kuid intervjueerija vihje kaudu (ta andis selle piiri juhtumi) leidsin probleemi ja parandasid. Loomulikult tuli kirjutada kood tahvlile. Siis anti sarnane, kuid keerulisem ĂŒlesanne. Selle jaoks leidsin paar mitteoptimaalset lahendust ja peaaegu, et leidsin optimalaalset, lihtsalt 5â10 minutit jĂ€i puudu, et idee lĂ”puni viia. Ja selle jaoks ei jĂ”udnud ma enam koodi kirjutada.
Intervjuu number viis
Ja taas Androidi intervjuu. Huvitav, miks ma Ôppisin algoritme kogu aasta?
Alguses oli mitmeid lihtsaid kĂŒsimusi. Siis kirjutas intervjueerija tahvlile koodi ja palus leida selles vigu. Leidsin, selgitasin, parandasin. Arutasime. SeejĂ€rel tulid mitmed ootamatud kĂŒsimused stiilis "mida klassis X teeb meetod Y", "mida meetodis Y sees toimub", "mida teeb klass Z". MĂ”nele kĂŒsimusele vastasin, kuid ĂŒtlesin siis, et viimase ajal töös ei ole ma sellega kokku puutunud ja loomulikult ei mĂ€leta detailides, kes, mida ja kuidas teeb. PĂ€rast seda kĂŒsis intervjueerija, millega ma praegu tegelen. Ja kĂŒsimused lĂ€ksid selle teema peale. Siin vastasin ma juba palju paremini.
Viimase intervjuu lĂ”puks viidi mul juurdepÀÀsukaart Ă€ra, sooviti edu ja saadeti mind koju. Veidi jalutasin linnas, Ă”htustasin ja lĂ€ksin hotelli, kus pĂ”randale viskasin end magama, kuna lend oli taas varakult hommikul. JĂ€rgmisel pĂ€eval jĂ”udsin Cyprusse. Kirjutasin rekruuteri palvele intervjuu tagasiside ja tĂ€itsin spetsiaalses teenuses vormi tagasi saadud raha jaoks. KĂ”igist kuludest maksab Google otse ainult piletid. Hotelli, toidu ja transpordi maksab kandidaat. Siis tĂ€idame vormi, lisame tĆĄekid ja saadame spetsiaalsesse kontorisse. Nad töötlevad selle ja ĂŒsna kiiresti kannavad raha arvele.
Intervjuu tulemuste töötlemiseks kulus poolteist nĂ€dalat. PĂ€rast seda teavitati mind, et olin "a bit below the bar". TeisisĂ”nu, jĂ€in natuke alla. Kui tĂ€psem olla, siis 2 intervjuud lĂ€ksid hĂ€sti, 2 mitte vĂ€ga hĂ€sti ja System Design lĂ€ks vĂ€ga halvasti. Kui vĂ€hemalt 3 oleks lĂ€inud hĂ€sti, oleks saanud vĂ”idelda, aga nĂŒĂŒd pole lootust. Pakuti vĂ”imalust proovida uuesti aasta pĂ€rast.
Alguses olin loomulikult pettunud, kuna ettevalmistuseks oli kulutatud palju vaeva, ja intervjuudeks oli mul juba kĂŒps mĂ”te Kiprist lahkuda. Tööle asumine Google'is ja kolimine Ć veitsi tundusid suurepĂ€rase variandina.
KokkuvÔte
Ja nĂŒĂŒd jĂ”uame artikli viimasesse ossa. Jah, ma ei lĂ€binud Google'i intervjuud kahe korra jooksul. See on kahju. Ilmselt oleks seal töötamine olnud huvitav. Kuid asjale saab lĂ€heneda ka teisest kĂŒljest.
- KĂŒmmekond kuud olen Ă”ppinud tohutult palju tarkvaraarendusega seotud asju.
- Olen saanud suurt rÔÔmu programmivÔistlustest osalemisest.
- KĂ€isin paar pĂ€eva ZĂŒrichis. Millal ma sinna veel satun?
- Olen saanud huvitava intervjuukogemuse ĂŒhes maailma suurimas IT-ettevĂ”ttes.
Nii et, kĂ”ik, mis viimase poolteise aasta jooksul juhtus, vĂ”ib lihtsalt pidada Ă”ppimiseks vĂ”i treeninguks. Selle treeningu tulemused on end korralikult nĂ€idanud. Minu mĂ”te KĂŒproselt lahkuda kĂŒpses (pereliikmete olukorra tĂ”ttu), ma lĂ€bis edukalt mitmeid intervjuusid teises tuntud ettevĂ”ttes ja 8 kuu pĂ€rast kolisin. Kuid see on juba hoopis teine lugu. Siiski, arvan, et mul on ikka veel pĂ”hjust tĂ€nada Google'i nende poolteise aasta eest, mille jooksul ma enda kallal töötasin, ja kahe huvitava pĂ€eva eest ZĂŒrichis.
LĂ”puks, mis ma saan öelda. Kui töötate IT-sektoris, valmistage end ette Google'i (Amazon, Microsoft, Apple jne) intervjuuks. VĂ”ib-olla satute kunagi sinna. Isegi kui te ei soovi, uskuge, et selline ettevalmistus ei tee teile halba. Selle hetkeni, kui te arvestate, et teil on vĂ”imalus (isegi ainult Ă”nneliku juhuse korral) lĂ€bida intervjuu ĂŒhe neist ettevĂ”tetest, avatakse teie ees palju rohkem teid, kui enne teie ettevalmistust. Ja kĂ”ik, mida te oma teel vajate, on eesmĂ€rk, visadus ja aeg. Soovin teile edu đ
Allikas: habr.com
