Végső útmutató:

A szoftvermérnöki pálya hihetetlenül kifizetődő karrier lehet. Megfelelő felkészülés nélkül azonban nehéz lehet megszerezni az elképzelt szoftvermérnöki állást. Ezt én is megtanultam, amikor a főiskolán informatikai kurzusokat vettem fel, hogy szoftvermérnöki (SWE) állást kapjak.
Egy tucatnyi szoftverfejlesztői állásra interjúztam a legtöbb megnevezett technológiai vállalatnál: Google, Apple, Microsoft, és olyan (akkori) startupoknál, mint a Snapchat és az Uber. Itt összefoglalom az állásfelkészítés és az interjúk során szerzett tapasztalataim tanulságait, hogy segítsek felkészülni a szoftvermérnöki világba vezető útra: az ötleteléstől kezdve azon, hogy mely cégeknél érdemes jelentkezni, a LinkedIn-en hideg üzenetet küldeni egy toborzónak, tökéletesíteni az önéletrajzot, hogyan néznek ki jellemzően az interjúk, és milyen informatikai témákat érdemes tanulni.
Ez az egyetlen útmutató, amire szüksége van ahhoz, hogy belépő szintű szoftvermérnöki állást kapjon.

A cégekhez való jelentkezés

Néhány nagy cég alkalmaz belépő szintű mérnököket. Általában ezek általános, friss diplomás munkakörök (nem kifejezetten iOS-fejlesztői állásinterjúra jelentkezel). Ne hagyd figyelmen kívül a nem technológiai cégeket sem. Minden iparág tech-tehetségeket keres, és a tech minden területet izgalmas módon felráz.
Ezeket a munkaköröket vagy a főiskolád karriervásárán találhatod meg, ha beszélsz egy toborzóval, vagy ha a következő kulcsszavakra keresel rá a Google-ben: cég neve + egyetemi karrier.
Ha nem vagy egyetemista, hanem inkább egy kódolótáboron keresztül vagy saját magad tanítottad meg kódolni, akkor ez szintén jó kiindulópont. Ezek mellett a diákmunkák mellett gyakran hirdetnek ki belépőszintű állásokat is. Ha azonban a karriered közepén állsz át, akkor lehet, hogy egy kicsit több kapcsolatépítésre lesz szükséged (barátokon, rendezvényeken vagy toborzókon keresztül).
Itt van néhány ötlet, hogy hol kezdj el keresgélni:

  • Big tech (Facebook, Apple, Amazon, Google, IBM, Cisco)
  • Tech startupok (Snowflake, DoorDash)
  • Finance (Goldman Sachs, Visa, Robinhood)
  • Entertainment (Disney, Viacom)
  • Retail (Macy’s, Target, Walmart)
  • Védelmi/űrhajózás (Boeing, Northrop Grumman)

A tökéletes LinkedIn Cold Message

Kikerülhetetlenül lesznek olyan cégek, amelyek nem jelentkeznek, még akkor sem, ha közvetlenül jelentkeztél. Hogy megpróbáld beindítani a labdát, próbálj meg networkinggel eljutni egy interjúig. Ez történhet akár úgy, hogy megkeresed azokat, akik a hálózatodban vannak (öregdiákok vagy barátok), akár úgy, hogy magukat a toborzókat keresed meg.
Ez az én 5 szabályom a LinkedIn-es hideg üzenethez:

  1. Nézd meg, hogy egy közös kapcsolat be tud-e mutatni – Az emberek kevésbé valószínű, hogy figyelmen kívül hagyják azokat, akiket már ismernek.
  2. Fogalmazd tömören – Az emberek elfoglaltak. Ne adjon nekik ürügyet arra, hogy részben olvassák el az üzenetét, mielőtt elvetnék azt.
  3. Keresd meg a közös pontokat – Ha mindketten ugyanabba az iskolába jártatok, vagy ugyanannál a cégnél dolgoztatok, említsd meg ezt a tényt, hogy ismerősséget teremts.
  4. Legyen közvetlen – Ne kerülgesse a bokrot azzal, hogy csevegni próbál. Ez nem a megfelelő hely erre.
  5. Mutassa meg hitelességét – Ha van releváns tapasztalata, mondja el. Ha különleges meglátásaid vannak, adj ízelítőt.

Itt van egy LinkedIn hideg üzenet sablon, amivel elindulhatsz:
Hé, nagyon érdekel a csatlakozás, és megnézzük, hogy van-e kölcsönös megfelelés! Én egy korábbi @ . Szeretnék beszélgetni.
Példa:
Hey, very interested in joining Roblox and seeing if there is a mutual fit! Én egy korábbi PM @ Rockstar Games vagyok. Szeretem a strukturálatlan közösségi játék koncepcióját. Would love to chat.

Összeírás

A jó önéletrajz megírása művészet, ami két dologból áll: formátum és tartalom.
A legnagyobb hiba, amit az emberek a formátummal kapcsolatban elkövetnek, hogy túl sok információt adnak hozzá, így az önéletrajz végül két vagy akár három oldalas lesz. Ez felesleges. Maradjon egyszerű. Az önéletrajzodnak csak egy oldalasnak kell lennie. A dőlt betűs és félkövér formázást használd stratégiailag; ezeket tényleg csak arra használd, hogy segítsd a toborzót vagy a felvételi menedzsert abban, hogy megértse, ki vagy te, és mit teszel le az asztalra (pl. csak a szakaszok és a cégnevek félkövérrel való kiemelésére használd).
A tartalom tekintetében ügyelj arra, hogy kevesebb szóval többet mondj. Vágja ki a puffogtatást, és helyette használjon mennyiségi számadatokat. A számok kézzelfogható bizonyítékot szolgáltatnak az Ön hozzájárulásáról. Próbáljon meg a kemény képességeire összpontosítani. Nem kell feleslegesen elmondani a toborzónak, hogy Ön nagyszerű csapatjátékos, látnok vagy keményen dolgozik. Ezt bárki elmondhatja. Ehelyett mutassa meg tettekkel, hogyan segítette a csapatát.
További információkért tekintse meg ezt az ellenőrző listát, hogy szoftvermérnöki önéletrajza csiszolt és kész legyen.

Egy tipikus interjú

Tapasztalataim szerint a szoftvermérnöki interjúk folyamata nagyjából ugyanaz minden vállalatnál, legyen szó akár a Google-ről, akár egy kis startupról, amely éppen most emelte a B sorozatot. Ez az, amire ésszerűen számíthatsz az interjú során.

Viselkedéses

A viselkedéses kör jellemzően telefonon zajlik egy toborzóval vagy a szerepkör felvételi vezetőjével. Ebben a beszélgetésben a vállalat azt szeretné kideríteni, hogy alkalmas lennél-e a szerepre, mind a tapasztalataid, mind a kommunikációs képességeid alapján (és azért, hogy felmérjék, problémás lehet-e veled együtt dolgozni). Legyen jól tájékozott az önéletrajzában, mivel valószínű, hogy a toborzó vagy a felvételi vezető ebben a beszélgetésben az önéletrajzában felsorolt tapasztalatokról fog kérdezni.

  • Még több viselkedési kérdés: https://www.tryexponent.com/courses/software-engineering/common-behavioral-questions

Kódolási kihívás

A viselkedéses interjú után kaphat egy kódolási kihívást, amelyet a saját idejében kell teljesítenie. Ez azt jelentheti, hogy kapsz egy követelménylistát és egy vázkódot. Ezután arra kérnék, hogy fejezze be a kódot, és a kód saját környezetben történő befejezése után küldje be.
A vállalatok gyakrabban használják a Hackerrankot (vagy ehhez hasonló eszközöket). Ez egy online, böngészőalapú kódolási környezet. Javaslom, hogy regisztráljon egy fiókot, és gyakorolja a használatát az interjúkra való felkészülés során, hogy megismerkedjen a környezettel.
Egyes esetekben a vállalatok azt akarják, hogy először a kódolási kihívást teljesítse, mielőtt egyáltalán behívják a viselkedési körre. Ez azért van így, mert lehet, hogy sok jelöltjük van a tölcsér tetején, és van valamilyen automatizált módszerük arra, hogy kiszűrjék azokat a jelölteket, akiknek a kódja nem felel meg elegendő tesztesetnek.

  • Próbálja ki ezt a “tömbök különbsége” problémát: https://www.tryexponent.com/courses/software-engineering/difference-of-arrays

Telefonos/videós interjú

Egytől háromig terjedő telefonos interjúval találkozhat. Ezek jellemzően adatszerkezetekről és/vagy algoritmusokról szólnak.
Tipikusan egy megosztható dokumentum linkjét kapod (például Google doc vagy CodePen). Ezekkel mind Ön, mind az interjúztatója valós időben láthatná, hogy mit gépel. Bemutatnának egy kódolási problémát, és miközben írja a kódot, az interjúztató láthatja a fejlődését.
Készüljön fel az általános adatszerkezetek és algoritmusok implementálására. Tanulmányozza a könnyű/közepes Leetcode kérdéseket.
Mindig a naiv megoldást adja meg először. Szoftverfejlesztőként mindig a legoptimálisabb kódot akarjuk megírni. De egy interjún előfordulhat, hogy az idő elfogy, mielőtt befejezné az optimális megoldást. Legalább néhány pontot szerezhet az interjún, ha az idő az optimális megoldás megírása közben fogy el, de már bemutatta a nyers erő/naiv kódot.
Néha ezeken a telefonos interjúkon rendszertervezési kérdésekkel is találkozik.

  • Gyakorolja a Reddit architektúrájának tervezését: https://www.tryexponent.com/courses/software-engineering/design-reddit

A helyszínen

A helyszíni kérdések hasonlóak a telefonos interjú kérdéseihez. Ha idáig eljutottál, veregesd meg a válladat. Már majdnem célba értél! Ebben az utolsó fordulóban valószínűleg egy táblán fogsz kódolni — ezért ezt gyakorold, mielőtt bemész az interjúra (néhány vállalat, például a Snapchat megengedheti/megkérheti, hogy saját laptopot hozz magaddal a helyszíni kódoláshoz).
Jellemzően van egy ebédkör is, ahol együtt ebédelhetsz a csapattal.

Mit kell tanulnod

A kódolás mind a fejlesztői környezetben, mind a táblán való kódolásban legyen nagyon kényelmes. Itt részletezem, hogy milyen kódolási témákat érdemes tanulnod.

Viselkedés

Ezek a kérdések már az első telefonbeszélgetésen felmerülnek, de ahogy végigmész az interjún, elkerülhetetlen, hogy ezek a kérdések újra felmerüljenek (pl. ebéd közben a helyszínen). Próbálj meg tömören fogalmazni, beszélj magabiztosan (a mondataidat lefelé irányuló hanglejtéssel fejezd be), és iktasd ki a szókincsedből a töltelékszavakat (uh, um, like).

  • Beszélj magadról.
  • Miért szoftverfejlesztés?
  • Beszélj arról, amikor hibát követtél el.
  • Beszélj a projektedről, x-ről, és arról, hogy mivel járultál hozzá.

Programozási nyelvek

A tapasztalatom szerint a cégek lehetővé teszik, hogy azon a nyelven kódolj, amelyiken a legjobban érzed magad. Az egyetemi informatikai kurzusaimon (a UCLA-n) mindannyiunkat C++-ra tanítottak. Én azonban az összes interjúmat Java vagy Python nyelven csináltam. Nagyon könnyűnek találtam más nyelvek elsajátítását, amint megismerkedtem a szintaxisával.
Azt javasolnám, hogy kérdezd meg a toborzót vagy a felvételi menedzsert, hogy az interjúk megkövetelnek-e valamilyen konkrét nyelvet. Ellenkező esetben menj azzal a nyelvvel, amellyel kevésbé valószínű, hogy hibázol.

Adatszerkezetek

Legyen tisztában az ezen adatszerkezetek körüli kódolási kérdésekkel. Legyen tisztában a kompromisszumokkal, valamint az egyes struktúrák idő- és térkomplexitásával is.

  • Mátrix
  • Hivatkozott lista
  • Három/gráf
  • Hashtábla
  • Sorozat/Queue
  • Heap

Algoritmusok

Legyen tisztában az ezen algoritmusokkal kapcsolatos kódolási kérdésekkel. Legyen tisztában a kompromisszumokkal, valamint az idő- és térkomplexitással is.

  • Keresés (és gráfkeresés)
  • Sortírozás
  • Dinamikus programozás

A feladatkör és a vállalat függvényében bitmanipulációs problémákat is kérhetnek Öntől.

Források

Szerencsére rengeteg online forrás létezik, amelyek segítik az utadat. Ezeket ajánlom:

Leetcode

A kódolási kérdések többségét megtalálod a Leetcode-on. Ha nagyon jó leszel ezekben a táblás kérdésekben, akkor készen kell állnod. Készülj fel a könnyű/közepes kérdésekre, de próbáld ki a nehezebb kérdéseket is — különösen, ha továbbjutsz a helyszíni fordulókra.

Exponent

Az Exponent Software Engineering Interview tanfolyama az egyetlen tanfolyam, amire szükséged van. Irányított cikkeket és videókat tartalmaz, amelyek segítenek felfrissíteni a tudásodat/tanulni az adatszerkezeteket és algoritmusokat, amelyekre szükséged van az interjún — mindezt egy helyen. Ráadásul az Exponent egy átfogó rendszertervezési interjú tanfolyammal egészítette ki a nehezebb rendszertervezési kérdések némelyikét.

GeeksforGeeks

GeeksforGeeks a legjobb megoldásokat kínálja a kódolási kérdésekre. A GeeksforGeeks a legtöbb interjúkérdésre, amellyel szembesülhetsz, nemcsak a naiv megvalósítást mutatja meg, hanem az optimalizált megoldást, valamint az idő- és térkomplexitást is.

r/CSCareerQuestions

Ez a Reddit-oldal (subreddit), az r/CSCareerQuestions, a feltörekvő és tapasztalt szoftvermérnökök közössége. Ezt használhatod arra, hogy elolvasd mások tapasztalatait az egyes cégeknél folytatott interjúkról, vagy hogy te magad is feltehesd kérdéseidet. Egy figyelmeztetés: ennek az subredditnek a tagjai nagyon megszállottak a cégek presztízsével és javadalmazásával kapcsolatban. Jó, ha megcélzod a top nagy tech FAANG cégeket, de ne felejtsd el mindig a földön járni — van egy világ a tech-en kívül is!

Wrapping Up

Sok ember választja a szoftvermérnöki pályát számos ok közül egy vagy több miatt. Lehet, hogy azért akarsz szoftvermérnök lenni, mert szeretsz dolgokat építeni. Vagy talán inspirál, hogy a technológia hogyan változtatja meg a világot. Vagy talán csak egy szilárd karrierutat szeretne, jó kereseti lehetőségekkel (ezzel nincs semmi baj!).
Vezessen egy következetes tanulási ütemtervet (pl. minden második nap 1 Leetcode-kérdés), és tartsa be azt.
Amíg az interjúra való felkészülésen dolgozik, az Exponent mindig itt van, hogy szükség esetén segítsen. Ha felfrissítésre van szüksége, az egyik forrás, amit ajánlok, az a Software Engineering Interview Course, amelyet olyan szoftvermérnökök állítottak össze, akik az iparág néhány vezető technológiai vállalatánál dolgoztak.

Szólj hozzá!