Z drugim velikim razcvetom Silicijeve doline so inženirji po novem povpraševali tako startupi kot tehno velikani. Za tiste, ki imate inženirsko ozadje ali študirate računalništvo, je svet zdaj vaša ostrige.
Kot rečeno, podjetja ne dajejo samo delovnih mest. Programerji morajo še vedno iti skozi specializirane postopke za razgovore - vključno s včasih strašljivim tehničnim intervjujem.
Priprava nanje je lahko zmedeno opravičilo. Bi morali preučiti posebne tehnične projekte ali se na splošno osvežiti na veliko tem? Bi morali vaditi v računalniku ali s prijateljem?
Kot tretji inženir podjetja Pocket Gems, ki ima približno 165 tehničnih zaposlenih, sem opravil na stotine telefonskih razgovorov in na kraju samem. V tem času sem se naučil veliko o tem, kako se pravilno pripraviti na enega. Tu je nekaj nasvetov, ki jih potrebujete za prihodnji naslednji tehnični intervju.
Osredotočite se na osnove
Anketarji vam bodo v glavnem zastavili vprašanja o vaših temeljih: podatkovne strukture, algoritmična analiza kompleksnosti, oblikovanje razredov in podobno. To bodo vprašanja, ki se nanašajo neposredno na osnove (npr. Uporabite X za Y) in vprašanja, za katera boste uporabili svoje osnove (več o tem spodaj).
Pomislite na osnove kot orodja v svojem orodjarni. Ostali bodo isti, ne glede na to, kakšna nova tehnologija se pojavi. Z močnimi osnovami boste bolje pripravljeni na reševanje odprtih težav - vrste težav, ki jih mi in številni drugi startupi rešujemo vsakodnevno. Z osredotočanjem na osnove lahko anketarji porabijo manj časa za postavljanje vprašanj o intervjuju in več časa za ogled svojega razmišljanja.
Na primer, morda vas bo vprašala nekaj takega: V drevesu ste dodelili binarno drevo in dve vozlišči. Poiščite najnižjega skupnega prednika obeh danih vozlišč v času O (n).
S tem vprašanjem anketar išče, kako dobro lahko sporočate svoj miselni postopek in rešitev. Kako razmišljate skozi težavo, si organizirate misli in sporočate svoj odgovor je pogosto tako pomemben kot vaš zaključek. Delamo v zapletenih in nenehno spreminjajočih se okoljih in potrebujemo ljudi, ki znajo rešiti težke težave in jih učinkovito sporočiti svojim tehničnim in netehničnim soigralcem.
Za to področje intervjuja bi morali razpravljati o stvareh, kot so strune, matrike, osnovna sintaksa, tipi podatkov, povezani seznami, drevesa, grafi, staki, čakalne vrste in razpredelnice. Oh, in prepričajte se, da lahko odgovorite na FizzBuzz, ne da bi si privoščil oko.
Bodite pripravljeni rešiti stvari na različne načine
Vsak od vaših temeljev ima prednosti in slabosti in ponuja edinstveno rešitev za določeno vrsto težav. Ko vam bodo anketarji zastavili vprašanje samo glede vaših osnov, bodo verjetno videli, kako jih lahko uporabite v praksi. To dosežemo s postavljanjem odprtih vprašanj, ki jih je mogoče rešiti na različne načine.
Vzorčno vprašanje bi bilo tukaj: Aritmetična enačba vam je dana kot niz. Ta enačba bo imela enoštevilčne 0-9, seštevanje, odštevanje, množenje in oklepaje. Napišite funkcijo, ki sprejme to enačbo in izračuna pravilen odgovor. Primer vnosov vključujeta „1 + 1“ in „2 * (1 + 9) - ((2 + 5) -9“).
Kot že prej, želi anketar videti, kako razčlenite odprta vprašanja in svoj miselni proces pri izbiri vaše rešitve. Najpomembneje je, da želijo videti, da lahko učinkovito sporočite zapletene težave.
Ne glede na vprašanje ali kakšno rešitev izberete, ne pozabite na glas! Če imate različne načine reševanja težave, se pred odločitvijo, katero uporabiti, pogovorite o možnostih. Anketar pomaga, da vidi in razume vaš miselni postopek. Prav tako lahko anketar priporoči eno rešitev nad drugimi, ker ve, da imajo drugi lahko določene pasti ali pa so zunaj obsega intervjuja.
Ne bojte se postavljati vprašanja, če je nekaj nejasno ali ni veliko podrobnosti. Te kažejo, da tudi vi razmišljate - in anketarju dajo občutek, kako bi sodelovali z drugimi. Prepričajte se, da postavljate razjasnjevalna vprašanja, da v celoti razumete vprašanje in da ne razširite obsega težave (npr. Kakšni so primeri vnosov? Ali se moram skrbeti, če delim z 0? Ali me mora skrbeti prihranek dnevne svetlobe?)
Končno se prepričajte, da ste ustno preučili nekaj testnih primerov, preden boste rekli, da ste končali. To vam omogoča, da preverite kodo in anketarju pokažete, da preverite svojo kodo. Tako enostavno, kot bi se lahko pogovarjali o zaposlitvi, na žalost ne moremo prebrati vašega razmišljanja.
Medtem ko pripravljate, vadite reševanje vprašanj z različnimi orodji iz svojega orodja, da boste razvili intuicijo o tem. Vedite, kdaj uporabiti vsako svoje orodje, da se med intervjujem ne boste spotaknili. In poskrbite, da boste v celoti opisali svoj miselni proces - to je lahko najtežji del kodrov, ki so navajeni delati izolirano.
Vadba, praksa, praksa
Bolj ko boste vadili, bolje boste pripravljeni na intervju s tehničnim kodiranjem. To velja za večino stvari, predvsem pa za tehnične pogovore - resnično potrebujejo, da segrejete možgane.
Tu je nekaj nasvetov, ki vam bodo pomagali kar najbolje izkoristiti čas vadbe:
- Prepričajte se, da simulirate okolje za intervju. Določite si časovno omejitev za težave. Če boste opravljali telefonski razgovor, vadite tako za Stypi kot za Google Dokumente. (Vem zase, če me samodejno dokončanje in poudarjanje sintakse ni sprožilo v telefonskih intervjujih.) Če boste intervju delali osebno, vadite težave s papirjem ali na beli tabli.
- Naj vam netehnični prijatelj zastavi vprašanja o intervjuju in ga pojdite skozi svoje odgovore. Če mu lahko to razložite, lahko to razložite svojemu tehničnemu anketarju.
- Ne uporabljajte se, če uporabljate nekatera orodja za pripravo, ki so tam. Pogosto ponujajo odličen vpogled in vadijo vprašanja. Moji favoriti so spletna mesta, kot sta TopCoder in knjige First Head . Nekatere druge knjige, ki več govorijo o procesu intervjuja, so Programirani intervjuji, ki so izpostavljeni, in treskanje kode .
Tehnični intervjuji s kodiranjem se lahko zdijo zelo zastrašujoči, toda s pravimi vrstami osredotočene prakse jih boste pripravljeni pridobiti. Ne pozabite, da se osredotočite na kruh in maslo, osnove in veliko vadite. Sledite zgornjim nasvetom in pripravljeni boste na naslednji intervju s tehničnim kodiranjem.
Želite več informacij? Pred kratkim sem to temo predstavil na konferenci UC Berkeley Engineering / Tech Career. Oglejte si moje diapozitive iz spodnjega pogovora za več misli in virov!