Ez a történet arról, hogyan álltam munkába a Twitteren, teljes munkaidős szoftvermérnökként. Megosztom a folyamatot, amin keresztülmentem, hogyan készültem fel, és miért döntöttem végül a cég mellett.
Hogyan kezdtem az utamat
Click-clack-click-clack .
Az ujjaim hangja dühösen összetörte a billentyűzet billentyűit, és visszhangzott az éjszaka folyamán.
Felnéztem a laptop képernyőjéről, és egy óra felé pillantottam egy alagsori lakás falán, amelyet havi 600 dollárért béreltem.
Hajnali 2 volt.
Most azt gondolhatja, hogy egy szoftvert írtam, vagy valami fontosat hackeltem. Különben miért lennék ébren?
Nem voltam.
A közelgő technikai kódolási interjúmra a Leetcode nevű weboldal segítségével készültem. A Fury átvett engem, mert nem tudtam megfordítani egy összekapcsolt listát, amelyet könnyűnek minősítettek a platformon (próbálja ki itt).
Hogy kerültem oda
Egy héttel korábban érkezett egy e-mail egy Twitter-toborzótól, amelyben megkérdezték, hogy szeretnék-e beütemezni egy kezdeti telefon képernyőjét egyik mérnökükkel.
Izgatott voltam, de ideges is, mert néhány évvel ezelőtt sikertelenül jelentkeztem a Twitter szoftvertervezõi posztjára.
A toborzó küldött nekem egy átfogó előkészítő lapot, amely linkeket tartalmaz a gyakorláshoz és a kódolási és algoritmus-készségek fejlesztéséhez.
Az ellenőrzőlista egyik eleme rámutatott a leetcode.com oldalra (egy kódolási kihívás webhelye), és így végül órákig kódoltam ezen a weboldalon, hogy felkészüljek a technikai kódolási interjúmra.
Nem volt könnyű felkészülni a technikai interjúkra. Annak, aki egy ideje már nem dolgozik az egyetemen, nem triviális időbe telik a technikai kódoló interjú sikeréhez szükséges készségek és alapismeretek kiosztása.
A toborzó kifejezetten hangsúlyozta, hogy technikai interjúnk kifejezetten a technikai alapokra összpontosít, például térképekre, bináris fákra, összekapcsolt listákra, bináris keresési fákra, grafikonokra és így tovább .
Ha ma kezdtem volna a semmiből való felkészülést, megpróbálnék sokkal strukturáltabb megközelítést keresni, hogy maximalizálhassam a felkészülési időmet.
Ezért indítottam el egy személyre szabott coaching tanfolyamot, Acing The Technical Interview néven.
Ez a tanfolyam segít az embereknek a lehető leghatékonyabban felkészülni interjúikra, így el tudják érni ezeket a technikai interjúkat, és elkerülhetik azokat a buktatókat és csapdákat, amelyeket meg kellett tanulnom.
Sok más mérnök ért el sikereket a tanfolyamon felvázolt megközelítésekből.
Az én hátterem
Három éves tapasztalatom volt egy full-stack mérnökként egy indításkor, főleg mikroszolgáltatások építésével és API fejlesztéssel az AWS stacken.
A verem nagy hangsúlyt fektetett a PHP-re, a NodeJS-re, az AWS SQS-re, mint üzenetsorra, a Postgres-re az adatbázisunkban és az AWS S3-ra a hosszú távú tárolásra.
Nem rendelkeztem előzetes szakmai és szakmai gyakorlattal, és az induláskor végzett munka volt az első „igazi” szoftvermérnöki pozícióm.
Formális informatikai végzettségem volt - Washington államban egy kicsi, privát jezsuita főiskolán végeztem 4 év alatt informatikai alapképzést.
Visszatekintve azt gondolom, hogy értékes tapasztalat volt az egyetemre járás. Ha újra megtenném, akkor is egy formális oktatást választanék egy kódoló Bootcamp helyett. Itt tekintheti meg a videómat 4 éves informatikai diploma és egy kódoló Bootcamp bontása érdekében.
Jelentkeztem több mint 30 különböző céghez, 15-vel interjúztam, 6-an elutasítottak, 6-tól ajánlatokat kaptam, 5-öt elutasítottam és 1-et elfogadtam. Ha számít, a matematika nem tökéletesen áll össze, mert néhány vállalat a helyszínen kísérteties .
Itt olvashat bővebben, ha érdekel, hogyan kaptam ajánlatokat felső szintű FAANG cégektől Ivy League fokozat nélkül.
Hogyan készültem az interjúkra
Időm nagy részét Leetcode-on töltöttem, és a Programozási interjúk elemei című könyvvel (erősen ajánlott).
Időm kb. 10% -át a YouTube-on böngészve kerestem rendszertervezési interjúkat, mint például Jack Gabbard és Gauran Sen.
Egy másik erőforrás / webhely, ami tetszett, a DailyCodingProblem.com volt, amely napi kódolási kérdést küld az e-mailre. Ez lehetővé teszi, hogy folyamatosan új kérdéseket kapjon.
Előkészítési idő összesen
A felkészülési időm kb. Egy hónapig tartó következetes, megszakítás nélküli gyakorlat volt. Kritikus az egységes ütemezés.
Régebben kódolási spurtákon jártam: 3 óra kemény mag kódolás, majd egy hét pihenés. Azt tapasztaltam, hogy hatástalan, és többször megfizettem a kontextusváltás magas árát.
Összességében hétköznapokon kb. 3 órát töltöttem hétköznapokon (munka miatt), hétvégén pedig 4–6 órát, összesen egy hónapban heti kb. 20 órát .
Hogyan jelentkeztem a munkákra
Munkahelyi oldalukon keresztül jelentkeztem a Twitteren. Utólag talán hatékonyabb lehetett hivatkozót vagy toborzót találni a LinkedIn-en, mert ez nagy valószínűséggel felgyorsította volna a jelentkezési folyamatot.
A jól megírt önéletrajz kritikus fontosságú, különösen akkor, ha online karrierközpontban jelentkezik. Enélkül nem hiszem, hogy lehetőséget kapnék arra, hogy interjút készítsek ezekkel a csúcsminőségű technológiai vállalatokkal.
Itt olvashat bővebben arról, hogyan készítettem el önéletrajzomat, hogy a felvételi menedzserek észrevegyenek.
Néhány héttel később egy toborzó végül hozzám fordult, és be akarta ütemezni a kezdeti telefon képernyőjét.
Jelentkezési folyamatom ütemterve
- 2017. február 10. - A toborzó elérte a TPS ütemezését
- 2017. március 8. - kezdeti TPS
- 2017. április 13. - második TPS
- 2017. április 18. - a helyszínen
- 2017. május 2. - Az ajánlat meghosszabbítva
- 2017. május 23. - A Twitter megerősítette
- 2017. július 24 - hivatalos kezdési dátum
Az első 2 műszaki telefonképernyő egy megosztott online dokumentum, például a Google Dokumentumok kódolását tartalmazta. Beszéltünk különböző megközelítésekről és kompromisszumokról, és több mint 30 percet töltöttünk a megvalósítással.
Az első két forduló után előreléptem a Twitter Seattle-i helyszíni interjúk következő fordulójába.
Ezután a toborzó küldött nekem egy linket egy online kódolástárhoz, és megkért, hogy végezzek el egy kódellenőrzést. Javaslatokat kellett tennem a kód javításának módjáról, és meg kellett beszélnem a helyszínen a kérdezőkkel.
Körülbelül egy napot vettem igénybe a kód átnézése, kinyomtattam papírra (kb. 5 oldal hosszú 10pt betűtípussal), és a fejlesztési területeket megjegyeztem a papíron. Ez hasznos gyakorlatnak bizonyult, amint később felfedezem.
A helyszíni interjú
A helyszínen összesen 3 forduló volt, közöttük ebéd került (szójáték célja):
- Szélesség (75 perc)
- Mélység (75 perc)
- Ebéd
- Legjobb osztályozás (90 perc, opcionális )
Egy dolgot ki kell hívni, hogy a Twitter helyszíni fordulóiban 2 kérdező volt minden körben.
Eleinte félelmetesnek érezte, két kérdező bámulta le, akik minden mozdulatom alapján ítéltek meg engem. De a valóságban tetszett, ahogy éreztemsokkal együttműködőbbek vagyunk, és ötleteket csapkodtunk le egymásról.
Szélesség (rendszerterv)
A Breadth (System Design) interjú témák széles skálájára összpontosít, hogy megértsék, mennyit tud a rendszer nulláról történő tervezéséről . A cél az, hogy a jelöltet a határukig feszítsék, és megnézzék, meddig mehetnek el.
Ilyen kérdéseket tettek fel:
Képes megbízható rendszert felépíteni, ésszerű leállással, a felhasználói felület beállításától a HTTP API-n keresztüli kommunikációig, a háttérszolgáltatás kiépítéséig?Élveztem a beszélgetést, mert mindig is szerettem különböző technológiákkal bütykölni. Ha szereted a dolgok építését, akkor ezt a kört is kedveled. A kérdezők nagyon kedvesek voltak, és udvariasan végigkalauzoltak az interjú során.
A végén egy kódolási kérdéssel fejeztük be. Őszintén szólva nem emlékszem, mi volt, de nem volt semmi rendkívüli.
Mélység (folytatás)
A Depth interjú sokkal inkább a korábbi projektjeimre és szakértelmemre koncentrált. Ez őszintén szólva sokkal intenzívebb és nagyobb kihívást jelentett, mert a kérdező mélyen belemerült az általam épített projektek minden aspektusába, és megtámadta a tervezési döntéseimet.
Milyen projektet épített a közelmúltban? Miért építetted? Milyen alternatívákat fontolgattak? Végül működött?Indítási háttérből származom, én voltam felelős azért, hogy sok mindent felépítsek a semmiből, például az AWS-klasztereket és az SQS-eket a feladatok feldolgozásához.
Annak ellenére, hogy sok projektet alaposan megismertem, ez a kör a határok közé szorított. Vissza kellett lépnem a tapasztalataimra, és az én szemszögemből el kell mesélnem a történetet - miért terveztünk bizonyos dolgokat bizonyos módon, és voltak-e jobb / rosszabb megközelítések, amelyekre gondoltunk. Nincs kódolási kérdés ehhez a fordulóhoz.
Legjobb osztályozás / kulturális
A kulturális forduló 90 perces interjú volt a felvételi vezetővel és a vezető vezetéssel.
Később rájöttem, hogy ha bekerülsz ebbe a körbe, ez azt jelenti, hogy technikailag elég jól teljesítettél, és mindkét irányban kulturális illeszkedést keresnek - függetlenül attól, hogy beilleszkedsz-e a kultúrájukba, és megfelelő lehetőségekkel rendelkeznek-e neked.
Nincs kódolási kérdés erre a fordulóra sem.
Interjú folyamata retrospektív
A Twitteren készített interjúk nagy hangsúlyt fektetnek a számítástechnika alapjaira . Tehát győződjön meg arról, hogy ismeri az adatszerkezetét fentről lefelé és balról jobbra. Célszerű áttekinteni az összes alapvető algoritmust, amelyet megtanult volna a CS101 osztályában.
Íme néhány további tipp:
Ismerje meg alaposan algoritmusait
Értse meg, hogyan működnek az időbonyolultság és az űrbonyolultság kompromisszumai .
Nagyon jól tud egy nyelvet
Egy nyelv ismerete és megértése nagyon jól segített. Ehhez valami olyasmit ajánlok, mint Python vagy Java vagy C ++, mivel ezek nagyon gyakran használt nyelvek.
Én személy szerint élvezem a Python használatát, mert nagyon könnyen olvasható, nagyon könnyen megmagyarázható, és egy csomó adatstruktúra van beépítve.
Végezzen el egy összefoglaló értékelést
Győződjön meg róla, hogy az önéletrajzomban felsorolt projektek felgyorsítása érdekében Ez azt jelentette
- a szoftver teljes felépítésének megértése, amellyel végpontok között végeztem a felelősséget,
- - a rendszerben elért kompromisszumok megértése , és
- okai vannak annak, hogy miért építették fel így a rendszereket , és melyek voltak az alternatívák.
Legyen fegyelmezett a felkészülés során
Találja ki előre azokat a területeket, ahol hiányzik, és állítson be ütemtervet a gyakorláshoz. Fontos, hogy következetes, megszakítás nélküli gyakorlatot folytasson.
Rossz lábon kezdtem, és azt kívántam, bárcsak tudtam volna ezt korábban, hogy ne vesztegessem az időt rossz dolgokra.
Gondoljon azokra a rendszerekre, amelyekkel nap mint nap együttműködik
Kitalálja a kompromisszumokat, alternatívákat, előnyöket és hátrányokat, és hogyan építhet jobb rendszert. Ez a készség nagyon messzire visz a szoftverfejlesztésben.
Források, amelyeket ajánlok
- A technikai interjú elnyerése: Személyre szabott coachingom, hogy segítsem a technikai interjú elkészítését a csúcstechnológiai vállalatoknál.
- Leetcode.com: Itt gyakorolhatja a kódolási problémákat.
- Nézze meg ezt a források oldalt további felszerelések, eszközök és könyvek számára, amelyeket nagyon ajánlok.
További cikkeket olvashat a technológiáról a személyes blogomon, ahol megosztom utamat, hogy professzionális szoftvermérnökké váljak.
Ha tetszett ez, kérjük, fontolja meg, hogy megossza ezt valakivel, aki profitálna belőle, és kövessen a Youtube-on, a LinkedInk-en és a Twitteren.
Új tanfolyamot indítok, amely bemutatja, hogy mit kérdeznek a kérdezők, hogyan készülhet fel, és hogyan lehet maximalizálni az interjúk eljutásának és a kívánt munka megszerzésének esélyét.