Jak se připravit na pohovor v Googlu a přitom neuspět. Dvakrát

Jak se připravit na pohovor v Googlu a přitom neuspět. Dvakrát

Název článku zní jako epický neúspěch, ale ve skutečnosti to není tak jednoznačné. A celkově tato historika skončila celkem pozitivně, i když ne v Googlu. Ale to už je téma pro jiný článek. V tomto článku se podělím o tři věci: jak probíhala má příprava, jak probíhaly pohovory v Googlu a proč si myslím, že všechno není tak jednoznačné, jak by se mohlo zdát.

Jak to všechno začalo

Jednoho chladného kyprského zimního večera mi najednou přišla na mysl myšlenka, že mé znalosti z klasické informatické vědy jsou dost vzdálené průměru, a s tím je třeba něco udělat. Pokud mimochodem někdo ještě nečetl, proč byl večer na Kypru chladný, může se o tom dozvědět. zde. Po určitých úvahách jsem se rozhodl nejprve absolvovat online kurz o algoritmech a datových strukturách. Od jednoho bývalého kolegy jsem slyšel o kurzu Roberta Sedgewicka na Coursera. Kurz se skládá ze dvou částí (část 1 a část 2). Pokud se odkazy změní, lze je vždy vyhledat podle jména autora. Každá část trvá 6 týdnů. Na začátku týdne jsou vydány přednášky a během týdne je třeba plnit úkoly. První část kurzu pokrývá základní datové struktury, hlavní typy třídění a složitost algoritmů. Druhá část je již pokročilejší, začíná grafy a končí takovými tématy jako je Lineární programování a Neřešitelnost. Po zvažování výše uvedeného jsem dospěl k závěru, že to je přesně to, co potřebuji. Zde se může zvídavý čtenář ptát, co má Google společného s tím. A opravdu, do této chvíle zde neměl nic společného. Ale potřeboval jsem cíl, protože studovat 12 týdnů večer bez cíle je poněkud obtížné. Jaký může být cíl při získávání nových znalostí? Samozřejmě jejich praktické uplatnění. V každodenním životě je to dost problematické, ale na pohovoru ve velké firmě to není žádný problém. Rychlé googlení ukázalo, že Google (omlouvám se za tautologii) je jednou z největších společností v Evropě (a já zvažoval právě Evropu), kde se takové pohovory konají. A konkrétně, jejich kancelář se nachází v Curychu, Švýcarsko. Takže je rozhodnuto – učíme se a jdeme na pohovor do Googlu.

Příprava na první kolo

12 týdnů uplynulo nepozorovaně a já dokončil oba kurzy. Mé dojmy z kurzů jsou více než pozitivní a mohu je doporučit všem zájemcům. Kurzy se mi líbily z následujících důvodů:

  • Lektor mluví dostatečně srozumitelně anglicky
  • Materiál je dobře strukturován
  • Skvělé prezentace, které ukazují vnitřnosti každého algoritmu
  • Dobrá volba materiálu
  • Zajímavá cvičení
  • Cvičení jsou automaticky kontrolována na webu, po čemž se vytváří zpráva

Moje práce na kurzech obvykle probíhala takto. Během 1-2 dnů jsem poslouchal přednášky. Poté jsem absolvoval rychlý test na znalosti materiálu. Zbytek týdne jsem prováděl cvičení v několika iteracích. Po prvním jsem dostal svých 30-70%, další už přivedly výsledek k 97-100%. Cvičení obvykle spočívalo v realizaci nějakého algoritmu, například Seam carving nebo bzip.

Po skončení kurzů jsem si uvědomil, že mnohé znalosti přinášejí mnohé starosti. Zatímco jsem předtím jen věděl, že nic nevím, nyní jsem začal chápat, co přesně nevím.

Jelikož byl teprve květen a pohovor jsem si naplánoval na podzim, rozhodl jsem se pokračovat ve svém vzdělávání. Po zhlédnutí požadavků na pracovní pozici jsem se rozhodl postupovat paralelně ve dvou směrech: pokračovat ve studiu algoritmů a absolvovat základní kurz strojového učení. Pro první cíl jsem se rozhodl přepnout z kurzů na knihu a vybral si monumentální dílo Stevena Skieny „Algoritmy. Příručka pro návrh“ (The Algorithm Design Manual). Ne tak monumentální jako od Knutha, ale přesto. Pro druhý cíl jsem opět šel na Coursera a zapsal se na kurz od Andrewa Nga. Strojové učení.

Uplynuly další 3 měsíce a já dokončil kurz a knihu.

Začněme s knihou. Čtení bylo dost zajímavé, ačkoli i náročné. V zásadě bych knihu doporučil, ale ne hned. Obecně kniha nabízí hlubší analýzu toho, co jsem se naučil v kurzech. K tomu jsem objevil (z formálního hlediska) některé věci jako heuristiky a dynamické programování. Samozřejmě, dříve jsem je používal, ale nevěděl jsem, jak se nazývají. Kniha také obsahuje řadu příběhů z autorova života (War Story), které trochu odlehčují akademický styl výkladu. Druhou polovinu knihy lze ostatně opomenout, tam je spíše popis existujících problémů a metod jejich řešení. Je to užitečné, pokud se to pravidelně používá v praxi, jinak se to hned zapomene.

Kurz mě více než potěšil. Autor zjevně ví, co dělá, a vypráví zajímavě. Kromě toho jsem si pamatoval značnou část, totiž lineární algebru a základy neuronových sítí, ještě z univerzity, takže jsem neměl žádné zvláštní potíže. Struktura kurzu je dost standardní. Kurz je rozdělen na týdny. Každý týden nejdříve probíhají přednášky střídavě s krátkými testy. Po přednáškách je zadání, které je třeba udělat, odeslat a automaticky se vyhodnocuje. Stručně řečeno, seznam probíraných témat v kurzu je následující:
— funkce nákladů
— lineární regrese
— gradientní sestup
— škálování rysů
— normální rovnice
— logistická regrese
— klasifikace více tříd (jeden proti všem)
— neuronové sítě
— zpětná propagace
— regularizace
— bias/varianta
— křivky učení
— metriky chyb (přesnost, zpětné volání, F1)
— podpora vektorových strojů (klasifikace s velkým okrajem)
— K-means
— analýza hlavních komponent
— detekce anomálií
— spolupracující filtrování (doporučovací systém)
— stochastické, mini-batch a batch gradientní sestupy
— online učení
— map reduce
— analýza stropu
Po absolvování kurzu jsem měl porozumění všem těmto tématům. Po dvou letech jsem už skoro všechno přirozeně zapomněl. Doporučuji těm, kdo nejsou obeznámeni s strojovým učením a chtějí získat dobré pochopení základních věcí pro další posun.

První pokus

Na dvoře už byl září a přišel čas zamyslet se nad pohovorem. Protože podání přes web je dost beznadějné, začal jsem hledat známé pracující v Google. Výběr padl na datacompboy, protože to byl jediný člověk, kterého jsem znal osobně (i když ne úplně). Souhlasil, že předá můj životopis, a brzy jsem dostal od recruitera e-mail, který nabízel rezervaci slotu v jeho kalendáři na první rozhovor. Po několika dnech proběhl hovor. Zkoušeli jsme komunikovat přes Hangouts, ale kvalita byla hrozná, takže jsme přešli na telefon. Nejprve jsme rychle probrali standardní otázky, jak, proč a co, a pak jsme přešli na technické screening. Ten se skládal z deseti otázek typu „jaká je složitost vložení do hash mapy“, „jaké vyvážené stromy znáte“. Není to složité, pokud máte základní znalosti o těchto tématech. Screening proběhl dobře a na základě výsledků jsme se rozhodli uspořádat první pohovor za týden.

Pohovor probíhal také prostřednictvím Hangouts. Nejdříve jsme si pět minut povídali o mně, poté jsme přešli k úloze. Úloha byla o grafech. Rychle jsem pochopil, co je třeba udělat, ale zvolil jsem špatný algoritmus. Když jsem začal psát kód, uvědomil jsem si to a přešel na jinou variantu, kterou jsem dopsal. Tazatel položil několik otázek týkajících se složitosti algoritmu a zeptal se, zda by to šlo rychleji. Na chvíli jsem ztratil myšlenky a nedokázal jsem odpovědět. Na tom nám vypršel čas a rozloučili jsme se. Asi po deseti minutách mi došlo, že místo Dijkstraova algoritmu, který jsem použil, by bylo v této úloze možné použít prohledávání do šířky, což by bylo rychlejší. Po nějaké době mi zavolal recruiter a řekl, že pohovor v celku proběhl dobře a že by bylo dobré uspořádat další. Domluvili jsme se na další pohovor za týden.

Tentokrát to šlo hůře. Když byl první rozhovor přátelský a komunikativní, tentokrát byl nějaký ponurý. Úlohu jsem okamžitě nepochopil, i když nápady, které jsem předložil, mohly v zásadě vést k jejímu řešení. Nakonec mi po několika nápovědách od rozhovoru došlo řešení. Opět to byl opět průzkum do šířky, akorát z několika bodů. Řešení jsem napsal, čas jsem dodržel, ale zapomněl jsem na okrajové případy. Po nějaké době mi zavolal náborář a sdělil mi, že tentokrát nebyl rozhovor spokojen, protože podle jeho názoru jsem potřeboval příliš mnoho nápovědy (3 nebo 4) a průběžně jsem měnil kód během psaní. Na základě dvou pohovorů bylo rozhodnuto dále nejít a odložit další rozhovor na rok, pokud budu mít takovou chuť. A tak jsme se rozloučili.

Z této historie jsem si udělal několik závěrů:

  • Teorie je dobrá, ale je potřeba v ní se rychle orientovat.
  • Teorie bez praxe nepomůže. Je třeba řešit úlohy a dovést psaní kódu k automatismu.
  • Mnohé závisí na rozhovoru. S tím se nic nedá dělat.

Příprava na druhé kolo.

Poté, co jsem situaci promyslel, rozhodl jsem se zkusit to znovu za rok. A mírně jsem upravil cíl. Pokud dříve byl hlavním cílem studium a pohovor v Googlu jako daleká mrkev, nyní bylo absolvování pohovoru cílem a studium prostředkem.
Takže byl vypracován nový plán, který obsahoval následující body:

  • Pokračovat ve studiu teorie prostřednictvím četby knih a článků.
  • Vyřešit algoritmické úlohy v množství 500-1000 kusů.
  • Pokračovat ve studiu teorie prostřednictvím sledování videí.
  • Pokračovat ve studiu teorie prostřednictvím kurzů.
  • Studovat zkušenosti jiných lidí při absolvování pohovorů v Googlu.

Plán jsem splnil za rok. Dále popíšu, co přesně jsem dělal u každého z bodů.

Knihy a články

Počet přečtených článků už si ani nevzpomínám, četl jsem je jak v ruštině, tak v angličtině. Nejužitečnějším webem se pravděpodobně stal tento.Je zde shromážděn popis velkého množství zajímavých algoritmů s příklady kódu.

Přečetl jsem 5 knih: Algorithms, 4. vydání (Sedgewick, Wayne), Introduction to Algorithms, 3. vydání (Cormen, Leiserson, Rivest, Stein), Cracking the Coding Interview, 4. vydání (Gayle Laakmann), Programming Interviews Exposed, 2. vydání (Mongan, Suojanen, Giguere), Elements of Programming Interviews (Aziz, Lee, Prakash). Tyto knihy lze rozdělit do 2 kategorií. První kategorie zahrnuje knihy Sedgewicka a Cormen. To jsou teoretické knihy. Ostatní slouží jako příprava na pohovory. Sedgewick v knize popisuje zhruba to stejné, co ve svých kurzech. Jen v písemné podobě. Nemá moc smysl číst pečlivě, pokud jste absolvovali kurz, ale prolistovat je stojí za to. Pokud jste kurz neabsolvovali, má smysl si je přečíst. Cormen se mi zdál příliš nudný. Upřímně, přečetl jsem ho s obtížemi. Přišel jsem jen na master theorem, a několik málo málo používaných datových struktur (Fibonacci heap, van Emde Boas tree, radix heap).

Knihu na přípravu k pohovoru byste si měli přečíst alespoň jednu. Všechny jsou postavené zhruba na jednom principu. Popisují proces pohovoru ve velkých technologických společnostech, poskytují základní znalosti z informatiky, úkoly na tyto základní znalosti, řešení úloh a rozbory řešení. Z uvedených tří bych pravděpodobně doporučil Cracking the Coding Interview jako hlavní, a ostatní podle přání.

Algoritmické úlohy

To byl asi nejzajímavější bod přípravy. Samozřejmě se můžete posadit a prostě řešit úlohy. Existuje mnoho různých webů. Hlavně jsem používal tři: Hackerrank, CodeChef a LeetCode. Na CodeChef jsou úlohy rozděleny podle obtížnosti, ale ne podle témat. Na Hackerrank podle obtížnosti i témat.

Ale jak jsem si hned vyjasnil, existuje zajímavější způsob. A to jsou soutěže (programming challenges nebo programming contests). Všechny tři weby je poskytují. Pravda, s LeetCode je problém — nepohodlné časové pásmo. Takže jsem se této stránce neúčastnil. Hackerrank a CodeChef nabízejí dost velké množství různých soutěží, které trvají od 1 hodiny do 10 dnů. Různé formáty mají různá pravidla, ale o tom by se dalo dlouho povídat. Hlavní podstata, proč jsou soutěže dobré, je vnesení soutěžního (a znovu tautologie) prvku do procesu učení.

Celkem jsem se zúčastnil 37 soutěží na Hackerrank. Z toho bylo 32 hodnocených a 5 sponzorovaných (v jedné jsem dokonce získal 25 $) nebo jen pro zábavu. V hodnocených soutěžích jsem 10krát skončil v top 4 %, 11krát v top 12 % a 5krát v top 25 %. Mými nejlepšími výsledky byly 27/1459 ve tříhodinové a 22/9721 v týdenní soutěži.

Na CodeChef jsem přešel, když na Hackerrank soutěže začaly být méně časté. Celkem jsem se zúčastnil 5 soutěží. Nejlepším výsledkem bylo 426/5019 v deseti denní soutěži.

Celkem jsem na soutěžích a jen tak rozhodl něco přes 1000 úloh, což zapadalo do plánu. Teď bohužel nemám volný čas na pokračující soutěžní činnost, stejně jako nemám cíl, na který bych mohl směrovat svůj volný čas. Ale bylo to zábavné. Doporučuji těm, kteří by se o to mohli zajímat, najít si spřízněné duše. Ve dvou nebo ve skupině je mnohem zajímavější. Já jsem se tím bavil s kamarádem, proto to možná šlo tak dobře.

Sledování videí

Po přečtení knihy od Skiena jsem se v podstatě začal zajímat o to, čemu se věnuje. Stejně jako Sedgwick je profesorem na univerzitě. Vzhledem k tomu lze na internetu najít videozáznamy jeho kurzů. Rozhodl jsem se shlédnout kurz COMP300E — Programovací výzvy — 2009 HKUST. Neřekl bych, že se mi to moc líbilo. Za prvé, kvalita videa není příliš dobrá. Za druhé, sám jsem se nepokoušel řešit úlohy, které se v rámci kurzu probírají. Takže zapojení nebylo příliš vysoké.
Také při řešení úloh, když jsem se snažil najít správný algoritmus, jsem narazil na videa Tushara Roye. Pracoval v Amazonu a nyní pracuje v Apple. Jak jsem později zjistil, má kanál na YouTube, kde zveřejňuje rozbory různých algoritmů. K datu napsání tohoto článku kanál obsahuje 103 videí. A musím říct, že rozbor v jeho podání je velmi slušný. Snažil jsem se koukat na jiné autory, ale nějak mi to nesedlo. Takže tento kanál mohu určitě doporučit k zhlédnutí.

Účast na kurzech

Tady jsem se nijak zvlášť nezapojil. Podíval jsem se na videa z Android Developer Nanodegree od Google a absolvoval kurz od ITMO Jak vyhrát v programovacích soutěžích: Tajemství mistrů. Nanodegree je fajn, i když jsem z něj samozřejmě nic nového nezjistil. Kurz od ITMO je v oblasti teorie trochu zhuštěný, ale úkoly byly zajímavé. Nedoporučoval bych ho jako začátek, ale v podstatě čas na něj nebyl promarněn.

Studovat zkušenosti ostatních lidí

Samozřejmě, mnoho lidí se snažilo dostat do Googlu. Někdo se dostal, někdo ne. Někteří o tom psali články. Zajímavou věcí bych asi vyzdvihl tenhle a tenhle. V prvním případě si člověk připravil seznam toho, co se musí naučit, aby se stal Software Engineerem a dostal se do Googlu. Nakonec se dostal do Amazonu, ale to už není tak důležité. Druhý manuál napsala inženýrka Google, Larisa Agarová (Larrr). Kromě tohoto dokumentu si můžete také přečíst její blog.

Stojí za to přečíst si recenze pohovorů na Glassdoor. Všechno je to víceméně podobné, ale nějaké užitečné informace můžete vyčíst.

Odkazy na jiné drobné články nebudu uvádět, budete je moci snadno najít v Googlu.

Druhá část

A tak uplynul rok. Byl to velmi plodný rok z hlediska učení. Ale k nové podzimní sezoně jsem přišel s mnohem hlubšími teoretickými znalostmi a zpracovanými praktickými dovednostmi. Do konce určitého času, který jsem měl na přípravu, zbývalo ještě několik týdnů, když jsem najednou dostal e-mail od recruitera z Googlu, ve kterém se mě ptal, zda stále chci pracovat v Googlu a zda bych s ním nechtěl mluvit. Samozřejmě, že jsem neměl nic proti. Domluvili jsme se, že si zavoláme za týden. Také jsem byl požádán o aktualizovaný životopis, ke kterému jsem připojil krátký popis toho, co jsem udělal za rok v práci a tak vůbec.

Po rozhovoru o životě jsme se rozhodli, že se za týden uskuteční rozhovor přes Hangouts, všechno jako minulý rok. Týden uplynul, nastal čas pohovoru, ale tazatel se nedostavil. Uplynulo 10 minut, už jsem začínal nervózně vyčkávat, když se do chatu najednou někdo přihlásil. Jak se ukázalo později, můj tazatel se z nějakého důvodu nemohl dostavit a naléhavě mu našli náhradu. Člověk nebyl příliš připravený jak co se týče nastavení počítače, tak co se týče provádění pohovoru. Ale pak už všechno probíhalo v pořádku. Úkol jsem rychle vyřešil, popsal, kde mohou být úskalí a jak je možné je překonat. Diskutovali jsme o několika různých variantách úkolu, složitosti algoritmu. Pak jsme si ještě 5 minut popovídali, inženýr sdílel své dojmy z práce v Mnichově (v Curychu evidentně nenašli žádnou naléhavou náhradu), na tom jsme se rozloučili.

Téhož dne se mnou kontaktoval recruiter a oznámil mi, že pohovor proběhl skvěle a jsou připraveni mě pozvat na pohovor do kanceláře. Následující den jsme si zavolali přes Hangouts a prodiskutovali podrobnosti. Protože jsem potřeboval vízum, rozhodli jsme se naplánovat pohovor za měsíc.

Zatímco jsem připravoval dokumenty, zároveň jsem s recruiterem diskutoval o nadcházejícím pohovoru. Standardní pohovor v Googlu se skládá ze 4 algoritmických otázek a jedné otázky na System Design. Ale protože jsem se ucházel o pozici Android vývojáře, bylo mi řečeno, že část pohovoru bude se specifikou pro Android. Jaké konkrétně otázky a v čem bude specifika, jsem z recruitera nedokázal dostat. Jak jsem pochopil, to zavedli relativně nedávno a on sám o tom nebyl příliš informovaný. Také mě zapsali na dvě tréninkové sezení: jak projít algoritmickým pohovorem a jak projít pohovorem na System Design. Sezení byla středně užitečná. Ani tam mi nikdo nedokázal říct, co se ptají Android vývojářů. Takže moje příprava v tomto měsíci se omezila na následující:

  • Nákupu tabule a napsání 2-3 desítek nejpopulárnějších algoritmů na ní z paměti. 3-5 algoritmů každý den. Celkově bylo každé napsáno několikrát.
  • Osvěžení paměti v různých informacích o Androidu, které nepoužívám každý den.
  • Shlédnutí několika videí o Big Scale a podobně.

Jak jsem již řekl, současně jsem vyřizoval dokumenty na cestu. Na začátek jsem byl požádán o informace k příprave pozvání. Poté jsem dlouho zjišťoval, kdo na Kypru vyřizuje víza do Švýcarska, protože švýcarské velvyslanectví se tím nezabývá. Jak se ukázalo, tím se zabývá rakouský konzulát. Zavolal jsem a objednal se na schůzku. Požadovali spoustu dokumentů, ale nic zvláštního. Fotografie, pas, povolení k pobytu, hromadu různých potvrzení a samozřejmě pozvání. Mezitím pozvání stále nepřicházelo. Nakonec jsem odjel s obyčejným tiskem a to stačilo. Samotné pozvání přišlo až za tři dny, přičemž kyprský FedEx nedokázal najít mou adresu a musel jsem si pro něj dojet. Při té příležitosti jsem také vyzvedl v tomtéž FedExu balíček, který mi také nebyli schopni doručit, protože nenašli adresu, a který tam ležel od června (pět měsíců, Carle). Protože jsem o něm nevěděl, tak jsem ani nepředpokládal, že ho mají. Víza jsem obdržel včas, po čemž mi rezervovali hotel a nabídli možnosti letu. Možnosti jsem upravil, aby byly pohodlnější. Přímé lety už nebyly, takže jsem letěl tam přes Atény a zpět přes Vídeň.

Poté, co byly všechny formality s cestou vyřízeny, uplynulo ještě několik dní a já vlastně odletěl do Curychu. Dorazil jsem bez dobrodružství. Z letiště do města jsem se dostal vlakem – rychle a pohodlně. Trochu jsem se pletl po městě, než jsem našel hotel a ubytoval se. Protože byl hotel rezervován bez jídla, povečeřel jsem v sousedství a šel spát, protože let byl ranní a už jsem měl spát. Druhý den jsem snídal v hotelu (za extra peníze) a vyrazil do kanceláře Google. V Curychu má Google několik kanceláří. Moje pohovor se nekonal v centrální. A celkově kancelář vypadala docela obyčejně, takže jsem neměl příležitost vidět všechny vychytávky „normální“ kanceláře Google. Zaregistroval jsem se u administrátora a sedl si počkat. Po chvíli vyšel náborář a řekl mi plán na den, po čemž mě zavedl do místnosti, kde se měla konat pohovory. V plánu byly 3 pohovory, oběd a další 2 pohovory.

Pohovor číslo jedna

První pohovor se týkal Androidu, přičemž nijak nesouvisel s algoritmy. Ale byl to překvapení. No, co si budeme, je to tak nějak obvyklé. Požádali mě, abych vytvořil určitou komponentu UI. Nejdřív jsme probírali, co a jak. Navrhl jsem řešení pomocí RxJava a popsal, co a proč bych udělal. Řekli, že to je samozřejmě hezké, ale pojďme to udělat pomocí Android frameworku. A zároveň napišeme kód na tabuli. Nejenom komponentu, ale celou Activity, která tuto komponentu používá. Na to jsem tedy nebyl připraven. Je jedno psát na tabuli algoritmus na 30-50 řádků, a něco jiného je psát Android kód, i když zkráceně a se poznámkami typu „tohle psát nebudu, protože je to jasné“. Výsledkem byl jakýsi salát na třech tabulích. Takže úkol jsem splnil, ale vypadalo to hrozně.

Pohovor číslo dvě

Tentokrát pohovor byl o algoritmech a bylo tam dvou interviewérů. Jeden byl vlastně interviewér a druhý mladý padawan (shadow interviewer). Potřebovali jsme vymyslet datovou strukturu s určitými vlastnostmi. Nejprve jsme jako obvykle probírali problém. Kladl jsem různé otázky, interviewér odpovídal. Po nějaké době mě požádali, abych na tabuli napsal několik metod vymyslené struktury. Tentokrát to šlo více méně dobře, i když s několika drobnými chybami, které jsem opravil na základě nápovědy interviewéra.

Pohovor číslo tři

Tentokrát to byl System Design, který se náhle ukázal jako Android. Mělo se vyvinout aplikaci s určitými funkcemi. Probrali jsme požadavky na aplikaci, server a komunikační protokol. Poté jsem začal popisovat, jaké komponenty nebo knihovny bych použil při výstavbě aplikace. A při zmínce o Job Scheduler jsem měl určité potíže. Podstata je, že jsem ho nikdy v praxi nepoužíval, protože v době jeho vydání jsem přecházel na podporu aplikací, kde nebylo možné jeho použití. U dalších projektů to bylo stejné. Teoreticky vím, co to je, kdy a jak se používá, ale nemám s ním zkušenosti. A to interviewerovi asi moc nelíbilo. Poté mě požádali, abych napsal kód. Ano, při vývoji aplikace je třeba ihned psát kód. Znovu to byl Android kód na tabuli. Znovu to vypadalo hrozně.

Oběd

Měl přijít ještě jeden člověk, ale nepřišel. I Google se někdy zmýlí. Nakonec jsem šel na oběd s předchozím tazatelem, jejím kolegou, a o chvíli později se připojil další tazatel. Oběd byl docela příjemný. Opět, vzhledem k tomu, že to není hlavní kancelář v Curychu, kantýna vypadala dost obvykle, i když velmi příjemně.

Rozhovor číslo čtyři

Konečně čisté algoritmy. První úkol jsem vyřešil dost rychle a efektivně, i když jsem se netrefil do jednoho okrajového případu, ale podle nápovědy tazatele (on mi dal právě ten okrajový případ) jsem problém našel a opravil. Samozřejmě jsem musel psát kód na tabuli. Poté byla dána podobná, ale složitější úloha. Na tu jsem našel pár neopтимálních řešení a téměř jsem našel optimální, chybělo mi 5-10 minut, abych myšlenku doladil. Kód pro ni jsem už ale napsat nestihl.

Rozhovor číslo pět

A znovu pohovor zaměřený na Android. Zajímavé, proč jsem se celý rok učil algoritmy?
Nejprve bylo několik jednoduchých otázek. Poté tazatel napsal kód na tabuli a požádal mě, abych našel v něm chyby. Našel jsem, vysvětlil, opravil. Diskutovali jsme. A pak přišly nějaké nečekané otázky ve stylu 'co dělá metoda Y ve třídě X', 'co je uvnitř metody Y', 'co dělá třída Z'. Na něco jsem samozřejmě odpověděl, ale pak jsem řekl, že jsem se s tím v poslední době v práci nesetkal a samozřejmě si nepamatuji, kdo, co a jak v detailech dělá. Poté se tazatel ptal, co teď dělám. A otázky se začaly ubírat tímto směrem. Tady už jsem odpovídal mnohem lépe.

Po skončení posledního pohovoru mi vzali průkaz, popřáli hodně štěstí a poslali mě pryč. Trochu jsem se prošel po městě, večeřel a šel do hotelu, kde jsem se zhroutil do postele, protože let byl opět brzy ráno. Druhý den jsem se úspěšně dostal na Kypr. Na žádost náboráře jsem napsal zpětnou vazbu k pohovoru a vyplnil ve speciální službě formulář na vrácení vynaložených peněz. Z veškerých nákladů Google přímo platí pouze letenky. Hotel, jídlo a dopravu hradí uchazeč. Poté vyplníme formulář, přiložíme účtenky a odešleme do speciální kanceláře. Ti to zpracují a docela rychle převedou peníze na účet.

Zpracování výsledků pohovorů trvalo jeden a půl týdne. Po té mi bylo sděleno, že jsem byl "a bit below the bar". Jinými slovy, mírně jsem zaostal. Konkrétně, 2 pohovory proběhly dobře, 2 nebyly moc dobré, a System Design byl velmi špatný. Kdyby alespoň 3 proběhly dobře, mohl bych se ucházet, ale takhle nemám šanci. Nabídli mi, abych se přihlásil znovu za rok.

Na začátku jsem byl samozřejmě zklamaný, protože příprava zabrala hodně sil, a k okamžiku pohovoru jsem už zvažoval, že opustím Kypr. Práce v Googlu a přestěhování do Švýcarska se zdály být skvělou možností.

Závěr

A tady přicházíme k závěrečné části článku. Ano, dvakrát jsem neprošel pohovorem v Googlu. Je to smutné. Určitě by bylo zajímavé tam pracovat. Ale můžeme se na to podívat i z jiné stránky.

  • Za jeden a půl roku jsem se naučil obrovské množství věcí spojených s vývojem softwaru.
  • Měl jsem velkou radost, účastnit se soutěží v programování.
  • Jel jsem na pár dní do Curychu. Kdy se tam zase dostanu?
  • Získal jsem zajímavé zkušenosti z pohovoru v jedné z největších IT společností na světě.

Takže všechno, co se stalo za těchto jeden a půl roku, lze jednoduše považovat za učení nebo trénink. A výsledky tohoto tréninku se začaly projevovat. Můj záměr opustit Kypr dozrál (z určitých rodinných důvodů), úspěšně jsem prošel několika pohovory v jiné známé společnosti a po 8 měsících jsem se přestěhoval. Ale to je už úplně jiný příběh. Přesto si myslím, že bych měl poděkovat Googlu jak za těchto jeden a půl roku, kdy jsem na sobě pracoval, tak za 2 zajímavé dny v Curychu.

Co mohu říci na závěr. Pokud pracujete v IT, připravte se na pohovor v Googlu (Amazon, Microsoft, Apple atd.). Možná se tam někdy dostanete. I když se vám to nebude chtít, věřte, že taková příprava vám určitě neublíží. V okamžiku, kdy si uvědomíte, že můžete (i když jen při šťastné konstelaci okolností) projít pohovorem v jedné z těchto společností, se vám otevře mnohem více cest, než na začátku vaší přípravy. A vše, co budete potřebovat na cestě, je cíl, vytrvalost a čas. Přeji hodně štěstí 🙂

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster