Most kaptam fejlesztői munkát a Facebook-on. Így készítettem elő az interjúimat.

Most fejeztem be hét helyszíni interjút a Szilícium-völgy technológiai vállalatainál. Végül elfogadtam egy szoftvermérnöki munkára vonatkozó ajánlatot a Facebook-tól.

Így készültem ezekre az interjúkra, és mit tanultam útközben.

Többéves utam a Szilícium-völgy felé

Amikor az ausztrál egyetemen számítástechnikát tanultam, Szilícium-völgyben mindig szoftvermérnökként képzeltem el a jövőmet.

Imádtam azt az elképzelést, hogy a techipar összes innovációjának középpontjában álljak, valamint annak baklövéseivel. Ez a cél motivált. Összpontosított.

Elhagytam vezető iOS mérnök posztomat egy csodálatos melbourne-i vállalatnál, és visszaindultam szülővárosomba, Perthbe tanulni. Ott készülnék a Szilícium-völgyben előttem álló interjúkra. Tudtam, hogy hihetetlenül nehéz és fáradságos lesz.

Ha megemlíti a technikai interjú folyamatát egy szoftvermérnöki teremben, sokan felszólalnak a gyakori interjúkezelési gyakorlatok ellen. Sok érv abból az érvelésből fakad, hogy az algoritmusok táblára történő megoldása valójában nem jelenti a szoftvermérnök napi feladatait, és nem fordítja le azokat.

A cikk kedvéért nem megyek bele ebbe a beszélgetésbe. Ehelyett megvizsgálom ezeket a különböző típusú interjú gyakorlatokat a jelölt szemszögéből, és arra is koncentrálok, amit a folyamat során tanultam.

Az interjú készség

A felkészülés során mindig tudtam, hogy az interjúk kihívást jelentenek. De őszintén szólva fogalmam sem volt, milyen nehéz lesz, amíg térdig nem érek az első interjúmig.

Az interjúk előkészítése során mind fizetős, mind ingyenes szolgáltatásokat használtam, amelyek telefonon készített kódolási és táblázási interjúkat szimuláltak olyan emberekkel, akiknek gyakorlati tapasztalataik voltak a jelöltek megkérdezésében. Ezek a gyakorlati interjúk elengedhetetlenek voltak ahhoz, hogy elősegítsem a nyomást. De mint később rájöttem, ezek csak töredékét tették ki annak, amiből egy igazi interjú áll.

Azt tanácsolom, hogy ne álmodozzon interjút anélkül, hogy néhány gúnyos vagy valós interjú lenne az öv alatt. Az idegesség hihetetlenül elsöprő lehet, és csak gyakorlással lehet eltompítani.

Mint sok más dologban az életben, a gyakorlatban is javul a bizalom.

A különböző típusú interjúk, amelyekkel találkoztam

Ha az előzetes telefon képernyőkön felkészül és elég jól teljesít, lehetőséget kap arra, hogy a helyszínen jöjjön, és egész napos interjúkat folytasson. Ezek az interjúk általában négy-hat óráig tartanak, attól a vállalattól függően, amelyikkel interjút készítenek.

Szilícium-völgyi utam során összesen hét helyszíni interjút sikerült felsorakoztatnom. Ez egyedi perspektívát adott nekem az interjúk jelenlegi tájáról.

Jellemzően egy helyszíni három fő tantárgyat fog lefedni: algoritmus, architektúra tervezés és viselkedés, erre tanultam és készültem. Vannak olyan vállalatok, amelyek azonban úgy tűnik, hogy visszaszorítják ezt a tendenciát, és bővítik interjúikat, hogy még több gyakorlati készségre tegyenek szert.

Röviden áttekintem azokat a témákat, amelyekkel találkoztam.

Algoritmusinterjúk

A leggyakoribb típusú interjú, amellyel találkozni fog. A kérdező felkéri Önt, hogy oldjon meg egy táblán egy problémát, amely felméri az adatstruktúrákról, az algoritmusok rendezéséről, a rekurzióról, az idő / tér komplexitás elemzéséről, valamint a minta és az él-eset felismeréséről. Ebben az interjúban a legjellemzőbb módon előáll egy durva erő megoldása, majd megpróbálja javítani ezt a megoldást, és megvitatja a kompromisszumokat, ha vannak ilyenek, az Ön által javasolt különböző megoldásokkal.

Ez volt a felkészülésem kenyere és vajja, hat héten keresztül minden nap algoritmusokat oldottam meg egy olcsó letehető táblán, elemeztem azok idő / tér összetettségét, valamint megpróbáltam megérteni, mi történik az egyes kódsoroknál.

Személy szerint nagyon élvezem a tábla algoritmusokat, mert nem feltétlenül kell aggódnom a fordítható szintaxis megírása miatt (legtöbbször), ami lehetővé teszi, hogy kizárólag a problémára koncentráljak. Lehet, hogy más emberek nem szeretik a táblákat, de nekik azt mondanám, hogy következetesen gyakorolják, és ez megváltoztathatja a véleményüket.

Építészeti tervezés interjúk

Ez egy érdekes interjú, amelyet nagyon lebecsültem. Az interjúztató felkéri Önt, hogy tervezzen meg egy rendszert (természetesen egy táblára), például egy parkoló jegyértékesítő rendszert, chat Messenger-t, twitter-hírcsatornát, a többi gyakori rendszer mellett.

Amit értékelnek, az az, hogy miként vesz átfogó koncepciót és megtervez egy olyan rendszert, amely megfelel az összes követelménynek és korlátozásnak. De a jelölt feladata, hogy megfelelő kérdéseket tegyen fel, amelyek meghatározzák a követelményeket és a korlátozásokat. Ez az interjú inkább egy beszélgetés, amely összekeveredett néhány rajzdiagrammal és talán még az osztály strukturálásával is. Minden meglehetősen magas szintű, így nem fog írni tényleges implementációs kódot.

Természetesen a beszélgetést úgy kell irányítania, hogy fedezze a rendszerek működésével kapcsolatos ismereteit. Ha háttérmérnök vagy, akkor nem igazán foglalkozol az ügyfélalkalmazás részleteivel, hacsak nem rendelkezel valamilyen korábbi szakértelemmel az adott területen. IOS mérnök vagyok, így az architektúra mintáiról, a funkcionalitás modulálásáról, a tervezési mintákról beszéltem az API végpontok méretezésének módjáról, a dolgozók hozzáadásáról, az AWS-ről és hasonlókról.

Viselkedési interjúk

A kérdező kérdéseket tesz fel magáról, és arról, hogy hogyan kezel bizonyos típusú helyzeteket. Az erre való felkészülés nem olyan nehéz, mint a többi, de sok önvizsgálatot igényel a saját nevében.

A kérdések általában a következők mentén zajlanak:

Hogyan kezeled a kudarcot?

Mi a legnagyobb gyengeséged?

Hogyan oldja meg a konfliktusokat?

Mit tenne másképp?

Úgy érzem, elég nehéz lenne ezt elcsavarni, de sok embert hallottam. Megpróbálják gyengeségként álcázni erősségeiket, megtervezik a válaszukat valamire, amit úgy gondolnak, hogy az interjúztató szeretné hallani, vagy akár csak másokra hárítaná a sikertelen projektek hibáját.

"A gyengeségem az, hogy túl koncentrált vagyok"

„Jerry hibája volt, a projekt nagy részében beteg volt”

Ezeket a kérdezőbiztosokat képezték és kalibrálták a gagyi emberek azonosítására, és fokozott figyelmet fordítanak a baromságokra. Ez egy gyors módja annak, hogy a jelöltséget kidobják az ablakon. Csak légy őszinte, mutasd meg szenvedélyed a munkád iránt, birtokold a hibáidat, mutasd meg a fejlesztés iránti kezdeményezést és jól fogsz teljesíteni.

Culture Fit

Ezt általában a Behavioral interjúval párosítják, és arra összpontosít, hogy megállapítsa, összhangban van-e a vállalat értékeivel. Például a Facebook azt a hacker-szerű kultúrát követi, hogy merész és új ötleteket közvetít, kísérleti úton, nem félve megtörni a dolgokat. Míg az Airbnb egy olyan világot akar létrehozni, ahol az emberek úgy érzik, bárhová tartoznak, bárhová is mennek, ezért nagy vendéglátási képességekkel rendelkező embereket keresnek.

Sok nagy techcég nagy hangsúlyt fektet a kultúrára, és embereket alkalmaz az emberek értékeikhez való igazodása alapján. Ha e társaságok egyikével folytat interjút, fontos, hogy utánanézzen értékeiknek, és megtalálja azokat a korábbi tapasztalatokat, amelyeket képes összekapcsolni és közölni kérdezőjével.

Páros programozás

Egy érdekes kategória, amelyet egy másik mérnökkel párosítanak egy számítógép előtt, amelyet fejlesztői környezettel állítottak össze, hasonlóan ahhoz, amit a való világban használna. Kapsz egy alapfeladatot a követelmények felsorolásával, amelyeket teljesítened kell, miközben minden feladatot elvégez, az interjúkészítő arra kéri Önt, hogy hajtson végre több funkcionalitást az időkorlát eléréséig. Szabadon használhatja a kívánt erőforrásokat, például a Stack Overflow-t vagy az online dokumentációt.

Úgy érzem, hogy a jelölt sok sikerét ebben az interjúban a valós tapasztalatoknak való kitettség határozná meg. A táblával ellentétben a szintaktikailag helyes kód megírása szükséges, ezért ismernie kell nyelvét és környezetét kívülről és belülről, mert nem akar túl sok időt tölteni az interneten vagy a dokumentációk megválaszolásában.

Korábbi szerepem során tiszta kódot írtam, miközben egy feladaton dolgoztam, majd optimalizálás követte, miután úgy éreztem, hogy a feladat teljes. Ez a fajta munkafolyamat nem volt előnyös az ilyen típusú interjúk számára. Túl korán optimalizálva sikerült egy sarokba kódolnom magam, ami bonyolultabbá tette a felépülést. Megállapítottam, hogy a selejtes kód megírását és annak említését az interjúztatónak, hogy másképp csinálnám a gyártás során, elegendőnek tekintjük, mint a tiszta és optimalizált írást.

Hibák keresése és javítása

Mérnökökként sokat teszünk a hibák felkutatására és javítására, amelyekről különféle forrásokból számolunk be. Ebben az interjúban megkapja a megtalálandó és javítandó hibák listáját, valamint útközben azonosít más potenciálisan problémás kódokat.

Csak egy példát láttam ilyen típusú interjúban, és úgy érzem, hogy nagyon nehéz lenne valakinek valóban felkészülnie, főleg, ha junior. Minden kódoló környezetnek megvannak a maga kis furcsaságai és árnyalatai, sok javításom az IDE-vel (Integrált fejlesztői környezet) és az évek során felhalmozott kapcsolódó keretrendszerekkel kapcsolatos korábbi tapasztalatokból származik.

Tartományismeret tesztelése

A programozás alapvetően megegyezik a ma általánosan használt közös nyelvek többségével. Valószínű, ha ismeri az objektum-orientált programozást egy nyelven, ezek a képességek többnyire átkerülnek a másikra.

Ez az interjú azonban azokra a szempontokra összpontosít, amelyek nem vihetők át nyelvek vagy keretek között. Megbeszélgetünk az API-val, a memóriakezeléssel, a képességekkel, a megszorításokkal, az előzményekkel és így tovább kapcsolatos környezeti sajátosságokkal kapcsolatban.

A gyakorlás kihívást jelenthet ebben a témában. Hasonlóan a hibakeresési és javítási interjúhoz, úgy érzem, sok válasz a korábbi tapasztalatokból származna. A jelentkező szerep szintjétől függően az Ön által adott válaszok súlyozása eltérhet. Például, ha valaki junior szerepre pályázik, nem ismeri annak előzményeit, hogy miért épül fel egy API egy adott módon, akkor engedményt kaphat. Ha azonban egy vezető beosztásba jelentkező jelölt nem tudja, akkor szigorúbban jelölhetik meg őket.

Az operációs rendszerek megértése

Attól a szereptől vagy csapattól függően, amelynek interjút készít, készíthet interjút, amely kizárólag az operációs rendszerekre összpontosít. Ebben az interjúban olyan kérdéseket fognak feltenni neked, amelyek felmérik a számítógép operációs rendszerének alacsonyabb szintű mechanikájával kapcsolatos ismereteidet.

Kétségtelen, hogy ez az interjú elkapott. Az operációs rendszereket olyasmi volt, amit az egyetem elején tanultam, de a tudásom azóta homályossá vált a témában, ami a teljesítményemben is megmutatkozott.

Hogyan kell felkészülnöd

Mint korábban írtam, az interjúkészítés saját készség. Még akkor is, ha már nagy programozó vagy a napi munkádban, vagy nagyszerű érdemjegyeket szerzel a tanulmányaid során, ezek a készségek nem pontosan viszik át az 1: 1 arányt, amikor egy apró interjúteremben vagy. A kitartás, az ismétlés és az interjúkészítéssel és gyakorlattal való összhang az eredmény meghatározó tényezői lesznek.

Minimális tudás

Ha valaki azt kérdezné tőlem, hogy mit gondolok azokra a területekre, amelyekre összpontosítanék, akkor a következőket javaslom:

  • Tanulja meg először kézzel írni a kódot papírra és táblára, majd dobja be egy IDE-be a szintaxis kiemeléséhez, ennek a második természetűvé kell válnia.
  • Fejlessze mélyen az adatstruktúrák , erősségeik és gyengeségeik ismeretét egymáshoz képest. Rájöttem, hogy az adatstruktúrák és viselkedésük nulláról történő megvalósítása sokkal többet tanított, mint amit absztrakt fogalmaikból tudtam.
  • Teljesen értse a Big O jelölést mind az idő, mind a tér összetettségében, ez tökéletesen illeszkedik az algoritmusához és a válogatási kérdésekhez.
  • Fogja meg az összes főbb rendezési algoritmust, mert az idő / tér bonyolultságbeli különbségek potenciálisan kisiklik az optimális megoldást egy olyan algoritmus számára, amelyet megpróbál megoldani.

Mikor kezdjem

Idővonalától függően érdemes előbb, mint később elkezdeni. Az általam megkérdezett vállalatok közül soknak 12 hónapos lehűlési ideje volt, mielőtt egy bukott jelölt újra jelentkezhetett volna. A másik oldalon, ha tudod, hogy egy éven belül nem leszel kész, akkor akár most is elkezdheted a folyamatot, és egy kis ízelítőt kaphatsz arról, milyen érzés végigcsinálni az interjú folyamatát, így amikor készen állsz, az nyert ” közel sem olyan ijesztő.

Ne aggódj

Megvan ez.

Erőforrások

Gúnyinterjúk

  • interjúk.io (béta), Ingyenes
  • Pramp, Ingyenes
  • CareerCup, fizetett

Algoritmusok

  • A kód feltörése Interjú, könyv
  • bájt byte, Weboldal és YouTube
  • CS50, YouTube
  • Interjú torta, weboldal
  • HackerRank, Weboldal
  • LeetCode, Weboldal

Operációs rendszer

  • Operációs rendszer fogalmai, könyv

Építészeti tervezés

  • Bevezetés az építészet és rendszerek, YouTube oldalra

Viselkedés

  • Bevezetés a viselkedési interjúkba, YouTube

Ha tetszik, amit ma olvastál, megnézheted az iOS és a Swift fejlesztésről szóló többi cikkemet , vagy ha kapcsolatba szeretnél lépni, küldj egy tweetet, vagy kövess a Twitteren @andyyhope , ez igazán meghozza a napomat .

Andyy Hope (@AndyyHope) | Twitter

iOS mérnök. Blogger / a Swift és az iOS twitter.com hangszórója