Az igazságról írok, nem tippekről és trükkökről
Frissítve:
Ez egy átfogó útmutató, amely mindent tartalmaz, amit a kódolási interjúról tudni kell. Alaposan elmagyarázza, mit kell tanulni, hogyan kell tanulni, és ami még fontosabb, hogyan kell bemutatni a megoldást az interjún.
Ha szeretnél átmenni a kódolási interjún, akkor a megfelelő cikket találtad. Miután ezt elolvastad, talán kísértésbe esel, hogy más cikkeket is keress ugyanebben a témában, mert “Talán találok még több tippet és trükköt, ami segít nekem.”
Ne keress tippeket és trükköket, ez az, ami távol tart téged álmaid állásától.
Nincsenek tippek és trükkök ahhoz, hogy megkapd azt az állást. Ez csak kemény munka, pont. Tehát ha tényleg le akarod zúzni azt az interjút, menj és gyakorolj, miután elolvastad ezt a cikket.
A cikk három részből & három videóból áll, és körülbelül 30 percet vesz igénybe az elolvasása.
- Mi a kódolási interjú?
- Hogyan készülj fel a kódolási interjúra?
- Hogyan add a legjobbat a kódolási interjún?
Először is hadd mutassam be, hogy tudd, magabiztos vagyok abban, amiről beszélek.
A nevem Andrei, és az elmúlt öt évben versenyszerűen programoztam. Részt vettem a Google HashCode, a Google által szervezett legnagyobb algoritmikus verseny világdöntőjén, előtte pedig három aranyérmet nyertem a romániai számítástechnikai olimpián. Ezen tapasztalatok birtokában kiadtam a “Bevezetés az algoritmusokba és adatszerkezetekbe C++ nyelven” című online kurzust, amely 135 országból több mint 8000 diáknak segített az első lépések megtételében.
Most informatikát tanulok a University College Londonban, és közben egy olyan kurzust készítek, amely segít diákoknak és fiatal szakembereknek felkészülni a nagy technológiai cégeknél a kódolási interjúkra. Ezért ebben a cikkben szeretném megosztani a kódolási interjúval kapcsolatos tapasztalataimat, és elmondani, hogyan lehet a legegyenesebben átmenni rajta. Itt érhetsz el engem.
Hadd tegyek fel egy kérdést: álmodtál már arról, hogy egy nagy technológiai vállalatnál, például a Microsoftnál dolgozol? Ha igen, biztos lehetsz benne, hogy a legtöbben közülünk is álmodtunk róla. És mivel néhány tucatnyi állásra ekkora a kereslet, szükségük van arra, hogy lássák, mely jelentkezők a felkészültebbek.
Mielőtt meghívnak a kódolási interjúra, jelentkezned kell a pozícióra, és olyan önéletrajzzal kell rendelkezned, amely kiemelkedik a többi közül. Ebben a cikkben a tényleges kódolási interjúról fogok beszélni, és arról, hogyan készülhetsz fel rá, nem pedig az állásra való jelentkezés folyamatáról.
A legtöbb technológiai cégnél a kódolási interjú Algoritmusok & Adatszerkezetek problémákból áll. Gondolj ezekre úgy, mint problémamegoldó kérdésekre, amelyekben az interjúztató azt szeretné felmérni, hogy képes vagy-e megoldani egy olyan problémát, amellyel korábban még nem találkoztál. Egy interjú nagyjából 45 percig tart, és egy vagy két kódolási feladatot kapsz. Az interjúztató elvárja, hogy találd meg a legoptimálisabb megoldást, kódold azt, és magyarázd el, mit kódoltál éppen.
Végül lehetőséged lesz arra, hogy feltegyél neki néhány kérdést a vállalatról vagy bármi másról, ami érdekel téged. Mindezeket a lépéseket a cikk utolsó részében átfogóan tárgyaljuk.
Hogyan készülj fel a kódolási interjúra?
Már az elején szeretném tisztázni veled: nincs ilyen rövidítés vagy trükk az interjún való megfeleléshez. Az algoritmikus problémák optimális megoldásának egyetlen módja a gyakorlás, minél több probléma megoldása.
Két szóval: kemény munka.
Ez lehet, hogy nem tetszik, és elkezdesz máshol keresni egy trükköt, hogy megértsd, hogyan kell megoldani az interjúkérdéseket, de ilyen nem létezik. Gondolkodj el egy pillanatra: ha létezne ilyen trükk, miért nem használja mindenki, és miért nem megy át az interjún?
Szóval, meg kell értened, hogy az interjún való megfelelés egyetlen változója az, hogy mennyit gyakorolsz előtte. A tapasztalatod, az intelligenciád és minden más már fix. Ennélfogva a gyakorlásra fordított idő jelenti a különbséget a sikeres és a sikertelen jelentkezők között.
A kódolási interjú egy harc önmagaddal, és a győzelem egyetlen módja, ha sokat gyakorolsz.
Az első lépés az, hogy otthonosan mozogj egy általános kódolási nyelven, például C/C++, Java vagy Python. Egyes cégek más nyelveket is elfogadnak, az egyértelmű többség azonban ragaszkodik ehhez a három nyelvhez. Válassza ki azt, amelyik a legjobban tetszik, és ragaszkodjon hozzá. Ne döntsd el a felkészülés felénél, hogy nyelvet akarsz váltani! A cikk további részében feltételezem, hogy választottál egy nyelvet, és jól ismered a szintaxisát.
A kódolási interjú jellemzően az algoritmusokról és az adatszerkezetekről szól. Ezek néhány alapvető témakört tartalmaznak, amelyeket alaposan meg kell értened, és eszedbe se jusson elmenni az interjúra anélkül, hogy ne éreznéd jól magad ezekben.
Az alábbiakban felsoroljuk azokat az Algoritmusokat és Adatstruktúrákat, amelyeket ismerned kell. Fontosságuk sorrendjében írtam le őket, és ez a legjobb tanulási útvonal.
1) Big O komplexitás: Ez kötelező, és az algoritmikus gondolkodásod alapját képezi. Értsd meg, mit jelent, és juss el arra a pontra, amikor egy alapvető algoritmus bonyolultságát már ránézésre is meg tudod mondani.
2) Táblák: Ezen a ponton már tisztában kell lenned a tömbök fogalmával. Ez a téma olyan problémákra vonatkozik, ahol a tömböt csak tárolásra használjuk, és a megoldás olyan alapvető technikákat tartalmaz, mint például az iterálás két mutatóval. Klasszikus probléma annak ellenőrzése, hogy egy adott tömb permutáció-e.
3) Sztringek: Tudja, hogyan manipulálhat egy karakterláncot a nyelvén, és ismerje azokat a feladatokat, amelyekben ezek összekapcsolását vagy elforgatását kéri.
4) Összekapcsolt listák: Gyakori, hogy az interjún összekapcsolt listás problémával találkozol. Itt különös figyelmet kell fordítanod a sarokesetekre. Gondolj arra, mi történik, ha az összekapcsolt lista üres? Vagy csak egy eleme van? Vagy az utolsó elemig akarsz iterálni? Amikor összekapcsolt listákkal oldasz meg egy feladatot, gondold át a sarokeseteket.
5) Hash-táblák: Alapvető adatszerkezet, amely a legtöbb interjúban jelen van. Ha mélyebben elmélyülsz egy témában, válaszd a hash táblákat. Legyél jártas a nyelved hash-táblák könyvtárában, és gyakorolj legalább öt problémát. A végén vállalja a következő kihívást: Hogyan találná meg a leghosszabb, különböző bejegyzéseket tartalmazó altáblát?
6) Halmazok: Ismerkedj meg azzal a gondolattal, hogy a veremnek csak az egyik végét tudod manipulálni. Oldja meg ezt a kihívást: Implementáljon egy veremet MAX API-val, ami azt jelenti, hogy minden pillanatban megkérdezheti, hogy mi a maximális elem a veremben.
7) Sorok: Ne tévesszük össze őket a veremmel, mert két végük van. A klasszikus problémát, a sorban állás szimulálását két verem segítségével valósítsuk meg.
8) Mohó: Ez a technika elég egyszerű, és valószínűleg minden nap használod. Alapvetően arra utal, hogy egy adott pillanatban a lehető legjobb döntést hozzuk meg, anélkül, hogy figyelembe vennénk a jövőbeli következményeket. Gyakorolj néhány problémát, és ne hidd, hogy minden problémát meg lehet oldani a Greedy segítségével.
9) Primitív típusok: Leginkább a bitek manipulálásával és a számokkal végzett alapvető műveletekkel foglalkozik. Néhány probléma azonban elég trükkössé válhat. Hogyan lehet megszámolni az 1-esek számát egy bináris ábrázolásban?
10) Bináris fák: Koncentráljunk a traverzálásra, a közös ősökre és a fák rekurzív iterálására.
11) Halmok: Széles körben használják őket a való világ alkalmazásaiban, ezért ismerje meg a heapeket! Gyakoroljon addig, amíg nem lesz biztos abban, hogy mikor kell min-heapet vagy max-heapet használni. Hogyan nyomtatná ki a legnagyobb öt elemet egy számsorozatból? Min-heapet vagy max-heapet használsz?
12) Keresés: A keresés olyan alapvető téma, amelyet mindenkinek ismernie kell. Ezért gyakorolj legalább három feladatot a bináris keresés segítségével.
13) Rendezés: Győződj meg róla, hogy meg tudod valósítani a mergesortot és a quicksortot. Ismerje nagyon jól a legjobb, átlagos és legrosszabb esetük bonyolultságát. Ha van ideje, tanulja meg a Heapsortot is.
14) Bináris keresési fák: Széles körben kérdezik őket a kódolási interjún, és meg kell tudnod valósítani minden alapvető műveletüket, beleértve egy elem törlését is!
15) Visszakövetés: Alapvetően az összes lehetséges megoldás generálását jelenti, és azokat választja, amelyek tiszteletben tartják a követelményeket. Implementálja a halmaz hatványhalmazának generátorát és az n-királynő problémát.
16) Gráfok: Valószínűleg ezek az informatikában leggyakrabban használt adatszerkezetek. Tudtad, hogy minden közösségi hálózat nem más, mint egy hatalmas gráf? Gyakoroljuk a gráf másolatának elkészítését a memóriában és a gráfokban lévő ciklusok felismerését.
17) Dinamikus programozás: A dinamikus programozást a legtöbben a legijesztőbb témának tartják. Pedig a legszebb, ha megérted a mögötte álló gondolkodást. Gyakorold tehát az öt leggyakoribb kérdést, és addig ragaszkodj hozzájuk, amíg meg nem érted, honnan jönnek a visszatérések.
A tanfolyamon, amit most készítek, az egyes témákat ebben a sorrendben magyarázom el. Még dolgozom a tanfolyamon, de a tanfolyam Facebook-csoportjához csatlakozva korai hozzáférést kaphatsz néhány leckéhez, és a visszajelzéseiddel is segíthetsz nekem.
Ha sok téma ismeretlen számodra, az azt jelenti, hogy rögtön e cikk után el kell kezdened gyakorolni. Nincs több online keresgélés más útmutatókban, csak menj és gyakorolj. Ne feledd, hogy az interjú egy harc önmagaddal, minél többet gyakorolsz, annál nagyobb az esélyed a győzelemre. Rajtad áll, hogy növeld a problémáid komfortzónáját.
Hogyan tudod a legjobbat nyújtani a kódolási interjún?
Az interjú öt részből áll, amelyeket részletesen tárgyalunk. Nézd meg a magyarázó videókat a valós példákért.
1) Bevezetés
Ezzel a résszel kezdődik az interjú, és körülbelül három-öt percig tart. Az interjúztató többet szeretne megtudni rólad, és lehetőséget ad arra, hogy bemutatkozz. Jellemzően az érdekli, hogy milyen projekteken dolgozott korábban, és melyik volt a leglenyűgözőbb. Most itt a lehetőség, hogy tündökölj, ne pazarold el!
Ne próbálj meg hízelegni. Könnyű kiszúrni a hamis személyiséget, aki megpróbál becsapni téged. Én és mindenki más is utálja az ilyen embereket, ezért mindenképpen mutasd meg az igazi személyiségedet.
Előre tudnod kell, mit fogsz mondani a kedvenc projektedről, ezért készülj fel rá az interjú előtt. Most a legtöbben csak két rövid mondatot mondanak, ami nem jó. Melyik válasz tetszik jobban?
1) “Egy webes alkalmazáson dolgoztam, amelynek célja a betegek jobb kezelése a kórházakban. A backendet Node.js-ben írtam.”
Az, ahogyan bemutatkozol, nagyon számít
2) “Egy projekt, amit nagyon élveztem, egy webes alkalmazás elkészítéséről szólt az Egyesült Királyság Nemzeti Egészségügyi Szolgálatának, hogy segítsen nekik jobban kezelni a betegeket a kórházban. Ez az egyetemi tanterv része volt, két hónapig tartott, és egy háromfős csapat vezetője voltam.”
A projektet egy alapötletből kiindulva valós alkalmazássá alakítottuk. Én voltam felelős a backend kódolásáért Node.js-ben és az adatbázis MongoDB-ben. Ez volt az első alkalmazás, amit ügyfélnek készítettem, és nem voltam jártas a webes technológiákban. A fejlesztési folyamat iteratív volt, és útközben elkövettünk néhány hibát.
A végén sok funkcióval túlteljesítettünk, és a kedvencem az, hogy a felhasználók frissíthetik a kórház szobáit, ahelyett, hogy keményen kódolva lennének.
Sok mindent megtanultam ebből a projektből, különösen azt, hogyan kell csapatban dolgozni. Voltak olyan pillanatok, amikor technikai vagy csapatproblémák merültek fel, de végül minden jól ment, és mi kaptuk az év legmagasabb pontszámát!”
Visszafordítsd ezt a prezentációt az előnyödre! Az interjúztatót valóban érdekli, hogy többet tudjon meg rólad, ezért kezdd a projekt tömör bemutatásával, elmagyarázva, miről is van szó. Ezután mondd el, mi volt a hozzájárulásod (ha egy okos ötlettel segítetted a csapatot, mondd el!), és mit tanultál a fejlesztési folyamatból. Azt is megemlítheted, hogy milyen változást értél el a felhasználók számára.
Egy-két percet kell beszélned a projektedről.
2) Értsd meg a problémát
A kérdező röviden elmondja a problémafelvetést, amit meg kell oldanod. Azért mondtam, hogy “röviden”, mert nem fog sok részletet mondani a megkötésekről, a sarokesetekről vagy arról, hogy hogyan kapod az adatokat. A feladatod része, hogy mindent megkérdezz, amire szükséged van a probléma megoldásához. Ismételd meg hangosan az állítást, hogy biztos legyél benne, hogy jól értetted.