Ką turi žinoti kiekvienas programuotojas darbo pokalbio metu

Prieš keletą metų, atėjus pirmai linkedin reqruiterių bangai, su pora kolegų turėjom gan keistą hobį – kolekcionavom darbo pokalbius 🙂 Naujo darbo kaip ir neieškojom, bet buvo atsiradęs azartas sužinot dar daugiau naujų klausimų, kurie pasitaiko darbo pokalbiuose.
Privalumas darbo pokalbių, kai iš tikrųjų darbo neieškai:
- Susipažįsti su naujais įdomiais žmonėmis
- Lavini iškalbą stresinėje situacijoje – daug laisviau kalbi, kai eini pasikalbėti su žmonėmis tik šiaip, netrokšdamas konkrečios pozicijos
- Susirenki krūvą įdomių klausimų apie darbą, programavimą ir t.t., apie kuriuos šiaip nepagalvoji
- Gali gauti sau ir dabartinei įmonei naudingos informacijos aktualiais klausimais, pvz:
- O kaip jums sekasi naudoti agile?
- Kokie ? technologijos pliusai ir minusai, ar lengva ją buvo pradėt naudoti?
- Kaip sprendžiat problemas komandos lygyje?
- Jei pokalbio metu pastebi, jog darbo skelbimas buvo perdėtai prisaldintas tokiais išsireiškimas „plačios galimybės mokytis“, „motyvacinė sistema sistema“ ir .t., galima tiesiog paklausti (čia iš realaus pokalbio) „kokios tos plačios galimybės mokytis paminėtos skelbime? Siunčiat į kažkokius kursus?“ Šitas klausimas tikrai buvo netikėtas, interviu dalyvavo du žmonės, po žvalgymosi vienas į kitą, kažkuris sugebėjo išspausti – „na čia tas ir tas labai daug skaito ir domisi, jo galima apie viską klausti, nereikia nei jokių kursų“. Na tiesą pasakius aš pats irgi moku skaityti 🙂
Trūkumai:
- Kartais tokių pokalbių metu žolė kitur pasirodo žalesnė ir įneša šiokių tokių dvejonių dėl esamo darbo 🙂 Bet dažniausiai tik trumpam, kol visa gauta informacija susivirškina
1 dalis: programavimas (c#)
- Kuo skiriasi klasė nuo objekto?
- Kuo skiriasi static metodas nuo ne static?
- Ar gali static klasė turėti konstruktorių?
- Kuo skiriasi abstract tipo klasė nuo interface?
- Kam naudojama sealed klasė?
- Kas yra konstruktorius?
- Kuo skiriasi gija(thread) tuo proceso?
- Kam reikalingas virtual prierašas prie metodo?
- Kuo skirasi value ir reference tipai?
- Kuo skiriasi ref ir out žymės prie parametro metoduose?
- WPF: Kam reikalingas INotifyPropertyChanged interface?
- Kas yra IoC?
- Kuo skiriasi konstanta (const) nuo readonly?
- Paveldimumo, virtual, new suvokimas:
2 dalis: loginiai klausimai
Jei su techniniais klausimais susidoroti paprasta (žinai arba nežinai, jei nežinai – tai ir sakai jog nežinai, kad neprišnekėtum nesąmonių), tai su loginiais klausimais yra sudėtingiau – kartais paprastą klausimą sumaišius su truputėliu įtampos gali kilti panika, o tada nieko gero nelauk (irgi patirtis iš senų laikų, kai buvau jaunas ir kvailas junior’as). Patarimas – stenkitės nusiraminti ir galvokite apie sprendimą garsiai. Loginiais klausimai dažniausiai yra tam, kad stebėt kaip žmogus mąsto, todėl geriau netylėt, dėstyt mintis ir papuolę į aklagatvį, tikėtina kad gausite pagalbos. Pats šitą vietą dar laikau ganėtinai silpna, teks tuo užsiimti 🙂
- Koks laipsnis tarp valandinės ir minutinės rodyklės, kai laikrodis rodo 12:30?
- Turim 5 poras juodų ir 5 poras baltų kojinių. Kiek max traukimų reikės, kad užtikrintai turėtume vienos spalvos kojines?
- Turim 5 poras juodų ir 5 poras baltų pirštuotų pirštinių. Kiek max traukimų reikės, kad užtikrintai turėtume vienos spalvos teisingą porą pirštinių?
- Turim penkiaženklį skaičių. Kažkurį vieną skaitmenį išbraukiam ir tuos du skaičius (penkiaženklį ir gautą naują keturženklį) sudedam. Rezultate gaunamas skaičius 52713. Koks buvo pradinis skaičius?
- Turite 8 monetas, kurių svoris vienodas, išskyrus vieną, kuri yra sunkesnė už kitas. Jūs taip pat turite senas pusiausvyrines svarstykles, kurios leidžia palyginti dvi krūveles monetų. Kiek mažiausiai svėrimų reikia, norit rasti sunkesnę monetą?
3 dalis: programavimas
Mokeisi KTU? Tuomet turbūt atsimeni programavimą pas Blonskį ant popieriaus 🙂 Kartais 100 klausimų atstoja vienas geras uždavinys. Jį gali tekti spręsti:
- Ant popieriaus lapo, kur nėra daug vietos, tad undo galimybės gali ir nebūti
- Ant baltos lentos
- Jei nori darbintis pvz amazon’e – www.hackerrank.com puslapyje
Beje, www.hackerrank.com puslapis buvo vienas iš šauniausių atradimų, ir jei patinka spręsti programavimo uždavinius – ten gali praleisti tikrai daug laiko.
4 dalis: programavimo teorija
Per dažną pokalbį to neklaus, bet verta žinoti vardan bendro išsilavinimo, arba jau pradėti rimčiau šitą mokytis, jei ateityje norėtumėte dirbti pvz google, amazon ar facebook
- Kokius žinote rikiavimo algoritmus, kokie jų sudėtingumai? Labai gražiai animuota ir su pavyzdžiais: https://www.toptal.com/developers/sorting-algorithms/
- Kaip skaičiuojamas algoritmo laiko ir atminties sudėtingumas? Glausta informacija žaliems https://www.interviewcake.com/article/java/big-o-notation-time-and-space-complexity Verta pasižiūrėti kokie rikiavimo algoritmai yra efektyviausi
- Kokį rūšiavimą naudoja linq?
5 dalis: patirtis
- Su kokia sudėtingiausia užduotimi teko susidurti?
- Kokių teko padaryt klaidų programuojant (nepudrinam kad dirbam idealiai, manau pas kiekvieną yra griaučių po lova, kurių nesinori prisiminti)? Čia reikėtų nepamiršti papasakoti ir kaip tą užduotį darytum dabar
- Su kokiais patternais teko susidurti programuojant?
- Kaip įsivaizduoji save po 5 metų(best klausimas ever)? Visi kažką planuojam, kad ir kokia vizija dabar būtų nereali, apie ją verta papasakoti
- Ką darytum, jei žinotum jog tau tikrai pasiseks? Manau klausimas iš tikrųjų galintis išmušti iš vėžių labiau nei prieš tai paminėtas, tad geriau pagalvoti iš anksto 🙂 O čia straipsnis linkedin’e, kur tą klausimą ir radau https://www.linkedin.com/pulse/interviu-klausimas-sprogdinantis-k%C5%ABrybi%C5%A1kumo-burbul%C4%85-simanauskaite
Pabaigai
Patiko klausimai? Tuomet pasidarykit kavos ar arbatos ir geros kelionės į google su šiomis dviem paieškom:
Nuorodos, kurias rekomenduoju:
https://www.toptal.com/dot-net/interview-questions
https://github.com/andreis/interview#algorithms
https://courses.csail.mit.edu/iap/interview/materials.php
Parašykite komentarą