Kuidas valmistuda tehniliseks intervjuuks - näpunäited ja näpunäited, mis aitavad teil oma parimaid tulemusi saavutada

Ah, kodeerimisintervjuu.

"Karda seda. Põgene selle eest. Saatus saabub sama." - Thanos 2018

Ok, võib-olla on see natuke dramaatiline, kuid ma ei tea kedagi, kes oleks intervjuuprotsessi läbimisest vaimustuses. Tööotsimise / intervjuu protsess on parimal juhul kurnav ja halvimal juhul paljud muud asjad.

Paljud inimesed uurivad intervjuu nippide ja taktika osas (ja ma annan teile ka mõned neist), kuid enamik inimesi ei mõtle intervjuule mineku mõtteviisile .

Teie mõtteviis määrab tooni, kuidas oma olukorda vaadata ja kujundada. Minge õige mõtteviisiga sisse ja saate aru kõigest, mis teile visatakse, ja navigeerida. Sisestage hajameelse või argliku meelega ja leiate end kõigutatuna ja räsituna.

Oled ka intervjueerija

Üks asi, mida enamik inimesi sageli unustab, on ka teie ise intervjueerija.

Jah, kas teid küsitletakse selles ettevõttes, aga intervjueerite ka ettevõtet, et näha, kas need sobivad teile hästi.

Millised on selle ettevõtte väärtused? Milline on nende tööeetika? Mida rahvas hindab?

Intervjuu läbimine on oluline, kuid kas soovite selles ettevõttes töötada, kui läbite?

Mõnikord on meil vaja lihtsalt tööd - mis tahes tööd - ja seetõttu ei taha ma lihtsalt selle saamist minimeerida. Kuid kui võimalik, siis astuge samm tagasi ja mõelge, kuidas see töö teie karjääri pikemas perspektiivis mõjutab. Tööle jah-sõna ütlemine tähendab tosinale teisele ei-maksate jah-ütlemisega suured alternatiivkulud.

Nii et see on esimene asi, mida tuleks meeles pidada: see pole ühesuunaline jõudünaamika. Mõnikord võib see tunduda, kuid teil on siin teatud kontroll ja teil on võimalusi. See annab jõudu.

Intervjuude tüübid

Ok, nii et me oleme ka hindamisel põhinev firma inimesed, keda me suhtleme intervjuu käigus, nii et mida me teeme, et informatsiooni?

Noh, seal on paar erinevat tüüpi tehnilisi intervjuusid. Need intervjuutüübid räägivad meile palju ettevõtte mõtteviisist ja sellest, mis tunne on seal töötada. Jaotan erinevad tüübid nii:

  • Tahvel
  • Koodi väljakutse (arvutiteaduse küsimused või algoritmid)
  • Koodi väljakutse (mõistlik kodeerimisprobleem)
  • Võta koju projekt

Kardetud tahvel

Mõned esimesed intervjuuharjutused, mida tehnikatööstus vastu võttis, olid tahvli harjutused. Teile antakse ülesanne ja teil palutakse kirjutada kood tahvlile. Üldiselt vaadatakse seda lähenemist halvasti ja tehnotööstuses kaotatakse see tänapäeval, kuid siiski on palju ettevõtteid, kes seda praktikat kasutavad.

Asi pole selles, et tahvlile kodeerimine oleks iseenesest halb - vaid see, et tahvel on nii kaugel tööst, mida me tegelikult igapäevaselt arvutitega töötavate programmeerijatena teeme . Tahvel on kohmakas kirjutamiseks, redigeerimiseks ja see ei anna teile tagasisidet - puudub automaatne täitmine, süntaksi esiletõstmine ja te ei saa Google'ile hüpata, et otsida standardse teegi viiteid.

Lisaks küsivad paljud tahvliintervjuusid kasutavad kohad ka teatud intervjuuküsimusi, mis on ausalt öeldes väärtusetud 99% -le sealsetest programmeerimistöödest. Need on kardetud arvutiteaduse algoritmid: binaarse puu tagurdamine, graafikult lühima tee leidmine jne.

Nende küsimuste probleem on see, et neid lihtsalt ei tule reaalses elus programmeerijana üles. Kui te intervjueerite Amazonis või Facebookis, siis võib-olla on neil seal mingi väärtus, kuid enamik inimesi ei puutu selle probleemiga kokku oma karjääri jooksul. Ja kui nad seda teevad, kasutavad nad lihtsalt mõnda paketti või kogu, mis on selle funktsiooni juba kasutusele võtnud.

Mida me siis tahvlitega teha saame? Noh, ma teeksin järgmist: annaks endast parima, kasutaks allpool toodud näpunäiteid ja hindaks tõsiselt, kas see intervjuupraktika on sümptom ettevõttes laiemast mentaliteediprobleemist.

Koodiga seotud väljakutsed

Kui teil on õnne tahvli kõrvale hiilida, palub (ja ilmselt peakski) enamik kohti tegema mingisuguse koodiväljakutse. Jällegi võib see tunduda ühesuunaline võimsusdünaamika, kuid see koodiväljakutse on teile tegelikult kasulik. Siit saate särada ja näidata oma tehnilist pädevust ning minu kogemuse kohaselt mõjutab see drastiliselt teie läbirääkimisjõudu, kui tegemist on ametiastmega ja palgaga.

Enne konkreetsete näpunäidete käsitlemist peaksime teadma ka seda, et see, kui olete tahvlist kõrvale hiilinud, ei tähenda, et te ei saa siia arvutiteaduse algoritmi küsimust - lihtsalt arvutisse. Kui see nii on, siis lihtsalt hingake sügavalt sisse ja kasutage allolevaid näpunäiteid. Sa saad selle läbi.

Kui teil on õnne tahvli ja CS-küsimuse eest kõrvale hiilida, on teile tõenäoliselt mõistlik kodeerimisprobleem esitatud. Minu jaoks on need küsimused nagu:

Kirjutage funktsioon, mis võtab täisarvuna 100 senti (USD) täisarvuna ja prindib välja kõige vähem münte, mida selle esitamiseks vaja on.

50 => 2 kvartalit

11 => 1 peenraha ja 1 sent

7 => 1 nikkel ja 2 senti

Olen saanud ka küsimusi, mis tunduvad CS küsimustena, kuid pole tegelikult nii halvad. Näiteks "juurutage topeltlingitud loend". Esmapilgul tundub see "topeltlingitud loendi" osa tõttu CS-probleemina, kuid mida intervjueerija tegelikult soovis, oli kood, mis rakendas sama käitumist nagu topeltlingitud loend - ma ei kasutanud näpunäiteid ega adresseerimist objektid mälus - lihtsalt jäljendades sama käitumist. Sel juhul oli see lõpuks üsna lihtne väljakutse.

Ja see toob mind mu esimese näpunäite juurde:

Nõuanne 1: esitage täpsustavaid küsimusi

Topeltlingitud nimekirja väljakutses anti mulle tühi Ruby-fail (intervjueerisin Ruby-töö jaoks) ja tühi testipakett. Midagi sellist:

class DoublyLinkedList end 

(Kui te pole Rubyga tuttav - ärge muretsege. Siinset koodi on lihtne mõista. See on lihtsalt siin, et illustreerida üldiseid punkte.)

Niisiis, topelt lingitud loend? Võib-olla teate, mis see on, või ei tea. Kui te seda ei tee: esitage küsimusi. See on esimene lõks, mida vältida. Kui te ei saa probleemist või nende taotlusest aru, küsige seni, kuni saate aru.

Olen näinud, kuidas intervjueeritavad läksid valel jäneserajal ja intervjueerija lihtsalt lasi neil - kogu aeg vaikselt kukkusid nad läbi. Kuigi ma ei nõustu selle tavaga, veenduge, et töötaksite õige probleemiga.

Olen pärit arvutiteaduse taustast, nii et teadsin, et topeltlingitud loend tähendab loendit, millel on osuti a-le headja tailsõlm - kus iga sõlme osutab ka sellele nextja previoussõlmele.

Kuigi ma seda teadsin, mida ma siis tegin? Ma ütlesin seda valjusti ja küsisin, kas see on õige. Kuigi arvasin, et tean, mida teha, olin täiesti kindel, et sain hakkama .

Kui arvate, et mõistate probleemi, sõnastage oma intervjueerija mõistmine, et ta saaks teid parandada või suunata.

Järgmisena esitasin veel ühe küsimuse: "Kas ma saan sõlmede jaoks kasutada massiivi?" Ja kirjutasin välja midagi sellist:

class DoublyLinkedList def initialize @nodes = [] end end 

(Kui te pole Rubyga tuttav, on see lihtsalt initsiaator või konstruktor, kus ma teen uue muutuja nimega @nodestühi massiiv.)

Kuid intervjueerija ütles mulle, et ei, ma ei saanud seda teha - see on mõistlik. Kui ma oleksin massiivi kasutanud, oleks see võitnud kogu harjutuse eesmärgi, mis moodustab sõlmede vahel võltsitud "näpunäited".

Ja poiss, kas mul on hea meel, et küsisin. Ma ei tahtnud kasutada võimalust, et intervjueerija laseb mul massiivi kasutada ja jätab mind siis alt vedama.

Nii et massiivi pole - noh, mida ma nüüd teen? Siin on näpunäide nr 2:

Vihje nr 2: kõvakoodiga -> loll -> parem

Kui seisate silmitsi kodeerimisprobleemiga, töötage probleemiga järgmises järjekorras: kõvakodeeritud -> loll -> parem -> veelgi parem (kui aeg lubab).

Oma kogemuste põhjal intervjueerituna ja teiste arendajatega küsitledes leian, et enamik inimesi üritab korraga liiga palju teha.

Kui teete liiga palju korraga, on lihtne teha vigu (mida te InterviewBrain ™ omamise tõttu ei taba). Nii et alustage lihtsatest - lihtsamatest, mida tegelikult saate - kõvakoodiga - ja liikuge ülespoole.

Nii et mul on tühi Ruby klass, kuidas saaksin midagi edasi kodeerida, et edasi liikuda? Vaatasin oma tühja testikomplekti ja nägin, et seal oli funktsioon nimega, headmis tagastas loendi esimese sõlme, nii et proovime seda:

class DoublyLinkedList def head 'A' end end 

Tegin headfunktsiooni ja kodeerisin kõvakettana suurtähe "A" ja jooksin selle testi. See läks mööda.

Kas see on ülilihtne? Kas see on liiga ilmne? Jah! Kuid see kood teeb kahte väga olulist asja:

  • See võimaldab mul käivitada testid ja testida, kas minu seadistamine töötab (kõrvaldades kõik rumalad või süntaksivead)
  • See aitab mul kiiresti võita - mis suurendab minu enesekindlust

Olen lugematu arv intervjuusid, kus olen alguses teinud väikese vea, kohmetunud ja veetnud suurema osa intervjuust, püüdes taastuda ja parandada valet.

Ära alahinda kiirete võitude väärtust oma enesekindluse jaoks. Väikeste võitude virnastamine ajab teid läbi intervjuu.

Ok, meil on kõvakoodiga string 'A'. Kuidas me saame sellest lolli lahenduse? Kuidas oleks selle tähe "A" muutmisega räsiks (või kaardiks)?

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

See on natuke parem. Nüüd on ühe tähemärgi stringi asemel meie "sõlm" tähistatud valueatribuudiga räsi . Oleme muutunud kõvakoodist tummaks. Kuidas saaksime seda paremaks muuta ? Kuidas oleks, kui tutvustaksime headloendis oma kursorit?

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

Mida me siin muutsime? Lisame siin oma initsiaatori tagasi ja loome uue muutuja nimega @headning kasutame seda uut muutujat oma headfunktsioonis. See hakkab välja nägema nagu mingi päris kood.

Nüüd võib see lähenemine tunduda tõesti rumal, kuid ma luban teile, et see töötab. Kõik need muudatused tehakse väikese iteratiivse kodeerimisega sekundites ja need laduvad kokku, et töötada lühikese aja jooksul toimiv rakendus.

Kui arvate, et see lähenemine tundub potentsiaalsele intervjueerijale veider, siis siin on järgmine näpunäide ja see on väga oluline:

Vihje nr 3: rääkige. Valjusti.

Kodeerimisväljakutse tegemise ajal peaksite rääkima - valjusti.

Öelge kõik, mida mõtlete - kõik.

(Noh, kõik programmeerimisega seotud.)

Siin on asi: õige lahenduse leidmine on oluline jah, kuid sama oluline, kui mitte olulisem, on ka teie mõtlemisprotsessi näitamine. Intervjueerija soovib teada, kuidas te arvate - kuidas probleeme lahendate. Seda saate teha, kui jagate kõike, mida mõtlete.

Iga intervjueerija on mingil hetkel olnud intervjueeritav - nad teavad InterviewBrain ™ -ist ja et isegi lihtsad asjad võivad intervjuus keeruliseks muutuda. Head intervjueerijad ei hooli sellest, et saate lahenduse 100% õigeks - nad tahavad lihtsalt teada, et teil on head kriitilise mõtlemise võimed. Ainus viis neid sisemisi mõtteid nähtavaks teha on öelda need valjusti.

Kui te pole seda kunagi varem teinud, võiksite seda harjutada, sest see on intervjuu naelutamisel ülioluline.

Praktiliste näidete toomiseks on siin mõned asjad, mida ma ütlen iga kord, kui mind intervjueeritakse:

"Ok, lubame selle väärtuse lihtsalt kodeerida ja veenduge, et meie seadistamine toimiks." "Hakkame kõigepealt selle toimiva lolli versiooni parandama." "Ma teen seda praegu nii ja kui meil on aega tagasi tulla ja tee. "" Okei, nii et me vajame funktsiooni, mis võtab massiivi sisse, teeb X ja tagastab. "

Mõne stsenaariumi korral võivad need intervjuud hakata tundma paari programmeerimisseansse.

Ok, nii et me ütleme asju valjusti. Kuid mõnikord teeme vea või jääme jänni. Oleme rääkinud oma mõtteprotsessist valjusti, kuid nüüd peame võib-olla muutma ja uurima võimalikku probleemi või viga.

Siin on selle jaoks oluline näpunäide:

Vihje nr 4: püsige loogilises voos

Nüüd tunnistan: see võib olla kohati raske.

Kui olete intervjuus ja teie koodis on probleem või viga, soovib teie aju meeleheitlikult aru saada, mis on valesti - kuid ärge liiga meeleheitel, et hakkate oma koodi või oma mõtteprotsessi viskama.

Näete, nagu küsitleja tahab näha, kuidas te probleemi lagundate, tahavad nad ka seda, kuidas te probleemi siluda. See on sama oluline kui oma mõtlemisprotsessi selgitamine. Proovige oma parima, et püsida loogilises voos ja vältida koodi või oma ideede viskamist.

Kui hästi läheb

Nii et väljakutse läheb hästi ja koputate probleemi ja kõik lihtsamad asjad välja.

Mis nüüd? Kuidas minna möödaminnes selle purustamiseni?

See on intervjuu äärmiselt oluline osa, sest just siin saate suurema osa oma võimest töökoha taseme ja kompenseerimise läbirääkimiste pidamiseks. Ja näpunäide on:

Vihje nr 5: näidake, mida teate

Sa töötad väljakutsega, räägid valjusti ja saad hästi hakkama. Järgmine asi, mida peate otsima, on võimalused oma teadmiste ja oskuste näitamiseks.

Kas see on koodis koht, kuhu võite meili saata? Mainige, et seda tuleks teha hoopis taustatöötaja juures (tõenäoliselt ei pea te seda isegi rakendama).

Kas töötate mudelis valideerimisloogika kallal? Rääkige sellest, kuidas lisaksite andmebaasi piiranguid andmete terviklikkuse tagamiseks. Millised indeksid lisaksid? Kuidas kasutaksite rändeid seisakute vältimiseks?

Kui saate oma kõvakodeeritud -> lolli -> parema lahenduse, rääkige sellest, kuidas te seda rohkem aega refrakteeriksite. Kas loote selle jaoks mooduli? Aga teenindusobjekt? Aga selle loogika osa lisamine taustatööle? Arutage kompromisse.

Miks see nüüd nii oluline on?

Enamik intervjuuküsimusi on suunatud madalaimale ühisnimetajale - see tähendab töö põhinõudeid. Väljakutse või küsimused ise ei ole tavaliselt mõeldud kellegi oskuste tipptaseme testimiseks . Intervjuu ei hakka tõenäoliselt teavet endast välja tõmbama, nii et peate selle teabe edastama.

Nii et kui mõtlemisprotsessi läbi räägite, mainige kõiki asju, mida saaksite lisada reaalsesse rakendusse või koodibaasi, ja arutage neid.

Lisanõuanded ja nipid haarake kott

Nii peaksite lähenema oma intervjuule ja lahendama mis tahes väljakutse, mis teile antakse.

Siin on mõned lisanipid, mida võib mõnikord kasutada väikeste eeliste saamiseks.

Trikk nr 1: teadke levinumaid probleeme

On mõned levinumad probleemid, mis ilmnevad sageli intervjuudes (eriti tahvlitel). Te peaksite nende probleemidega tuttav olema, sest need on umbes sarnased küsimused, millest teate, et olete testis.

Kaks peamist neist on FizzBuzz ja Fibonacci järjestuse lahendamine (veenduge, et teaksite neid).

Nüüd hoiatuseks: te ei soovi kunagi intervjuus päheõpitud lahendust panna. See võib minna ainult halvasti (ja olen näinud, kuidas see juhtub). Te soovite siiski lahendusega tuttav olla ja seda uuesti nullist luua.

Nii et kasutage oma intervjuuküsimuste ettevalmistusraamatuid, jah, kuid veenduge, et mõistaksite lahendust, oskaksite seda selgitada ja saaksite selle nullist uuesti luua. Peamine vastus ei vii teid siia kuhugi.

Trikk nr 2: dokumentide vaatamine on tavaliselt ok

Kõigis intervjuudes, kus olen osalenud või olen osalenud, pole keegi huvitanud, kui otsite üles standardraamatukogu või pakettdokumendid. Intervjueerijatel pole ok, kui te vastust otsite (nii et ma väldin StackOverflow'i), kuid viidetega tutvumine on tavaliselt aus mäng. Kui teil on kahtlusi, vaadake nõuannet nr 1 ja küsige selgitust.

Trikk nr 3: jälgige visuaalseid vihjeid

See on ilmselt minu lemmiknipp / trikk. See pole kõige kasulikum, kuid omamoodi lõbus. Ühe oma intervjuu tegin kaugelt ja me kasutasime ekraani jagamise programmi ja nägin intervjueerija nägu oma ekraani paremas ülanurgas.

Märkasin kodeerides silmanurgast, et intervjueerija noogutas neile pead. Ah ha! Väike visuaalne vihje teadmiseks, et olin õigel teel.

Jällegi pole see palju, kuid see võib olla kasulik. :)

Trikk nr 4: kaugjuhtimispuldi korral seadistage see hästi

Rääkides kaugsuhtlusest, siis kui olete kaugjuhtimispult, proovige teha parimat võimalikku seadistust. See tähendab, et kaamera on sisse lülitatud (kui võimalik, seadistage otse sinna, kuhu otsite), hea internet, arvuti vooluvõrku ühendatud, vaikne tuba, läheduses klaas vett jne.

Need asjad ei tohiks teie intervjuu tulemust mõjutada, kuid pole vaja intervjueerijat häirida ega endale interneti- või müraprobleemidest lisastressi tekitada.

Trikk nr 5: ole meeldiv!

Minu viimane nipp teile on olla meeldiv.

Ole oma intervjuus keegi, kellega tahaksid koos töötada. Näidake neile oma parimat mina.

Intervjuud võivad olla hirmutavad ja arendajad on üldiselt vaiksemad ja reserveeritumad inimesed, kuid peate näitama inimestele, kellega suhtlete, "Kuule, ma olen lõbus ja tore inimene, kellega koos töötada."

Ma ei palu teil olla keegi, kes te pole. Kuid te ei taha olla, nagu üks mu lähedasi sõpru, kes kogu aeg inimesi intervjueerib, "mereelukas".

Boonuse trikk nr 6: tehke kõik muud intervjuu ettevalmistused (kui soovite)

Kui tunnete, et pole piisavalt ettevalmistatud või see on teie esimene tehniline intervjuu, tehke eeltööd, kuni tunnete end mugavalt.

Lugege selliseid raamatuid nagu kodeerimisintervjuu krakkimine või harjutage algoritme ja mõistatusi HackerRankis.

Lugege arendajauudiste teisi häid postitusi intervjueerimise kohta.

Kui küsitlete kogu virna rolli, olge valmis uue projekti või testfaili koos testipaketiga nullist seadistama.

Uurige ettevõtet, olge valmis suurte küsimustega ettevõtte või igapäevase töö kohta jne jne.

Lõpuks: see on lihtsalt intervjuu.

Lõpuks on see nii, nagu ta on.

Te esitate oma esitusviisi.

Teid küsitleb inimene, kellega te vestlete.

Nende intervjuuprotsess saab olema nende intervjuuprotsess.

Võib-olla oli teil puhkepäev - võib-olla oli intervjueerijal puhkepäev.

Pärast, kui tunnete piinlikkust, lüüasaamist või midagi muud - hingake sügavalt sisse ja laske sellel minna! Ära lase sisaliku ajul end kaaluda. Halb intervjuu pole maailmalõpp. Teie karjäär ei ole rikutud, maine pole rikutud ja teie elu pole rikutud.

See on lihtsalt intervjuu. Õppige sellest, kohanege ja olge järgmine kord parem.

Närviline on ok

Enamik inimesi (ka mina) närvitsevad enne selliseid asju nagu intervjuud, kõnelused või esitlused.

Varem pidasin närvilisust halvaks - asjaks, mida ma ei tahtnud. Ja hoolimata sellest, mitu korda ma ütlesin endale: "Ära ole närvis" - arvake ära: see ajas mind lihtsalt närvilisemaks!

Olen õppinud ümber mõtlema, kuidas ma närvidesse suhtun. Närvilisus on minu keha võitluseks valmistumine - see ürgne võitlus või põgenemisreaktsioon.

Aga nagu me varem ütlesime: see on lihtsalt intervjuu. Intervjuude toas ei hiilinud tiiger. See esmane vastus pole vajalik.

Olen hakanud ennast ümber koolitama, et närvilisus oleks hea. See tähendab, et mu keha ja meeled tõusevad, et saaksin pakkuda parimat esitust, mis mul on võimalik.

Niisiis, võtke närvid omaks. Nad lihtsalt valmistavad teid endast parima andmiseks.

Intervjueerimine on oskus

Lõpuks on intervjueerimine oskus. Meisterdamiseks on vaja õppimist ja palju harjutamist.

Nii et ärge pekske ennast, kui te ei esita nii, nagu oleksite lootnud. Jätkake õppimist ja harjutage edasi - jõuate kohale!

Kui teil on küsimusi või kommentaare, pöörduge julgelt minu poole Twitteris ja kui soovite lisateavet selle kohta, kuidas arengukarjääriks valmistuda, kirjutan oma blogisse sellist kraami.

Täname lugemast!

John