Pretraživanje u širinu/dubinu, binarno pretraživanje, mergesort, quicksort
Vremenske i prostorne složenosti
Koncepti
Veliko O notacija, rekurzija, dinamičko programiranje
Tehnički intervju
Tipovi zadataka
Algoritamski zadaci
Obrni vezanu listu
Objektno orijentiran dizajn
Dizajniraj lift
Razmotriti objekte, veze, interakcije i algoritme
Rijetko se pojavljuju u intervjuima za stažiranje
Dizajn skalabilnih sustava
Dizajniraj Dropbox
Problemi s kojima se susreo inženjer koji intervjuira
Identificirati zašto trivijalno rješenje nije dobro
Jako rijetko se pojavljuju u intervjuima za stažiranje
Tehnički intervju
Algoritamski zadaci - strategije
Poklapanje uzorka
Podsjeća li me ovo na već riješen zadatak?
Pojednostavni pa generaliziraj
Što ako umjesto stringova imam integere?
Indukcija od trivijalnih ili rubnih slučajeva
Znam li riješiti zadatak za jedan element? A za dva?
Analiza struktura podataka i algoritama
Otvaram bilježnicu s listom najčešće korištenih struktura podataka i algoritama te za svaku razmišljam kako je mogu primijeniti na zadatak pred sobom
[Teže] Analiza moguće vremenske i memorijske složenosti rješenja
uz pretpostavku složenosti znam koje alate smijem koristiti kao građevne blokove rješenja, npr. binary search za O(N log N)
Tehnički intervju
Poklapanje uzorka
Obrni redoslijed riječi u rečenici
Input: obrni redoslijed rijeci u recenici
Output: recenici u rijeci redoslijed obrni
Pojednostavni pa generaliziraj
Ukloni duplikate znakova u stringu bez dodatne memorije
Indukcija od trivijalnih ili rubnih slučajeva
Generiraj sve podskupove prvih N prirodnih brojeva
Input: 2
Output: {}, {1}, {2}, {1, 2}
Tehnički intervju
Pristup tehničkom intervjuu
Obavezno tražite video intervju zbog daleko manje komunikacijske barijere (Hangouts ili Skype)
Potpuno definirajte svaki zadatak postavljanjem pitanja
Zadaci su često namjerno dvosmisleni
Što su dozvoljeni tipovi ulaznih podataka?
Što su dozvoljeni intervali vrijednosti ulaznih podataka?
Počnite razmišljati od brute force rješenja
Obavezno razmišljajte na glas
Pokažite kako razmišljate
Usmjerit će vas ako vide da ste blizu točnoga rješenja
Kritički razmišljajte
Hoće li algoritam raditi za rubne slučajeve? Koja je njegova složenost?
Testirajte kod
Prije nego što kažete da ste gotovi, odvrtite kod za trivijalne i rubne primjere ulaznih podataka
Ne radi? Pažljivim čitanjem koda pronađite i popravite bug
Vaša pitanja
Zašto imate priliku postavljati pitanja?
Intervju je dvosmjeran proces
Ako pratite firmu na Facebook-u, Twitter-u i ostalim socijalnim mrežama, lako ćete se sjetiti par pitanja o proizvodima ili tehnologiji za inženjera koji vas je intervjuirao
Ovime pokazujete interes za firmu
Predlažem pitanja kojima ćete saznati kako će izgledati vaše iskustvo na stažiranju
Hoću li dobiti mentora i kako će taj odnos funkcionirati?
Hoću li dobiti vlastiti projekt koji bih trebao dovršiti na stažiranju ili ću raditi na velikom projektu s ostatkom ekipe?