Sain just Facebookis arendaja töö. Siit saate teada, kuidas ma oma intervjuud ette valmistasin.

Lõpetasin just seitse kohapealset intervjuud Silicon Valley tehnoloogiaettevõttes. Lõpuks võtsin Facebookis vastu pakkumise tarkvaratehnika jaoks.

Siit saate teada, kuidas ma nendeks intervjuudeks valmistusin ja mida sel teel õppisin.

Minu mitmeaastane teekond Silicon Valley poole

Kui õppisin Austraalias oma ülikoolis arvutiteadust, kujutasin alati ette oma tulevikku Silicon Valley tarkvarainsenerina.

Mulle meeldis idee olla kogu tehnikatööstuse innovatsiooni keskmes - nagu ka selle komistused. See eesmärk hoidis mind motiveeritud. See hoidis mind keskendununa.

Jätsin oma juhtiva iOS-i inseneri koha Melbourne'i hämmastavas ettevõttes ja suundusin õppimiseks tagasi oma kodulinna Perthi. Seal valmistuksin ette Silicon Valleys ees ootavateks intervjueerimisprotsessideks. Teadsin, et see on uskumatult raske ja vaevaline.

Kui mainite tehnikavestluste protsessi tarkvarainseneride ruumis, võtavad paljud sõna levinud intervjueerimistavade vastu. Paljud argumendid pärinevad arutluskäigust, et algoritmide lahendamine tahvlile ei tähenda tarkvarainseneri igapäevaseid ülesandeid ega tõlgenda neid.

Selle artikli nimel ma sellesse vestlusesse ei lähe. Selle asemel uurin neid erinevaid intervjuupraktikaid kandidaadi vaatenurgast, keskendun ka protsessis õppitule.

Intervjueerimine on oskus

Ettevalmistuse ajal teadsin alati, et intervjueerimine on keeruline. Kuid mul polnud ausalt aimugi, kui raske see on, kuni olin põlvini oma esimeses intervjuus.

Intervjuude eel olin kasutanud nii tasulisi kui ka tasuta teenuseid, mis simuleerisid kodeerimis- ja tahvlivestlusi telefoni teel inimestega, kellel oli valdkonna kogemus kandidaatide intervjueerimisel. Need praktikaintervjuud olid hädavajalikud, et mind sellega kaasneva surve all esile kutsuda. Kuid nagu hiljem aru sain, moodustasid need vaid murdosa sellest, millest koosneb tegelik intervjuu.

Ma soovitaksin teie unistuste töökohal intervjueerimata jätta, ilma et teil oleks mõni pilk või reaalne intervjuu teie vöö all. Närvilisus võib olla uskumatult tohutu ja seda saab kustutada ainult harjutamise abil.

Nagu paljude muude asjadega elus, suurendab praktika teie enesekindlust.

Erinevad intervjuu tüübid, millega ma kokku puutusin

Kui teete esialgsetel telefoniekraanidel ettevalmistusi ja teete seda piisavalt hästi, antakse teile võimalus tulla kohapeale ja korraldada terve päeva väärt intervjuusid. Need intervjuud kestavad tavaliselt neli kuni kuus tundi, sõltuvalt ettevõttest, kellega vestlete.

Silicon Valley reisi ajal jõudsin kokku panna seitse kohapealset intervjuud. See andis mulle intervjueerimiseks ainulaadse vaatenurga praegusest maastikust.

Tavaliselt hõlmab kohapeal kolme peamist teemat: algoritm, arhitektuurikujundus ja käitumisviis, milleks ma olin õppinud ja selleks ette valmistunud. Siiski on mõned ettevõtted, kes näivad seda suundumust hoiatavat ja laiendavad oma intervjuusid, et hõlmata rohkem praktilisi oskusi.

Vaatan lühidalt läbi iga teema, millega kokku puutusin.

Algoritmi intervjuud

Kõige tavalisem intervjuu tüüp, millega kokku puutute. Intervjueerija palub teil lahendada probleem tahvlil, mis hindab teie teadmisi andmestruktuuridest, algoritmide sorteerimisest, rekursioonist, aja / ruumi keerukuse analüüsist, samuti mustri ja juhtude tuvastamisest. Selles intervjuus pakute kõige sagedamini välja jõhkra lahenduse ja proovite seejärel seda lahendust paremaks muuta ning arutage võimalike kompromisside üle teie pakutavate erinevate lahendustega.

See oli minu ettevalmistamise leib ja või. Iga päev kuus nädalat lahendasin algoritme odaval riputataval tahvlil, analüüsisin nende aja / ruumi keerukust ning püüdsin tegelikult aru saada, mis iga koodirea juures toimub.

Mulle isiklikult meeldib väga tahvli algoritme, sest ma ei pea tingimata muretsema kompileeritava süntaksi kirjutamise pärast (enamasti), mis võimaldab mul keskenduda ainult käsitletavale probleemile. Teistele inimestele ei pruugi tahvlilaud meeldida, kuid ma ütleksin neile, et harjutage seda järjekindlalt ja see võib nende meelt muuta.

Arhitektuuri kujundamise intervjuud

See on huvitav intervjuu, mida ma alahindasin väga. Intervjueerija palub teil muu levinud süsteemi hulgas kujundada süsteem (loomulikult tahvlile), näiteks parkla piletisüsteem, vestlussõnumitooja, twitteri voog.

Mida teile hinnatakse, on see, kuidas võtate laia kontseptsiooni ja kujundate süsteemi, mis vastab kõigile nõuetele ja piirangutele. Kuid kandidaadi asi on esitada õiged küsimused, mis määratlevad nõuded ja piirangud. See intervjuu on pigem vestlus, mis on segatud mõne joonise skeemi ja võib-olla isegi klassi struktureerimisega. Kõik on üsna kõrgel tasemel, nii et te ei kirjuta tegelikku juurutuskoodi.

Loomulikult peaksite vestlust juhtima, et kajastada oma teadmisi süsteemide toimimise kohta. Kui olete taustaprogrammi insener, ei läheks te kliendirakenduse üksikasjade mehaanikasse, kui teil pole selles valdkonnas varasemat kogemust. Olen iOS-i insener, nii et rääkisin API-punktide skaleerimise asemel töötajatest, AWS-ist ja muust arhitektuurimustritest, funktsionaalsuse modulariseerimisest, kujundusmustritest.

Käitumuslikud intervjuud

Intervjueerija esitab teile küsimusi enda kohta ja selle kohta, kuidas teatud tüüpi olukordades käitute. Selle ettevalmistamine pole nii keeruline kui teised, kuid nõuab teie enda jaoks palju sisekaemust.

Küsimused on tavaliselt järgmised:

Kuidas toime tulla ebaõnnestumisega?

Mis on teie suurim nõrkus?

Kuidas lahendate konflikte?

Mida teeksid teisiti?

Ma tunnen, et seda oleks päris keeruline keerata, kuid olen kuulnud, et paljud inimesed seda teevad. Nad üritavad varjata oma tugevad küljed nõrkadeks külgedeks, kujundada oma vastused millelegi, mida intervjueerija nende arvates tahaks kuulda või isegi ebaõnnestunud projektide süü teistele inimestele kanda.

"Minu nõrkus on see, et olen liiga keskendunud"

"See oli kõik Jerry süü, ta oli suurema osa projektist haige"

Need intervjueerijad on koolitatud ja kalibreeritud, et tuvastada jube inimesi ja pöörata teravat tähelepanu jama. See on kiire viis, kuidas oma kandidatuur aknast välja visata. Ole lihtsalt ehe, näita üles kirge oma töö vastu, omage puudusi, näidake üles initsiatiivi parendamiseks ja saate kenasti hakkama.

Culture Fit

See on tavaliselt seotud käitumisintervjuuga ja keskendub selle leidmisele, kas olete ettevõtte väärtustega kooskõlas. Näiteks järgib Facebook häkkerilaadset kultuuri olla julge ja edastada uusi ideid, katsetades eksperimente, mitte kartmata asju lõhkuda. Kui Airbnb soovib luua maailma, kus inimesed tunnevad, et nad kuuluvad kõikjale, kuhu nad lähevad, siis otsivad nad suurepärase külalislahkusega inimesi.

Paljud suured tehnoloogiaettevõtted panevad kultuurile palju rõhku ja palkavad inimesi lähtuvalt selle inimese vastavusest oma väärtustele. Kui intervjueerite ühes neist ettevõtetest, on oluline uurida nende väärtusi ja leida varasemad kogemused, mida saate oma intervjueerijaga suhelda ja suhelda.

Paari programmeerimine

Huvitav kategooria, mille jaoks teid ühendatakse teise inseneriga arvuti ees, millele on loodud arenduskeskkond, umbes nagu see, mida te reaalses maailmas kasutaksite. Teile antakse põhiülesanne koos nõuete loendiga, mille peate täitma, kui lõpetate iga ülesande, palub intervjueerija teil rakendada rohkem funktsioone kuni tähtaja saabumiseni. Võite vabalt kasutada ükskõik millist ressurssi, näiteks virna ületäitumist või veebidokumentatsiooni.

Ma tunnen, et paljude kandidaatide edu selles intervjuus määraks kokkupuude reaalsete kogemustega. Erinevalt tahvlist on süntaktiliselt õige koodi kirjutamine vajalik, seega peaksite oma keelt ja keskkonda tundma nii seest kui väljast, sest te ei soovi vastuste otsimisel liiga palju aega veeta Internetis või dokumentatsioonis.

Eelmise rolli ajal kirjutasin ülesandega töötamise ajal puhta koodi, millele järgnes optimeerimine, kui tundsin, et ülesanne on valmis. Selline töövoog ei olnud seda tüüpi intervjuude jaoks kasulik. Mul õnnestus end liiga vara optimeerides nurka kodeerida, mis muutis taastumise keerukamaks. Leidsin, et tühja koodi kirjutamist ja intervjueerijale mainimist, et teeksin seda tootmises teisiti, peeti piisavaks kui puhta ja optimeeritud kirjutamist.

Vigade leidmine ja parandamine

Palju sellest, mida me inseneridena teeme, keskendub vigade leidmisele ja lappimisele, millest teatatakse meile erinevatest allikatest. Selles intervjuus antakse teile nimekiri vigadest, mida leida ja parandada, samuti saate tuvastada muid võimalikke probleemseid koode.

Nägin seda tüüpi intervjuusid ainult ühel korral ja tunnen, et kellegil oleks päris keeruline selleks tõeliselt valmistuda, eriti kui ta on noorem. Igal kodeerimiskeskkonnal on oma väikesed veidrused ja nüansid. Suur osa lapitööst tulenesin varasematest kogemustest IDE-ga (integreeritud arenduskeskkond) ja nendega seotud raamistikest, mille olin aastate jooksul kogunud.

Domeeniteadmiste testimine

Programmeerimine on põhimõtteliselt sama enamikus tänapäeval kasutatavates tavalistes keeltes. Võimalik, et kui teate objektiivset programmeerimist ühes keeles, kanduvad need oskused enamasti üle teise.

See intervjuu keskendub aga aspektidele, mida ei saa keelte või raamistike vahel üle kanda. Teid küsitletakse API, mäluhalduse, võimaluste, piirangute, ajaloo ja muu sellisega seotud keskkonnaspetsiifiliste küsimuste üle.

Harjutamine võib selle konkreetse teema jaoks olla keeruline. Sarnaselt vea leidmise ja lappimise intervjuule tunnen ma, et paljud vastused tuleneksid varasematest kogemustest. Sõltuvalt kandideeritava rolli tasemest võidakse teie vastuseid kaaluda erinevalt. Näiteks kui keegi, kes taotleb nooremat rolli, ei tea, miks API on teatud viisil üles ehitatud, võidakse talle anda soodustus. Kui aga kõrgemat rolli kandideeriv kandidaat ei tea, võidakse teda karmimalt tähistada.

Operatsioonisüsteemide mõistmine

Sõltuvalt rollist või meeskonnast, kellega vestlete, võib teil olla intervjuu, mis keskendub ainult opsüsteemidele. Selles intervjuus esitatakse teile küsimusi, mis hindavad teie arusaama arvuti operatsioonisüsteemi madalama taseme mehaanikast.

Tuleb tunnistada, et see intervjuu püüdis mind ebakindlalt. Operatsioonisüsteemid olid midagi, mida olin õppinud ülikooli algusaastatel, kuid minu teadmised on sellest ajast alates muutunud uduseks, mis kajastus ka minu soorituses.

Kuidas peaksite valmistuma

Nagu ma varem kirjutasin, on intervjueerimine omaette oskus. Isegi kui olete oma päevases töös juba suurepärane programmeerija või õpingute ajal saate suurepäraseid hindeid, ei kandu need oskused väikeses intervjuuruumis viibides 1: 1 täpselt üle. Püsivus, kordamine ja järjepidevus intervjuude ettevalmistamise ja praktikaga on teie tulemuse peamised määravad tegurid.

Minimaalsed teadmised

Kui keegi peaks minult küsima, milleks võiksin keskenduda, siis soovitaksin järgmist:

  • Õppige kõigepealt kirjutama kood käsitsi paberile ja tahvlile ning seejärel visake see süntakside esiletõstmiseks IDE-sse, see peaks saama teie jaoks teine ​​loomus.
  • Arendage üksteisega võrreldes sügavaid teadmisi andmestruktuuridest , nende tugevustest ja nõrkustest. Avastasin, et andmestruktuuride ja nende käitumise nullist juurutamine õpetas mind palju rohkem kui see, mida teadsin nende abstraktsete kontseptsioonide põhjal.
  • Mõistke Big O tähistust nii aja kui ruumi keerukuse osas täielikult, see sobib ideaalselt teie algoritmi ja küsimuste sortimisega.
  • Haarake kõiki peamisi sorteerimisalgoritme, sest aja / ruumi keerukuse erinevus võib viia teie optimaalse lahenduse algoritmi jaoks, mida proovite lahendada.

Millal alustada

Sõltuvalt teie ajaskaalast võiksite alustada varem kui hiljem. Paljudel minu küsitletud ettevõtetel oli 12-kuuline jahutusperiood, enne kui ebaõnnestunud kandidaat uuesti kandideerida sai. Teisest küljest võib öelda, et kui teate, et te ei ole aasta jooksul valmis, võite sama protsessi alustada kohe ja saada väikese maitse sellest, mis tunne on intervjuuprotsess läbi teha, nii et kui olete valmis, siis see võitis. " ei tohi olla peaaegu sama hirmus.

Ära muretse

Sul on see olemas.

Ressursid

Mock Intervjuud

  • intervjueerimine.io (beeta), tasuta
  • Pramp, tasuta
  • Karjäärikarikas, tasuline

Algoritmid

  • Koodiga lõhki ajamine Intervjuu, raamat
  • bait baidi, veebisaidi ja YouTube'i kaupa
  • CS50, YouTube
  • Intervjuu kook, veebisait
  • HackerRank, veebisait
  • LeetCode, veebisait

Operatsioonisüsteemid

  • Operatsioonisüsteemi mõisted, raamat

Arhitektuuri kujundamine

  • Sissejuhatus arhitektuuri ja süsteemidesse, YouTube

Käitumine

  • Sissejuhatus käitumisintervjuudesse, YouTube

Kui teile meeldib see, mida täna lugesite, saate vaadata meie teisi artikleid iOS-i ja Swifti arenduse kohta või kui soovite ühendust võtta, saatke mulle palun piiks või jälgige mind Twitteris @andyyhope , see teeb minu päeva tõesti.

Andyy Hope (@AndyyHope) | Twitter

iOS-i insener. Blogija / Swifti ja iOS-i twitter.com esineja