5 dalykai, kuriuos turite žinoti programavimo interviu metu

Šis straipsnis skirtas tiems, kurie bando pradėti savo programavimo karjerą arba ruošiasi interviu dėl savo svajonių darbo. Kaip žmogus, buvęs abiejose apklausos stalo pusėse, suprantu, koks jausmas būti pašnekovu.

Šis neišsamus klausimų sąrašas visą laiką sklandė mano galvoje.

  • "Ar turėčiau kalbėti per savo kodą?"
  • "Kaip dažnai turėčiau bendrauti su pašnekovu?"
  • „O dieve, pamiršau iš karto pakeisti savo kintamąjį! Ar aš pasmerktas ?! “
  • „Ką pašnekovas mano apie mano atsakymą?“
  • "Ar gerai, jei aš tai darau?"

... Ir sąrašas tęsiasi ...

Tai labai baisi patirtis. Tai yra labai sunku. Nepaprastai sunku dirbti šiame vakuume, kai esate tikrinami dėl kiekvieno pasakyto dalyko ir kiekvieno parašyto dalyko.

Kalbatės dėl savo svajonių darbo - apie tai, apie ką svajojote nuo 12 metų. Viskas priklauso nuo įspūdžio niekam per 60 minučių.

Kovayra tikras.

1. Visada galvok iš anksto

Dažnai girdėsite, kaip pašnekovas to klausia: „Gerai, manau, kad tai atrodo gerai. Kaip patobulintumėte šį kodą? “

Tai yra žudikas . Taip yra todėl, kad praleisti laiką nėra tik užpildas. Pašnekovas bando įvertinti, kaip jūs galvojate apie:

  • kodo kokybė
  • keletas problemų / kliūčių, kurios nebuvo iškeltos algoritmo planavimo sesijos metu
  • kaip įvertintumėte esamą sprendimą.

Tai, kad išsprendėte problemą, dar nereiškia, kad automatiškai gausite pasiūlymą.

Pvz., Kai žiūrite į šį kodo elementą žemiau, ką jis veikia? Kaip galėtum ją patobulinti? Kas gali nulaužti?

Praneškite man toliau pateiktose pastabose. Norėčiau išgirsti jūsų mintis.

Siurprizas? Galimybė sugalvoti veikiantį sprendimą yra minimalus, kad būtų atsižvelgta į pareigas. T HESE klausimai yra pagrindiniai kompetencijų testai. Gerus kandidatus nuo puikių skiria gebėjimas mąstyti daugiau, nei reikalaujama.

Ką tai reiškia kodavimo sesijoje

Pagalvokite apie krašto atvejus, mastelio problemas, problemines sritis. Visada galvokite vienu žingsniu į priekį. Jei naudojatės rekursiniu metodu, kas nutiktų, jei turėtumėte didelį duomenų rinkinį? Jei naudojate maišos algoritmą, kaip elgtis susidūrus? Kiek tikėtina, kad taip nutiks, ir koks blogiausias scenarijus?

2. Yra daugiau nei vienas atsakymas

Programavimo interviu problemai išspręsti visada yra daugiau nei vienas būdas. Visada . Paprastai yra keli problemos sprendimo būdai, kai kurie iš jų gali būti neoptimalūs.

Vienas iš mano mėgstamiausių technologijų „Youtubers“ mane išmokė, kad kodavimo interviu yra protinis pratimas, siekiant pamatyti, kaip kandidatas mąsto. Žiūrint iš pašnekovo perspektyvos, aš nesiekiu patikrinti, ar žinote, koks yra teisingas atsakymas. Taip, svarbu, kad galėtumėte parašyti veikiantį sprendimą , tačiau tai nėra vienintelis dalykas.

Negana to, aš ieškau, koks protingas yra šis žmogus, kaip gaunamas sprendimas ir kokius dar kūrybiškus sprendimus šis asmuo gali galvoti.

Programavimo pratimas, parodantis mano mintį:

Sujunkite du surūšiuotus susietus sąrašus. (Jei norite pabandyti išspręsti, jis susietas su „Leetcode“). Iš esmės galite tai išspręsti keliais būdais:

  1. Įdėkite visus mazgus į masyvą ir tada surūšiuokite. Tada sukurkite žymeklį ir susiekite kiekvieną masyvo elementą.
  2. Sujunkite juos naudodami žymeklio manipuliavimą. Palyginkite du, stebėdami, kuris yra mažesnis, ir grąžinkite rezultatus pabaigoje.

Kokius dar būdus galite sugalvoti?

3. OOP nėra miręs

Objektinis programavimas nėra miręs. Kai kuriems žmonėms tai meilės ir neapykantos santykiai, tačiau tai yra vertingas įgūdis. Tai yra vienas pagrindinių įgūdžių - programavimo technika, kurią turėtų žinoti kiekvienas programuotojas.

Daugelis kandidatų galvoja pirmiausia apie programavimo problemą, toliau nesvarstydami kodo supaprastinimo. Anksčiau buvau šioje grupėje ir, tiesa, vis dar kartais tai darau.

Tačiau gebėjimas sudėtingas problemas paversti paprastesniais, valdomais gabalėliais, taikant objektinį programavimą, yra retas ir vertingas įgūdis.

Parašyti kodą, kad kompiuteriai suprastų, yra lengva. Rašyti kodą žmonėms yra sunku.

4. Sukurkite savo santrauką

Įsivaizduokite, kad einate į išleistuvių vakarą su savo svajonių asmeniu ir pasirodote prie jo slenksčio su šlepetėmis ir marškinėliais be rankovių.

Jūsų santrauka yra jūsų vizitinė kortelė. Tai pirmasis įmonės įspūdis apie jus.

Jei pradedate ieškoti darbo, pirmiausia turėtumėte paruošti puikią santrauką. Tai yra numeris vienas dalykas, kurio ieškantys darbo dažnai nepastebi ir, be abejo, tai yra žemiausiai kabantys vaisiai.

Matau daug kandidatų, kurie savaites, jei ne mėnesius, ruošėsi pokalbių kodavimui. Tačiau laikas, kurį jie praleido kurdami savo gyvenimo aprašymus.

5. Anksti bendraukite ir dažnai bendraukite

Kai pirmą kartą pradėjau interviu, klydau dėl per didelio bendravimo . Tai reiškė, kad bandžiau kalbėti per kiekvieną parašytą kodo eilutę, net jei tai buvo paprasta „for-loop“.

Nesu tas, kuris geba kalbėti ir mąstyti tuo pačiu metu. Kai kurie žmonės yra gabūs taip, kad sugeba mąstyti garsiai, bet aš negaliu.

Bendraukite taip dažnai, kaip jums reikia . Bandžiau anksti ir dažnai bendrauti. Kai tik iškildavo problema, iškeldavau ją su pašnekovu ir pranešdavau jiems. Tai padėjo man nustatyti, ar einu teisinga linkme, ir teisingai, jei ne.

Programavimo interviu ieškoma tiek sunkių, tiek minkštų įgūdžių. Vieno ar kito trūkumas reiškia neabejotiną ne. Norėdami gauti daugiau informacijos, aš čia parašiau išsamesnį straipsnį apie tai, kaip tobulinti programinės įrangos inžinieriaus įgūdžius.

Nespauskite savęs kalbėti per kiekvieną kodo eilutę. Jei naudojate kai kurias ezoterines programavimo kalbos ypatybes, galite tai paaiškinti, kai baigsite rašyti visą dalyką.

Ką tai reiškia kodavimo sesijoje

Jei jau esate sukūrę tam tikrą problemos sprendimo būdą, galite tiesiog mandagiai pranešti pašnekovui, kad gilinsitės į kodo rašymą. Nejaučia, kad reikia paaiškinti kiekvieną kodo eilutę.

6. [Papildoma] Naudokite abstrakciją

Štai dar vienas papildomas patarimas, kurį pasiėmiau, kuris nepaprastai padėjo interviu metu: sudėtingiems metodams naudokite abstrakciją.

Abstrakcijos naudojimas norint paslėpti sudėtingas įgyvendinimo detales nereiškia, kad nešvarias detales stumiate po kilimu. Tai reiškia, kad jūs suprantate mažiau yra daugiau. Atminkite, kad jūs rašote kodą žmonėms suprasti. Čia parodžius gerą sprendimą, jūs tikrai uždirbsite papildomų taurių taškų su pašnekovu.

Ką tai reiškia kodavimo sesijoje

Palyginkime ir palyginkime šiuos du kodo elementus:

Mano manymu, dešinė pusė atrodo daug švaresnė ir daug lengviau suprantama. Tada galiu skirti laiko įgyvendinti getNeighborsarba isEmpty, priklausomai nuo to, ko iš manęs prašoma.

Čia svarbu tai, kad abstrakcija dabar padėjo išlaikyti mano kodą švarų, lengvai skaitomą ir lengvai suprantamą. Kas nemėgsta turėti savo pyrago ir jo valgyti?

Kodėl noriu pasidalinti savo patirtimi?

Man kažkaip stebuklingai pavyko įveikti kliūtis ir rasti kelią į svajonių darbą. Tai anaiptol nėra mano būdas pasigirti. Tai visai nėra mano tikslas.

Aš tikrai noriu padėti kitiems, tokiems kaip aš, kurie stengiasi išspręsti svajonių darbą. Aš tai išgyvenau. Suprantu sunkumus, prakaitą ir ašaras ruošiantis interviu programavimui. Manau, kad pasaulis nėra nulinės sumos žaidimas - kuo daugiau žmonių, kuriems gyvenime sekasi geriau, tuo geresnė tampa mūsų visuomenė ir tuo klestėsime visi. Tai abiem pusėms naudinga situacija.

Tikimės, kad šie patarimai gali padėti kitam darbo ieškančiam asmeniui! Sėkmės! ?

Jei jums patiko šis straipsnis, čia yra dar keli mano parašyti rekomenduojami straipsniai:

  • Kaip aš gavau „Microsoft“, „Amazon“ ir „Twitter“ pasiūlymus be Ivy lygos laipsnio
  • Kaip parašyti puikų gyvenimo aprašymą programinės įrangos inžinieriams
  • Kaip automatizavau darbo paiešką sukurdamas interneto tikrintuvą
  • Kaip sukurti sistemos dizainą

Ištekliai ir priemonės, kurias aš rekomenduoju

  • Programavimo interviu elementai: puikiai tinka sunkesnėms kodavimo problemoms spręsti
  • „Cracking The Coding Interview“: puikiai tinka padengti pagrindinius CS
  • „OneNote“: Aš tai naudoju visiems kodo fragmentams saugoti
  • „Evernote“: dėl viso kito
  • „CodeRunner“: man patinka ši „Mac“ programa! Aš tai naudojau kelis kartus norėdamas paleisti ad-hoc „Python“ scenarijus / funkcijas ir tai tiesiog veikia nuostabiai gerai. ?
  • „Jobscan“: draugas vadovauja šiai įmonei. Aš girdėjau apie tai daug įdomių dalykų, todėl turėtumėte išbandyti jų atnaujinimo atrankos įrankį.
  • Refdash: valdo daugybė buvusių „Google“ darbuotojų. Čia imituojamų interviu kokybė yra? Pašnekovai yra buvę „Google“ darbuotojai. Labai rekomenduoju juos išbandyti.
  • „CodePath“: ne pelno organizacija, padedanti žmonėms pasirengti karjerai technikos srityje. Natanas ir Timas yra puikūs žmonės, iš jų daug ko išmokau. Bendruomenė yra labai naudinga ir visi nori paduoti ranką.
  • Taškų žymekliai: atsineškite juos į savo interviu. Aš juos labai rekomenduoju!

Zhia Chong yra „Twitter“ programinės įrangos inžinierė. Jis dirba Sietle esančioje skelbimų matavimo komandoje, matuodamas skelbimų poveikį ir IG reklamuotojams.

Jį galite rasti „Twitter“ ir „LinkedIn“.