Mlađi kolega sa običnog univerziteta ostvaruje offer-e za campus regrutaciju u Alibabi, ByteDance-u i Bilibili-ju, uz intenzivnu sumu četvorogodišnjeg iskustva ✌️
Danas delim priču o odrastanju i sumu iskustava jednog studenta sa običnog univerziteta koji je ušao u veliku tehničku kompaniju (studirao je na Univerzitetu nauke i tehnologije Henan, ovde u Luoyangu, samo dve stanice od mesta gde Erge živi).
Kada pišem ovaj članak, mlađi kolega je upravo potpisao ugovor o radu i sutra zvanično kreće da radi u Alibabi. Oseća iščekivanje i zadovoljstvo, ali i malo olakšanja — olakšanje što ove četiri godine nije uzalud potrošio, i olakšanje što je posle toliko prepreka konačno stigao do ishoda koji mu odgovara (ili bolje rečeno, do nove polazne tačke, haha~).
Prvo, predgovor
Zbog pandemije, kako prijemni ispit za master, tako i pritisak pri pronalasku posla ove godine su svakako najteži dosad (naravno, naredne generacije nesrećnih mlađih kolega verovatno neće proći ništa bolje od nas QAQ). Kada vidim statistiku fakulteta o stopi zaposlenosti i stopi upisa na master ove godine, zaista je zastrašujuće.
Stvarnost je surova, a psihološki pad nakon diplomiranja može većinu lepih očekivanja studenata o budućnosti vratiti iz mašte natrag u stvarnost.
Ali ne možemo zbog straha od stvarnosti izmišljati načine da bežimo, ne želeći ni da prihvatimo ni da se suočimo sa trenutnim stanjem. Umesto da svaki dan živimo u zbunjenosti i anksioznosti prema budućnosti, bolje je iskoristiti vreme koje je pred nama da promenimo sebe, da se obogatimo, da postanemo jači, kako bismo u budućoj trci života mogli otrčati što dalje.
Ovde bih zaista želeo da kažem jednu rečenicu mlađim kolegama koji još uvek imaju obilno studentsko vreme i još nisu diplomirali: proširite svoje vidike, naučite da prilagodite stav, unapred se pripremite za neizvesnost budućnosti, i u ograničenom studentskom periodu koliko god je moguće proširite i obogatite svoj rezervat znanja i stručnih veština — nemojte čekati pred samo diplomiranje, kada ulazite u društvo, da bespomoćno zapinjete na sve strane u traženju posla!

Drugo, problemi sa kojima ćete se suočiti tokom studija
Tokom četiri godine studija suočićemo se sa raznim neizvesnostima, i te neizvesnosti mogu dovesti do toga da pri planiranju i razradi svojih ciljeva za vreme studija zapadnemo u oklevanje i zbunjenost.
Na primer, verovatno ste se i vi kao i ja mučili sa sledećim pitanjima:
- Da li kursevi vezani za računarsku struku tokom četiri godine studija zaista imaju vrednost i težinu, i da li kompanije pri zapošljavanju visoko cene te kurseve?
- Potrošio sam pola studentskog vremena, da li je sada još uvek nekasno da počnem da se trudim?
- Želim ozbiljno da učim i dam sve od sebe, ali odakle da počnem? Kako da isplaniram i razradim svoju putanju i pravac učenja?
- Kako da provedem četiri godine studija? Kako da učim kako bih dobio mesto u kompaniji sa dobrom platom ili upisao idealni master program?
- Da li da prvo pripremam prijemni za master ili da prvo tražim posao?
- Da li je prosečna ocena na studijama važna? Da li da učestvujem na nekim autoritativnim takmičenjima kako bih ulepšao CV?
- Da li tokom studija treba ići na praksu? Kada da počnem da tražim praksu? Kako da tražim praksu? Koje uslove treba da ispunim za odlazak na praksu?
- Naučio sam mnogo toga, ali zaboravim čim naučim, ne umem fleksibilno da primenim ono što sam naučio, osećam da jaz između mene i drugih sve više raste — šta da radim?
- Da li je sada lako naći posao u računarstvu? Da li internet industrija ide nizbrdo? Kolika je plata pri zapošljavanju? Šta ću moći da radim u kompaniji sa ovim pravcem struke?
- Koliko stepen i univerzitet utiču na campus regrutaciju? Šta ako sam na običnom državnom univerzitetu sa manjkavošću u stepenu, pa nije lako ući u vodeće velike internet kompanije?
- Algoritamska, razvojna, podatkovna mesta itd. — koji pravac se isplati izabrati, i koja programerska jezika trenutno imaju prednost pri zapošljavanju?
- Nemam iskustva sa projektima, projekti iz video kurseva su previše uobičajeni, projekte otvorenog koda ne razumem, a sam ne umem da ih pišem — šta da radim?
- Koliki udeo imaju algoritamski zadaci u campus intervjuima? Vredi li učestvovati na ACM takmičenju ako posle 2 godine treninga nisam osvojio medalju?
- Da li campus i stručni intervjui više cene projekte, ili više računarske osnove i algoritme?
- Da li odlazak u outsourcing kompaniju nakon diplomiranja mnogo utiče na budućnost? Da li su outsourcing kompanije zaista tako plitke kako se kaže na internetu?
- Kako da pre kraja studija uspešno nađem devojku?
- …
Pitanja ove vrste ste se verovatno svi mučili tokom studija, zar ne?
Dakle, kroz ovaj članak delim sa vama iskustva i misli kroz koja sam prošao tokom četiri godine, kao referencu, u nadi da će vam pomoći da tokom studija imate jasne ciljeve i izbegnete suvišne zaobilaznice. Gore navedena pitanja ću odgovarati jedno po jedno u nastavku — nadam se da možete odvojiti 20 minuta da pročitate ovaj članak, i ako vam pomogne, prosledite ga nekome kome je potreban, hvala!

Treće, šta su donele ubrzane četiri godine studija?
Moje četiri godine studija su zapravo prošle “prilično ispunjeno”; rekao bih četiri, ali pre bih rekao dve.
Zapravo, naša generacija upisana 2018. je prilično nesrećna — od četiri godine studija, pandemija je oduzela tri. Prva godina je prošla lepo, na kampusu; da bih lakše izlazio, čak sam uzeo godišnju turističku kartu za Luoyang. A onda? U drugoj godini, zbog pandemije je početak semestra odložen, i kod kuće sam proveo najduže zimske praznike — prošlo je čak 8 meseci pre nego što je semestar počeo, i kada je konačno počeo, bio sam već na pragu treće godine, pa turistička karta nikada nije ni iskorišćena!
Baš tokom tih osam meseci kod kuće zbog pandemije, shvatio sam da, ako se iskoristi efikasnost učenja preko online kurseva, mogu za nekoliko meseci samostalno savladati kurseve prve i druge godine. Tada sam po prvi put osetio onaj “mali osećaj postignuća” koji donosi učenje tehnološkog steka!
Tek posle toga sam poverovao da jednogodišnji JavaSE kurs na univerzitetu zaista može da se završi za dve nedelje preko besplatnih kurseva na Bilibili-ju! Okviri, middleware-i i slično — preko video snimaka se mogu preći za nekoliko dana. Tokom tih osam meseci, od 8 ujutru do 10 uveče bilo je moje vreme za samostalno učenje, i svaki put kada bih ušao u novi okvir ili middleware, uzbudio sam se (tada sam osećao da mogu da naučim bilo šta, haha — pošto sam bio početnik, nisam ništa znao o ogromnom sistemu jezika, a tek kasnije sam otkrio da što više učiš, to više ima za učiti). Dakle, po povratku na fakultet odustao sam od ideje da se doterujem za prosečnu ocenu, i umesto toga se fokusirao na učenje algoritama i tehnološkog steka. Tada sam uglavnom vreme provodio u sobi učeći sam, i odustao sam od ispita koji nisu bili vredni truda.
(Razlog za ovaj izbor je što sam otkrio da nisam baš dobar u ispitima; u prvoj godini sam se prilično trudio oko ocena, ali mi rezultati uvek nisu bili previše dobri. Naravno, za studente koji su već među najboljima u generaciji i razmišljaju o masteru ili direktnom upisu na master, prosečna ocena je i dalje veoma važna!)
Tu ću izneti svoje stavove o sledećim pitanjima:
- Da li kursevi vezani za računarsku struku tokom četiri godine studija zaista imaju vrednost i težinu, i da li kompanije pri zapošljavanju visoko cene te kurseve?
- Želim ozbiljno da učim i dam sve od sebe, ali odakle da počnem? Kako da isplaniram i razradim svoju putanju i pravac učenja?
- Naučio sam mnogo toga, ali zaboravim čim naučim, ne umem fleksibilno da primenim ono što sam naučio, osećam da jaz između mene i drugih sve više raste — šta da radim?
Za prvo pitanje: da li kursevi računarske struke imaju težinu i priznanje u intervjuima za posao?
Smatram da neki kursevi imaju težinu, posebno osnove računarstva: strukture podataka i algoritmi, operativni sistemi, računarske mreže itd. Ovi kursevi su u intervjuima za campus regrutaciju u velikim internet kompanijama poput BAT-a (Baidu, Alibaba, Tencent) uobičajena pojava (najčešće pitaju u ByteDance praksi), neka pitanja su čak dosadna od ponavljanja. Ali u malim kompanijama se ta osnovna disciplina retko proverava, pa čak i gotovo da se i ne testira.
Ima i kurseva koji nemaju veliku težinu, čak su prilično stari: na primer JSP, interakcija čovek-računar, jQuery itd. Neki kursevi su prilično važni, ali ih univerzitet izučava samo na osnovnom nivou: na primer JavaSE, SSM okvir, MySQL baza podataka itd. Na primer, u današnjim intervjuima za Java pozicije preko campus regrutacije, pitanja o izvornom kodu HashMap kolekcije su gotovo svakodnevna, ali nas u univerzitetskim kursevima najviše uče kako da koristimo map kao kolekcijski kontejner za čuvanje podataka; retko koji profesor objašnjava strukturu podataka i dizajn logiku iz ugla izvornog koda. Isto je i sa MySQL — na univerzitetu najviše učimo takozvani SQL, što se ne može smatrati dubokim proučavanjem neke baze podataka, jer kurs uglavnom govori o istoriji, pozadini nastanka, SQL sintaksi za dodavanje, brisanje, izmenu i upite, dok se retko govori o principima implementacije MySQL indeksa, pogonima baze, principima čuvanja podataka, analizi funkcija logova, bravama baze podataka i transakcijama.
Takođe, realan problem je što univerzitet previše malo kurseva posvećuje tehnološkom steku. Mnogi dodiplomski računarski programi troše veliki deo nastave na uvođenje u različite jezike: na primer C, C++, Java, Python, JavaScript itd., ali je studentima teško da jedan jezik nauče čvrsto i duboko. Uzmimo Javu kao primer — do kraja treće godine tek završavamo SSM okvir i osnovna znanja o bazama podataka i JavaWeb-u, ali middleware, okvire za mikroservise i rešenja za mikroservise uglavnom profesori uopšte ne predaju.
Za drugo pitanje: želim ozbiljno da učim i dam sve od sebe, ali odakle da počnem?
Ovde savetujem da, pre nego što razmišljate o ovom pitanju, prvo razjasnite u kom pravcu ste zainteresovani, ili u kom pravcu ste odlučni da sledećih nekoliko godina studija uložite sve napore (All In).
To može biti jedan od frontenda, backenda, velikih podataka, klijenta itd.; dokle god ste zainteresovani, odlučite se i uložite sve napore da dobro naučite taj pravac. Pošto su četiri godine studija ograničene, ne možemo istovremeno savršeno i temeljno savladati sve pravce — ako učite sve, na kraju možete samo ući u osnove svakog pravca, i traženje posla će i dalje biti pasivno.
Pri izboru pravca, ne slepo pratite masu; vidite druge kako se natapkavaju oko Jave, pa i vi idete za njima (tako ćete samo podizati već visoku letvu campus regrutacije). Trenutno su frontend, Go jezik i Python veoma popularni — ako vam se sviđaju, slobodno ih probajte.
Ako ste već izabrali pravac koji volite, potražite na internetu putanju učenja i mapu znanja, i počnite od najosnovnijih kurseva za ulazak, na primer osnove računarstva -> osnove Java-e -> JavaWeb -> veliki podaci ili Java backend ili Android itd.
Za treće pitanje: naučio sam mnogo toga, ali zaboravim čim naučim, ne umem fleksibilno da primenim ono što sam naučio, osećam da jaz između mene i drugih sve više raste — šta da radim?
Savetujem da, kada završite jednu tehničku oblast znanja, kratko je ponovite, a zatim kroz mali sveobuhvatan primer sami povežite ono što ste upravo naučili — takvi primeri vam pomažu da učvrstite prethodno naučeno. Takođe, možete beležiti sveže naučeno putem blog beleški, kako biste se mogli vratiti i ponoviti ako zaboravite.
Takođe, pri izradi sveobuhvatnog primera, naučite da razbijete veliki problem na male probleme i rešavajte ih korak po korak; ne žurite — zuriti u dugačak spisak unapred projektovanih zahteva bez pokretanja nikada neće rešiti problem.

Od četiri godine studija, proveo sam na kampusu manje od dve; treću i četvrtu godinu sam stalno bio na praksi, radio sam u tri kompanije, u tri grada (Zhengzhou, Shanghai, Hangzhou). Iako ne bih rekao da imam prebogato društveno iskustvo, bar sam neposredno osetio razliku između života na kampusu i života mladih koji se sele u Peking ili Shanghai zbog posla.
Ranije sam se uvek žalio da su studentske sobe previše dotrajale i da su uslovi loši, ali u poređenju sa životom sam u velikom gradu, studentski dom je zaista raj.
Iako je u to vreme mesečni džeparac na kampusu iznosio samo hiljadu juana, što verovatno nije bilo dovoljno za nekoliko dobrih ručkova i bioskopskih poseta sa devojkom, bar se nisam brinuo o mesečnoj kiriji od dve-tri hiljade juana ili troškovima za hranu od hiljadu-dve. Svakog meseca su mi roditelji na vreme slali džeparac na bankovni račun — bezbrižno, bez briga.
U ovih četiri godine bilo je i dobiti i žaljenja.
Ako govorimo o dobitku, onda je to svakako to što sam sopstvenim trudom dobio nekoliko offer-a za campus regrutaciju kojima sam zadovoljan, i ušao u idealnu kompaniju da se bavim pozicijom koja mi se sviđa:
- Offer za campus regrutaciju u Alibabi:

- Offer za campus regrutaciju u ByteDance-u:

- Offer za campus regrutaciju u Bilibili-ju nakon prebacivanja iz prakse u stalni odnos:

Što se tiče žaljenja, to je svakako to što u poslednjih nekoliko meseci pred diplomiranje nisam uspeo da izađem na ručak sa cimerima sa studija i odemo na diplomsko putovanje.
Zbog pandemije, odbranu diplomskog, ceremoniju diplome i dodelu diploma obavili smo online, a čak je i zajednička diplomatska fotografija napravljena tako što su nas sve spojili u Photoshopu (tužno, razočarano).
Četvrto, proširiti vidike i videti jaz
U ovom četvrtom delu želim sa vama da raspravljam o tome kako razlika u vidiku i razlika u informacijama utiču na naše četiri godine studija, traženje posla i planiranje daljeg obrazovanja.

Razmotrimo sledeća četiri pitanja da bismo razumeli koliko su razlika u vidiku i razlika u informacijama važni za nas!
- Da li tokom studija treba ići na praksu? Kada da počnem da tražim praksu? Kako da tražim praksu? Koje uslove treba da ispunim za odlazak na praksu?
- Nemam iskustva sa projektima, projekti iz video kurseva su previše uobičajeni, projekte otvorenog koda ne razumem, a sam ne umem da ih pišem — šta da radim?
- Koliki udeo imaju algoritamski zadaci u campus intervjuima? Vredi li učestvovati na ACM takmičenju ako posle 2 godine treninga nisam osvojio medalju?
- Da li campus i stručni intervjui više cene projekte, ili više računarske osnove i algoritme?
Za prvo pitanje, odgovor je potvrdan!
Da li tokom studija treba ići na praksu?
Razmotrimo ovo pitanje iz nekoliko aspekata: da li tokom studija treba ići na praksu? U prethodnom odeljku sam rekao da postoji određeni jaz između znanja koje stičemo u univerzitetskim kursevima i zahteva u stvarnim preduzećima.
Odlazak na praksu ranije ne samo da poboljšava vaše veštine programiranja, već vas uči i timskom modelu razvoja u preduzeću, poslovnim zahtevima u stvarnim scenarijima, načinima i procesima timskog rada itd. Pri slanju prijava za campus intervjue, student sa iskustvom na praksi imaće blagu prednost nad onima bez prakse. Osim toga, tokom prakse dobija se i određeni prihod, koji može ublažiti finansijski pritisak života (a prihod sa prakse je veći nego što bismo zaradili dajući časove osnovcima i srednjoškolcima; tokom prakse vas vodi mentor, i možete naučiti i stvari kojima se ne može doći na fakultetu).
Kada početi da tražite praksu?
Za to ne postoji apsolutno fiksno vremensko određenje, zavisi od lične situacije.
Ovo pitanje se zapravo može svrstati u problem: razlika u vidiku. Mnogi studenti verovatno misle da je odlazak na praksu pitanje koje treba da razmatraju diplomci četvrte godine, te da je za prvu i drugu godinu prerano da razmišljaju o tome.
Ako ste u nekim grupama u kojima se programeri međusobno takmiče, ili često posećujete platforme poput Nowcoder-a i LeetCode-a, primetićete da nije mali broj studenata prve, druge, ili master prve i druge godine (koji nisu čak ni u generaciji diplomaca) koji već imaju offer-e za praksu u velikim internet kompanijama; neki čim uđu u fazu pred diplomiranje već imaju radno iskustvo u nekoliko velikih kompanija — to je razlika u vidiku. Dok mi još uvek pokušavamo da pregledamo baze zadataka kako bismo izvukli visoke ocene iz kurseva poput ideološkog obrazovanja i marksizma, oni koji se maksimalno trude već su kroz krug za krugom intervjua osvojili offer-e.
Neki studenti možda brane sebe ovako: „Takvih je malo, oni koji ovako rano idu na praksu u velike kompanije su ili sa 985/211 univerziteta ili imaju master stepen, mi sa običnih univerziteta nemamo šanse!”. Ne slažem se sa ovim stavom. U mojoj zajednici ima studenata sa običnih, pa čak i sa niže rangiranih privatnih univerziteta, koji su već na praksi u ByteDance-u, NetEase-u i DiDi-ju. Ne mora svaki od njih imati ACM medalju, ali bar u uloženom trudu su sigurno među najboljima.
Na primer: četiri godine studija, isti univerzitet, isti smer, isti razred, čak i ista soba — i nakon diplomiranja između nas postoji jaz. Kao kada na upisu svi krećemo od nule, a neki već u prvoj godini reše 200 algoritamskih zadataka ili već uđu u osnove nekog backend okvira i komponenti, dok drugi još uvek prate univerzitetske kurseve učeći osnove JavaSE-a, i možda još uvek nisu razumeli IO, JDBC i refleksiju. Zar to dolazi iz razlike u sposobnostima ili inteligenciji?
Ne mislim; samo svako ima svoj način truda i svoje ideje. Kada uvek vidimo one koji su mnogo jači od nas, ili kada je jaz između nas veliki, naše sopstveno osećanje za krizu će nas naterati da ih pratimo i prestižemo; dok, ako se poredimo samo sa onima oko nas koji su na sličnom nivou, svi slušamo istog profesora, i razlika između onih koji uče dobro i onih koji uče loše nije ni velika.
Koliko studenata, nakon završene druge godine, još uvek misli da je sadržaj koji se predaje na univerzitetu najautoritativniji, najnoviji i najvredniji deo tehničkog znanja? Osnove Java-e koje se mogu naučiti za mesec dana, mi smo pratili tempo univerzitetskog kursa i učili čitavu godinu — da li je to razumno?
Kako naći praksu?
Pre nego što tražite praksu, prvo vam treba CV — kako da tražite posao bez CV-a? Kada pripremite CV, možete ga prvo poslati starijim kolegama ili poznanicima koji već rade, da vam daju predloge, pa ga vi ispravite, a zatim počnete da šaljete prijave. CV uglavnom šaljete preko platformi poput Nowcoder-a, Shixiseng-a, BOSS Zhipin-a i Lagou-a, posebno Nowcoder-a, gde ima mnogo objava za redovnu i letnju praksu; prema svojoj željenoj poziciji i stvarnoj situaciji, selektivno šaljete prijave i polažete testove i intervjue.
Važno je obratiti pažnju na vreme: ako želite da preko leta (između druge i treće godine, ili između prve i druge godine mastera) dobijete offer za praksu, pretpostav je da barem 1-2 meseca ranije počnete da šaljete CV i polažete intervjue.
Nipošto ne čekajte da počne raspust da pripremate CV, jer raspust traje samo 2-3 meseca; za studente sa manje jakim stepenom i univerzitetom, samo slanje prijava može potrajati oko mesec dana, plus proces testiranja, intervjua i zapošljavanja, pa su dva meseca veoma napeta — do početka semestra možda još uvek nemate zadovoljavajuću praksu.
Koje uslove treba ispunjavati za izlazak na praksu?
Što se tiče uslova, izostavimo faktore podrške poput stepena ili pozadine univerziteta, i polazimo samo od zahteva osnovnih modula jednog CV-a:
- Modul obrazovnog iskustva (univerzitet, stepen, smer itd.);
- Modul znanja i veština (tehnološki stek koji poznajete, mapa znanja itd.);
- Iskustvo sa praksom / iskustvo sa projektima;
- Iskustvo u osvajanju nagrada (sertifikati sa takmičenja, stipendije, radovi, patenti itd.);
- Samo-sažetak (u nekoliko rečenica iznesite svoje vrline).
Dakle, pre nego što počnemo da tražimo praksu, moramo barem imati tehnički pravac koji poznajemo, 1-2 projekta na koje se možemo pozvati ili iskustvo sa praksom u preduzeću, sertifikate o nagradama osvojenim tokom studija itd. Ako čak i ovih osnovnih sastavnih delova CV-a nemamo, kako bismo onda samo na osnovu osnova Java sintakse i transcripts-e na kraju semestra naterali HR-a koji pregleda prijave da se obraduje?
Slika ispod je snimak ćaskanja sa mojim dobrim prijateljem sa studija (diplomirao 2022. godine, upisao master):

U poređenju sa onima koji u prvoj, drugoj, trećoj godini ili prvoj i drugoj godini mastera već imaju toliko offer-a za praksu da su im ruke umorne, da li ne bismo trebalo malo više da se potrudimo?
Za drugo pitanje: nemam iskustva sa projektima, projekti iz video kurseva su previše uobičajeni, projekte otvorenog koda ne razumem, a sam ne umem da ih pišem — šta da radim?
Prvo, kada nemamo iskustva sa projektima, na početku je u redu da pratimo neke uobičajene video projekte kako bismo ušli u to i iskusili način korišćenja tehničkih okvira i komponenti.
Kada se upoznamo sa tim, možemo pokušati da, po uzoru na slične projekte otvorenog koda, čitamo njihov izvorni kod. Pre nego što počnemo da čitamo projekat otvorenog koda, prvo bismo trebali naći pouzdan projekat sa mnogo zvezdica, urednom i potpunom dokumentacijom (jer neki od jako nepopularnih projekata sa malo zvezdica možda niko ni ne održava, a kod možda ima gomilu bagova koje niko ne popravlja); osim toga, tehnološki stek tog projekta ne bi trebalo previše da premašuje naše sposobnosti — oko 30% nepoznatog tehnološkog steka je prihvatljivo.
Zatim, kada nađemo projekat, moramo preuzeti kod i pokrenuti ga lokalno; ako se kod ne može pokrenuti, kako da čitamo izvorni kod i otklanjamo greške, kako da učimo logiku projekta?
Na kraju, kada se projekat pokrene, pokušajte da korak po korak otklanjate greške i čitate izvorni kod; za nepoznate tehnologije prvo izdvojite vreme da ih naučite, a zatim nastavite da čitate izvorni kod. Na početku možete potrošiti mnogo vremena, ali što više koda čitate, veština će prirodno rasti.
Naravno, ako imate vremena i energije, najbolje je da pokušate sami da pišete projekat — dobit ćete više.
Treće pitanje: koliki udeo imaju algoritamski zadaci u campus intervjuima?
Koliki udeo algoritam ima u campus regrutaciji nema apsolutnog odgovora, zavisi od kompanije i odeljenja u kom ste na intervjuu. Na primer, u manjim kompanijama je test češće u obliku programerskih zadataka (pisanje jednostavnih sortiranja, višenitnih programa itd., ili nekih multiple-choice i popunjavanje-praznina pitanja), dok u srednje velikim i velikim internet kompanijama udeo algoritamskih zadataka u testu prilično je visok.
Lično mislim da algoritamski zadaci neće biti odlučujući faktor rezultata intervjua, ali bar u campus / stručnim intervjuima velikih internet kompanija, prva faza je često test iz algoritma; tek kada na nekoliko algoritamskih zadataka u testu postignete zadovoljavajući rezultat, mogu se organizovati naredne faze intervjua. Ako ne prođete test, čak i sa izvanrednim CV-om i blistavim iskustvom na projektima, teško je doći do faze razgovora sa intervjuerom.
Ako ste pri pripremi za praksu ili campus regrutaciju naučili mnogo klasičnih pitanja napamet i uradili više projekata, onda pri pokušaju ulaska u velike kompanije obavezno ne zanemarujte važnost algoritama, jer je vrlo verovatno da zbog pada na algoritamskom testu nećete ući u fazu intervjua.
Znanja vezana za algoritamske zadatke se u stvarnom radu gotovo ne koriste, pa zašto onda uopšte rešavamo algoritamske zadatke? Ako na takmičenjima poput ACM-a ne osvojimo medalju, da li se isplati trošiti vreme na njih?
Prvo, neka znanja iz LeetCode algoritamskih zadataka se zaista retko koriste u stvarnom radu, čak i algoritamske pozicije se obično ne oslanjaju na LeetCode algoritme (rad algoritamskih pozicija je uglavnom primenjeni algoritam, što gotovo da nema veze sa LeetCode algoritmima; čak i u campus intervjuima za algoritamske pozicije, zahtevi za LeetCode algoritme možda nisu toliko visoki kao za razvojne pozicije).
Razlog zašto treba da rešavamo algoritamske zadatke je uglavnom da bismo prošli testove campus regrutacije, jer bilo da su domaće BAT kompanije ili strane vodeće internet kompanije, test iz algoritma je u campus regrutaciji uglavnom obavezan.
Drugo, što se tiče pitanja da li se isplati učestvovati na ACM takmičenju: mislim da, ako imate obilje vremena, svakako se isplati, a i samo ACM takmičenje ima vrednost.
Čak i da izostavimo prednost ACM medalje u campus ili stručnim intervjuima, sam proces pripreme i treninga za ACM takmičenje je vredan — bar može pomoći u poboljšanju i savladavanju algoritamskih veština rešavanja problema i logičkih sposobnosti u kodu. Čak i ako na kraju ne osvojite medalju, barem dve godine upornog rešavanja zadataka mogu garantovati da na testu campus regrutacije nećete biti odbačeni.
Međutim, ako ste već u trećoj ili četvrtoj godini, isplativost učestvovanja na ovom takmičenju više nije visoka; na kraju krajeva, od početka treninga za ACM do postizanja rezultata ili osvajanja medalje potrebno je oko 1-2 godine, a za studente koji se suočavaju sa praksom i campus regrutacijom nema dovoljno vremena za ACM takmičenje. Tada bi trebalo prioritetno razmotriti intenzivno vežbanje algoritamskih veština — na primer, proći što više puta LeetCode „Coding Interview” seriju i Hot100 seriju, kako biste obezbedili da vas test ne izbaci.
Kako izbalansirati ACM trening i učenje tehnološkog steka?
Ovo pitanje su mi mnogi studenti postavljali u privatnim porukama. Posebno mlađi kolege iz prve i druge godine brinu se da će provoditi mnogo vremena u treningu svaki dan, neće imati dovoljno vremena za pripremu tehnološkog steka i redovne stručne kurseve, i plaše se da na kraju neće osvojiti ACM medalju, a neće imati ni dovoljno tehničkih sposobnosti i iskustva na projektima da podrže odlazak na praksu ili učestvovanje na campus regrutaciji.
Za ovo pitanje, savet je da pokušate da istrajete u treningu pola do jedne godinu; ako osetite da ste istrajali čitavu godinu, a napretka nema ili je šansa za učestvovanje veoma mala, razmislite o povlačenju i učite tehnologiju dok rešavate LeetCode, sa prioritetom na praksu i campus regrutaciju.
Na kraju krajeva, algoritamska medalja je bonus pri campus regrutaciji, ali nije obavezna; ako ne možete dobiti taj bonus, onda prvo razmislite o učenju osiguravajućih znanja i veština.
Neki studenti možda prigovaraju: „Već znam da su šanse za medalju male, pa zašto da traćim dve godine prve i druge godine na ACM trening?”
Ako pre nego što razmotrimo nešto, još uvek nismo probali, a nismo ni voljni da probamo, već razmišljamo o neuspehu i povlačenju — kakav uspeh onda uopšte može biti reči?
Znamo da algoritamska medalja nosi određeni bonus u campus i stručnoj regrutaciji, a ipak se ne usudimo da probamo, plašeći se gubitka vremena.
S jedne strane se žalimo na nizak stepen i težak prolazak kroz velike kompanije zbog manjka bonusa, a s druge strane nismo voljni da krenemo od nule rešavajući zadatke i učvršćujući algoritamske osnove, a kamoli da trošimo vreme i energiju na takmičenja — otkud takva stvar da ležeći postižete oba cilja?
Četvrto pitanje: da li campus i stručni intervjui više cene projekte, ili više računarske osnove i algoritme?
Oba ova dela spadaju u okvir provere campus intervjua; algoritamski zadaci se više testiraju u fazi pisanja, ili se povremeno u finalnom tehničkom intervjuu ubacuju da ih rešimo. A klasična pitanja iz osnova računarstva se u fazi intervjua proveravaju prilično često, posebno u ByteDance-u.
Peti deo, niko nije večno vredan zavisti!
U prethodnim odeljcima sam govorio o onima koji se maksimalno trude; oni su zaista među najboljima i najupornijima u našoj generaciji, i postignuća koja su ostvarila zaista izazivaju zavist kod mnogih. Na primer, neki mlađi kolege u mojoj zajednici već u drugoj i trećoj godini imaju offer-e za praksu u dve-tri velike kompanije — i mene obuzima zavist.
Ali! Tuđa postignuća su tuđa stvar; priznajemo i cenimo napore koje su uložili, ali nema potrebe da previše zavismo. Jer ono što oni mogu, i mi uz trud možemo — možda smo samo kasnije shvatili i kasnije krenuli da se trudimo, zar ne?
U ovom odeljku ću razgovarati sa vama: ako smo već probacili deo studentskih dana, pa nismo rano krenuli da se takmičimo kao neki preterano vredni, kako da prestižemo zaostatak i prilagodimo svoj stav.
Isto kao i pre, razgovaraćemo oko nekoliko pitanja iznetih u drugom odeljku:
- Potrošio sam pola studentskog vremena, da li je sada još uvek nekasno da počnem da se trudim?
- Kako da provedem četiri godine studija? Kako da učim kako bih dobio mesto u kompaniji sa dobrom platom ili upisao idealni master program?
Za prvo pitanje: mislim da ako ste već svesni da ne možete dalje tratiti vreme, onda još uvek nije kasno da se popravite!
Zapravo, nije teško naći posao, ali pronaći dobro plaćen posao ili ući u veliku internet kompaniju podrazumeva veće zahteve.
Ako ste tada već svesni da vam je vreme kratko, onda iskoristite preostalu 1-2 godine na kampusu da učite i obogaćujete sebe.
Možete izabrati da svim snagama pripremate prijemni ispit za master, ili da se potpuno posvetite zapošljavanju; kada izaberete pravac, napravite sebi plan učenja i svaki dan koristite vreme na efikasan način, korak po korak.
I oko mene ima mnogo onih koji su počeli da uče tek u drugoj godini ili su ozbiljno shvatili svoj studentski plan tek na početku treće godine; dokle god možete da istrajete u radu na jednoj stvari u jednom pravcu, i na kraju možete dobiti pristojan offer ili se upisati na master na idealnom univerzitetu.
Ali! Želim da ne slušate sa slepom verom otrovna bodrenja, kao što su:
„Priprema za master se može raditi tek pred kraj drugog semestra treće godine, nema potrebe da se sprema tako rano~”
„Zapošljavanje je pitanje koje treba razmotriti tek na kraju četvrte godine, prerano je da razmišljamo o njemu u prvoj i drugoj~”
„Samo ne padaj na ispitima na kraju semestra, i na kraju ćete verovatno imati posao~”
Ne znam za druge škole, ali bar u našoj generaciji na fakultetu, onih koji misle da je dovoljno početi sa pripremom za master u drugom semestru treće godine, a da su uspešno upisali — njih nema mnogo.
Dakle, ako znate da ste probacili pola studentskih dana, trud u preostalom vremenu je sasvim dovoljan, ali nemojte korak po korak pomerati svoju donju granicu; kada se povučete do četvrte godine, master je uglavnom nemoguć, a zapošljavanje neizvesno. Dokle god budete samodisciplinovani i istrajete u korišćenju preostalog studentskog vremena, ko zna — do diplome možete postati osoba kojoj ste uvek zavideli.
Za drugo pitanje: kako da provedem četiri godine studija kako bih dobio mesto u kompaniji sa dobrom platom ili upisao idealni master?
Mislim da, dokle god po svojim očekivanjima i planovima istrajete u trudu, ne bih smeo da kažem da ćete sigurno ući u veliku kompaniju ili upisati prestižni master, ali bar cilj koji ste postavili na osnovu sopstvene stvarne situacije je na dohvat ruke — samo se malo potegnite.
S jedne strane, kada se suočavate sa pravcem zapošljavanja, prvo razmotrite kako da korak po korak obogatite svoje algoritamske sposobnosti, tehničke sposobnosti, iskustvo sa projektima, iskustvo sa praksom, iskustvo sa takmičenjima itd., i savesno izaberite pravac zapošljavanja koji odgovara vašoj stvarnoj situaciji; učite duboko u jednom pravcu, umesto da svaki dan maštate u koju kompaniju, odeljenje ili poziciju biste trebali ići.
Zašto kažem da prvo sami izaberete pravac zapošljavanja koji vam odgovara?
Razlog je vrlo jednostavan: neke pozicije ili kompanije mogu strogo ograničavati stepen i univerzitet; ako ste isključivo želeli da se bavite algoritmima veštačke inteligencije i mašinskog učenja, a trenutno ste samo sa diplomom običnog univerziteta, onda lično savetujem da prvo razmotrite razvojni pravac (frontend, backend, klijent itd.).
Jer broj algoritamskih pozicija je u poređenju sa razvojnim pozicijama mnogo manji, a kompanije sa algoritamskim pozicijama su uglavnom srednje velike i velike; na primer, u Alibabi, za mnoge odeljenja su pri regrutaciji za algoritamske pozicije zahtevi orijentisani na master i više stepene sa QS100 ili domaćih TOP univerziteta. Prema stepenu običnog dodiplomca, čak i da četiri godine učimo algoritme svaki dan do kasno u noć, teško je naći posao vezan za algoritme — prvo smo isključeni po univerzitetu i stepenu.
A što se tiče razvojnog pravca, bilo frontend, backend ili klijent, pre nego što izaberete pravac karijere, prvo razmotrite da li vam se zaista sviđa, umesto da slušate tuđe ubedljive priče ili da slepo pratite šta drugi uče.
Na kraju, kada izaberete pravac, učite duboko njegov sistem znanja — jednom putu do savršenstva, umesto da samo probate po malo iz različitih programerskih jezika.
Na primer, mnogi studenti u prvoj i drugoj godini ulažu napore u učenje različitih programerskih jezika (Java, C++, Python, Golang itd.), ali se na kraju osete da su se očigledno mnogo trudili, a nijedan pravac nisu duboko naučili, pa u CV-u za campus intervjue imaju gomilu „poznajem jezik XXX”~.
Programerski jezici nisu nadređeni ni potčinjeni, a tehnički pravci isto tako. Kao što se kaže, svako ima svoju specijalnost: algoritamska pozicija radi stvari koje razvojni tim ne može da zameni niti da uradi, a isto tako, bez komponenti, biblioteka, alata i platformi koje je razvio razvojni tim, algoritamskom timu je teško da radi primenu algoritama. Naš zadatak je da čvrsto naučimo pravac koji volimo i koji odgovara našoj stvarnoj situaciji, umesto da svaki dan zurimo u rang-listu jezika i mučimo se oko toga koji „najpopularniji jezik” da učimo~.

Šesto, kako posmatrati izbor između zapošljavanja i mastera?
Ova tema je već odavno izlizana, i ovde neću previše ponavljati; podeliću samo sa vama svoj stav iz perspektive sopstvenog iskustva (ako se razlikuje od vaših misli, molim za razumevanje):
- Da li prvo pripremati master ili prvo tražiti posao? Ko odgovara za master, a ko za zapošljavanje?
- Da li ulazak u veliku kompaniju preko campus regrutacije znači konačnu pobedu?
Campus regrutacija je samo polazna tačka; na dugom putu, tek ste dobili prvu bitku. Tehničke sposobnosti se moraju gomilati iz dana u dan; klasična pitanja naučena napamet vam mogu pomoći na nekim pitanjima u campus intervjuu, ali ne mogu pomoći u budućoj karijeri. Dakle, čak i ako uđete u veliku kompaniju preko campus regrutacije, ne opuštajte se — nastavite da učite! Lično mislim da, ako želite pristojno plaćen posao nakon diplome, onda vam tokom dodiplomskih studija ulazak u veliku internet kompaniju omogućava da prvo razmotrite zapošljavanje~.
Ako želite da proširite svoje vidike i podignete svoj stepen, ili želite da radite pozicije koje strogo zahtevaju stepen, onda prvo razmotrite master~.
Ne prebacujte odgovornost za odluke o sopstvenom budućem planu na druge!
Ciljeve, pravce i buduće planove ne možete uvek prepustiti drugima ili roditeljima da ih odrede, niti možete slepo gledati šta drugi rade pa ići za njima (vidite da drugi idu na master, pa i vi idete na master; pred kraj studija vidite da su drugi ušli u velike kompanije sa platom od nekoliko stotina hiljada, pa brzo odustajete od mastera i birate zapošljavanje — hvatanje oba kraja lako vodi padu oba); put koji vam zaista odgovara morate sami da odlučite.
Da li je prosečna ocena na studijama važna? Da li treba učestvovati na nekim autoritativnim takmičenjima da ulepšate CV?
Za ovo pitanje, mislim da umesto da četiri godine bez cilja jurite prosečnu ocenu, bolje je da razmislite šta zaista želite? Ako niko ne razmisli o ovom pitanju, a svi slepo pođu za masom u jurnjavu za prosekom (rešavajući baze zadataka), to će samo povećavati težinu ispita i letve!
Ne mislim da visok prosek znači i jake tehničke sposobnosti, ali ako ste među najboljima u generaciji i imate šansu za direktni upis na master, u tom slučaju savetujem da prvo razmotrite rad na proseku kako biste obezbedili direktan upis~.
Što se tiče takmičenja, zavisi od toga da li ste voljni da probate; učestvovanje ne znači nužno osvajanje nagrade, a zahteva i utrošak vremena i iskustva u pripremi. Ako imate obilje vremena, učešće u takmičenjima i treningu je dobra stvar, a pomaže i kod campus regrutacije~.
Da li stepen i univerzitet mnogo utiču na campus regrutaciju? Šta ako ste na običnom državnom univerzitetu, sa manjkavošću u stepenu, pa nije lako ući u vodeće velike internet kompanije?
Reći da campus regrutacija ne pazi na stepen i univerzitet, to je sigurno laž!
Ali to ne znači da sa diplomom običnog univerziteta ne možete dobiti offer velikih BAT kompanija za campus regrutaciju. Zavisi od toga koliko ste se trudili tokom četiri godine studija, i u kojim pravcima imate prednost u odnosu na konkurente iz iste generacije. Međutim, za studente sa visokim stepenom i sa prestižnih univerziteta, pri ulasku u velike internet kompanije su zahtevi i težina zaista niži nego za obične dodiplomce — na kraju krajeva, filtriranje CV-ova već eliminiše mnoge studente sa običnih univerziteta.
Naravno, nije da samo ulazak u velike internet kompanije obezbeđuje budućnost; i druge kompanije imaju dobre tehničke timove, i u drugim kompanijama možete kroz rad i tehničko učenje dostići platu i tehničku visinu koja vas zadovoljava. Kako otkriti ove male i srednje kompanije sa dobrom tehničkom atmosferom zavisi od vaše dodatne sposobnosti proširenja vidika i prikupljanja informacija; ako do diplome četvrte godine za kompanije u kojima tražite posao još uvek znate samo Google, Microsoft, Amazon, Tencent, Alibaba, ByteDance i druge vodeće, a za jake male i srednje kompanije niste čuli ni ime, onda je to lični razlog~.
Sedmo, sjajna budućnost
Last Question:
Kako pre kraja studija uspešno naći devojku? (nespusno pitanje, izostavljeno)
Zato što nismo zadovoljni sadašnjošću, trudimo se da promenimo stanje!
Na kraju, želim da posavetujem mlađe kolege koji još nisu diplomirali: iskoristite obilje vremena na fakultetu da učite stručno znanje i obogatite studentski život; nemojte svaki dan provoditi zagledani u telefon i računarske igre, polako i nesvesno iz dana u dan!
Nipošto ne čekajte da nakon diplome, gledajući kolege oko sebe kako dobijaju visoke plate ili se upisuju na master, ostanete daleko pozadi; čak i ako pokajete, vreme se ne vraća unazad!
Isto tako, nadam se da će mlađe kolege koji se bliže diplomi iskoristiti poslednju fazu navale i stisnuti zube do kraja. Sutra ćete zahvaliti današnjem sebi, koji je bio izmučen ali je odlučno išao napred! Možda posle nekoliko meseci dobijete zadovoljavajući offer za campus regrutaciju, ili posle 10 meseci primite obaveštenje o prijemu na idealni univerzitet — tada možete ponosno reći drugima: mojih četiri godine studija je bez žaljenja!
Takođe, za kolege iz generacije koji su već diplomirali, nadam se da ćete u budućoj trci života živeti onako kako ste zamislili i imati sjajnu budućnost. Verujem da ste do sada suočili sa mnogim životnim teškoćama, zbunjenostima u učenju, i razočaranjima u traženju posla, ali život se nastavlja — molim vas, istrajte; možda nećete dostići idealnu visinu, ali bar pokušavamo da promenimo životno stanje~.

To je sve za ovaj put.
