Управо сам добио посао програмера на Фацебоок-у. Ево како сам се припремао за своје интервјуе.

Управо сам завршио седам интервјуа на лицу места у технолошким компанијама из Силицијумске долине. На крају сам прихватио понуду за посао софтверског инжењеринга од Фацебоок-а.

Ево како сам се припремао за ове интервјуе и шта сам успут научио.

Моје вишегодишње путовање према Силицијумској долини

Када сам студирао рачунарство на универзитету у Аустралији, увек сам замишљао своју будућност као софтверски инжењер у Силицијумској долини.

Свидела ми се идеја да будем у срцу свих иновација технолошке индустрије - као и њених грешака. Овај циљ ме је држао мотивисаним. То ме одржавало концентрисаним.

Напустио сам место водећег иОС инжењера у невероватној компанији у Мелбурну и вратио се у свој родни град Пертх како бих студирао. Тамо бих се припремио за процес интервјуа који је преда мном у Силицијумској долини. Знао сам да ће бити невероватно тежак и напоран.

Ако спомињете процес технолошког разговора соби софтверских инжењера, многи ће се изјаснити против уобичајених пракси интервјуисања. Много аргумената долази из образложења да решавање алгоритама на белој табли заправо не представља нити преводи свакодневне задатке софтверског инжењера.

Због овог чланка нећу улазити у тај разговор. Уместо тога, истражићу ове различите врсте интервјуа из перспективе кандидата, фокусираћу се и на оно што сам научио из процеса.

Интервјуисање је вештина

Током припрема, увек сам знао да ће интервјуирање бити изазов. Али искрено нисам ни слутио колико ће то бити тешко док нисам ушао у колена до свог првог интервјуа.

Уочи интервјуа, користио сам и плаћене и бесплатне услуге, које су симулирале кодирање и бележење интервјуа преко телефона са људима који су имали индустријског искуства у интервјуисању кандидата. Ти интервјуи за праксу били су од суштинске важности за припрему за притисак. Али како сам касније схватио, они су износили само делић онога од чега се састоји прави интервју.

Саветовао бих да не водите разговоре на послу из снова без да имате неколико лажних или стварних интервјуа испод појаса. Нервоза може бити невероватно поразна и може се отупити само вежбањем.

Као и код многих других ствари у животу, вежбање ће побољшати ваше самопоуздање.

Различите врсте интервјуа са којима сам се сусретао

Ако се припремите и будете довољно добро наступили на прелиминарним екранима телефона, пружиће вам се могућност да дођете на лице места и обавите интервјуе вредне целих дана. Ови интервјуи ће обично трајати четири до шест сати, у зависности од компаније са којом разговарате.

Током путовања у Силицијумску долину, успео сам да припремим седам интервјуа на лицу места. Ово ми је дало јединствену перспективу тренутног пејзажа за интервјуисање.

Типично, локално покривање покрива три главна предмета: алгоритам, дизајн архитектуре и понашање, за шта сам проучавао и припремао се. Међутим, постоје неке компаније које изгледа да прихватају овај тренд и проширују своје интервјуе како би обухватиле више практичних вештина.

Укратко ћу проћи кроз сваку од тема са којима сам се сусрео.

Интервјуи о алгоритму

Најчешћи тип интервјуа са којим ћете се сусрести. Анкетар ће вас замолити да решите проблем на белој табли који ће проценити ваше знање о структурама података, алгоритмима сортирања, рекурзији, анализи сложености времена / простора као и препознавању образаца и ивица. У овом интервјуу најчешће ћете смислити сурово решење, а затим покушати да га побољшате и разговарате о разликама, ако постоје, са различитим решењима која предлажете.

Ово је био хлеб и маслац моје припреме, сваког дана током шест недеља решавао сам алгоритме на јефтиној белој табли, анализирао њихову временску / просторну сложеност, као и заиста покушавајући да разумем шта се дешава у свакој линији кода.

Лично заиста уживам у алгоритмима за белу таблу, јер не морам нужно да бринем о писању компилабилне синтаксе (већину времена), што ми омогућава да се усредсредим само на проблем који ми је сада на располагању. Други људи можда не воле даску, али њима бих рекао да је доследно вежбају и то ће им можда променити мишљење.

Интервјуи о архитектонском дизајну

Ово је занимљив интервју који сам јако потценио. Анкетар ће вас замолити да дизајнирате систем (наравно на белој табли), као што су систем за продају карата за паркирање, цхат мессенгер, твиттер феед, између осталих уобичајених система.

Оно на чему се оцењује је како схватате широк концепт и дизајнирате систем који испуњава све захтеве и ограничења. Али на кандидату је да постави права питања која дефинишу захтеве и ограничења. Овај интервју је више разговор помешан са неким дијаграмима за цртање и можда чак и структурирањем класе. Све је на прилично високом нивоу, тако да нећете писати ниједан стварни код за примену.

Наравно, требало би да усмерите разговор како бисте покрили своје знање о томе како функционишу системи. Ако сте позадински инжењер, не бисте се стварно упуштали у механику детаља клијентске апликације, ако нисте имали претходно знање у тој области. Ја сам иОС инжењер, па сам разговарао о архитектонским обрасцима, модуларизацији функционалности, дизајнерским обрасцима, уместо о томе како да прилагодим крајње тачке АПИ-ја, додајући раднике, АВС и слично.

Интервјуи у понашању

Анкетар ће вам поставити питања о себи и начину на који се носите са одређеним врстама ситуација. Припрема за ову није тако тешка као остале, али захтева пуно интроспекције у ваше име.

Питања су обично у складу са:

Како се носите са неуспехом?

Која је твоја највећа слабост?

Како решавате сукобе?

Шта бисте другачије урадили?

Мислим да би било прилично тешко ово зезнути, али чуо сам да то ради много људи. Покушавају да прикрију своје снаге као слабости, обликују свој одговор на нешто што мисле да би анкетар хтео да чује или чак само кривицу за неуспешне пројекте пребаци на друге људе.

Веакнесс „Моја слабост је што сам превише фокусиран“

„За све је крив Јерри, био је болестан већину пројекта“

Ови анкетари су обучени и калибрирани да препознају усране људе и имају акутну пажњу на срања. То је брз начин да кандидатуру избаците кроз прозор. Само будите искрени, покажите страст према послу, поседујте своје мане, покажите иницијативу за побољшање и биће вам добро.

Цултуре Фит

Ово је обично упарено са бихевиоралним интервјуом и усредсређено је на проналажење да ли сте усклађени са вредностима компаније. На пример, Фацебоок следи хакерску културу смелости и испоручивања нових идеја, суђење експериментисањем, не бојећи се да сломи ствари. Док Аирбнб жели да створи свет у којем се људи осећају као да им је место где год да оду, па траже људе са одличним угоститељским вештинама.

Много великих технолошких компанија ставља велики нагласак на културу и запошљава људе на основу усклађености те особе са њиховим вредностима. Ако интервјуишете у некој од ових компанија, важно је да погледате њихове вредности и пронађете прошла искуства која можете да повежете и саопштите свом интервјуеру.

Програмирање у пару

Занимљива категорија за коју ћете бити упаривани са другим инжењером испред рачунара који је постављен са развојним окружењем, слично ономе што бисте користили у стварном свету. Добијате основни задатак са листом захтева које морате испунити, док завршавате сваки задатак, анкетар ће од вас тражити да примените више функционалности док не истекне временско ограничење. Слободно можете користити било који ресурс који желите, као што је Стацк Оверфлов или мрежна документација.

Осећам да би велики део успеха кандидата на овом интервјуу могао бити одређен излагањем стварним искуствима. За разлику од беле табле, писање синтаксички исправног кода је потребно, па бисте требали знати свој језик и окружење изнутра и извана, јер не желите да трошите превише времена на Интернету или у документацији тражећи одговоре.

Током своје претходне улоге, писао сам чисти код док сам радио на задатку, праћен оптимизацијом када бих осетио да је задатак завршен. Овакав ток посла није био користан за ову врсту интервјуа. Успео сам да се чистим у куту преурањеном оптимизацијом, што је отежало опоравак. Открио сам да се писање шкрабаног кода и помињање анкетара да бих то урадио другачије у производњи сматрали довољним од писања чистог и оптимизованог.

Проналажење и крпање грешака

Много онога што радимо као инжењери усредсређено је на проналажење и исправљање грешака које су нам пријављене из различитих извора. У овом интервјуу добићете списак грешака које ћете пронаћи и исправити, као и идентификовање других потенцијално проблематичних кодова током пута.

Видео сам само један пример ове врсте интервјуа и осећам да би било прилично тешко за некога да се заиста припреми, поготово ако је јуниор. Свако окружење за кодирање има своје мале хирове и нијансе, мноштво закрпа које сам урадио потичу из претходних искустава са ИДЕ-ом (Интегрисано развојно окружење) и сродним оквирима које сам акумулирао током година.

Тестирање знања о домену

Програмирање је у основи исто у већини уобичајених језика које данас видимо. Шансе су да ако знате објектно оријентисано програмирање на једном језику, те вештине ће се углавном пренети на други.

Међутим, овај интервју се фокусира на аспекте који се не могу пренијети између језика или оквира. Бићете интервјуисани о специфичностима околине у вези са АПИ-јем, управљањем меморијом, могућностима, ограничењима, историјом и тако даље.

Вежбање може бити изазов за ову одређену тему. Слично интервјуу о проналажењу и крпању грешака, осећам да би многи одговори произашли из претходних искустава. У зависности од нивоа улоге за коју се пријављујете, одговори које пружате могу се различито пондерисати. На пример, ако неко ко се пријављује за млађу улогу не зна историју зашто је АПИ структуриран на одређени начин, може му се дати концесија. Међутим, ако кандидат који се пријављује за вишу улогу не зна, тада ће можда бити оштрије означени против.

Разумевање оперативних система

У зависности од улоге или тима са којим разговарате, можда ћете имати интервју који се фокусира искључиво на оперативне системе. У овом интервјуу биће вам постављена питања која ће проценити ваше разумевање механике нижег нивоа оперативног система рачунара.

Додуше, овај интервју ме затекао неспремног. Оперативни системи су били нешто што сам научио током раних година на универзитету, али моје знање је од тада постало магловито у вези са том темом, што се одразило и на моје перформансе.

Како треба да се припремите

Као што сам раније написао, интервјуисање је сама по себи вештина. Чак и ако сте већ сјајан програмер у свакодневном послу или постижете одличне оцене на студијама, те вештине неће тачно пренети 1: 1 када сте у малој соби за интервјуе. Упорност, понављање и доследност у припреми и вежби за интервју биће кључни фактори који одређују ваш исход.

Минимално знање

Ако би ме неко питао на шта бих, по мом мишљењу, требало да се фокусирам, предложио бих следеће:

  • Научите прво да ручно пишете код на папиру и на белој табли, а затим га баците у ИДЕ за истицање синтаксе, ово би за вас требало да постане друга природа.
  • Развити дубоко знање о структурама података , њиховим снагама и слабостима у поређењу са другима. Открио сам да ме спровођење структура података и њихово понашање од нуле научило много више од онога што сам знао из њихових апстрактних концепата.
  • Потпуно разумете ознаке Биг О и за временску и за просторну сложеност, ово ће се савршено уклопити са вашим алгоритмом и питањима за сортирање.
  • Ухватите све главне алгоритме за сортирање, јер разлика у сложености времена / простора може потенцијално избацити ваше оптимално решење за алгоритам који покушавате да решите.

Када почети

У зависности од ваше временске линије, можда ћете желети да започнете пре него касније. Много компанија са којима сам разговарао имало је 12 месеци хлађења пре него што је пропали кандидат могао поново да се пријави. Са друге стране, ако знате да нећете бити спремни у року од годину дана, можете и одмах започети процес и наслутити како је то проћи кроз процес интервјуа, па кад будете спремни, победио је ' бити готово једнако застрашујуће.

Не брини

Имаш ово.

Ресурси

Лажни интервјуи

  • интервиевинг.ио (бета), Бесплатно
  • Прамп, Бесплатно
  • ЦареерЦуп, плаћено

Алгоритми

  • Црацкинг тхе Цоде Интервиев, књига
  • бајт по бајт, веб локација и ИоуТубе
  • ЦС50, ИоуТубе
  • Интервју торта, веб локација
  • ХацкерРанк, веб локација
  • ЛеетЦоде, веб локација

Оперативни системи

  • Концепти оперативног система, књига

Архитектура дизајн

  • Увод у архитектуру и системе, ИоуТубе

Понашање

  • Увод у бихејвиоралне интервјуе, ИоуТубе

Ако вам се свиђа ово што сте данас прочитали, можете погледати наше остале чланке о развоју иОС-а и Свифта, или ако желите да ступите у контакт, пошаљите ми твеет или ме пратите на Твиттер-у @ андиихопе , то ми заиста улепшава дан.

Андии Хопе (@АндииХопе) | Твиттер

иОС инжењер. Блоггер / говорник Свифта и иОС-а твиттер.цом