Kaip pasiruošti techniniam pokalbiui - patarimai ir gudrybės, padėsiančios pasirodyti geriausiai

Ak, kodavimo interviu.

"Bijok. Bėk nuo jo. Likimas ateina tas pats." - Thanos 2018 m

Gerai, galbūt tai šiek tiek dramatiška, bet aš nepažįstu nė vieno, kuris džiaugtųsi išgyvenęs interviu procesą. Darbo paieškos / pokalbio procesas geriausiu atveju yra varginantis, blogiausiu atveju - daugybė kitų dalykų.

Daugelis žmonių studijuoja pokalbio gudrybes ir taktikas (ir aš jums pateiksiu keletą iš jų), tačiau dauguma žmonių negalvoja apie savo mąstyseną, einant į interviu.

Jūsų mąstysena nustato toną, kaip jūs žiūrėsite ir formuosite savo situaciją. Eik teisingai mąstydamas ir galėsi suprasti ir naršyti viską, kas tau mėtoma. Įeikite išsibarstę ar nedrąsiai ir pamatysite, kad esate sukrėstas ir sumuštas.

Jūs taip pat esate pašnekovas

Vienas dalykas, kurį dauguma žmonių dažnai pamiršta , esate ir pašnekovas.

Taip, ar esate apklausiamas šioje įmonėje, tačiau kalbatės ir su įmone, kad sužinotumėte, ar jie jums tinka .

Kokios yra šios įmonės vertybės? Kokia jų darbo etika? Ką žmonės vertina?

Išlaikyti interviu yra svarbu, bet ar norite dirbti šioje įmonėje, jei tikrai išlaikysite?

Kartais mums tiesiog reikia darbo - bet kokio darbo -, todėl nenoriu kuo labiau sumažinti vien tik darbo gavimą. Bet jei galite, ženkite žingsnį atgal ir pagalvokite, kaip šis darbas ilgainiui paveiks jūsų karjerą. Sakydamas „taip“ darbui, pasakai „ne“ keliolikai kitų - sakydamas „taip“, moki dideles alternatyvias išlaidas.

Taigi tai pirmas dalykas, kurį reikia atsiminti: tai nėra vienpusė galios dinamika. Kartais tai gali atrodyti, bet jūs turite tam tikrą kontrolę ir turite galimybių. Tai įgalina.

Interviu tipai

Gerai, todėl mes taip pat vertiname įmonę pagal žmones, su kuriais bendraujame pokalbio procese, tad ką mes darome su ta informacija?

Na, yra keletas skirtingų techninių interviu tipų. Šie interviu tipai mums daug pasakoja apie įmonės mąstyseną ir tai, kaip ten dirbti. Aš suskirstau įvairius tipus:

  • Baltoji lenta
  • Kodo iššūkis (informatikos klausimai ar algoritmai)
  • Kodo iššūkis (pagrįsta kodavimo problema)
  • Pasiimk namo projektą

Baisioji lenta

Kai kurie iš pirmųjų interviu, kuriuos priėmė technologijų pramonė, buvo lentos pratimai. Jums būtų suteikta užduotis ir paprašyta parašyti kodą ant lentos. Paprastai į šį požiūrį žvelgiama iš aukšto ir jis šiandien yra panaikinamas technologijų pramonėje, tačiau vis dar yra daug įmonių, naudojančių šią praktiką.

Nėra tai, kad kodavimas lentoje pats savaime yra blogas , bet lenta yra taip toli nuo to darbo, kurį mes iš tikrųjų atliekame kaip programuotojai, kurie kasdien dirba kompiuteriuose . Lentą nepatogu rašyti, redaguoti ir ji nesuteikia jokio atsiliepimo - nėra automatinio užbaigimo, nėra sintaksės paryškinimo ir negalite peršokti į „Google“ ieškoti standartinės bibliotekos nuorodų.

Be to, daugelyje vietų, kuriose dirba interviu su lenta, taip pat užduodami tam tikri interviu klausimai, kurie, tiesą sakant, yra beverčiai 99% programavimo darbų. Tai yra bijoti informatikos algoritmai: dvejetainio medžio apvertimas, trumpiausio kelio radimas grafike ir kt.

Šių klausimų problema yra ta, kad jie tiesiog nekyla realiame gyvenime kaip programuotojas. Jei kalbatės „Amazon“ ar „Facebook“, tikrai, galbūt jie turi tam tikrą vertę, tačiau dauguma žmonių niekada nesusidurs su šia problema savo karjeroje. Ir jei jie tai padarys, jie tiesiog naudos kokį nors paketą ar biblioteką, kurioje ši funkcija jau įdiegta.

Taigi, ką mes galime padaryti dėl lentų? Na, štai ką aš daryčiau: daryk viską, pasinaudok toliau pateiktais patarimais ir gudrybėmis ir rimtai įvertink, ar ši interviu praktika yra didesnio mentaliteto problemos įmonėje simptomas.

Kodo iššūkiai

Jei jums pasisekė išsisukti nuo lentos, dauguma vietų paprašys (ir tikriausiai turėtų) paprašyti atlikti tam tikrą kodo iššūkį. Vėlgi tai gali atrodyti kaip vienpusė galios dinamika, tačiau šis kodo iššūkis iš tikrųjų yra naudingas jums. Čia jūs sužibėsite ir parodysite savo techninę kompetenciją, ir, mano patirtimi, tai smarkiai paveikia jūsų derybinę galią kalbant apie darbo rangą ir atlyginimą.

Prieš pradėdami nagrinėti konkrečius patarimus, turėtume taip pat žinoti, kad vien tai, kad išsisukote nuo lentos, dar nereiškia, kad čia vis tiek negausite informatikos algoritmo klausimo - tiesiog kompiuteryje. Jei taip yra, tiesiog giliai įkvėpkite ir naudokitės žemiau pateiktais patarimais. Jūs tai išgyvensite.

Jums pasisekė išsisukti nuo lentos ir CS klausimo, kurį jums tikriausiai pateikė pagrįstas iššūkis. Man tai yra tokie klausimai:

Parašykite funkciją, kuri skaičiuoja centų skaičių (USD) kaip sveikąjį skaičių, mažesnį arba lygų 100, ir išspausdina mažiausiai monetų, reikalingų jai pavaizduoti.

50 => 2 ketvirčiai

11 => 1 centas ir 1 centas

7 => 1 nikelis ir 2 centai

Aš taip pat gavau klausimų, kurie atrodo kaip CS klausimai, bet tikrai nėra tokie blogi. Pavyzdžiui, „įdiekite dvigubai susietą sąrašą“. Iš pirmo žvilgsnio tai atrodo CS problema dėl „dvigubai susieto sąrašo“ dalies, tačiau pašnekovas iš tikrųjų norėjo kodo, kuris įgyvendino tą patį elgesį kaip ir dvigubai susietas sąrašas - aš nenaudojau rodyklių ir nesikreipiau daiktai atmintyje - tik imituojantys tą patį elgesį. Tokiu atveju tai tapo gana paprastu iššūkiu.

Ir tai mane priveda prie pirmo patarimo:

1 patarimas: užduokite aiškinamųjų klausimų

Dvigubai susietame sąrašo iššūkyje man buvo duotas tuščias „Ruby“ failas (kalbėjausi dėl „Ruby“ darbo) ir tuščias testų rinkinys. Kažkas panašaus į tai:

class DoublyLinkedList end 

(Jei nesate susipažinę su „Ruby“ - nesijaudinkite. Kodas čia bus lengvai suprantamas. Jis skirtas tik paaiškinti bendrus dalykus.)

Taigi, dvigubai susietas sąrašas? Gal žinote, kas tai, o gal ne. Jei ne: užduokite klausimus. Tai yra pirmoji spąstai, kurių reikia išvengti. Jei nesuprantate problemos ar ko jie prašo, tęskite klausimus tol, kol suprasite.

Mačiau, kaip pašnekovai eina neteisingu triušio taku, o pašnekovas tiesiog jiems leido - visą laiką tylėdamas jiems nepavyks. Nors aš nesutinku su šia praktika, įsitikinkite, kad dirbate teisinga problema.

Aš esu iš informatikos srities, todėl žinojau, kad dvigubai susietas sąrašas reiškia sąrašą, kuriame yra rodyklė į a headir tailmazgą, kur kiekvienas mazgas taip pat nurodo į jį nextir previousmazgą.

Nors aš tai žinojau, ką aš padariau? Aš tai pasakiau garsiai ir paklausiau, ar tai teisinga. Nors maniau, kad žinau, ką daryti, aš visiškai įsitikinau, kad tai padariau.

Kai manote, kad suprantate problemą, pakartokite supratingą pašnekovą, kad jis galėtų jus ištaisyti ar nukreipti.

Kitas dalykas, kurį aš padariau, buvo užduoti kitą klausimą: "Ar galiu naudoti masyvą mazgams?" Aš parašiau kažką panašaus į šį:

class DoublyLinkedList def initialize @nodes = [] end end 

(Jei nesate susipažinę su „Ruby“, tai yra tik inicializatorius arba konstruktorius, kuriu naują kintamąjį, vadinamą @nodestuščiu masyvu.)

Tačiau pašnekovas man pasakė: ne, aš negalėjau to padaryti - o tai prasminga. Jei būčiau naudojęs masyvą, tai būtų nugalėjęs visą pratimo tikslą, kuris sukuria netikrus „rodiklius“ tarp mazgų.

Ir berniuk, ar aš džiaugiuosi, kad paklausiau. Nenorėjau pasinaudoti proga, kad pašnekovas leis man naudoti masyvą, o tada manęs nepavyks.

Taigi nėra masyvo - ką aš dabar darau? 2 patarimas:

2 patarimas: kietai koduotas -> Dumb -> Geriau

Kai susidursite su kodavimo iššūkiu, spręskite šią problemą tokia tvarka: hardcoded -> dumb -> better -> dar geriau (jei laikas leidžia).

Kalbėdamasis ir apklausdamas kitus kūrėjus, manau, kad dauguma žmonių bando padaryti per daug iš karto.

Kai padarai per daug iš karto, lengva padaryti klaidų (kurių nepagausi dėl „InterviewBrain ™“ turėjimo). Taigi pradėk nuo paprasto - paprasčiausio, kurį iš tikrųjų gali būti, - sunkiai užkoduoto, ir eik aukštyn.

Taigi aš turiu tuščią „Ruby“ klasę, kaip aš galiu ką nors užkoduoti, kad galėčiau žengti į priekį? Pažvelgiau į savo tuščią bandymų rinkinį ir pamačiau, kad yra funkcija, vadinama, headkuri grąžino pirmąjį sąrašo mazgą, todėl pabandykime tai:

class DoublyLinkedList def head 'A' end end 

Aš sukūriau headfunkciją ir užrašiau didelę raidę „A“ kaip eilutę, ir aš atlikau tą testą. Tai praėjo.

Ar tai labai paprasta? Ar tai per daug akivaizdu? Taip! Bet šis kodas atlieka du labai svarbius dalykus:

  • Tai leidžia man atlikti bandymus ir patikrinti, ar mano sąranka veikia (pašalinamos bet kokios kvailos ar sintaksės klaidos)
  • Man tai greitai pavyksta - tai padidina pasitikėjimą savimi

Yra begalė mano matytų interviu, kai kas nors iš pradžių padaro nedidelę klaidą, susijaudina ir tada didžiąją interviu praleidžia bandydamas atsigauti ir ištaisyti, kas negerai.

Nenuvertinkite greitų laimėjimų vertės savo pasitikėjimui. Susikrovę mažus laimėjimus, jūs paskatinsite per interviu.

Gerai, mes turime koduotą eilutę 'A'. Dabar kaip tai padaryti nebyliu sprendimu? Na, o kaip tą raidę „A“ paversti maišu (arba žemėlapiu)?

class DoublyLinkedList def head { value: 'A' } end end 

Tai šiek tiek geriau. Dabar vietoj vienos simbolių eilutės mūsų „mazgas“ vaizduojamas kaip maiša su ypatybe value. Mes perėjome iš sunkiai užkoduoto į nebylų. Dabar kaip tai padaryti geriau? Na, o kaip mes pristatysime savo headrodyklę sąraše?

class DoublyLinkedList def initialize @head = { value: 'A' } end def head @head end end 

Ką mes čia pakeitėme? Čia mes vėl pridėsime savo iniciatorių ir sukursime naują kintamąjį, vadinamą @head, ir mes naudojame tą naują kintamąjį savo headfunkcijoje. Tai pradeda atrodyti kaip tikras kodas.

Dabar toks požiūris gali pasirodyti tikrai kvailas, bet aš jums pažadu, kad jis veikia. Visi šie pakeitimai atliekami per kelias sekundes po mažo, iteracinio kodavimo, ir jie kaupiami, kad per trumpą laiką būtų sukurtas veikiantis įgyvendinimas.

Jei manote, kad potencialiam pašnekovui toks požiūris pasirodys keistas, pateikite kitą patarimą, kuris yra labai svarbus:

3 patarimas: kalbėkitės. Garsiai.

Visą laiką, kai atliekate kodavimo iššūkį, turėtumėte kalbėti - garsiai.

Pasakykite viską, ką galvojate - viską.

(Na, viskas, kas susiję su programavimu.)

Štai kas: norint rasti teisingą sprendimą svarbu taip, bet lygiai taip pat, jei ne dar svarbiau , parodykite savo minties procesą. Pašnekovas nori sužinoti, kaip jūs galvojate - kaip sprendžiate problemas. Tai galite padaryti garsiai dalindamiesi viskuo, ką galvojate.

Kiekvienas pašnekovas tam tikru momentu yra buvęs pašnekovas - jis žino apie „InterviewBrain ™“ ir kad net paprastus dalykus interviu gali tapti sunku. Geriems pašnekovams nerūpi, kad sprendimas bus 100% teisingas - jie tiesiog nori žinoti, kad turite gerų kritinio mąstymo sugebėjimų. Vienintelis būdas padaryti šias vidines mintis matomas yra pasakyti jas garsiai.

Jei dar niekada to nepadarėte, galbūt norėsite tai praktikuoti, nes tai yra gyvybiškai svarbu prikalant interviu.

Pateiksiu keletą praktinių pavyzdžių: štai keletą dalykų, kuriuos sakau kiekvieną kartą, kai mane apklausia:

"Gerai, tiesiog sugriežtinkime šią vertę ir įsitikinkime, kad mūsų sąranka veikia." "Pirmiausia įsigykime nebylią šios veikiančios versijos versiją ir patobulinkime ją." ir daryk. "" Gerai, todėl mums reikia funkcijos, kuri imtų masyvą, atliktų X ir grąžintų. "

Kai kuriais atvejais šie interviu gali jaustis lyg pora programavimo sesijos.

Gerai, todėl mes sakome viską garsiai. Tačiau kartais mes padarome klaidą arba užstrigome. Savo minties procesą kalbėjome garsiai, bet dabar mums gali tekti pereiti ir ištirti galimą problemą ar klaidą.

Štai svarbus patarimas:

4 patarimas: laikykitės loginio srauto

Dabar prisipažinsiu: kartais tai gali būti sunku.

Jei dalyvaujate interviu ir jūsų kode yra problemų ar klaidų, jūsų smegenys žūtbūt nori išsiaiškinti, kas yra negerai, bet nesijaudinkite, kad pradėtumėte mesti savo kodą ar minties procesą.

Matote, lygiai taip pat, kaip pašnekovas nori pamatyti, kaip jūs išskaidote problemą, jie taip pat nori pamatyti, kaip jūs pašalinate problemą. Tai taip pat svarbu, kaip paaiškinti savo minties procesą. Stenkitės nepamiršti loginio srauto ir venkite kodo ar idėjų.

Jei viskas gerai

Taigi iššūkis sekasi gerai, o jūs išmušate problemą ir visus lengvus dalykus.

Kas dabar? Kaip pereiti nuo perėjimo prie sutraiškymo?

Tai yra nepaprastai svarbi interviu dalis, nes būtent čia jūs gaunate didžiausią savo sverto dalį dėl darbo lygio ir derybų dėl kompensacijos. Ir patarimas:

Patarimas Nr. 5: parodykite tai, ką žinote

Dirbi iššūkį, kalbi garsiai ir tau sekasi. Kitas dalykas, ko jums reikia ieškoti, yra galimybės parodyti savo žinias ir kompetenciją.

Ar tai vieta kode, kur galėtumėte siųsti el. Laišką? Paminėkite, kad tai turėtų būti padaryta fone dirbusiam darbuotojui (tikriausiai net nereikės to įgyvendinti).

Ar dirbate patvirtinimo logika modelyje? Kalbėkite apie tai, kaip pridėtumėte duomenų bazės apribojimus, kad užtikrintumėte duomenų vientisumą. Kokius indeksus pridėtumėte? Kaip išplėtotumėte migraciją, kad išvengtumėte prastovų?

Gavę sunkiai užkoduotą -> nebylų -> geresnį sprendimą, pakalbėkite apie tai, kaip jį pertvarkytumėte, turėdami daugiau laiko. Ar sukurtumėte tam modulį? O aptarnavimo objektas? Ką daryti, kai dalį šios logikos įdėsite į pagrindinį darbą? Aptarkite kompromisus.

Kodėl tai taip svarbu?

Dauguma interviu klausimų nukreipti į mažiausią bendrą vardiklį - tai reiškia pagrindinius darbo reikalavimus. Patys iššūkiai ar klausimai paprastai nėra skirti patikrinti kažkieno įgūdžius . Interviu tikriausiai nesulauks informacijos iš jūsų, todėl jūs turite pateikti tą informaciją.

Taigi, kol kalbate savo minties procesą, paminėk visus dalykus, kuriuos galėtum įtraukti į realaus gyvenimo programą ar kodų bazę, ir aptarkite juos.

Papildomi patarimai ir gudrybės paimkite krepšį

Taigi taip turėtumėte kreiptis į interviu ir spręsti bet kokį iššūkį, kurį jums duosite.

Štai keletas papildomų gudrybių, kurias kartais galima panaudoti siekiant nedidelių pranašumų.

Triukas Nr. 1: žinokite įprastas problemas

Yra keletas bendrų problemų, kurios dažnai iškyla interviu metu (ypač lentose). Jūs turėtumėte būti susipažinę su šiomis problemomis, nes jie yra panašūs į klausimus, kuriuos žinote.

Du pagrindiniai yra „FizzBuzz“ ir „Fibonacci“ sekos sprendimas (įsitikinkite, kad tai žinote).

Dabar įspėjamasis žodis: niekada nenorite interviu metu pateikti įsiminto sprendimo. Tai gali būti tik blogai (ir aš jaučiau, kad taip nutiko). Tačiau jūs norite būti susipažinę su sprendimu ir sugebėti jį atkurti nuo nulio.

Taigi naudokitės savo interviu klausimų parengiamosiomis knygomis, taip, bet įsitikinkite, kad suprantate sprendimą, galite jį paaiškinti ir iš naujo sukurti iš naujo. Įsimintas atsakymas čia niekur nenuves.

Triukas Nr. 2: paprastai gerai žiūrėti į dokumentus

Visuose interviu, kuriuose dalyvavau, ar jų daliai, niekam nerūpėjo, jei ieškai standartinės bibliotekos ar paketo dokumentų. Pašnekovams nėra gerai, kai ieškote atsakymo (taigi aš išvengčiau „StackOverflow“), tačiau konsultacijos su nuorodomis paprastai yra sąžiningas žaidimas. Jei kyla abejonių, žr. Patarimą Nr. 1 ir paprašykite paaiškinimo.

Triukas Nr. 3: stebėkite vaizdinius ženklus

Tai tikriausiai mano mėgstamiausias patarimas. Tai nėra pats naudingiausias, tačiau yra įdomus. Vieną savo interviu atlikau nuotoliniu būdu, o mes naudojomės ekrano dalijimosi programa, o viršutiniame dešiniajame ekrano kampe mačiau pašnekovo veidą.

Koduodamas pastebėjau akies krašteliu, kad pašnekovas linkčiojo galva. Ak, ha! Šiek tiek vizualaus ženklo, kad žinotų, jog einu teisingu keliu.

Vėlgi, tai nėra daug, bet tai gali būti naudinga. :)

4 gudrybė: jei nuotolinis, turėkite gerą sąranką

Kalbant apie nuotolinį, jei esate nuotolinis, pabandykite atlikti kuo geresnę sąranką. Tai reiškia, kad fotoaparatas įjungtas (jei įmanoma, nustatykite ten, kur žiūrite tiesiai į jį), geras internetas, kompiuteris, prijungtas prie maitinimo tinklo, ramus kambarys, stiklinė vandens netoliese ir kt.

Šie dalykai neturėtų turėti įtakos jūsų interviu rezultatui, tačiau nereikia erzinti pašnekovo ar suteikti papildomo streso dėl interneto ar triukšmo problemų.

Triukas Nr. 5: būk mielas!

Paskutinis mano triukas jums yra būti mielam.

Savo interviu būk žmogus, su kuriuo norėtum dirbti. Parodykite jiems geriausią save.

Interviu gali būti bauginanti, o kūrėjai paprastai yra tylesni ir santūresni žmonės, tačiau žmonėms, su kuriais bendraujate, turite parodyti: „Ei, aš esu linksmas ir malonus žmogus, su kuriuo dirbu“.

Aš tavęs neprašau būti tuo, kuo nesi. Bet jūs nenorite būti, pasak vieno iš mano artimų draugų, kuris visą laiką interviu su žmonėmis, „jūrų padaras“.

Premijos triukas Nr. 6: atlikite visą kitą interviu paruošimą (jei norite)

Jei jaučiatės nepakankamai pasirengęs arba tai yra jūsų pirmasis interviu dėl technologijų, atlikite parengiamuosius darbus, kol jausitės patogiai.

Skaitykite tokias knygas kaip „Interviu„ Kodavimas ““ arba „HackerRank“ praktikuokite algoritmus ir galvosūkius.

Perskaitykite kitus puikius „Developer News“ įrašus apie interviu.

Jei kalbatės dėl „full-stack“ vaidmens, būkite pasirengę iš naujo nustatyti naują projektą arba bandomąjį failą su testų rinkiniu.

Tyrinėkite įmonę, būkite pasirengę iškilus dideliems klausimams apie įmonę ar kasdienį darbą ir pan.

Galų gale: tai tik interviu.

Galų gale ji yra tokia, kokia yra.

Jūs atliksite tai, ką atliekate.

Jus apklaus asmuo, su kuriuo jus kalbins.

Jų interviu procesas bus jų interviu procesas.

Galbūt jums buvo ne darbo diena - galbūt pašnekovui buvo ne diena.

Vėliau, jei jaučiatės nepatogus, nugalėtas ar dar kas nors - giliai įkvėpkite ir paleiskite! Neleiskite, kad jūsų driežo smegenys jūsų apsunkintų. Blogas interviu nėra pasaulio pabaiga. Jūsų karjera nėra sužlugdyta, reputacija ir gyvenimas nėra sužlugdytas.

Tai tik interviu. Mokykitės iš to, prisitaikykite ir kitą kartą būkite geresni.

Gerai nervintis

Daugelis žmonių (taip pat ir aš) jaudinasi prieš tokius dalykus kaip interviu, pokalbiai ar pristatymai.

Anksčiau nervinimąsi maniau kaip blogą dalyką - dalyką, kurio nenorėjau. Ir nesvarbu, kiek kartų aš sau sakiau „nesinervink“ - atspėk: tai mane tiesiog nervino!

Išmokau permąstyti, kaip žiūriu į nervus. Nervingumas yra mano kūnas, kuris ruošiasi kovai - tai pirminė kova ar skrydžio atsakas.

Bet kaip jau sakėme anksčiau: tai tik interviu. Interviu kambaryje nėra tigro. Šis pirminis atsakymas nėra būtinas.

Aš pradėjau save perkvalifikuoti, kad nervingumas būtų vertinamas kaip geras dalykas. Tai reiškia, kad mano kūnas ir pojūtis didėja, kad galėčiau pasiekti geriausią savo pasirodymą.

Taigi, apkabink nervus. Jie tiesiog ruošia jus kuo geriau pasirodyti.

Interviu yra įgūdis

Galų gale interviu yra įgūdis. Norint įsisavinti reikia šiek tiek mokytis ir daug praktikos.

Taigi nemuškite savęs, jei pasirodysite ne taip, kaip tikėjotės. Mokykis ir praktikuokis - tu pateksi!

Jei turite klausimų ar komentarų, nedvejodami kreipkitės į mane „Twitter“, o jei norite gauti daugiau informacijos, kaip pasiruošti vystymosi karjerai, aš rašau tokius dalykus savo tinklaraštyje.

Ačiū, kad skaitėte!

Jonas