Breaking It Down: Kako pristupiti bilo kojem problemu s tehničkim intervjuom

Siguran recept za pronalazak kako bilo koji problem učiniti upravljivijim.

1. Kad dobijete pitanje (prije nego što napišete jedan redak koda)

Najlakši način da provjerite jeste li razumjeli pitanje je proći kroz testne slučajeve.

Što trebate razjasniti s vašim sugovornikom:
Koliki je očekivani ulaz? Koliki je očekivani rezultat?
Bilo kakve pretpostavke o određenim testnim slučajevima

Nakon prolaska kroz test slučajeve, zabilježite sve varijable koje biste trebali pratiti i koje bi strukture podataka imale najviše smisla za ovaj problem.

Uvijek razmislite o načinima na koje možete riješiti problem. Postoji li manji, lakši podproblem koji možete riješiti? A ako je tako, kako bi to rješenje izgledalo?

2. Pisanje koda (i što učiniti ako vas zaglavi)

Nakon što smislite svoj algoritam i objasnite svoju logiku, sljedeća stvar koju trebate učiniti je prevesti svoju ideju u kod.

U ovom je trenutku gruba sila potpuno ok. Stvaranje radnog rješenja (čak i ako njegovo vrijeme izvođenja i iskorištavanje prostora nije savršeno) daleko je bolje od zaglavljanja u pokušaju preuranjene optimizacije koda.

Dok pišete svoj kôd, zapamtite:

  1. Jasno izgovarajte o kom dijelu koda trenutno radite i zašto ga dodajete u svoje rješenje
  2. Pokušajte upotrijebiti očita imena varijabli i učinite da vaš kôd bude čitljiv
  3. Razgovarajte sa svojim sugovornikom kroz vaš misaoni postupak i koje su prednosti i nedostaci vašeg rješenja
  4. Učinite kôd modularnim kad je to moguće (pomoćne funkcije su vam prijatelji!)

O rukovanju s tom nespretnom tišinom ako se zaglaviš ili ti treba vremena za razmišljanje ...

To se događa svima nama i potpuno je normalno na to naići tijekom intervjua. Prema mom iskustvu, za skoro sve moje tehničke razgovore dolazi trenutak kada trebam razmišljati o sebi i nisam u mogućnosti nastaviti razgovor s anketerom. Kad se to dogodi, obično kažem nešto u skladu sa:

Treba mi sekunda da razmislim o svom rješenju i vidim ima li smisla
Nisam sasvim siguran je li to pravi pristup, dopustite da dva puta provjerim svoj rad
Čini se da možda (umetnite dio predloženog rješenja) zapravo ne funkcionira (ubacite neki rubni slučaj) ... Razmišljam o tome kako riješiti to

Intervjuer je obično na vašoj strani i želi vidjeti da li ste uspjeli - samo se sjetite da li vam on daje nagovještaj, nikad ga nemojte zanemariti!

3. Pregled vašeg rješenja i dodavanje optimizacija

Kada završite s pisanjem koda, pronađite ga s testnim slučajem kako biste bili sigurni da se vaš program ponaša onako kako očekujete.

U ovom je trenutku dobro razmotriti:

  1. Mogući rubni slučajevi koje ste možda propustili
  2. Svaka pogreška isključena (posebno kod indeksiranja ili upotrebe petlje)
  3. Postoji li ponavljanje u vašem kodu koje možete očistiti?

Pitanja koja pokušavate optimizirati:

  1. Koja je složenost trenutnog vremena i prostora?
  2. Postoji li prostor za poboljšanje ako ste koristili drugačiju strukturu podataka ili malo izmijenili svoj pristup?

Kada pregledavate kôd, imajte na umu da je posve moguće da ste napravili nenamjernu grešku - pokušajte pratiti svoj program kao da je to rad nekoga koga prvi put vidite!

Završavajući sve

Intervju je vještina, a kao i svaka druga vještina može se poboljšati praksom! Raditi kroz tehničke probleme, biti udoban sa vašim odabranim jezikom i strukturama podataka može vam biti posao koji prethodno radite kako biste povećali svoje šanse za jake performanse tijekom intervjua.

Popis pitanja, struktura podataka i resursa za pregled možete vidjeti više ovdje: Četvrti plan za zabijanje sljedećeg tehničkog intervjua

Imajte na umu da je svaki razgovor iskustvo učenja i bez obzira na ishod stekli ste vrijedan uvid koji niste imali prije. Ostati pozitivan i učiti iz povratnih informacija izvrstan je način za kontinuirano poboljšavanje! Sretno!

Ako vam je ovaj vodič uspio na bilo koji način pomoći, pošaljite mi pljesak ili dva :), to mi zaista puno znači - hvala i sretno na putu!