5 dolog, amit tudnia kell egy programozási interjúban

Ez a cikk azoknak szól, akik megpróbálják megkezdeni programozói karrierjüket, vagy interjúra készülnek álmai munkájukért. Mint valaki, aki az interjúasztal mindkét oldalán állt, megértem, milyen érzés interjúalanynak lenni.

Ez a nem kimerítő kérdések felsorolása folyton az agyamon úszott.

  • - Beszélnem kell a kódommal?
  • "Milyen gyakran kell kommunikálnom a kérdezővel?"
  • „Ó, istenem, elfelejtettem példányosítani a változómat! El vagyok ítélve ?! ”
  • "Mit gondol a kérdező a válaszomról?"
  • - Rendben van, ha ezt csinálom?

… És a lista folytatódik ...

Nagyon ijesztő élmény. Ez nagyon nehéz. És rendkívül nehéz ebben a légüres térben működni, amikor minden egyes mondandója és minden írott dolga ellen megvizsgálják.

Interjúja álmai munkája, valami olyasmi, amiről 12 éves kora óta álmodozott. És mindez abban áll, hogy lenyűgözze valakit, akivel még soha nem találkozott 60 percen belül.

A küzdelemvalós.

1. Mindig gondolkodj előre

Gyakran hallja, hogy egy kérdező ezt kérdezi: „Rendben, azt hiszem, ez jól néz ki. Most hogyan javítaná ezt a kódot?

Ez egy gyilkos kérdés . És ez azért van, mert nem csak töltőanyag az idő múlására. A kérdező megpróbálja felmérni, hogyan gondolkodik:

  • kódminőség
  • néhány aggály / szűk keresztmetszet, amelyek nem merültek fel az algoritmustervezési munkamenet során
  • hogyan méretezné a kéznél lévő megoldást.

Az, hogy megoldotta a problémát, nem jelenti azt, hogy automatikusan kap ajánlatot.

Például, ha megnézi ezt az alábbi kóddarabot, mit csinál? Hogyan javítaná? Mi okozhatja a törést?

Mondja meg nekem az alábbi megjegyzésekben. Szeretném hallani a gondolatait.

Meglepetés ?: Ahhoz, hogy működőképes megoldással tudjunk előállni, a minimális b értéket figyelembe kell venni a pozíció szempontjából. Ezek a kérdések alapvető kompetencia tesztek. Ami elválasztja a jó jelölteket a nagytól, az a képesség, hogy a szükségesnél többet gondoljon.

Mit jelent ez egy kódolási munkamenetben

Gondoljon éles esetekre, méretezési kérdésekre, problémás területekre. Mindig gondolkozzon egy lépéssel előre. Ha rekurzív megközelítést alkalmaz, mi történne, ha nagy adathalmaz van? Ha kivonatoló algoritmust használ, hogyan kezelheti az ütközéseket? Mennyire valószínű, hogy ez megtörténik, és mi a legrosszabb eset?

2. Több válasz is van

A programozási interjúprobléma megoldásának mindig többféle módja van. Mindig . A probléma kezelésére általában többféle módszer létezik, amelyek némelyike ​​nem biztos, hogy optimális.

Az egyik kedvenc technikai Youtuberem megtanított arra, hogy a kódoló interjú mentális gyakorlat, hogy lássam, hogyan gondolkodik a jelölt. Kérdezői szempontból nem azt akarom ellenőrizni, hogy tudja-e a helyes választ. Igen, fontos, hogy írjon működő megoldást , de nem ez az egyetlen dolog.

Ennélfogva azt keresem, mennyire okos ez az ember, hogyan jön létre a megoldás, és milyen más kreatív megoldásokon gondolkodhat ez a személy.

Programozási gyakorlat, amely szemlélteti a véleményemet:

Két rendezett összekapcsolt lista egyesítése. (Leetcode-hoz van kapcsolva, ha szeretné kipróbálni a megoldást). Alapvetően ezt többféle módon kezelheti:

  1. Helyezze az összes csomópontot egy tömbbe, majd rendezze. Ezután hozzon létre egy mutatót, és kapcsolja össze a tömb minden elemét.
  2. Egyesítsd őket mutató manipulációval. Hasonlítsa össze a kettőt, amelynek nyomon követése kisebb, majd adja vissza az eredményeket a végén.

Milyen más módszerekre gondolhat?

3. Az OOP nem halott

Az objektum-orientált programozás nem halott. Ez néhány ember számára szeretet-gyűlölet kapcsolat, mégis értékes képesség. Ez az egyik alapvető képesség - programozási technika, amelyet minden programozónak ismernie kell.

Sok jelölt fejjel ugrik be egy programozási problémába anélkül, hogy tovább gondolná a kód egyszerűsítését. Régebben ebben a csomóban voltam, és be kell vallanom, néha még mindig csinálom.

Az a képesség azonban, hogy az összetett problémákat objektumorientált programozással egyszerűbb, kezelhetőbb darabokká alakítsuk, ritka és kincses készség.

Könnyű megírni a számítógépek számára a kódot. Az emberek számára nehéz kódot írni.

4. Készítse el önéletrajzát

Képzelje el, hogy álmai emberével szalagavató estére indul, és papucsban és ujjatlan pólóban jelenik meg a küszöbön.

Az ön önéletrajza a névjegye. Ez a vállalat első benyomása rólad.

Ha az álláskeresésbe kezd, akkor az első dolog, amit meg kell tennie, egy nagyszerű összefoglaló elkészítése. Ez az első számú dolog, amelyet az álláskeresők gyakran figyelmen kívül hagynak , és vitathatatlanul a legalacsonyabban függő gyümölcs.

Nagyon sok jelöltet látok, akik hetekkel, ha nem hónapokkal töltötték az interjúk kódolását. De ahhoz az időhöz képest, amelyet önéletrajzuk elkészítésére fordítottak.

5. Korai kommunikáció és gyakran kommunikáció

Amikor elkezdtem interjú, én tévelygő oldalán keresztül kommunikáló . Ez azt jelentette, hogy megpróbáltam átbeszélni minden egyes kódsort, amit írtam, még akkor is, ha ez egyszerű for-loop volt.

Nem vagyok az a típus, aki képes egyszerre beszélni és gondolkodni. Van, aki tehetséges módon képes hangosan gondolkodni, én viszont nem.

Olyan gyakran kommunikáljon, amennyire szüksége van . Igyekeztem korán és gyakran kommunikálni. Valahányszor kérdés merült fel, felvetettem a kérdezővel, és tudatta velük. Segített meghatározni, hogy jó irányba haladok-e, és helyes-e, ha nem.

A programozási interjú kemény és puha készségeket egyaránt keres . Az egyik vagy a másik hiánya határozott nemet jelent. További információért írtam egy részletesebb cikket arról, hogy hogyan lehet itt javítani egy szoftvermérnök puha képességeit.

Ne kényszerítse magát arra, hogy beszéljen minden egyes kódsoron. Ha a programozási nyelv néhány ezoterikus tulajdonságát használja, akkor elmagyarázhatja, ha elkészült az egész.

Mit jelent ez egy kódolási munkamenetben

Ha már kialakította a probléma megoldásának valamilyen módját, akkor udvariasan tudatja az interjúztatóval, hogy mélyen belemerül a kód megírásába. Ne érezze, hogy minden egyes kódsort meg kell magyaráznia.

6. [Extra] Használja az absztrakciót

Íme egy másik extra tipp, amelyet felvettem és amely óriási segítséget nyújtott interjúm során: az absztrakció használata komplex módszerekhez.

Az absztrakció használata a bonyolult megvalósítási részletek elrejtésére nem azt jelenti, hogy a szennyezett részeket a szőnyeg alá tolja. Ez azt jelenti, hogy a kevesebbet érted, az több. Ne feledje, hogy kódot ír, hogy az emberek megértsék. A jó megítélés itt bizonyosan extra brownie pontokat fog szerezni az interjúztatóval.

Mit jelent ez egy kódolási munkamenetben

Hasonlítsuk össze és állítsuk szembe ezt a két kóddarabot:

Véleményem szerint szerintem a jobb oldal sokkal tisztábbnak és sokkal könnyebben érthetőnek tűnik. Akkor tudok időt szakítani a megvalósításra getNeighbors, vagy isEmptyattól függően, hogy mit kérnek tőlem.

A legfontosabb itt az, hogy az absztrakció segített a kódom tisztán, jól olvashatóan és érthetően tartani. Ki ne szereti, ha a tortáját elfogyasztaná?

Miért akarom megosztani tapasztalataimat?

Valahogy csodával határos módon sikerült legyőznöm az akadályokat, és utat találtam álmai munkám felé. Ez korántsem az én kérkedésem. Egyáltalán nem az a szándékom.

Nagyon szeretnék segíteni más hozzám hasonló embereknek, akik küzdenek álmaik munkájának megszerzésével. Már átéltem. Megértem a programozási interjúra való felkészülés nehézségeit, verejtékét és könnyeit. Úgy gondolom, hogy a világ nem nulla összegű játék - minél több ember él jobban az életben, annál jobb lesz társadalmunk, és annál boldogabbak leszünk mindezek eredményeként. Ez egy win-win helyzet.

Remélhetőleg ezek a tippek segítséget nyújthatnak egy másik álláskeresőnek odakinn! Sok szerencsét! ?

Ha tetszett ez a cikk, íme még néhány ajánlott cikk, amelyet írtam:

  • Hogyan jutottam el a Microsoft, az Amazon és a Twitter ajánlataira Ivy-ligás végzettség nélkül
  • Hogyan írhatunk nagyszerű önéletrajzot a szoftvermérnökök számára
  • Hogyan automatizáltam az álláskeresést egy webrobot felépítésével
  • Hogyan kell megtervezni a rendszert

Erőforrások és eszközök, amelyeket ajánlok

  • A programozási interjúk elemei: Nagyszerű a nehezebb kódolási problémákhoz
  • Cracking The Coding Interjú: Nagyszerű az alapozó CS lefedésére
  • OneNote: Ezt használom az összes kódrészlet tárolására
  • Evernote: Minden másra
  • CodeRunner: Szeretem ezt a Mac alkalmazást! Ezt többször alkalmaztam alkalmi Python szkriptek / függvények futtatására, és ez elképesztően jól működik. ?
  • Jobscan: Egy barátja vezeti ezt a céget. Sok jó dolgot hallottam róla, és érdemes kipróbálni őket az ön áttekintő szűrőeszközéhez.
  • Refdash: Egy csomó volt Google-alkalmazott futtatja. A színlelt interjúk minősége itt? A kérdezők ex-Google munkatársak. Nagyon ajánlom kipróbálni őket.
  • CodePath: Egy non-profit szervezet, amely segít az embereknek felkészülni a technikai karrierre. Nathan és Tim nagyszerű emberek, és sokat tanultam tőlük. A közösség nagyon segítőkész, és mindenki hajlandó kezet adni.
  • Finom pontjelzők: Ezeket hozza be az interjúba. Nagyon ajánlom őket!

Zhia Chong a Twitter szoftvermérnöke. A seattle-i Ads Measurement csapatnál dolgozik, a hirdetések hatásának és megtérülésének mérésével a hirdetők számára.

Megtalálhatja a Twitteren és a LinkedIn-en.