Hogyan készüljünk fel egy interjúra a Google-nál, és bukjunk meg. Kétszer

Hogyan készüljünk fel egy interjúra a Google-nál, és bukjunk meg. Kétszer

A cikk címe epic failnek hangzik, de a valóságban nem minden ilyen egyszerű. És általában véve ez a történet nagyon pozitívan végződött, bár nem a Google-ban. De ez egy másik cikk témája. Ugyanebben a cikkben három dologról fogok beszélni: hogyan zajlott a felkészülési folyamatom, hogyan zajlottak az interjúk a Google-nál, és véleményem szerint miért nem minden olyan egyértelmű, mint amilyennek látszik.

Hogyan kezdődött minden

Egy hideg ciprusi téli estén hirtelen az a gondolatom támadt, hogy a klasszikus számítástechnikai ismereteim nagyon messze vannak az átlagostól, és valamit tenni kell ez ellen. Ha egyébként valaki még nem olvasta volna, hogy miért ciprusi és hideg az este, akkor tájékozódhat itt. Némi gondolkodás után úgy döntöttünk, hogy egy algoritmusokról és adatstruktúrákról szóló online tanfolyamon kezdünk. Egyik volt kollégámtól hallottam Robert Sedgewick Coursera-tanfolyamáról. A tanfolyam két részből áll (Part 1 и Part 2). Ha hirtelen megváltoznak a linkek, mindig megtalálhatja a Google-ban a szerző nevét. Minden rész 6 hétig tart. Az előadásokat a hét elején tartják, a héten még gyakorlatokat kell végezni. A kurzus első része az alapvető adatstruktúrákat, a rendezés alapvető típusait és az algoritmusok összetettségét tárgyalja. A második rész már fejlettebb, kezdve a grafikonokkal, és olyan dolgokkal zárva, mint a Lineáris programozás és az Intractability. A fentiek végiggondolása után arra a következtetésre jutottam, hogy pontosan erre van szükségem. Egy érdeklődő olvasó egyébként felteheti a kérdést, mi köze ehhez a Google-nek? És valóban, egészen eddig a pillanatig semmi köze nem volt hozzá. De kellett egy cél, hiszen 12 hétig esténként cél nélkül tanulni kicsit nehéz. Mi lehet a célja az új ismeretek megszerzésének? Természetesen ezek gyakorlati alkalmazása. A mindennapi életben ez meglehetősen problematikus, de egy nagy céggel készült interjú során könnyű. Egy gyors Google kimutatta, hogy a Google (bocsáss meg a tautológiáért) Európa egyik legnagyobb vállalata (és én konkrétan Európát néztem), amely ilyen interjúkat készít. Ugyanis az irodájuk a svájci Zürichben található. Úgyhogy eldőlt – tanuljunk, és menjünk interjúra a Google-nál.

Felkészülés az első megközelítésre

A 12 hét gyorsan eltelt, és mindkét tanfolyamot elvégeztem. A tanfolyamokkal kapcsolatos benyomásaim több mint pozitívak, ajánlani tudom minden érdeklődőnek. A következő okok miatt tetszettek a tanfolyamok:

  • Az előadó meglehetősen tiszta angolul beszél
  • Az anyag jól strukturált
  • Gyönyörű bemutatók, amelyek bemutatják az egyes algoritmusok belsejét
  • Hozzáértő anyagválasztás
  • Érdekes gyakorlatok
  • A gyakorlatok automatikusan ellenőrzésre kerülnek az oldalon, majd jelentés készül

A tanfolyamokon végzett munkám általában így zajlott. 1-2 nap alatt hallgattam előadásokat. Aztán gyors próbát tettek az anyagismeretükről. A hét hátralévő részében több iterációban végeztem a gyakorlatot. Az első után megkaptam a 30-70%-omat, a későbbiek 97-100%-ra hozták az eredményt. A gyakorlat általában valamilyen algoritmus megvalósítását jelentette, pl. Varratfaragás vagy bzip.

A tanfolyamok elvégzése után rájöttem, hogy sok tudáshoz sok bánat is jár. Ha korábban egyszerűen tudtam, hogy nem tudok semmit, akkor most kezdtem rájönni, hogy én nem tudok.

Mivel még csak május volt, és őszre időzítettem az interjút, úgy döntöttem, továbbtanulok. Az állás betöltéséhez szükséges követelmények áttekintése után úgy döntöttek, hogy párhuzamosan két irányba indulunk el: folytatjuk az algoritmusok tanulmányozását és egy gépi tanulási alaptanfolyamot. Első célként úgy döntöttem, hogy tanfolyamról könyvre váltok, és Steven Skiena „Algoritmusok” című monumentális művét választottam. Az algoritmus tervezési kézikönyve. Nem olyan monumentális, mint Knuté, de akkor is. A második gólhoz visszamentem a Coursera-hoz, és jelentkeztem Andrew Ng tanfolyamára. Gépi tanulás.

Újabb 3 hónap telt el, és befejeztem a tanfolyamot és a könyvet.

Kezdjük a könyvvel. Az olvasás elég érdekesnek bizonyult, bár nem könnyű. Elvileg ajánlanám a könyvet, de nem azonnal. Összességében a könyv alaposabb áttekintést nyújt a tanfolyamon tanultakról. Ráadásul felfedeztem (formális szempontból) olyan dolgokat, mint a heurisztika és a dinamikus programozás. Természetesen korábban is használtam őket, de nem tudtam, hogy hívják őket. A könyv számos mesét is tartalmaz a szerző életéből (War Story), amelyek némileg felhígítják az előadás akadémikus jellegét. A könyv második fele egyébként elhagyható, inkább a meglévő problémák leírását és azok megoldási módjait tartalmazza. Hasznos, ha a gyakorlatban rendszeresen használják, különben azonnal feledésbe merül.

Több mint elégedett voltam a tanfolyammal. A szerző egyértelműen ismeri a dolgát, és érdekesen beszél. Plusz jó adag belőle, nevezetesen a lineáris algebra és a neurális hálózatok alapjai, az egyetemről emlékeztem, így különösebb nehézséget nem tapasztaltam. A tanfolyam felépítése meglehetősen szabványos. A tanfolyam hetekre oszlik. Minden héten vannak előadások rövid tesztekkel. Az előadások után kapsz egy feladatot, amit el kell végezned, be kell küldened, és az automatikusan ellenőrzésre kerül. Röviden a kurzuson tanított dolgok listája a következő:
- költségfüggvény
- lineáris regresszió
- gradiens süllyedés
- jellemző méretezés
- normál egyenlet
- logisztikus regresszió
- többosztályos besorolás (egy vs minden)
— neurális hálózatok
- visszaszaporítás
- szabályozás
— torzítás/variancia
— tanulási görbék
- hibamutatók (pontosság, visszahívás, F1)
— Vector gépek támogatása (nagy árrés besorolás)
— K- jelenti
— A fő komponensek elemzése
- anomália észlelése
- kollaboratív szűrés (ajánló rendszer)
— sztochasztikus, mini-köteges, kötegelt gradiens süllyedés
- online tanulás
- térkép kicsinyítés
- mennyezetelemzés
A tanfolyam elvégzése után ezeknek a témáknak a megértése jelen volt. 2 év után szinte minden feledésbe merült. Azoknak ajánlom, akik nem járatosak a gépi tanulásban, és szeretnének alapos dolgokat megérteni a továbblépéshez.

Első futás

Már szeptember volt, és ideje volt egy interjún gondolkodni. Mivel az oldalon keresztül történő jelentkezés meglehetősen katasztrofális, elkezdtem keresni a Google-nál dolgozó barátokat. A választás esett datacompboy, hiszen ő volt az egyetlen, akit közvetlenül ismertem (még ha nem is személyesen). Beleegyezett, hogy továbbítsa az önéletrajzomat, és hamarosan levelet kaptam a toborzótól, amelyben felajánlotta, hogy foglaljon helyet a naptárában az első beszélgetésre.. Pár nappal később megtörtént a hívás. Megpróbáltunk Hangouts-on keresztül kommunikálni, de a minőség borzasztó volt, ezért telefonra váltottunk. Először gyorsan megbeszéltük a szabványt, hogyan, miért és miért, majd áttértünk a technikai átvilágításra. Tucatnyi kérdésből állt a „milyen nehézséget jelent a hash-térképbe illeszteni”, „milyen kiegyensúlyozott fákat ismersz” szellemében. Nem nehéz, ha alapvető ismeretekkel rendelkezik ezekről a dolgokról. A szűrés jól sikerült, és az eredmények alapján úgy döntöttek, hogy egy héten belül megszervezik az első interjút.

Az interjú is a Hangouts segítségével zajlott. Először körülbelül 5 percig beszéltek rólam, majd rátértek a problémára. A probléma a grafikonokkal volt. Gyorsan rájöttem, mit kell tennem, de rossz algoritmust választottam. Amikor elkezdtem írni a kódot, rájöttem erre, és átváltottam egy másik lehetőségre, amit befejeztem. A kérdező több kérdést is feltett az algoritmus bonyolultságára vonatkozóan, és megkérdezte, hogy meg lehet-e csinálni gyorsabban. Valahogy tompa lettem, és nem tudtam megtenni. Ezen a ponton lejárt az idő, és elköszöntünk. Aztán körülbelül 10 perc elteltével eszembe jutott, hogy az általam használt Dijkstra algoritmus helyett ebben a konkrét feladatban használhatom a szélesség-első keresést, és az gyorsabb lesz. Egy idő után a toborzó felhívott, és azt mondta, hogy az interjú összességében jól sikerült, és egy másikat kell szervezni. Megegyeztünk, hogy még egy hétben.

Ezúttal a dolgok rosszabbra fordultak. Ha az első alkalommal a kérdező barátságos és társaságkedvelő volt, ezúttal kissé komor volt. Nem tudtam azonnal rájönni a problémára, bár az általam megfogalmazott ötletek elvileg a megoldáshoz vezethetnek. Végül a kérdező többszöri felszólítása után megérkezett a megoldás. Ezúttal ismét szélességi keresésnek bizonyult, csak több pontról. Megírtam a megoldásokat, időben találkoztam velük, de megfeledkeztem az éles esetekről. Egy idő után felhívott a toborzó és közölte, hogy ezúttal elégedetlen a kérdező, mert szerinte túl sok tippre volt szükségem (3 vagy 4 db), és írás közben folyamatosan változtattam a kódot. Két interjú eredménye alapján úgy döntöttek, hogy nem megyek tovább, hanem ha úgy kívánom, egy évvel elhalasztom a következő interjút. Ezért elköszöntünk.

És ebből a történetből több következtetést is levontam:

  • Az elmélet jó, de gyorsan kell eligazodni benne
  • Az elmélet gyakorlat nélkül nem segít. Meg kell oldanunk a problémákat, és a kódolást automatizálni kell.
  • Sok múlik a kérdezőn. És ez ellen semmit sem lehet tenni.

Felkészülés a második nekifutásra

Miután végiggondoltam a helyzetet, úgy döntöttem, hogy egy év múlva újra megpróbálom. És kissé módosította a gólt. Ha korábban a tanulás volt a fő cél, és egy interjú a Google-nál olyan volt, mint egy távoli sárgarépa, most az interjú átadása volt a cél, a tanulás pedig az eszköz.
Így egy új tervet dolgoztak ki, amely a következő pontokat tartalmazza:

  • Folytassa az elmélet tanulmányozását könyvek és cikkek olvasásával.
  • Algoritmikus feladatok megoldása 500-1000 darab mennyiségben.
  • Folytassa az elmélet tanulását videók megtekintésével.
  • Folytassa az elmélet tanulmányozását tanfolyamokon.
  • Tanulmányozza mások tapasztalatait interjúkkal a Google-nál.

A tervet egy év alatt teljesítettem. A következőkben leírom, hogy pontosan mit tettem az egyes pontoknál.

Könyvek és cikkek

Nem is emlékszem, hány cikket olvastam, oroszul és angolul is olvastam őket. Talán a leghasznosabb oldal ez. Itt számos érdekes algoritmus leírását találja kódpéldákkal.

5 könyvet olvastam: Algorithms, 4. kiadás (Sedgewick, Wayne), Introduction to Algorithms 3rd Edition (Cormen, Leiserson, Rivest, Stein), Cracking the Coding Interview 4. kiadás (Gayle Laakmann), Programing Interviews Exposed 2. edition (Mongan, Suojanen) , Giguere), Programozási interjúk elemei (Aziz, Lee, Prakash). 2 kategóriába sorolhatók. Az elsőbe Sedgwick és Corman könyvei tartoznak. Ez egy elmélet. A többi az interjúra való felkészülés. Sedgwick ugyanarról mesél a könyvben, mint a kurzusain. Csak írásban. Nem sok értelme van figyelmesen elolvasni, ha elvégezte a tanfolyamot, de mindenesetre érdemes átfutni. Ha nem láttad a tanfolyamot, érdemes elolvasni. Cormen túl unalmasnak tűnt számomra. Őszintén szólva nehezen tudtam elsajátítani. Most vettem ki onnan mester elmélet, és számos ritkán használt adatstruktúra (Fibonacci kupac, van Emde Boas fa, radix kupac).

Érdemes legalább egy könyvet elolvasni, hogy felkészüljünk az interjúra. Mindegyik megközelítőleg ugyanazon az elven épül fel. Leírják a nagy technológiai cégek interjúfolyamatát, a számítástechnikából adnak alapvető dolgokat, ezekhez az alapvető dolgokhoz problémákat, megoldásokat a problémákra és a megoldások elemzését. A fenti három közül valószínűleg a Cracking the Coding Interview-t ajánlanám főnek, a többi pedig nem kötelező.

Algoritmikus problémák

Talán ez volt a felkészülés legérdekesebb pontja. Persze le lehet ülni és hülyén megoldani a problémákat. Sok különböző oldal létezik erre. Főleg hármat használtam: Hackerrank, CodeChef и LeetCode. A CodeChef-en a problémák nehézségek szerint vannak felosztva, de nem téma szerint. A Hackerrank-on mind összetettség, mind téma szerint.

De ahogy magam is azonnal rájöttem, van egy érdekesebb módszer is. És ezek versenyek (programozási kihívások vagy programozási versenyek). Mindhárom webhely biztosítja ezeket. Igaz, van egy probléma a LeetCode-dal - egy kényelmetlen időzóna. Ezért nem vettem részt ezen az oldalon. A Hackerrank és a CodeChef meglehetősen sok különböző versenyt kínál, amelyek 1 órától 10 napig tartanak. A különböző formátumoknak más-más szabályai vannak, de erről még sokáig beszélhetnénk. A fő szempont, amiért a versenyek jók, egy versengő (és ismét tautológia) elem bevezetése a tanulási folyamatba.

Összesen 37 versenyen vettem részt a Hackerranken. Ebből 32 minősítő volt, 5 pedig vagy szponzorált (az egyikben még 25 dollárt is kaptam), vagy szórakozásból. A rangsorban 10-szer kerültem az első 4%-ba, 11-szer a legjobb 12%-ba és 5-ször a legjobb 25%-ba. A legjobb eredmény a 27 órás 1459/3, a héten 22/9721 volt.

Akkor váltottam a CodeChefre, amikor a Hackerrank ritkábban kezdett versenyeket rendezni. Összesen 5 versenyen sikerült részt vennem. A legjobb pontszám 426/5019 volt a tíznapos versenyen.

Összességében versenyeken és így is valamivel több mint 1000 feladatot oldottam meg, ami belefért a tervbe. Most sajnos nincs szabadidő a versenytevékenység folytatására, ahogy nincs olyan cél sem, amelyre a szabadidőt le lehetne írni. De szórakoztató volt. Akit ez érdekel, azt ajánlom, hogy keressen hozzá hasonlókat. Együtt vagy csoportban sokkal érdekesebb. Egy barátommal jól szórakoztam ezen, szóval talán jól esett.

Nézze meg a videót

Miután elolvastam Skiena könyvét, érdekelni kezdett, hogy mit csinál. Sedgwickhez hasonlóan ő is egyetemi tanár. Ezzel kapcsolatban a kurzusairól készült videók megtalálhatók az interneten. Úgy döntöttem, hogy felülvizsgálom a tanfolyamot COMP300E - Programozási kihívások - 2009 HKUST. Nem mondhatnám, hogy nagyon tetszett. Először is, a videó minősége nem túl jó. Másodszor, nem próbáltam magam megoldani a tanfolyamon megvitatott problémákat. Tehát az eljegyzés nem volt túl magas.
Emellett a problémák megoldása közben, a megfelelő algoritmus megtalálása közben rábukkantam Tushar Roy videójára. Az Amazonnál dolgozott, most pedig az Apple-nél. Mint később magam is rájöttem, ő is így van YouTube csatorna, ahol különféle algoritmusok elemzését teszi közzé. A cikk írásakor a csatorna 103 videót tartalmaz. És azt kell mondanom, hogy az elemzése nagyon jól sikerült. Próbáltam más szerzőket nézni, de valahogy nem ment. Szóval ezt a csatornát mindenképpen tudom ajánlani megtekintésre.

Tanfolyamok felvétele

Nem csináltam itt semmi különöset. Megtekintett egy videót a Google Android Developer Nanodegree-től, és részt vett az ITMO tanfolyamán Hogyan nyerjünk kódolási versenyeket: A bajnokok titkai. A Nanodegree egész jó, bár természetesen semmi újat nem tanultam belőle. Az ITMO tanfolyam elméletileg kissé ferde, de a problémák érdekesek voltak. Nem javaslom, hogy kezdjem vele, de elvileg jól eltöltött idő volt.

Tanuljon mások tapasztalataiból

Természetesen sokan megpróbáltak bekerülni a Google-be. Volt, aki bejutott, volt, aki nem. Néhányan cikkeket írtak erről. Az érdekes dolgok közül valószínűleg megemlítem ezt и ezt. Az első esetben a személy összeállított magának egy listát arról, hogy mit kell tanulnia ahhoz, hogy szoftvermérnök lehessen, és bekerüljön a Google-ba. Végül az Amazonon kötött ki, de ez már nem olyan fontos. A második kézikönyvet a Google mérnöke, Larisa Agarkova (Larrr). Ezen a dokumentumon kívül még olvashat a blogját.

Érdemes elolvasni a Glassdoor-on készült interjúkat. Mindegyik többé-kevésbé hasonló, de hasznos információkat kaphat.

Nem adok linkeket más kis cikkekre, könnyen megtalálhatja őket a Google-on.

Második futam

És most eltelt egy év. A tanulmányok szempontjából nagyon intenzívnek bizonyult. De sokkal mélyebb elméleti tudással és kifejlesztett gyakorlati képességekkel közelítettem meg az új őszt. Még néhány hét volt hátra a felkészülésre szánt év végéig, amikor hirtelen befutott a postára egy levél a Google toborzójától, amelyben megkérdezte, van-e még kedvem a Google-nál dolgozni, és Szívesen beszélek vele. Természetesen nem bántam. Megbeszéltük, hogy egy hét múlva telefonálunk. Kértek egy frissített önéletrajzot is, amihez rövid leírást adtam az év során a munkahelyemen és úgy általában.

Miután egy életen át kommunikáltunk, úgy döntöttünk, hogy egy hét múlva Hangout-interjú lesz, akárcsak tavaly. Eltelt egy hét, eljött az interjú ideje, de a kérdező nem jelent meg. Eltelt 10 perc, már kezdtem ideges lenni, amikor hirtelen valaki berobbant a chatbe. Mint kicsit később kiderült, a kérdezőm valamiért nem tudott megjelenni, és sürgősen találtak helyette. A személy némileg felkészületlen volt mind a számítógép beállítását, mind az interjú lebonyolítását illetően. De aztán minden jól ment. Gyorsan megoldottam a problémát, leírtam, hol lehetségesek a buktatók, és hogyan lehet ezeket kikerülni. Megbeszéltük a probléma több változatát és az algoritmus összetettségét. Aztán még 5 percig beszélgettünk, a mérnök elmesélte a müncheni munka benyomásait (zürichben nyilván nem találtak sürgős pótlást), majd elváltunk.

Ugyanezen a napon felkeresett egy toborzó, aki azt mondta, hogy az interjú jól sikerült, és készek meghívni egy interjúra az irodába. Másnap felhívtuk a Hangouts szolgáltatást, és megbeszéltük a részleteket. Mivel vízumot kellett kérnem, úgy döntöttünk, hogy egy hónap múlva megbeszéljük az interjút.

Amíg a dokumentumokat előkészítettem, egyidejűleg megbeszéltem a közelgő interjút a toborzóval. A Google standard interjúja 4 algoritmikus interjúból és egy System Design interjúból áll. De mivel Android-fejlesztőként jelentkeztem, azt mondták, hogy az interjú egy része Android-specifikus lesz. Nem tudtam kirázni a toborzóból, hogy pontosan mi és mik lesznek a konkrétumok. Ha jól értem, ezt viszonylag nemrég vezették be, és ő maga nem nagyon volt tisztában vele. Két tréningre is beiratkoztak: algoritmikus interjún és System Design interjún. A foglalkozások átlagosan hasznosak voltak. Ott sem tudta senki megmondani, mit kérdeznek az Android fejlesztőktől. Ezért az e havi felkészülésem a következőkből állt:

  • Marker tábla vásárlása és emlékezetből ráírva 2-3 tucat legnépszerűbb algoritmust. 3-5 db minden nap. Összességében mindegyiket többször írták.
  • Frissítse fel memóriáját az Androidon futó különféle információkkal, amelyeket nem használ minden nap
  • Nézzünk néhány videót a Big Scale-ról és hasonlókról

Ahogy már mondtam, ezzel egy időben az utazáshoz szükséges dokumentumokat készítettem elő. Kezdetben információkat kértek tőlem egy meghívólevél elkészítéséhez. Aztán sokáig próbáltam utánajárni, hogy Cipruson ki ad ki vízumot Svájcba, mivel a svájci nagykövetség nem foglalkozik ezzel. Mint kiderült, ezt az osztrák konzulátus teszi. Felhívtam és időpontot egyeztettem. Kértek egy csomó dokumentumot, de semmi különösebben nem érdekes. Fénykép, útlevél, tartózkodási engedély, egy rakás különböző igazolás és természetesen meghívólevél. Közben a levél nem érkezett meg. Végül egy rendes nyomattal mentem, és egész jól működött. Maga a levél 3 nappal később érkezett meg, és a ciprusi FedEx nem találta a címemet, és magamnak kellett elmennem érte. Ugyanakkor kaptam ugyanattól a FedEx-től egy csomagot, amit szintén nem tudtak kézbesíteni, mert nem találták a címet, és június óta (5 hónap, Karl) ott hevert. Mivel nem tudtam róla, természetesen nem feltételeztem, hogy megvan. Időben megkaptam a vízumot, utána szállást foglaltak és repülési lehetőségeket ajánlottak fel. Módosítottam a beállításokat, hogy kényelmesebb legyen. Már nem voltak közvetlen járatok, így végül Athénon keresztül repültem oda, és Bécsen keresztül vissza.

Miután az utazással kapcsolatos összes formalitást elintézték, eltelt még néhány nap, és tényleg Zürichbe repültem. Esemény nélkül odaért. A repülőtérről a városba vonattal mentem - gyorsan és kényelmesen. Miután egy kicsit csavarogtam a városban, találtam egy szállodát és bejelentkeztem. Mivel a szálloda kaja nélkül volt lefoglalva, a szomszédban vacsoráztam és lefeküdtem, mert reggel volt a repülés és már aludni akartam. Másnap a szállodában reggeliztem (extra pénzért), és elmentem a Google irodájába. A Google-nak több irodája van Zürichben. Az interjúm nem a középpontban volt. És általában az iroda egészen hétköznapinak tűnt, így nem volt alkalmam megnézni egy „normál” Google iroda minden finomságát. Regisztráltam az adminisztrátornál és leültem várni. Egy idő után kijött a toborzó, és elmondta az aznapi tervet, majd bevitt abba a szobába, ahol az interjúknak kellett lenniük. Valójában a terv 3 interjút, ebédet és további 2 interjút tartalmazott.

Interjú első számú

Az első interjú csak Androidon volt. És ennek semmi köze az algoritmusokhoz. Meglepetés azonban. Nos, oké, ez még gyakoribb így. Arra kértek minket, hogy készítsünk egy bizonyos UI komponenst. Először megbeszéltük, hogy mit és hogyan. Felajánlotta, hogy RxJava segítségével készít megoldást, leírta, hogy pontosan mit és miért tenne. Azt mondták, hogy ez biztosan jó, de tegyük ezt az Android keretrendszerrel. És egyúttal felírjuk a kódot a táblára. És nem csak egy összetevő, hanem az egész tevékenység, amely ezt az összetevőt használja. Ez az, amire nem voltam felkészülve. Egy dolog egy 30-50 soros algoritmust felírni a táblára, és más dolog Android-kódot leírni, méghozzá rövidítésekkel és megjegyzésekkel a „na jó, ezt nem írom le, hiszen ez már nyilvánvaló”. Az eredmény valami vinaigrette lett 3 deszkára. Azok. Megoldottam a problémát, de hülyének tűnt.

Kettes számú interjú

Az interjú ezúttal az algoritmusokról szólt. És volt két kérdező. Az egyik a tényleges kérdező, a másik pedig egy fiatal padawan (árnyékinterjú). Egy bizonyos tulajdonságokkal rendelkező adatszerkezetet kellett kidolgozni. Először szokás szerint megbeszéltük a problémát. Különféle kérdéseket tettem fel – válaszolta a kérdező. Egy idő után arra kérték őket, hogy írjanak fel a táblára a kitalált szerkezet több módszerét. Ezúttal több-kevesebb sikerrel jártam, bár néhány apróbb hibával, amit a kérdező felszólítására javítottam.

Harmadik számú interjú

Ezúttal a System Design, amiről hirtelen kiderült, hogy Android is. Szükség volt egy bizonyos funkcionalitással rendelkező alkalmazás fejlesztésére. Megbeszéltük az alkalmazás, a szerver és a kommunikációs protokoll követelményeit. Ezután elkezdtem leírni, hogy milyen komponenseket vagy könyvtárakat fogok használni az alkalmazás elkészítésekor. És akkor, amikor a Munkaütemezőt említettem, némi zavar támadt. A lényeg, hogy soha nem használtam a gyakorlatban, hiszen a megjelenéskor még csak olyan támogató alkalmazásokra váltottam, ahol nem volt feladat a használatára. Ugyanez történt a későbbiek fejlesztésekor is. Vagyis elméletben tudom, hogy mi ez a dolog, mikor és hogyan használják, de nincs tapasztalatom a használatában. A kérdezőnek pedig úgy tűnt, ez nem nagyon tetszett. Aztán megkértek, hogy írjak valami kódot. Igen, egy alkalmazás fejlesztésekor azonnal kódot kell írni. Ismét Android kód a táblán. Megint ijesztőre sikerült.

Ebéd

Egy másik személynek kellett volna jönnie, de nem jött. A Google pedig hibázik. Ennek eredményeként elmentem ebédelni az előző kérdezővel, a kollégájával, és kicsit később csatlakozott a következő kérdező. Az ebéd egészen tisztességes volt. Ismétlem, mivel nem ez a fő iroda Zürichben, az ebédlő egészen hétköznapinak tűnt, bár nagyon szépnek tűnt.

Négyes számú interjú

Végül az algoritmusok legtisztább formájukban. Az első problémát elég gyorsan és azonnal hatékonyan oldottam meg, bár egy éleset kihagytam, de a kérdező felszólítására (ezt pont ezt adta) megtaláltam a problémát és javítottam. Természetesen a kódot fel kellett írnom a táblára. Aztán hasonló feladatot kaptak, csak nehezebben. Találtam rá pár nem optimális megoldást és majdnem megtaláltam az optimálisat, 5-10 perc nem volt elég a gondolat befejezéséhez. Nos, nem volt időm megírni a kódot.

Ötös számú interjú

És ismét Android interjú. Vajon miért tanultam egész évben algoritmusokat?
Először volt néhány egyszerű kérdés. Ezután a kérdező kódot írt a táblára, és kérte, hogy találjanak benne problémákat. Megtalálta, elmagyarázta, javította. Megbeszélték. Aztán elkezdődött néhány váratlan kérdés a „mit csinál Y módszer az X osztályban”, „mi van az Y metóduson belül”, „mit csinál a Z osztály” szellemében. Természetesen válaszoltam valamit, de aztán azt mondtam, hogy mostanában nem találkoztam ezzel a munkám során, és természetesen nem emlékszem, hogy ki mit csinál és hogyan. Ezek után a kérdező megkérdezte, hogy most mit csinálok. A kérdések pedig erre a témára vonatkoztak. Itt már sokkal jobban válaszoltam.

Az utolsó interjú vége után átvették a bérletemet, sok szerencsét kívántak és útnak indítottak. Sétáltam egy kicsit a városban, megvacsoráztam és elmentem a szállodába, ahol lefeküdtem, mivel a repülés megint kora reggel volt. Másnap épségben megérkeztem Ciprusra. A toborzó kérésére visszajelzést írtam az interjúról, és egy speciális szolgáltatásban kitöltöttem egy űrlapot, hogy visszakapjam az elköltött pénzt. Az összes költség közül a Google közvetlenül csak a jegyekért fizet. A szállodát, az étkezést és az utazást a jelentkező fizeti. Ezután kitöltjük az űrlapot, csatoljuk a nyugtákat és elküldjük egy speciális irodába. Ezt feldolgozzák, és elég gyorsan utalnak pénzt a számlára.

Másfél hétbe telt az interjú eredményeinek feldolgozása. Ezt követően tájékoztattak, hogy „kicsit a léc alatt vagyok”. Vagyis kicsit alulmaradtam. Pontosabban 2 interjú jól sikerült, 2 kicsit nem, és a Rendszertervezés nem túl jól. Most, ha legalább 3 jól ment volna, akkor versenyezhettünk volna, különben nincs esély. Felajánlották, hogy egy év múlva visszajönnek.

Eleinte persze ideges voltam, mert rengeteg erőfeszítést fordítottak a felkészülésre, és az interjú idején már azon gondolkodtam, hogy elhagyjam Ciprust. A Google-hoz való csatlakozás és a Svájcba költözés nagyszerű lehetőségnek tűnt.

Következtetés

És itt elérkeztünk a cikk utolsó részéhez. Igen, kétszer is megbuktam a Google-interjún. Szomorú. Valószínűleg érdekes lenne ott dolgozni. De meg lehet nézni a dolgot a másik oldalról is.

  • Másfél év alatt rengeteg szoftverfejlesztéssel kapcsolatos dolgot tanultam meg.
  • Nagyon jól éreztem magam a programozó versenyeken.
  • Zürichbe mentem pár napra. Mikor megyek megint oda?
  • Érdekes interjúban volt részem a világ egyik legnagyobb informatikai cégénél.

Így mindaz, ami ez alatt a másfél év alatt történt, egyszerűen edzésnek, vagy edzésnek tekinthető. És ennek a képzésnek az eredménye érezhetővé vált. Megérett az elképzelésem, hogy elhagyjam Ciprust (néhány családi körülmény miatt), több interjún sikeresen leestem egy másik ismert cégnél, és 8 hónap után elköltöztem. De ez egy teljesen más történet. Ennek ellenére úgy gondolom, hogy meg kell köszönnöm a Google-nak azt a másfél évet, amit magamon dolgoztam, és 2 érdekes napot Zürichben.

Mit mondjak végül? Ha informatikai területen dolgozik, készüljön fel a Google-nél (Amazon, Microsoft, Apple stb.) folytatott interjúkra. Talán egy nap oda fogsz menni, hogy eljuss oda. Hidd el nekem, még ha nem is akarod, az ilyen felkészüléstől nem leszel rosszabb. Abban a pillanatban, amikor ráébredsz, hogy (még ha csak szerencsével is) interjút kaphatsz ezen cégek egyikével, sokkal több út nyílik meg előtted, mint a felkészülés megkezdése előtt. És csak a cél, a kitartás és az idő kell az út során. Sok sikert :)

Forrás: will.com

Hozzászólás