S druhým veľkým technologickým rozmachom spoločnosti Silicon Valley sú inžinieri veľmi žiadaní zo strany začínajúcich aj technologických gigantov. Pre tých, ktorí majú technické zázemie alebo študujú informatiku, svet je práve teraz vašou ustríciou.
Ako už bolo povedané, spoločnosti nielen rozdávajú pracovné miesta. Programátori stále musia absolvovať špecializované rozhovory - vrátane niekedy obávaného technického rozhovoru.
Príprava na ne môže byť mätúce utrpenie. Mali by ste študovať konkrétne technické projekty alebo všeobecne obnoviť veľa tém? Mali by ste trénovať na počítači alebo s priateľom?
Ako tretí inžinier v spoločnosti Pocket Gems, ktorý má asi 165 technických zamestnancov, som uskutočnil stovky telefonických rozhovorov a rozhovorov na mieste. Počas tejto doby som sa veľa naučil, ako sa na ňu správne pripraviť. Tu je niekoľko tipov, ktoré potrebujete, aby ste si pri ďalšom technickom pohovore nechali nechty.
Zamerajte sa na základy
Tazatelia sa vás predovšetkým opýtajú na vaše základné princípy: dátové štruktúry, algoritmická analýza zložitosti, návrh triedy a podobne. Budú to otázky priamo o základoch (napr. Použite X na vykonanie Y), ako aj o otázkach, na ktoré budete používať svoje základy (viac k tomu nižšie).
Základy považujte za nástroje v paneli s nástrojmi. Zostanú rovnaké bez ohľadu na to, z čoho vychádza nová úžasná nová technológia. So silnými základmi budete lepšie pripravení riešiť otvorené problémy - druhy problémov, ktoré my a mnohé ďalšie startupy riešime každý deň. Zameraním sa na základné otázky môžu anketári stráviť menej času kladením otázok na pohovor a viac času zisťovaním, ako si myslíte.
Môžete sa napríklad opýtať na niečo také: Dostali ste binárny strom a dva uzly v strome. Nájdite najnižšieho spoločného predka dvoch daných uzlov v čase O (n).
Prostredníctvom tejto otázky sa anketár snaží zistiť, ako dobre dokážete oznámiť svoj myšlienkový proces a riešenie. Ako premýšľate nad problémom, organizujte svoje myšlienky a komunikujte svoju odpoveď, je často rovnako dôležitý ako váš záver. Pracujeme v zložitých a neustále sa meniacich prostrediach a potrebujeme ľudí, ktorí dokážu riešiť ťažké problémy a efektívne ich komunikovať so svojimi technickými a netechnickými spoluhráčmi.
V tejto oblasti rozhovoru by ste mali pohodlne diskutovať o veciach, ako sú reťazce, polia, základná syntax, typy údajov, prepojené zoznamy, stromy, grafy, stohy, fronty a hašovacie tabuľky. Jo, a uistite sa, že môžete odpovedať na FizzBuzz bez pálenia oka.
Buďte pripravení riešiť veci rôznymi spôsobmi
Každý z vašich základov má svoje výhody a nevýhody a ponúka jedinečné riešenie pre konkrétny typ problému. Keď sa vás opytovatelia opýtajú iba na vaše základné otázky, pravdepodobne uvidia, ako ich môžete použiť v praxi. Dosahuje sa to kladením otvorených otázok, ktoré je možné vyriešiť rôznymi spôsobmi.
Vzorová otázka by tu bola: Dostali ste aritmetickú rovnicu ako reťazec. Táto rovnica bude mať jednociferné 0-9, sčítanie, odčítanie, násobenie a zátvorky. Napíš funkciu, ktorá vezme túto rovnicu a vypočíta správnu odpoveď. Príklady vstupov zahŕňajú „1 + 1“ a „2 * (1 + 9) - ((2 + 5) -9“).
Ako predtým, anketár chce vidieť, ako rozdeľujete otvorené otázky a váš proces myslenia pri výbere riešenia. Najdôležitejšie je, že chcú vidieť, že dokážete efektívne komunikovať zložité problémy.
Nezáleží na tom, akú otázku alebo aké riešenie vyberiete, nezabudnite premyslieť nahlas! Ak máte rôzne spôsoby riešenia problému, pred rozhodnutím, ktoré možnosti použijete, si prečítajte možnosti. Pomáha anketárom vidieť a porozumieť vášmu myšlienkovému procesu. Osoba vedúca pohovor môže tiež odporučiť jedno riešenie pred ostatnými, pretože vie, že ostatní môžu mať určité úskalia alebo môžu byť mimo dosahu pohovoru.
Nebojte sa klásť otázky, ak je niečo nejasné alebo nie je k dispozícii veľa podrobností. Tieto ukazujú, že tiež premýšľate - a dávajú anketárovi pocit, ako by ste pracovali s ostatnými. Uistite sa, že kladiete objasňujúce otázky, aby ste úplne porozumeli otázke a aby ste nerozširovali rozsah problému (napr. Čo sú niektoré príklady vstupov? Musím sa obávať delenia nulou? Musím sa obávať letné úspory?)
Nakoniec sa uistite, že slovne prejdete niekoľko testovacích prípadov skôr, ako poviete, že ste skončili. To vám umožní skontrolovať kód a ukázať anketárovi, že ho kontrolujete. Tak jednoduché, ako by to robilo pracovné pohovory, bohužiaľ nemôžeme prečítať vašu myseľ.
Keď sa teda pripravujete, precvičte si otázky pomocou rôznych nástrojov z vášho balíka nástrojov, aby ste si o tom vyvinuli intuíciu. Dozviete sa, kedy používať každý z vašich nástrojov, aby ste sa počas rozhovoru nestratili. A nezabudnite precvičiť proces popisu myšlienok - toto môže byť najťažšia časť pre programátorov, ktorí sú zvyknutí pracovať izolovane.
Cvičenie, Cvičenie, Cvičenie
Čím viac trénujete, tým lepšie budete na technický kódovací rozhovor. Platí to pre väčšinu vecí, ale najmä pre technické rozhovory, ktoré skutočne vyžadujú, aby ste zahriali svoj mozog.
Tu je niekoľko tipov, ktoré vám pomôžu vyťažiť maximum zo svojho tréningového času:
- Uistite sa, že simulujete prostredie rozhovoru. Dajte si časový limit na problémy. Ak sa chystáte telefonovať, precvičte si Stypi aj Dokumenty Google. (Ja viem pre seba, pretože som nemal automatické doplňovanie a zvýrazňovanie syntaxe ma zakoplo o telefonické rozhovory.) Ak sa chystáte urobiť rozhovor osobne, precvičte problémy na papieri alebo na tabuli.
- Nechajte netechnického priateľa, aby sa vás opýtal na otázky týkajúce sa rozhovoru a aby ste ho prešli jeho odpoveďami. Ak mu to môžete vysvetliť, som si istý, že to môžete vysvetliť svojmu technickému anketárovi.
- Nemáte pocit, že podvádzate, ak používate niektoré z prípravných nástrojov, ktoré sú tam. Často ponúkajú veľké informácie a praktické otázky. Moje obľúbené sú webové stránky ako TopCoder a knihy First First . Niektoré ďalšie knihy, ktoré hovoria viac o procese rozhovoru, sú Programming Interviews Exposed a Cracking the Code Interview .
Technické rozhovory s kódovaním sa môžu zdať dosť skľučujúce, ale so správnymi typmi cielenej praxe budete pripravení na ne. Nezabudnite sa zamerať na svoj chlieb a maslo, základy a veľa trénovať. Postupujte podľa vyššie uvedených tipov a budete pripravení na ďalší technický pohovor.
Chcete viac informácií? Nedávno som predstavil túto tému na konferencii UC Berkeley Engineering / Tech Career. Pozrite sa na moje snímky z rozhovoru nižšie, kde nájdete ďalšie myšlienky a zdroje!