Čitalac iz ne-CS smera, posle godinu dana otvorenog konkursa dobija Offer u Alibabi ✌️
Prošle godine oko ovog doba, pozvao me jedan prijatelj da dođem u Alibabu, a ja… bez razmišljanja sam odbio.

Jer iskreno, Alibabina kultura prekomernog rada baš i nije za mene — opet sam se nenamerno hvalio. Zapravo, glavni razlog je što sam se u Luojangu već ukorenio i duboko zavoleo zemlju pod nogama — opet sam zafilozofirao.
Da sam tek diplomirao, siguran sam da bih pokušao, makar na kraju ne prošao — jer iako odlazak u Alibabu nije moj san, ako možeš da dobiješ visoku platu i unaprediš tehničko znanje, vredi pokušati.
U nastavku delim priču čitaoca (Chabei). Njegovo obrazovanje je prosek, trostruka "ne" pozadina (ne 985 / ne 211 / ne STEM), ali zahvaljujući sopstvenom trudu, posle 6 krugova intervjua, konačno je dobio Offer od Alibaba-e. Odlazak u Alibabu mu je oduvek bio san — mislim da je to san i većine mlađih kolega, pa delim njegovo iskustvo kao referencu.
Da bih ušao u Alibabu, postavio sam sebi vrlo detaljan plan učenja: Java Core, JVM, mreže, Spring izvorni kod, MySQL, Redis, MQ (red poruka), Netty — ukupno godinu dana pripreme.
Nakon intervjua u nekoliko prilično poznatih velikih firmi, sumirao sam šablone intervjua i krenuo u Alibaba avanturu. Konačno, posle 6 krugova intervjua, uspešno sam dobio offer — san je ispunjen.
Prvi tehnički krug: Alibaba P6 intervjuer
- U CV-u pominješ da si obrađivao više JVM incidenata — možeš li ispričati koje si sve OOM slučajeve susreo?
a. Objasnio sam redom scenarije OOM-a u prostoru heap-a, meta-space-u i off-heap memoriji koje sam sreo na prethodnim poslovima
b. Pratio sam pristup: kako analizirati, kako otkriti uzrok, kako rešiti i kako sprečiti u budućnosti
- U CV-u ti piše da si radio tuniranje thread pool-a — možeš li objasniti princip thread pool-a i koje si optimizacije uradio?
a. Poslovni thread pool-ovi su međusobno izolovani
b. Na osnovu broja CPU jezgara i odnosa IO vremena i vremena računanja zadataka u pool-u, postavljen je razuman broj jezgarnih niti radi boljih performansi
c. Dinamičko menjanje parametara thread pool-a, lakše za održavanje
d. Prestupna politika odbijanja je redefinisana, da se zadaci ne gube
e. Pričali smo o nekim detaljima iz izvornog koda thread pool-a
- Možeš li objasniti svoje razumevanje MySQL MVCC (Multi-Version Concurrency Control)?
Objasnio sam u čemu se razlikuju principi implementacije nivoa izolacije RR (REPEATABLE READ) i RC (READ COMMITTED)
- Kako je MySQL indeks implementiran?
a. Objasnio sam iz ugla performansi i implementacije zašto niz, povezana lista, hash, binarno drvo i BTree nisu odgovarajući
b. Detaljno objasnio implementaciju B+ drveta i kako obični indeks pronalazi podatke
c. Uputio na pojmove kao što su veličina čvora, IO, povrat na tabelu (lookup), covering index
- Objasni kako se koristi Redis?
a. Objasnio princip distribuirane brave
b. Objasnio donju implementaciju Redis String-a
c. Objasnio implementaciju Redis ZSet-a, detaljno o tome kako kombinacija skip liste i Hash-a poboljšava efikasnost
- Kako se rešava nakupljanje poruka u RocketMQ-u?
a. Na strani Producera: ako uzvodni deo šalje poruke prebrzo, može se smanjiti učestalost slanja
b. Na strani Consumera: ako nizvodni deo ne stiže da troši, može se skalirati radi povećanja brzine potrošnje
c. Na strani Brokera: da li je memorija dovoljno velika? Ako je Page Cache dovoljno velik, može se povećati performansa povlačenja poruka od strane Consumera
Kratak osvrt na prvi krug:
Kad sam odgovorio na prvo pitanje o JVM-u, intervjuer je rekao da sam taj krug prošao, pohvalivši me da sam jako duboko ušao u taj deo.
Zato mislim da su tehnike intervjua jako važne. Pre intervjua sam razmislio kako da prikažem svoje prednosti, pa u samopredstavljanju istaknem ono u čemu sam jak.
Inače, prvi krug obično proverava: JVM, JDK concurrency paket/kolekcije, Redis, MySQL, MQ, RPC.
Drugi tehnički krug: Alibaba P7 intervjuer
U drugom krugu Alibabe nisu postavljana mnogo tehničkih pitanja, više su pitani biznis scenariji i rešenja.
Posle sam u privatnoj poruci pitao intervjuera, a on je rekao da je prvi krug već sveobuhvatno proverio tehniku, pa smatra da sam tehnički OK, zato to nije glavni pravac provere.
- Objasni kako je urađena strategija rate limiting-a u projektu?
a. Distribuirani rate limiting pomoću Redis-a
b. Klizni prozor, levak i token bucket — poređenje tri algoritma rate limiting-a
c. Objasnio zašto nismo koristili druge komponente za rate limiting
- Objasni kako je urađen seckill (flash sale) projekat iz tvog CV-a?
a. CDN: keširanje statičkih podataka
b. Keš: gornji sloj primi saobraćaj
c. Rate limiting: sprečava pad aplikacije
d. Validacioni kodovi: odsecanje vrha (peak shaving)
e. MQ: asinhrono / odsecanje vrha / razdvajanje
f. Risk kontrola i idempotentnost interfejsa: protiv zloupotrebe
g. Particionisanje baze i tabele: smanjenje pritiska na bazu
- Šta ako padne jedan Redis čvor?
- Šta ako padne RocketMQ?
- Šta ako RocketMQ potroši poruku dvaput?
- Zašto RocketMQ uopšte radi duplu potrošnju? Objasni donji princip koji dovodi do duplog trošenja u RocketMQ-u.
- Da li MQ može izgubiti poruke? Kako osigurati da ne izgubi?
- Postavljeno je mnogo pitanja o biznis detaljima
- U Alibaba Bole sistemu, pisanje koda algoritma rukom
- Pitao sam intervjuera o konkretnom sadržaju posla i atmosferi u timu
Kratak osvrt na drugi krug:
I projekat i biznis se duboko ispituju, ovaj deo obavezno dobro pripremi — mnogo njih prođe prvi krug, ali mnogo njih padne na drugom.
U drugom krugu je obično stariji kolega koji će te voditi nakon što se zaposliš, pa ako ne vladaš biznisom, čak ni sa dobrom tehnikom ne moraš proći — jer na kraju ipak moraš da radiš.
Treći krug — intervju sa nadređenim: Alibaba P8 intervjuer
Intervju sa nadređenim pokriva širi spektar:
Objasni svoju ulogu u timu
Pričaj o prethodnom iskustvu
Pričaj o najjezgrenijem radu koji si radio skorije (stvari vezane za projekat iz drugog kruga sam ispričao ponovo)
Šta si dobro uradio, a šta ne tako dobro?
Šta ako se saobraćaj uveća 10 puta, 100 puta?
Kako je urađeno particionisanje baze i tabele, objasni plan migracije podataka
Objasni JVM tuniranje koje si radio
Pričaj o problemima sa performansama Redis-a
Intervjuer je predstavio biznis situaciju tima i konkretan rad koji bi me čekao
Kratak osvrt na treći krug:
I dalje je fokus na projektu, ali pitanja su dublja. Većinu gore navedenih pitanja sam pažljivo sumirao u svoje beleške i pre intervjua ih pročitao mnogo puta, kako bih na intervjuu mogao da objasnim detalje.
Četvrti krug — ukršteni intervju: Alibaba P8 intervjuer
Ukršteni intervju na nivou nadređenog, takođe P8 intervjuer.
Ni sam ne znam zašto postoji ovaj krug, pitanja su slična kao u 2. i 3. krugu, pa neću ulaziti u detalje.
Peti krug — intervju sa šefom: Alibaba P9 intervjuer
Predstavi radno iskustvo
Predstavi projekat i svoju ulogu u njemu
Objasni kako si rešio teškoće koje si susreo u projektu
Zadatak iz dizajna za stvarni zahtev: u visoko istovremenom scenariju, kada korisnik poruči (20 yuana), sistem mu nudi da za 10 yuana kupi članstvo, i pritom mu poklanja 4 kupona od po 6 yuana, koje može iskoristiti već pri ovoj porudžbini. Kako implementirati taj interfejs? Razmotrite i situacije neuspeha bilo koje strane
Na tom poslednjem pitanju iz dizajna, diskutovali smo skoro 30 minuta; uglavnom proverava sposobnost dizajniranja u visoko istovremenim scenarijima.
Intervjuer obraća pažnju na: racionalnost i potpunost dizajn rešenja — ako određeni deo otkaže, kako osigurati visoku dostupnost? Da li postoji rizik gubitka podataka? Kako se osigurava konzistencija podataka? Ako je saobraćaj veliki, kako osigurati performanse?
Kratak osvrt na peti krug:
Glavno je proveriti sposobnost dizajniranja i ukupno razumevanje projekta — ne samo da makro arhitektonski dizajn mora biti dobar, već će i detalje implementacije temeljno pregledati.
I dubina i širina tehnike, pa čak i sposobnost improvizovane analize i rešavanja problema na licu mesta — sve se proverava, a za sve je potrebno dugogodišnje akumuliranje tehnike.
Šesti krug — HR intervju
Predstavi pozadinu radnog iskustva
Predstavi sadržaj posla i ulogu koju si imao
Pričaj o tome kako su rešeni visoko istovremeni scenariji u projektu
Šta radiš kad naiđeš na probleme u vođenju projekta
Kako te kolege ocenjuju
Kratak osvrt na šesti krug:
Glavno je proveriti sposobnost razmišljanja i način mišljenja, komunikaciju, saradnju, timski rad, orijentaciju na rezultate i slično. Inače, Alibaba HR takođe postavlja tehnička pitanja.
Lična razmišljanja
- Osnove obavezno moraju biti čvrste
Bez čvrstih osnova sve se trese. Tokom ove godine pripreme, osnovno znanje mi se mnogo popravilo popunjavanjem rupica. Ali otkrio sam i dosta nedostataka, treba nastaviti da akumuliram.
- Formiraj dobru naviku i uporno uči
U ovom poslu je prevelika konkurencija, dok si mlad obavezno stvori naviku učenja. Ako u maloj firmi radiš stvari bez izazova i pri tom nemaš vremena za učenje, predlažem ti da što pre nađeš posao koji donosi rast.
- Postavi sebi cilj
Obavezno postavi cilj, ako ti je uverenje dovoljno jako, onda će te stalno voditi napred.
Inače, nakon napornog radnog dana, posle posla nastaviti da učiš — to se ne može održati bez cilja.
- Napravi sebi detaljan plan učenja
Za dva meseca progutaj jedan glavni tech stack, za godinu dana progutaš oko 6 teških zalogaja, to će biti tvoj arsenal za buduće intervjue; od osamnaest vrsta oružja ne moraš sve da savladaš do savršenstva, ali izaberi nekoliko i slobodno sa intervjuerom popričaj sat vremena — to ne bi trebalo da bude problem!
- San nije nedostižan
Oduvek sam odlazak u Alibabu smatrao svojim snom, pet godina sam išao korak po korak i nijednom nisam odustao.
Kad sam tek diplomirao, odbilo me je nebrojeno firmi, ali to me nije pokolebalo — hvala tadašnjim drugovima koji su me ohrabrivali.
Posle nekoliko godina rada, iskusniji kolege su mi se rugali da ne znam za meru, ali to me nije pokolebalo — hvala tadašnjim prijateljima sa interneta koji su mi savetovali da od sebe tražim najviši standard i koji su verovali u mene.
Tokom stalnog produbljivanja tehničkog znanja, razni nedokučivi izvorni kodovi i okviri su me izluđivali, ali ni to me nije pokolebalo — hvala svakom tehničkom autoritetu koji me je ikad uputio.
Na kraju, hvala svim prijateljima koji su mi pomogli na tom putu! Želim vam sjajnu budućnost!
Erge još par reči.
Kao što čitalac Chabei kaže, nikada ne smeš odustati od svog sna, od one upornosti u srcu — samo kada jednu stvar, jednu malu stvar dovedeš do krajnje granice, za nas većinu običnih ljudi to je najbolji način za izlazak iz mase.
Prijatelj je bio spreman da me pozove u Alibabu — a o ishodu intervjua da ne govorimo; samim tim što sam dobio takvu ponudu, sigurno je to što je moj trud u nekim aspektima prepoznat.
Druga priča koju sam već delio s vama, o mom univerzitetskom drugu koji se prijavljivao na postdiplomske — stariji čitaoci se sigurno sećaju — on se skorije priprema za intervjue, ide u Peking, radi i paralelno ide na postdiplomske.

Zapamti jednu prilično "grubu" rečenicu: pre velike moći uvek stoji glupavo uporno istrajavanje. Bilo da je to topla čorba ili ohrabrenje, svako od nas treba da postupi kao što čitalac Chabei kaže:
- Ojačaj osnove
- Uporno uči
- Odredi cilj
- Napravi plan
San će konačno postati stvarnost — samo napred!
Izvor: https://mp.weixin.qq.com/s/vnMZY9Gsy3o1FwMi4f1GlA, autor: Vodič za intervjue u velikim firmama, obradio: Chenmo Wang Er
