Kuinka valmistautua haastatteluun Googlessa ja epäonnistua siinä. Kahdesti

Kuinka valmistautua haastatteluun Googlessa ja epäonnistua siinä. Kahdesti

Artikkelin otsikko kuulostaa eeppiseltä epäonnistumiselta, mutta todellisuudessa kaikki ei ole niin yksinkertaista. Ja yleisesti ottaen tämä tarina päättyi erittäin positiivisesti, vaikkakaan ei Googlessa. Mutta tämä on toisen artikkelin aihe. Tässä samassa artikkelissa puhun kolmesta asiasta: miten valmistautumisprosessini sujui, miten Googlen haastattelut tapahtuivat ja miksi kaikki ei mielestäni ole niin selvää kuin miltä saattaa näyttää.

Kuinka kaikki alkoi

Eräänä kylmänä Kyproksen talvi-iltana mieleeni tuli yhtäkkiä ajatus, että tietoni klassisesta tietojenkäsittelytieteestä oli hyvin kaukana edes keskimääräisestä ja asialle olisi tehtävä jotain. Jos joku ei muuten ole vielä lukenut miksi ilta on kyproslainen ja kylmä, niin voit ottaa siitä selvää täällä. Hetken pohdinnan jälkeen päätettiin aloittaa verkkokurssilla algoritmeista ja tietorakenteista. Yhdeltä entiseltä kollegaltani kuulin Robert Sedgewickin Courseran kurssista. Kurssi koostuu kahdesta osasta (osa 1 и osa 2). Jos linkit yhtäkkiä muuttuvat, voit aina googlettaa kirjoittajan nimen. Jokainen osa kestää 6 viikkoa. Luennot pidetään alkuviikosta ja viikolla pitää vielä tehdä harjoituksia. Kurssin ensimmäinen osa kattaa perustietorakenteet, lajittelun perustyypit ja algoritmien monimutkaisuuden. Toinen osa on jo edistyneempi, alkaen kaavioista ja päättyen sellaisiin asioihin kuin lineaarinen ohjelmointi ja intractability. Pohdittuani kaikkea yllä olevaa, tulin siihen tulokseen, että tämä on juuri sitä mitä tarvitsen. Muuten, utelias lukija saattaa kysyä, mitä tekemistä Googlella on sen kanssa? Ja todellakin, tähän hetkeen asti hänellä ei ollut mitään tekemistä sen kanssa. Mutta tarvitsin tavoitteen, koska 12 viikon opiskelu iltaisin ilman tavoitetta on hieman vaikeaa. Mikä voisi olla uuden tiedon hankkimisen tarkoitus? Tietenkin niiden soveltaminen käytännössä. Arkielämässä tämä on melko ongelmallista, mutta suuren yrityksen haastattelussa se on helppoa. Nopea Google osoitti, että Google (anteeksi tautologia) on yksi suurimmista yrityksistä Euroopassa (ja katsoin erityisesti Eurooppaa), joka suorittaa tällaisia ​​haastatteluja. Nimittäin heidän toimistonsa sijaitsee Zürichissä, Sveitsissä. Joten se on päätetty – opiskellaan ja mennään haastatteluun Googlelle.

Valmistautuminen ensimmäiseen lähestymiseen

12 viikkoa kului nopeasti ja suoritin molemmat kurssit. Omat vaikutelmani kursseista ovat enemmän kuin positiivisia ja voin suositella niitä kaikille kiinnostuneille. Pidin kursseista seuraavista syistä:

  • Luennoitsija puhuu melko selkeää englantia
  • Materiaali on hyvin jäsenneltyä
  • Upeita esityksiä, jotka esittelevät jokaisen algoritmin sisäpuolen
  • Asiantunteva materiaalivalinta
  • Mielenkiintoisia harjoituksia
  • Harjoitukset tarkistetaan automaattisesti sivustolla, jonka jälkeen luodaan raportti

Työni kursseilla meni yleensä näin. Kuuntelin luentoja 1-2 päivässä. Sitten he testasivat nopeasti materiaalitietonsa. Loppuviikon tein harjoituksen useissa toistoissa. Ensimmäisen jälkeen sain 30-70%, seuraavat toivat tuloksen 97-100%. Harjoitus sisälsi yleensä jonkin algoritmin toteuttamisen, esim. Saumaveisto tai bzip.

Kurssien jälkeen tajusin, että paljon tietoa tuo mukanaan paljon surua. Jos ennen tiesin vain, etten tiedä mitään, niin nyt aloin tajuta, että minä en tiennyt.

Koska oli vasta toukokuu ja ajoitin haastattelun syksylle, päätin jatkaa opintojani. Avoimen paikan vaatimuksia tarkastelun jälkeen päätettiin mennä kahteen suuntaan rinnakkain: jatkaa algoritmien opiskelua ja suorittaa koneoppimisen peruskurssi. Ensimmäistä tavoitetta varten päätin vaihtaa kursseista kirjaan ja valitsin Steven Skienan monumentaalisen teoksen "Algoritmit. Algoritmin suunnittelun käsikirja. Ei niin monumentaalinen kuin Knutin, mutta silti. Toista maalia varten palasin Courseraan ja ilmoittautuin Andrew Ngin kurssille. Koneen oppiminen.

Kului vielä 3 kuukautta ja sain kurssin ja varauksen valmiiksi.

Aloitetaan kirjasta. Lukeminen oli varsin mielenkiintoista, joskaan ei helppoa. Periaatteessa suosittelen kirjaa, mutta en heti. Kaiken kaikkiaan kirja tarjoaa syvällisemmän katsauksen kurssilla oppimaani. Lisäksi löysin (muodollisesta näkökulmasta) sellaisia ​​asioita kuin heuristiikka ja dynaaminen ohjelmointi. Tietysti olin käyttänyt niitä ennenkin, mutta en tiennyt mikä niiden nimi oli. Kirja sisältää myös useita tarinoita kirjailijan elämästä (War Story), jotka laimentavat jonkin verran esityksen akateemista luonnetta. Muuten, kirjan toinen puolisko voidaan jättää pois, se sisältää pikemminkin kuvauksen olemassa olevista ongelmista ja menetelmistä niiden ratkaisemiseksi. Siitä on hyötyä, jos sitä käytetään säännöllisesti käytännössä, muuten se unohtuu välittömästi.

Olin enemmän kuin tyytyväinen kurssiin. Kirjoittaja selvästi tuntee asiansa ja puhuu mielenkiintoisella tavalla. Plussaa siitä reilu määrä, eli lineaarialgebra ja hermoverkkojen perusteet, muistin yliopistosta, joten en kokenut mitään erityisiä vaikeuksia. Kurssin rakenne on melko vakio. Kurssi on jaettu viikoille. Joka viikko on luentoja sekoitettuna lyhyisiin kokeisiin. Luentojen jälkeen sinulle annetaan tehtävä, joka sinun on tehtävä, lähetettävä ja se tarkistetaan automaattisesti. Lyhyesti, luettelo kurssilla opetettavista asioista on seuraava:
- kustannustoiminto
- lineaarinen regressio
- kaltevuuslasku
- Ominaisuuden skaalaus
- normaali yhtälö
- logistinen regressio
- moniluokkaluokitus (yksi vs kaikki)
— hermoverkot
- takaisinlisäys
- laillistaminen
— harha/varianssi
- oppimiskäyrät
- virhemittarit (tarkkuus, palautus, F1)
— Tuki Vector-koneita (suuri marginaaliluokitus)
– K- tarkoittaa
— Pääkomponenttien analyysi
- poikkeamien havaitseminen
- yhteiskäyttöinen suodatus (suositusjärjestelmä)
— stokastiset, mini-erä-, erägradienttilaskutukset
- verkko-opiskelu
- kartan pienennys
- kattoanalyysi
Kurssin jälkeen ymmärrys kaikista näistä aiheista oli läsnä. Kahden vuoden kuluttua melkein kaikki unohtui luonnollisesti. Suosittelen niille, jotka eivät ole perehtyneet koneoppimiseen ja haluavat saada hyvän käsityksen perusasioista jatkaakseen eteenpäin.

Ensimmäinen juoksu

Oli jo syyskuu ja oli aika miettiä haastattelua. Koska sivuston kautta hakeminen on varsin tuhoisaa, aloin etsiä ystäviä, jotka työskentelevät Googlella. Valinta kaatui datacompboy, koska hän oli ainoa, jonka tunsin suoraan (vaikka en henkilökohtaisesti). Hän suostui välittämään ansioluetteloni, ja pian sain rekrytoijalta kirjeen, jossa tarjottiin varata paikka hänen kalenteriinsa ensimmäiselle keskustelulle.Pari päivää myöhemmin puhelu tuli. Yritimme kommunikoida Hangoutsin kautta, mutta laatu oli kauhea, joten vaihdoimme puhelimeen. Ensin keskustelimme nopeasti standardista miten, miksi ja miksi, ja sitten siirryimme tekniseen seulomiseen. Se koostui kymmenestä kysymyksestä hengessä "mitä on vaikea lisätä hash-karttaan", "mitä tasapainoisia puita tiedät". Se ei ole vaikeaa, jos sinulla on perustiedot näistä asioista. Seulonta sujui hyvin ja tulosten perusteella päätettiin järjestää ensimmäinen haastattelu viikon päästä.

Haastattelu tapahtui myös Hangoutsin kautta. Ensin he puhuivat minusta noin 5 minuuttia, sitten siirryttiin ongelmaan. Ongelma oli kaavioissa. Tajusin nopeasti, mitä piti tehdä, mutta valitsin väärän algoritmin. Kun aloin kirjoittaa koodia, tajusin tämän ja vaihdoin toiseen vaihtoehtoon, jonka sain valmiiksi. Haastattelija esitti useita kysymyksiä algoritmin monimutkaisuudesta ja kysyi, voitaisiinko se tehdä nopeammin. Minusta tuli jotenkin tylsä ​​enkä pystynyt siihen. Tässä vaiheessa aika loppui ja sanoimme hyvästit. Sitten noin 10 minuutin kuluttua tajusin, että käyttämäni Dijkstra-algoritmin sijaan voisin tässä nimenomaisessa ongelmassa käyttää leveyshakua, ja se olisi nopeampi. Jonkin ajan kuluttua rekrytoija soitti ja sanoi, että haastattelu meni kaiken kaikkiaan hyvin ja että pitäisi järjestää uusi haastattelu. Sovimme toisesta viikosta.

Tällä kertaa asiat pahenivat. Jos haastattelija oli ensimmäisellä kerralla ystävällinen ja seurallinen, niin tällä kertaa hän oli hieman synkkä. En saanut heti selvää ongelmasta, vaikka esittämäni ideat voisivat periaatteessa johtaa sen ratkaisuun. Lopulta useiden haastattelijan kehotusten jälkeen sain ratkaisun. Tällä kertaa se osoittautui jälleen leveyshakuksi, vain useasta pisteestä. Kirjoitin ratkaisut, tapasin ne ajoissa, mutta unohdin reunatapaukset. Jonkin ajan kuluttua rekrytoija soitti ja sanoi, että tällä kertaa haastattelija oli tyytymätön, koska hänen mielestään tarvitsin liikaa vihjeitä (3 tai 4 kpl) ja vaihdoin jatkuvasti koodia kirjoittaessani. Kahden haastattelun tulosten perusteella päätettiin olla jatkamatta, vaan lykätä seuraavaa haastattelua vuodella, jos niin haluan. Siksi hyvästelimme.

Ja tästä tarinasta tein useita johtopäätöksiä:

  • Teoria on hyvä, mutta sinun on navigoitava siinä nopeasti
  • Teoria ilman käytäntöä ei auta. Meidän on ratkaistava ongelmat ja saatettava koodaus automaattiseksi.
  • Paljon riippuu haastattelijasta. Eikä sille voi mitään.

Valmistautuminen toiseen kierrokseen

Harkittuani tilannetta, päätin yrittää vuoden päästä uudestaan. Ja muokkasi hieman maalia. Jos aiemmin päätavoitteena oli opiskelu ja haastattelu Googlella oli kuin kaukainen porkkana, niin nyt haastattelun läpäiseminen oli tavoite ja opiskelu keino.
Joten kehitettiin uusi suunnitelma, joka sisälsi seuraavat kohdat:

  • Jatka teorian opiskelua lukemalla kirjoja ja artikkeleita.
  • Ratkaise algoritmisia tehtäviä 500-1000 kappaleen määrässä.
  • Jatka teorian oppimista katsomalla videoita.
  • Jatka teorian opiskelua kursseilla.
  • Tutki muiden ihmisten kokemuksia haastatteluista Googlessa.

Sain suunnitelman valmiiksi vuodessa. Seuraavaksi kuvailen, mitä tarkalleen tein kullekin pisteelle.

Kirjoja ja artikkeleita

En edes muista lukemieni artikkeleiden määrää; luin ne sekä venäjäksi että englanniksi. Todennäköisesti hyödyllisin sivusto tämä. Täältä löydät kuvauksen suuresta määrästä mielenkiintoisia algoritmeja koodiesimerkkeineen.

Luin 5 kirjaa: Algoritmit, 4. painos (Sedgewick, Wayne), Algoritmien johdatus 3. painos (Cormen, Leiserson, Rivest, Stein), Cracking the Coding Interview 4. painos (Gayle Laakmann), Ohjelmointihaastattelut Exposed 2. painos (Mongan, Suojanen) , Giguere), Elements of Programming Interviews (Aziz, Lee, Prakash). Ne voidaan jakaa 2 luokkaan. Ensimmäinen sisältää Sedgwickin ja Cormanin kirjat. Tämä on teoria. Loppu on valmistautumista haastatteluun. Sedgwick kertoo kirjassa samasta asiasta kuin kursseilla. Vain kirjallisesti. Ei ole paljon järkeä lukea sitä huolellisesti, jos olet käynyt kurssin, mutta se kannattaa kuitenkin lukaista. Jos et ole katsonut kurssia, se kannattaa lukea. Cormen vaikutti minusta liian tylsältä. Rehellisesti sanottuna minun oli vaikea hallita sitä. Otin sen juuri pois sieltä mestari teoria, ja useita harvoin käytettyjä tietorakenteita (Fibonacci-kasa, van Emde Boas-puu, kantalukukasa).

Haastatteluun valmistautumiseksi kannattaa lukea ainakin yksi kirja. Ne kaikki on rakennettu suunnilleen samalla periaatteella. He kuvaavat haastatteluprosessia suurissa teknologiayrityksissä, kertovat tietojenkäsittelytieteen perusasioita, näiden perusasioiden ongelmia, ratkaisuja ongelmiin ja ratkaisujen analysointia. Kolmesta yllä olevasta suosittelen todennäköisesti Cracking the Coding Interview -haastattelua pääasialliseksi, ja loput ovat valinnaisia.

Algoritmiset ongelmat

Tämä oli ehkä mielenkiintoisin kohta valmistelussa. Voit tietysti istua alas ja ratkaista ongelmia typerästi. Tätä varten on monia erilaisia ​​​​sivustoja. Käytin pääasiassa kolmea: Hackerrank, CodeChef и LeetCode. CodeChefissä ongelmat on jaettu vaikeusasteen mukaan, mutta ei aiheen mukaan. Hackerrankissa sekä monimutkaisuuden että aiheen mukaan.

Mutta kuten itse heti huomasin, on olemassa mielenkiintoisempi tapa. Ja nämä ovat kilpailuja (ohjelmointihaasteita tai ohjelmointikilpailuja). Kaikki kolme sivustoa tarjoavat niitä. Totta, LeetCodessa on ongelma - hankala aikavyöhyke. Siksi en osallistunut tälle sivustolle. Hackerrank ja CodeChef tarjoavat melkoisen määrän erilaisia ​​kilpailuja, jotka kestävät 1 tunnista 10 päivään. Eri formaateilla on erilaiset säännöt, mutta voisimme puhua siitä pitkään. Pääasia, miksi kilpailut ovat hyviä, on kilpailullisen (ja jälleen tautologian) elementin tuominen oppimisprosessiin.

Osallistuin yhteensä 37 kilpailuun Hackerrankilla. Näistä 32 oli arvosanaa ja 5 joko sponsoroitua (sain jopa 25 dollaria yhdessä) tai huvin vuoksi. Rankingissa olin 10 %:n kärjessä 4 kertaa, 11 %:ssa 12 kertaa ja 5 %:ssa 25 kertaa. Parhaat tulokset olivat 27/1459 3 tunnin aikana ja 22/9721 viikolla.

Vaihdoin CodeChefiin, kun Hackerrank alkoi järjestää kilpailuja harvemmin. Yhteensä onnistuin osallistumaan viiteen kilpailuun. Paras pistemäärä oli 5/426 kymmenen päivän kilpailussa.

Kaiken kaikkiaan kilpailuissa ja muutenkin ratkaisin hieman yli 1000 tehtävää, jotka mahtuivat suunnitelmaan. Nyt ei valitettavasti ole enää vapaa-aikaa jatkaa kilpailutoimintaa, kuten ei ole tavoitetta, johon vapaata aikaa voisi kirjoittaa pois. Mutta hauskaa oli. Suosittelen, että tästä kiinnostuneet löytävät samanhenkisiä ihmisiä. Yhdessä tai ryhmässä on paljon mielenkiintoisempaa. Minulla oli hauskaa tämän kanssa ystävän kanssa, joten ehkä se meni hyvin.

Katso video

Kun olin lukenut Skienan kirjan, kiinnostuin hänen tekemisistään. Kuten Sedgwick, hän on yliopiston professori. Tältä osin videoita hänen kursseistaan ​​löytyy verkosta. Päätin tarkistaa kurssin COMP300E - Ohjelmoinnin haasteet - 2009 HKUST. En voi sanoa, että olisin pitänyt siitä kovinkaan paljon. Ensinnäkin videon laatu ei ole kovin hyvä. Toiseksi, en yrittänyt itse ratkaista kurssilla käsiteltyjä ongelmia. Joten sitoutuminen ei ollut kovin korkea.
Lisäksi kun ratkaisin ongelmia ja yritin löytää oikeaa algoritmia, törmäsin Tushar Royn videoon. Hän työskenteli Amazonilla ja työskentelee nyt Applella. Kuten myöhemmin itse huomasin, hän on tehnyt youtube-kanava, jossa hän julkaisee analyysin erilaisista algoritmeista. Kirjoitushetkellä kanava sisältää 103 videota. Ja minun on sanottava, että hänen analyysinsä tehtiin erittäin hyvin. Yritin katsoa muita kirjoittajia, mutta jotenkin se ei toiminut. Joten voin ehdottomasti suositella tätä kanavaa katsottavaksi.

Kurssien suorittaminen

En tehnyt täällä mitään erityistä. Katsoin videon Googlen Android Developer Nanodegreestä ja osallistui ITMO:n kurssille Kuinka voittaa koodauskilpailuja: Mestarien salaisuudet. Nanodegree on melko hyvä, vaikka en tietenkään oppinut siitä mitään uutta. ITMO:n kurssi on teoriassa hieman vino, mutta ongelmat olivat mielenkiintoisia. En suosittele aloittamaan sillä, mutta periaatteessa se oli hyvin käytetty aika.

Opi muiden ihmisten kokemuksista

Tietenkin monet ihmiset yrittivät päästä Googleen. Osa pääsi sisään, osa ei. Jotkut ovat kirjoittaneet artikkeleita tästä. Mielenkiintoisista asioista aion varmaan mainita tämä и tämä. Ensimmäisessä tapauksessa henkilö laati itselleen luettelon siitä, mitä hänen on opittava tullakseen ohjelmistosuunnittelijaksi ja päästäkseen Googleen. Se päätyi lopulta Amazoniin, mutta se ei ole enää niin tärkeää. Toisen oppaan kirjoitti Googlen insinööri Larisa Agarkova (Larrr). Tämän asiakirjan lisäksi voit myös lukea hänen bloginsa.

On järkevää lukea haastattelujen arvosteluja Glassdoorista. Ne ovat kaikki enemmän tai vähemmän samanlaisia, mutta voit saada hyödyllistä tietoa.

En tarjoa linkkejä muihin pieniin artikkeleihin, löydät ne helposti Googlesta.

Toinen juoksu

Ja nyt on kulunut vuosi. Se osoittautui opintojen kannalta erittäin intensiiviseksi. Mutta lähestyin uutta syksyä paljon syvemmällä teoreettisella tiedolla ja kehittyneillä käytännön taidoilla. Minulla oli vielä muutama viikko aikaa valmistautumiseen varatun vuoden loppuun, kun yhtäkkiä postiin putosi Googlen rekrytoijan kirje, jossa hän kysyi minulta, haluanko vielä työskennellä Googlella ja Haluan puhua hänen kanssaan. Luonnollisesti en välittänyt. Sovimme soittavamme viikon kuluttua. Minulta pyydettiin myös päivitettyä ansioluetteloa, johon lisäsin lyhyen kuvauksen siitä, mitä olin vuoden aikana tehnyt työssäni ja ylipäätään.

Elinikäisen kommunikoinnin jälkeen päätimme, että viikon päästä on Hangout-haastattelu, kuten viime vuonnakin. Viikko kului, oli haastattelun aika, mutta haastattelija ei saapunut paikalle. Kului 10 minuuttia, aloin jo hermostua, kun yhtäkkiä joku purskahti chattiin. Kuten vähän myöhemmin kävi ilmi, haastattelijani ei jostain syystä päässyt paikalle ja hänelle löydettiin pikaisesti korvaaja. Henkilö oli hieman valmistautumaton sekä tietokoneen asennuksen että haastattelun suorittamisen suhteen. Mutta sitten kaikki meni hyvin. Ratkaisin ongelman nopeasti, kuvailin, missä sudenkuopat olivat mahdollisia ja kuinka ne voitaisiin kiertää. Keskustelimme useista eri versioista ongelmasta ja algoritmin monimutkaisuudesta. Sitten puhuimme vielä 5 minuuttia, insinööri kertoi meille vaikutelmansa työskentelystä Münchenissä (he eivät ilmeisesti löytäneet kiireellistä korvaavaa Zürichistä), ja sitten erosimme.

Samana päivänä rekrytoija otti minuun yhteyttä ja sanoi, että haastattelu meni hyvin ja he olivat valmiita kutsumaan minut haastatteluun toimistoon. Seuraavana päivänä soitimme Hangoutsin kautta ja keskustelimme yksityiskohdista. Koska minun piti hakea viisumia, päätimme varata haastattelun kuukauden päästä.

Kun valmistelin asiakirjoja, keskustelin samalla tulevasta haastattelusta rekrytoijan kanssa. Googlen tavallinen haastattelu koostuu neljästä algoritmisesta haastattelusta ja yhdestä System Design -haastattelusta. Mutta koska hain Android-kehittäjäksi, minulle kerrottiin, että osa haastattelusta olisi Android-kohtaista. En voinut karistaa sitä irti rekrytoijasta, mitä ja mitä erityispiirteet olisivat. Ymmärtääkseni tämä otettiin käyttöön suhteellisen hiljattain, eikä hän itse ollut kovin tietoinen. Olin myös ilmoittautunut kahteen koulutukseen: algoritmisen haastattelun läpäisemiseen ja System Design -haastattelun läpäisemiseen. Istunnot olivat keskimäärin hyödyllisiä. Sielläkään kukaan ei voinut kertoa minulle, mitä he kysyvät Android-kehittäjiltä. Siksi valmistautumiseni tälle kuukaudelle tiivistyi seuraavaan:

  • Ostetaan merkkitaulu ja kirjoitetaan siihen muistista 2-3 tusinaa suosituimpia algoritmeja. 3-5 kpl joka päivä. Kaikkiaan jokainen kirjoitettiin useita kertoja.
  • Päivitä muistisi erilaisilla Android-tiedoilla, joita et käytä joka päivä
  • Katsomassa muutamia videoita Big Scalesta ja muusta sellaisesta

Kuten jo sanoin, valmistelin samalla asiakirjoja matkaa varten. Aluksi he pyysivät minulta tietoja kutsukirjeen tekemiseksi. Sitten yritin pitkään selvittää, kuka Kyproksella myöntää viisumeita Sveitsiin, koska Sveitsin suurlähetystö ei käsittele tätä. Kuten kävi ilmi, Itävallan konsulaatti tekee tämän. Soitin ja sovin ajan. He pyysivät joukon asiakirjoja, mutta eivät mitään erityisen kiinnostavaa. Kuva, passi, oleskelulupa, joukko erilaisia ​​todistuksia ja tietysti kutsukirje. Sillä välin kirje ei saapunut perille. Lopulta käytin tavallisella tulosteella ja se toimi melko hyvin. Itse kirje saapui 3 päivää myöhemmin, eikä Kyproksen FedEx löytänyt osoitettani, ja minun piti mennä hakemaan se itse. Samaan aikaan sain samalta FedExiltä paketin, jota he eivät myöskään voineet toimittaa minulle, koska he eivät löytäneet osoitetta ja joka oli makaanut siellä kesäkuusta lähtien (5 kuukautta, Karl). Koska en tiennyt siitä, en luonnollisesti olettanut, että heillä olisi se. Sain viisumin ajoissa, minkä jälkeen he varasivat minulle hotellin ja tarjosivat lentovaihtoehtoja. Olen säätänyt vaihtoehtoja, jotta se olisi mukavampaa. Suoria lentoja ei enää ollut, joten päädyin lentämään sinne Ateenan kautta ja takaisin Wienin kautta.

Kun kaikki matkan muodollisuudet oli hoidettu, meni vielä muutama päivä ja lensin itse asiassa Zürichiin. Perille päästiin ilman tapauksia. Lentokentältä kaupunkiin menin junalla - nopeasti ja kätevästi. Kuljettuani hieman kaupungissa, löysin hotellin ja kirjauduin sisään. Koska hotelli oli varattu ilman ruokaa, söin illallisen vieressä ja menin nukkumaan, koska lento oli aamulla ja halusin jo nukkua. Seuraavana päivänä söin aamiaisen hotellissa (lisärahaa vastaan) ja menin Googlen toimistoon. Googlella on useita toimipisteitä Zürichissä. Haastatteluni ei ollut keskeinen. Ja yleisesti ottaen toimisto näytti melko tavalliselta, joten minulla ei ollut mahdollisuutta katsoa kaikkia "normaalin" Google-toimiston herkkuja. Rekisteröidyin järjestelmänvalvojaan ja istuin odottamaan. Jonkin ajan kuluttua rekrytoija tuli ulos ja kertoi minulle päivän suunnitelman, minkä jälkeen hän vei minut huoneeseen, jossa haastattelut piti tehdä. Itse asiassa suunnitelmaan kuului 3 haastattelua, lounas ja 2 muuta haastattelua.

Haastattelu numero yksi

Ensimmäinen haastattelu oli vain Androidilla. Eikä sillä ollut mitään tekemistä algoritmien kanssa. Yllätys kuitenkin. No okei, se on vielä yleisempää tällä tavalla. Meitä pyydettiin tekemään tietty käyttöliittymäkomponentti. Ensin keskusteltiin mitä ja miten. Hän tarjoutui tekemään ratkaisun RxJavan avulla, kuvaili mitä hän tarkalleen tekisi ja miksi. He sanoivat, että tämä on varmasti hyvä, mutta tehdään se Android-kehyksen avulla. Ja samalla kirjoitamme koodin taululle. Eikä vain komponentti, vaan koko toiminto, joka käyttää tätä komponenttia. Tähän en ollut valmis. Yksi asia on kirjoittaa taululle 30–50 rivin algoritmi ja toinen asia on kirjoittaa Android-koodin nuudelit, vaikka lyhenteet ja kommentit ovat "no, en kirjoita sitä, koska se on jo selvää". Tuloksena oli jonkinlainen vinegrette 3 laudalle. Nuo. Ratkaisin ongelman, mutta se näytti tyhmältä.

Haastattelu numero kaksi

Tällä kertaa haastattelussa käsiteltiin algoritmeja. Ja haastattelijaa oli kaksi. Toinen on varsinainen haastattelija, ja toinen on nuori padawan (varjohaastattelija). Oli tarpeen keksiä tietorakenne tietyillä ominaisuuksilla. Ensin keskustelimme ongelmasta tavalliseen tapaan. Esitin erilaisia ​​kysymyksiä, haastattelija vastasi. Jonkin ajan kuluttua heitä pyydettiin kirjoittamaan taululle useita keksityn rakenteen menetelmiä. Tällä kertaa onnistuin enemmän tai vähemmän, tosin muutamalla pienellä virheellä, jotka korjasin haastattelijan kehotuksesta.

Haastattelu numero kolme

Tällä kertaa System Design, joka yhtäkkiä osoittautui myös Androidiksi. Oli tarpeen kehittää sovellus tietyillä toiminnoilla. Keskustelimme sovelluksen, palvelimen ja viestintäprotokollan vaatimuksista. Seuraavaksi aloin kuvailla, mitä komponentteja tai kirjastoja käyttäisin sovelluksen rakentamisessa. Ja sitten, kun mainittiin Job Scheduler, oli hämmennystä. Asia on siinä, etten koskaan käyttänyt sitä käytännössä, koska olin sen julkaisuhetkellä juuri siirtynyt tukisovelluksiin, joissa sen käytölle ei ollut tehtäviä. Sama tapahtui tulevia kehitettäessä. Eli teoriassa tiedän mikä tämä asia on, milloin ja miten sitä käytetään, mutta minulla ei ole kokemusta sen käytöstä. Ja haastattelija ei näyttänyt pitävän siitä paljon. Sitten he pyysivät minua kirjoittamaan koodin. Kyllä, kun kehität sovellusta, sinun on heti kirjoitettava koodi. Jälleen Android-koodi taululla. Siitä tuli taas pelottavaa.

Lounas

Toisen henkilön piti tulla, mutta hän ei tullut. Ja Google tekee virheitä. Tuloksena menin lounaalle edellisen haastattelijan, hänen kollegansa, kanssa ja vähän myöhemmin seuraava haastattelija liittyi mukaan. Lounas oli varsin kunnollinen. Jälleen, koska tämä ei ole Zürichin päätoimisto, ruokasali näytti melko tavalliselta, vaikkakin erittäin mukavalta.

Haastattelu numero neljä

Lopuksi algoritmit puhtaimmassa muodossaan. Ensimmäisen ongelman ratkaisin melko nopeasti ja heti tehokkaasti, vaikka yksi reunatapaus jäi minulta paitsi, mutta haastattelijan kehotuksesta (hän ​​antoi juuri tämän reunatapauksen) löysin ongelman ja korjasin sen. Tietenkin minun piti kirjoittaa koodi taululle. Sitten annettiin samanlainen tehtävä, mutta vaikeampi. Sille löysin pari ei-optimaalista ratkaisua ja melkein löysin optimaalisen, 5-10 minuuttia ei riittänyt ajatuksen loppuun saattamiseksi. No, minulla ei ollut aikaa kirjoittaa koodia sille.

Haastattelu numero viisi

Ja taas Android-haastattelu. Ihmettelen, miksi opiskelin algoritmeja ympäri vuoden?
Aluksi esitettiin muutama yksinkertainen kysymys. Sitten haastattelija kirjoitti koodin taululle ja pyysi etsimään siitä ongelmia. Löysin, selitti ja korjasi. Keskusteltu. Ja sitten alkoivat odottamattomat kysymykset hengessä "mitä menetelmä Y tekee luokassa X", "mitä menetelmän Y sisällä", "mitä luokka Z tekee". Tietysti vastasin jotain, mutta sitten sanoin, että en ole törmännyt tähän työssäni viime aikoina enkä tietenkään muista tarkemmin kuka tekee mitä ja miten. Sen jälkeen haastattelija kysyi, mitä minä nyt teen. Ja kysymykset menivät tähän aiheeseen. Vastasin jo paljon paremmin täällä.

Edellisen haastattelun päätyttyä he ottivat passini, toivottivat onnea ja lähettivät minut matkaan. Kävelin vähän ympäri kaupunkia, söin illallista ja menin hotelliin, jossa menin nukkumaan, koska lento oli taas aikaisin aamulla. Seuraavana päivänä saavuin turvallisesti Kyprokselle. Kirjoitin rekrytoijan pyynnöstä palautetta haastattelusta ja täytin erikoispalvelussa lomakkeen palauttaakseni käytetyt rahat. Google maksaa kaikista kuluista suoraan vain liput. Hakija maksaa hotellit, ruuat ja matkat. Sitten täytämme lomakkeen, liitämme kuitit ja lähetämme sen erityistoimistoon. He käsittelevät tämän ja siirtävät rahaa tilille melko nopeasti.

Haastattelutulosten käsittelyyn meni puolitoista viikkoa. Sen jälkeen minulle ilmoitettiin, että olin "hieman palkin alapuolella". Eli jäin vähän alle. Tarkemmin sanottuna 2 haastattelua meni hyvin, 2 hieman ei niin hyvin ja System Design ei kovin hyvin. Nyt, jos ainakin 3 olisi mennyt hyvin, olisimme voineet kilpailla, muuten ei ole mahdollisuuksia. He tarjoutuivat palaamaan vuoden kuluttua.

Aluksi olin tietysti järkyttynyt, koska valmistautumiseen oli käytetty paljon vaivaa, ja haastatteluhetkellä ajattelin jo lähteä Kyprokselta. Googleen liittyminen ja Sveitsiin muuttaminen tuntuivat hienolta vaihtoehdolta.

Johtopäätös

Ja tästä päästään artikkelin viimeiseen osaan. Kyllä, epäonnistuin Google-haastattelussa kahdesti. Se on surullista. Olisi varmaan mielenkiintoista työskennellä siellä. Voit kuitenkin katsoa asiaa toiselta kantilta.

  • Puolentoista vuoden aikana opin valtavan määrän ohjelmistokehitykseen liittyviä asioita.
  • Minulla oli hauskaa osallistua ohjelmointikilpailuihin.
  • Kävin Zürichissä pariksi päiväksi. Milloin menen sinne taas?
  • Minulla oli mielenkiintoinen haastattelukokemus yhdessä maailman suurimmista IT-yrityksistä.

Siten kaikkea, mitä tapahtui näiden puolentoista vuoden aikana, voidaan pitää yksinkertaisesti harjoitteluna tai harjoitteluna. Ja tämän koulutuksen tulokset tuntuivat. Ajatukseni lähteä Kyprokselta kypsyi (joistakin perheolosuhteista), läpäsin onnistuneesti useita haastatteluja toisen tunnetun yrityksen kanssa ja muutin 8 kuukauden jälkeen. Mutta se on täysin eri tarina. Uskon kuitenkin, että minun pitäisi silti kiittää Googlea sekä puolitoista vuodesta, joita tein itse, että kahdesta mielenkiintoisesta päivästä Zürichissä.

Mitä voin sanoa lopuksi? Jos työskentelet IT-alalla, valmistaudu haastatteluihin Googlessa (Amazon, Microsoft, Apple jne.). Ehkä jonain päivänä menet sinne päästäksesi sinne. Vaikka et haluaisi, usko minua, tällainen valmistautuminen ei tee sinusta yhtään huonompaa. Heti kun huomaat, että voit (vaikka vain onnella) päästä haastatteluun jonkin näistä yrityksistä, sinulle avautuu paljon enemmän teitä kuin ennen kuin aloitit valmistautumisen. Ja kaikki mitä tarvitset matkalla, on tarkoitus, sinnikkyys ja aika. Toivon sinulle menestystä :)

Lähde: will.com

Lisää kommentti