Ką tik gavau kūrėjo darbą „Facebook“. Štai kaip pasiruošiau savo interviu.

Ką tik baigiau septynis interviu vietoje Silicio slėnio technologijų įmonėse. Galų gale priėmiau „Facebook“ pasiūlymą dirbti programinės įrangos inžinerijos srityje.

Štai kaip aš pasiruošiau šiems interviu ir ką išmokau.

Mano kelerių metų kelionė link Silicio slėnio

Kai studijavau informatiką savo universitete Australijoje, visada įsivaizdavau savo, kaip programinės įrangos inžinieriaus, ateitį Silicio slėnyje.

Man patiko idėja būti visų technologijų pramonės naujovių, taip pat jos klaidų, šerdimi. Šis tikslas mane motyvavo. Tai mane sutelkė.

Palikau pagrindinio „iOS“ inžinieriaus postą nuostabioje įmonėje Melburne ir grįžau į gimtąjį Pertą, kad galėčiau mokytis. Ten aš pasiruoščiau interviu procesui, kuris laukia manęs Silicio slėnyje. Žinojau, kad bus nepaprastai sunku ir sunku.

Jei programinės įrangos inžinierių kambaryje paminėsite technologinio interviu procesą, daugelis pasisakys prieš įprastą interviu praktiką. Daug argumentų kyla iš samprotavimų, kad algoritmų sprendimas lentoje iš tikrųjų nereiškia programinės įrangos inžinieriaus kasdieninių užduočių ir nėra jų vertimas.

Dėl šio straipsnio aš nesileisiu į tą pokalbį. Vietoj to, aš ištirsiu šias įvairias interviu praktikas kandidato požiūriu, taip pat sutelksiu dėmesį į tai, ko išmokau iš proceso.

Interviu yra įgūdis

Rengdamasis visada žinojau, kad interviu bus iššūkis. Tačiau nuoširdžiai neįsivaizdavau, kaip bus sunku, kol neprisidėjau iki kelių savo pirmojo interviu.

Rengdamasis interviu, aš naudojuosi ir mokamomis, ir nemokamomis paslaugomis, kurios modeliavo pokalbių kodavimą ir lentos telefonu telefonu su žmonėmis, turinčiais pramonės patirties apklausiant kandidatus. Tie praktiniai interviu buvo būtini, norint paskatinti mane patirti spaudimą. Bet, kaip vėliau supratau, jie sudarė tik dalį to, iš ko susideda tikras interviu.

Patarčiau nedaryti interviu jūsų svajonių darbe, neturint kelių maketų ar tikrų interviu po jūsų diržu. Nervingumas gali būti nepaprastai didžiulis, ir jį galima numalšinti tik praktikuojant.

Kaip ir daugelio kitų dalykų gyvenime, praktika pagerins jūsų pasitikėjimą savimi.

Skirtingi interviu tipai, su kuriais susidūriau

Jei pasiruošsite ir pasirodysite pakankamai gerai išankstiniuose telefono ekranuose, jums bus suteikta galimybė atvykti į vietą ir surengti interviu visą dieną. Šie interviu paprastai truks nuo keturių iki šešių valandų, priklausomai nuo įmonės, su kuria kalbatės.

Kelionės į Silicio slėnį metu iš viso pavyko surengti septynis interviu vietoje. Tai man suteikė unikalią dabartinio peizažo perspektyvą interviu.

Paprastai vietoje bus nagrinėjami trys pagrindiniai dalykai: algoritmas, architektūros dizainas ir elgesys, ką aš mokiausi ir tam ruošiausi. Tačiau yra keletas bendrovių, kurios, atrodo, linkę į šią tendenciją ir plečia savo interviu, kad apimtų daugiau praktinių įgūdžių.

Trumpai apžvelgsiu kiekvieną temą, su kuria susidūriau.

Algoritmo interviu

Dažniausias interviu tipas, su kuriuo susidursite. Pašnekovas paprašys išspręsti problemą lentoje, kurioje bus įvertintos jūsų žinios apie duomenų struktūras, rūšiavimo algoritmus, rekursiją, laiko / erdvės sudėtingumo analizę, taip pat modelio ir krašto atvejo atpažinimą. Šiame interviu dažniausiai sugalvosite žiaurios jėgos sprendimą, tada bandysite patobulinti šį sprendimą ir aptarti kompromisus, jei tokių yra, su įvairiais jūsų siūlomais sprendimais.

Tai buvo mano ruošiama duona ir sviestas, šešias savaites kiekvieną dieną sprendžiau algoritmus ant pigios pakabinamos lentos, analizavau jų laiko / erdvės sudėtingumą ir iš tikrųjų bandžiau suprasti, kas vyksta kiekvienoje kodo eilutėje.

Asmeniškai man labai patinka lentos algoritmai, nes nebūtinai turiu jaudintis rašydamas kompiliuojamą sintaksę (dažniausiai), o tai leidžia man sutelkti dėmesį tik į nagrinėjamą problemą. Kiti žmonės gali nemėgti lentos, bet aš jiems sakyčiau, kad praktikuokite tai nuosekliai ir tai gali pakeisti jų nuomonę.

Architektūros projektavimo interviu

Tai įdomus interviu, kurį labai nuvertinau. Pašnekovas paprašys sukurti sistemą (žinoma, ant lentos), pavyzdžiui, automobilių stovėjimo aikštelių bilietų pardavimo sistemą, pokalbių programėlę, „Twitter“ kanalą ir kitas įprastas sistemas.

Vertinamas tai, kaip jūs suprantate plačią koncepciją ir suprojektuojate sistemą, kuri atitiktų visus reikalavimus ir apribojimus. Tačiau kandidatas turi užduoti teisingus klausimus, apibrėžiančius reikalavimus ir apribojimus. Šis interviu yra daugiau pokalbis, sumaišytas su kai kuriomis piešimo schemomis ir galbūt net klasės struktūrizavimu. Viskas yra gana aukšto lygio, todėl nerašysite jokio tikrojo diegimo kodo.

Natūralu, kad turėtumėte nukreipti pokalbį, kad apimtumėte savo žinias apie sistemų veikimą. Jei esate „backend“ inžinierius, jūs tikrai nesigilintumėte į kliento programos išsamią informaciją, nebent turėtumėte tam tikros patirties šioje srityje. Esu „iOS“ inžinierius, todėl kalbėjau apie architektūros modelius, funkcionalumo moduliavimą, dizaino modelius, o ne apie tai, kaip pakeisti API galinius taškus, pridėti darbuotojų, AWS ir panašiai.

Elgesio interviu

Pašnekovas užduos jums klausimų apie save ir tai, kaip elgiatės su tam tikro tipo situacijomis. Pasiruošimas šiam nėra toks sunkus kaip kitų, tačiau reikalauja daug savistatos jūsų vardu.

Klausimai paprastai yra tokie:

Kaip kovoti su nesėkme?

Kokia jūsų didžiausia silpnybė?

Kaip sprendžiate konfliktus?

Ką darytumėte kitaip?

Jaučiu, kad būtų gana sunku šį įsukti, bet girdėjau, kad tai daro daugybė žmonių. Jie bando nuslėpti savo stipriąsias puses kaip silpnybes, sukuria atsakymą į tai, ką, jų manymu, pašnekovas norėtų išgirsti ar net tiesiog prikeltų nesėkmingų projektų kaltę kitiems žmonėms.

„Mano silpnybė yra ta, kad esu per daug susitelkusi“

„Visa tai buvo Džerio kaltė, jis sirgo didžiąją projekto dalį“

Šie pašnekovai yra apmokyti ir sukalibruoti, kad atpažintų kraupius žmones ir atidžiai stebėtų nesąmones. Tai greitas būdas išmesti savo kandidatūrą pro langą. Tiesiog būk tikras, parodyk aistrą savo darbui, turėk trūkumų, parodyk iniciatyvą tobulėti ir viskas gerai.

„Culture Fit“

Dažniausiai tai derinama su „Behavioral“ interviu ir siekiama atkreipti dėmesį į tai, ar esate suderintas su įmonės vertybėmis. Pavyzdžiui, „Facebook“ laikosi įsilaužėlių tipo drąsos ir naujų idėjų pristatymo kultūros, kurią bando eksperimentuoti, nebijo sugadinti dalykų. „Airbnb“ nori sukurti pasaulį, kuriame žmonės jaučiasi priklausantys bet kur, kur jie eina, todėl jie ieško žmonių, turinčių puikių svetingumo įgūdžių.

Daugelis didžiųjų technologijų kompanijų daug dėmesio skiria kultūrai ir samdo žmones, atsižvelgdamos į asmens vertybes. Jei kalbatės vienoje iš šių bendrovių, svarbu pasidomėti jų vertybėmis ir rasti ankstesnę patirtį, kurią galite susieti ir pranešti savo pašnekovui.

Porų programavimas

Įdomi kategorija, kuriai jūs būsite suporuotas su kitu inžinieriumi prie kompiuterio, kuris buvo sukurtas su kūrimo aplinka, panašiai kaip tai, ką naudotumėte realiame pasaulyje. Jums bus suteikta pagrindinė užduotis su reikalavimų sąrašu, kurį turite atlikti, kai baigsite kiekvieną užduotį, pašnekovas paprašys jūsų įdiegti daugiau funkcijų, kol bus pasiektas terminas. Galite laisvai naudoti bet kuriuos išteklius, pvz., „Stack Overflow“ ar internetinę dokumentaciją.

Jaučiu, kad daugelį kandidato sėkmės šiame interviu nulems realaus pasaulio patirtis. Skirtingai nuo lentos, sintaksiniu požiūriu reikia rašyti teisingą kodą, todėl turėtumėte žinoti savo kalbą ir aplinką iš vidaus ir iš išorės, nes nenorite praleisti per daug laiko internete ar dokumentacijoje ieškodami atsakymų.

Atlikdamas ankstesnį vaidmenį, aš rašiau švarų kodą, kol dirbau su užduotimi, po to sekė optimizavimas, kai jaučiau, kad užduotis buvo atlikta. Tokia darbo eiga nebuvo naudinga tokio tipo interviu. Man pavyko išvalyti save į kampą, nes optimizavau per anksti, todėl buvo sunkiau atsigauti. Radau, kad pakanka parašyti šlamštą kodą ir paminėti pašnekovui, kad gamyboje tai darysiu kitaip, nei parašyti švariai ir optimizuotai.

Klaidų paieška ir taisymas

Daug ką mes, kaip inžinieriai, darome, ieškome ir užtaisome klaidas, apie kurias mums pranešama iš įvairių šaltinių. Šiame interviu jums bus pateiktas klaidų, kurias galite rasti ir pataisyti, sąrašas, taip pat nustatyti kitus galimai probleminius kodus.

Mačiau tik vieną tokio tipo interviu atvejį ir manau, kad kam nors būtų sunku iš tikrųjų pasiruošti, ypač jei jis yra jaunesnysis. Kiekviena kodavimo aplinka turi savo nedidelių keistenybių ir niuansų, daugybė mano atliktų pataisų kilo iš ankstesnės patirties, susijusios su IDE (integruota kūrimo aplinka) ir susijusiomis sistemomis, kurias sukaupiau per daugelį metų.

Domeno žinių tikrinimas

Programavimas iš esmės yra tas pats daugumoje šiandien vartojamų bendrinių kalbų. Tikėtina, kad jei žinote objektinį programavimą viena kalba, šie įgūdžiai dažniausiai bus perkelti į kitą.

Tačiau šiame interviu daugiausia dėmesio skiriama aspektams, kurių negalima perkelti iš vienos kalbos į kitą ar kitą sistemą. Būsite apklausti apie aplinkos ypatumus, susijusius su API, atminties valdymu, galimybėmis, apribojimais, istorija ir pan.

Praktika gali būti sudėtinga šiai konkrečiai temai. Panašiai kaip klaidos radimo ir lopymo interviu, jaučiu, kad daugybė atsakymų atsirastų iš ankstesnės patirties. Priklausomai nuo vaidmens, į kurį pretenduojate, lygio, jūsų pateikti atsakymai gali būti skirtingai įvertinti. Pvz., Jei kas nors, pretenduojantis į jaunesniuosius vaidmenis, nežino istorijos, kodėl API yra sukurta tam tikru būdu, jam gali būti suteikta nuolaida. Tačiau jei kandidatas, pretenduojantis į aukštesnio rango pareigas, nežino, tada gali būti griežčiau pažymėtas.

Suprasti operacines sistemas

Priklausomai nuo vaidmens ar komandos, su kuria kalbatės, galite turėti interviu, kuriame daugiausia dėmesio skiriama tik operacinėms sistemoms. Šiame interviu jums bus užduoti klausimai, kurie įvertins jūsų supratimą apie žemesnio lygio kompiuterio operacinės sistemos mechaniką.

Tiesa, šis interviu mane užklupo netikėtai. Operacines sistemas išmokau ankstyvaisiais metais universitete, tačiau mano žinios šiuo klausimu tapo miglotos, o tai atsispindėjo mano veikloje.

Kaip turėtumėte pasiruošti

Kaip jau rašiau anksčiau, interviu yra atskiras įgūdis. Net jei jūs jau esate puikus programuotojas savo kasdieniame darbe ar mokotės puikių pažymių, šie įgūdžiai nebus tiksliai perteikti 1: 1, kai esate mažame interviu kambaryje. Atkaklumas, pasikartojimas ir nuoseklumas ruošiantis interviu ir praktikai bus pagrindiniai jūsų rezultatą lemiantys veiksniai.

Minimalios žinios

Jei kas manęs paklaustų, į ką, mano manymu, būtų galima atkreipti dėmesį, siūlyčiau:

  • Išmokite pirmiausia rašyti kodą ranka ant popieriaus ir lentos, o tada mesti jį į IDE, kad būtų paryškinta sintaksė. Tai turėtų tapti jums antra prigimtimi.
  • Išugdyti gilias žinias apie duomenų struktūras , jų stipriąsias ir silpnąsias puses, palyginti su viena kita. Atradau, kad duomenų struktūrų ir jų elgesio įgyvendinimas nuo nulio mane išmokė kur kas daugiau nei to, ką žinojau iš abstrakčių jų sampratų.
  • Visiškai supraskite „Big O“ žymėjimą tiek laiko, tiek erdvės sudėtingumo atžvilgiu. Tai puikiai derės su jūsų algoritmu ir rūšiavimo klausimais.
  • Supraskite visus pagrindinius rūšiavimo algoritmus, nes laiko / erdvės sudėtingumo skirtumas gali nulemti jūsų optimalų algoritmo, kurį bandote išspręsti, sprendimą.

Kada pradėti

Priklausomai nuo laiko juostos, galbūt norėsite pradėti anksčiau nei vėliau. Daugelis mano kalbintų įmonių turėjo 12 mėnesių aušinimo laikotarpį, kol nepavykęs kandidatas galėjo pakartotinai pateikti paraišką. Kita vertus, jei žinote, kad nebūsite pasirengęs per metus, taip pat galite pradėti procesą dabar ir gauti nedidelį skonį, ką reiškia išgyventi interviu procesą, taigi, kai būsite pasirengęs, jis laimėjo “. Būk beveik toks pat baisus.

Nesijaudink

Tu tai supratai.

Ištekliai

Mock Interviu

  • interviu.io (beta), nemokama
  • „Pramp“, nemokama
  • Karjeros taurė, mokama

Algoritmai

  • Krekingo kodas Interviu, knyga
  • baitas pagal baitą, svetainę ir „YouTube“
  • CS50, „YouTube“
  • Interviu tortas, svetainė
  • „HackerRank“, svetainė
  • „LeetCode“, svetainė

Operacinės sistemos

  • Operacinės sistemos koncepcijos, knyga

Architektūros projektavimas

  • Įvadas į „Architektūrą ir sistemas“, „YouTube“

Elgesys

  • Įvadas į elgesio interviu, „YouTube“

Jei jums patinka tai, ką skaitėte šiandien, galite peržiūrėti kitus mano straipsnius apie „iOS“ ir „Swift“ kūrimą, arba jei norite susisiekti, atsiųskite man tweetą arba sekite mane „Twitter“ @andyyhope , tai tikrai daro mano dieną.

Andyy Hope (@AndyyHope) | „Twitter“

„iOS“ inžinierius. Tinklaraštininkas / „Swift“ ir „iOS twitter.com“ pranešėjas