Hogyan jutottam el egy szoftvermérnök álláshoz a Twitteren

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.