Pre oko dva meseca pisao sam o konkursu koji je Microsoft Development Center Serbia raspisao radi dovođenja novih ljudi u razvojni tim. Otvoreno je deset mesta za zapošljenje i deset mesta za praksu, give or take — više nego prošlih godina.

Kako sam bio zainteresovan za praksu, počeo sam da se raspitujem kod nekolicine ljudi koji su ranije konkurisali, a neki i prošli, kako izgleda ceo taj proces i kakva se znanja traže. Oni su bili od velike pomoći, te im se ovom prilikom zahvaljujem. Međutim, informacije na sâmom Internetu je nešto teže naći, iako bi ovo trebalo da je doba informacija. Čovek bi pomislio da je za ovo zaslužan neki non-disclosure agreement, ali on se sve do samog zapošljenja ni ne pojavljuje. Zbog toga sam odlučio da napišem svojevrsni rezime onoga sa čime sam se ja (do sada) susreo tokom ovog procesa, i budalasto pomognem konkurenciji. (Za one koje zanimaju samo zadaci — na dnu strane su)

Microsoft Development Center SerbiaPrvi korak, nakon objavljivanja konkursa u kome je on jasno i naveden, jeste slanje prijave. Na konkurs se prijavljujete tako što pošaljete svoj CV i prateće pismo (cover letter). Onima koji se nikada nisu nigde prijavljivali ovo će biti prvi kamen spoticanja, jer će shvatiti da ni jedno ni drugo nije lako napisati; i CV i pismo treba da budu koncizni, jasni, da pružaju dovoljno informacija, i da vas, naravno, predstavljaju u što boljem svetlu. Jednom kada se ova prepreka prevaziđe, svako sledeće konkurisanje je lakše, jer već imate maltene sve spremno.

Ukoliko posmatramo ovogodišnju satnicu, sledeći korak je čekanje mesec dana. Ne poznajem ni jednu osobu koja se prijavila, a nije pozvana, ali pretpostavljam da i njima stiže e-mail u isto vreme kao i kandidatima pozvanim na test. Naime, oko tri nedelje pre testa MDCS šalje e-mail sa “čestitkama” i pozivom da dođete na testiranje tog i tog datuma. Ove godine je test održan u Matematičkoj gimnaziji u Beogradu, a ne u prostorijama u MDCS u Makedonskoj. Zašto? Možda zato što mu je prisustvovalo oko 150 ljudi.

Congratulations, we would like to invite you to the next step of the hiring process, which is a written test.

The test will take place at the Matematička Gimnazija on the Saturday May 7th, starting at 10:00 am. Microsoft staff will be at the site at 9:30 am.

The test covers basic Computer Science; we will ask you to write code for some problems and solve math problems. It is a paper and pencil test administered in English. It is 4 hours long.

Kao što je i najavljeno, test je počeo oko 10 ujutru (sa malim zakašnjenjem, naravno). Pre testa su svima pročitana uputstva i pravila, i tokom ovog govora imali smo priliku da dobro osmotrimo konkurenciju. Koliko sam ja mogao da primetim, većina ljudi je ipak bila nešto starija, pa pretpostavljam da su oni došli radi zaposlenja, a ne prakse.

А sada ono što ljude najviše interesuje – test.

Test se radi na papiru, na engleskom, bez ikakvih dodatnih pomagala (npr. digitrona) i traje četiri sata. Tokom tog perioda, srećom, dozvoljeni su odlasci u WC, kao i odlazak po hranu i piće koje je MDCS obezbedio, tako da je atmosfera u krajnjem slučaju veoma prijatna i opuštena. Ja obično nemam problema sa tremom, ali čini mi se da ni drugi ljudi nisu imali, možda baš zbog ovakve prijateljske atmosfere. U svakom trenutku je moguće postaviti neko pitanje vezano za zadatke, i sve će vam biti pojašnjeno (ja sam ovo možda i previše puta iskoristio, sigurno su me zapamtili). O prepisivanju ne treba ni pričati – em je teško izvesti ga, em nikome nije u interesu.

Što se tiče samih zadataka… Nisu teški. Možda je nešto teže sve postići za 4 sata, uvek se potkradu neke greške, i svakako je veoma teško imati maksimum poena — do sada to nikome nije pošlo za rukom — ali iz ovog ugla, posle testa, jasno je da nisu teški. Svako ko sebe smatra materijalom za Microsoft bi morao sasvim solidno da uradi test. Rečeno je da je, okvirno, potrebno preko 50% da bi neko bio pozvan na intervju, što je, složićete se, sasvim pristojna cifra koju nije teško dostići.

Od sedam zadataka koliko je bilo na testu, prvih pet je bilo iz programiranja, dok su poslednja dva bila iz matematike. Trik pitanja, kakva se mogu očekivati na intervjuu, nije bilo, ali su zadaci ipak zahtevali malo više razmišljenja i obraćanja pažnje na detalje. Sadržaj zadataka je bio sledeći:

  1. Dat je skup rimskih cifara (I, V, X, L, C, D, M). Potrebno je formirati rimske brojeve od svih ovih cifara tako da zbih brojeva bude minimalan. Za maksimalan broj bodova traži se linearna složenost. Jednostavan takmičarski zadatak.
  2. Dato je binarno stablo. Potrebno je obeležiti čvorove čiji je broj elemenata u njihovom podstablu (računajući i koren) manji od dubine tog čvora. Traži se linearna složenost. Ovaj zadatak čak ni nije takmičarski, više je običan školski primer.
  3. Na raspolaganju vam je N kutija i dozvoljeno je M bacanja. Kutije se bacaju sa nekog od spratova zgrade beskonačne visine. Ukoliko se kutija baci sa nekog sprata iznad sprata X, ona će se razbiti. Potrebno je sa najviše M bacanja kutija odrediti najviši sprat (tj. najveću vrednost koju algoritam uspe da pronađe) sa kojeg je moguće baciti kutiju a da se ne razbije. Malo konfuzan zadatak, ja sam ga loše protumačio.
  4. Dat je pravilno formiran logički izraz koji se sastoji od karaktera T, F, &, |, !, (, ) i razmaka. Potrebno je odrediti njegovu vrednost u linearnom vremenu. Pritom je & (AND) većeg prioriteta od | (OR).
  5. Dat je neki tekst i željeni broj linija teksta. Potrebno je odrediti minimalnu širinu ekrana (u karakterima) takvu da tekst može da stane u željeni (ili manji) broj linija, bez prelamanja reči. Traži se nlogn složenost.
  6. Zadatak iz verovatnoće (obična i uslovna). Jednostavan, ali su jednačine nešto duže.
  7. Zadatak iz matematičke analize. Data je jedna funkcija; potrebno je odrediti funkcije koje (u kombinaciji sa početnom funkcijom) ispunjavaju određene uslove.

Dakle, neko ko barata svim ovim oblastima ne bi imao nimalo problema. Međutim, koliko sam ja video, nije bilo previše takvih među ovogodišnjim kandidatima — svi su se nešto žalili…

Rezultati se očekuju u toku nedelje, kada će se početi i sa ozloglašenim intervjuima. Oni koji su euforični zbog prolaska na intervju neretko bivaju izrešetani od strane zaposlenih uz pomoć najčudnijih, ali i najzanimljivijih pitanja. Tako sam ja barem čuo.

Neka im je sa srećom.


Dve nedelje nakon testa pozvan sam na intervju. Moje utiske možete pročitati ovde.