Evo kako je protekao moj razgovor za posao za poziciju Software Engineer (softver inženjer). Navešću sve tehnikalije kao i sam moj utisak, pa ako nekome zatreba može videti kako teče sam proces, ako ništa a ono bar zbog ubijanja treme pred ovakav razgovor. Ja sam Nikola Vlahović.

Razgovor sa HR-om

Razgovor sa HR-om u kancelariji, pričam o meni generalno…šta sam završavao od obrazovanja, govori mi malo o samoj kompaniji i beneficijama. Traje 15-20 minuta. Nije bilo pitanja „Gde vidite sebe za 10 godina“, „Gde vidite sebe u našem timu“ niti sam imao nekakve testove inteligencije ili sa proizvodnim trakama. Razgovor je protekao opušteno, HR je započeo konverzaciju a ja sam nastavio, ništa sa tenzijama, nema ono „ona postavi pitanje a ja ćutim i čekam naredno“ nego je više bilo, kao da smo se videli na kafi.

Razgovor sa tehničkim licima

HR odlazi, dolaze dva momka u kancelariju sa laptopovima, isto na početku se malo upoznajemo i onda prolazimo kroz spisak uobičajenih problema kroz koji prolaze koji imaju na laptopovima i propituju me šta konkretno znam.

Ne mogu tačno da se setim svega što smo pričali ali smo kroz baš mnogo stvari prošli i imali baš ono što bi se reklo diskusiju oko problema, nije čisto ono „znaš ne znaš“ već i oni su me ponekad malo usmeravali ili pokušali da iskopaju što više informacija iz mene ukoliko bi uvideli da bih mogao da dođem do rešenja.

Kontam da su hteli da vide moj način razmišljanja a ne nužno je l’ znam nešto ili ne, jer sam značajan deo stvari improvizovao dok sam razgovarao sa njima. Napominjem da postoji šansa da ovde što napišem pitanja i ukratko ono što sam odgovorio ne predstavlja potpunu sliku, jer je svako pitanje imalo značajan broj podpitanja a iz teksta se ne može ni osetiti atmosfera prilikom ispitivanja koja je bila i više nego opuštena.

Pitali su me malo o API-jima. Šta je REST, kako se on razlikuje od ostalih metoda nalik njemu. Rekao sam im da REST koristi HTTP protokol pomoću kojeg mu stižu zahtevi tipa GET, PUT, POST, DELETE itd. i da on na osnovu tih zahteva obavlja neke operacije backend i vraća odgovarajući rezultat korisniku. Priča je išla malo šire ali generalno tako nešto sam odgovorio i improvizovao dalje.

Pitali su me malo o dictionary-u, ne mogu da se setim konkretno detalja, mislim da je bilo nešto vezano za model objekta ili tako nešto pošto su mi postavili to podpitanje. Ovde sam odgovorio nešto tipa „mislim da ovo nije 100% tačan odgovor, ali po meni dictionary najviše liče na asocijativne nizove, gde indeksi imaju neki konkretan naziv u obliku stringova pomoću kojima pristupamo njihovim vrednostima“.

Pitali su me o indeksima kod relacionih baza podataka. I ovde sam rekao nešto tipa ja mislim da su indeksi nalik indeksima u knjigama, gde imamo neki termin i pored njegovu lokaciju gde se on nalazi u knjizi, tj. da su indeksi virtuelne tabele koje omogućavaju brzu pretragu tabela unutar baze, ali da im je jedna od potencijalnih mana što mogu da zauzmu mnogo velik memorijski prostor.

Pitali su me nešto o algoritmima ali ne mogu da se setim konkretno šta, mislim da se nekako nadovezuje na prethodna pitanja i predstavlja uvod u sledeća te sam i ovde podosta improvizovao tipa rekao sam im za onaj algoritam stabla što smo radili iz C-a i još nešto.

Ovde su mi rekli da zaboravim na relacionu bazu podataka i da radim direktno sa memorijom – kako bih u svom programu omogućio unos tj. skladištenje npr. korisnika (njegov ID, ime i starost) i isto tako prikaz svih korisnika koji su stariji od 30 godina (dakle, obratiti pažnju da se ovde ne koriste SQL upiti)? Mislim da je ovde bila fora da se kao napravi neka klasa kao objekat ili štaveć sa getterima i setterima, ali opet nisam 100% siguran, mislim da ima još neka začkoljica ali ja sam tako uradio taj deo (dali su mi papir da ispišem kao pseudo-kod). Uglavnom pitali su me kako bih ja izveo drugi deo i ja sam im rekao da bih prolazio kroz sve korisnike i proveravao da li je korisnik.age veći od 30, što i nije baš optimalan način. Dža-bu itd. mislim da se ovde priča svela da su pokušali da me provere koliko poznajem ili da li mogu da naučim algoritme i heš mape.

Kako bih smestio ceo niz integera od -32768 do 32767 u niz koji može da sadrži 100 članova? Ovde sam odgovorio heširanjem, gde veliki broj informacija kompresujemo u manju memoriju pomoću algoritama ili tako neki fazon. Dža-bu opet se priča svela na algoritme i heš mape.

Dalje, imam zadatak da napravim jednu biblioteku tj. skup klasa koju bi više kompanija koristilo (kao neki API ili štaveć) za karte. Pitali su me koje bi klase napravio i šta bih stavio u njih. Ovde sam rekao tipa napravio bih klasu karta koja bi imala članove znak, numerička vrednost, naziv; klasu igre u kojima bi imao naziv igre, broj poena do pobede, broj špilova itd.; klasu špil koja bi imala metode npr. promešaj špil, povuci kartu iz špila (kada korisnik povuče kartu iz špila, ukupan broj dostupnih karata iz špila se smanjuje za jedan npr.), sortiraj špil itd. Ovaj deo mislim da sam baš dobro odradio.

Vratili su se na API-je i pitali o asinhronim pozivima, šta API-iji vraćaju. Ovde je odgovor bio callback i pitali su me kako sam im pristupao i da li bih mogao da im pokažem i onda sam na papiru napisao kao polu-pseudo kod kako sam koristio AJAX sa jQuery-jem, koji u sebi ima stvari url, method, data (i ovde bih ubacivao pomoću jQuery-a npr. $(„#ID“).val()), i onda su hteli da vide kako bih znao da je poziv bio uspešan i tu sam ispisao onaj success deo koji u sebi ima result objekat. Ovde sam poprilično siguran da su bili super zadovoljni sa mnom.

Kao poslednje pitanje, potrebno je da zamislim da imam šahovsku tablu kojoj su donji levo i gornji desni ćošak zablokirani/zasenčeni, i da pored toga imam 31 dominu gde jedna domina pokriva dva polja. Da li je moguće u potpunosti zaseniti šahovsku tablu?

Netehnički deo razgovora

Posle ovoga sam pričao malo više sa momcima, kako funkcionišu, koliki su timovi, šta generalno koriste od programskih alata i frejmvorka, agile rad sa sprintovima i sl.

Razgovor sa menadžmentom

Nakon toga oni odlaze i vraća se HR i sa njom pričam još malo i rekla mi je da još jedan vođa tima i zamenik CEO-a žele da me upoznaju tako da sam ostao malo duže. Sa njima je priča bila na isti fazon kao sa HR-om, više o sebi onako opuštenija atmosfera, šta sam učio, moji hobiji, i tako malo ne nužno poslovne teme, sprdnja…tipa pitali su me jel postoji neki deo koji bih posebno hteo da radim gde sam rekao ono da mogu sve da radim, nisam tip koji se ograničava na određen deo, i isto tako kada bih mogao da počnem da radim i sl.

Moj zaključak

Na osnovu intervjua na kojima sam bio do sad da 99.99% pitaju za dictionary i za hash mape. Ovo isto se sećam da su me pitali i kad sam kod drugih kompanija kada sam odlazio na intervjue. Isto tako verujem da su OGROMAN doprinos za koji me ne bi čudilo da je kompaniji bio važan koliko i moje znanje bile moje meke veštine tj. soft skills. Ni u jednom trenutku nisam bio napet, nervozan ili bilo šta u tom fazonu, bio sam kao što sa vama pričam sad, tako da ako mislite da ste previše nesigurni u sebe ne bi bilo loše i da na tome poradite, jer na kraju krajeva i njima je bitno kakvi ste kao osoba jer ćete provoditi po cele dane sa njima.

Pored toga, rekli su mi da jedna od stvari koja me je izdvojila iz mase je ta što sam uzeo i napisao lepo e-mail gde sam malo predstavio sebe i šta znam (na tečnom engleskom) sa okačenim portfoliom, jer ogroman broj kandidata uzme i samo okači svoj CV i pošalje mail. Inače, ovo je bio sam oglas. a moj utisak što se same firme tiče je da je ovo bio jedan od težih intervjua na kojima sam bio i da zaista imaju izuzetno jak i stručan tim i skroz ozbiljno prilaze poslu.

Ukoliko želite i vi da podelite sa zajednicom svoja iskustva, zapažanja, razmišljanja, uputstva ili bilo šta vezano za IT - dobrodošli ste na Kompjuteraš IT blogu. Više na ovom linku