Interjúk kódolása a kulisszák mögött - a jó és a rossz

Az interjú készség önmagában is készség. Lehetsz a legjobb fejlesztő a világon, de még mindig elcseszhetsz egy interjút.

Google: Mérnökeink 90% -a használja az Ön által írt szoftvert (Homebrew), de a bináris fát nem lehet invertálni egy táblára, így kibaszott.

- Max Howell (@mxcl) 2015. június 10

Hányszor jött ki egy interjúból, és azon gondolkodott, mit tettem rosszul? Miért utasítottak el engem?

Jelöltként sokat segít megérteni egy interjúban az elvárásokat.

Ebben a cikkben minden pályázó jelöltnek meg akarom mutatni a különbséget a jó és a rossz interjú között, és azt, hogy ezt hogyan fogadja a kérdező.

Összehasonlítunk és szembeállítunk két különböző interjút, és mindegyikből tanulunk, hogy az elvárásoknak megfelelően módosíthassa cselekedeteit.

Első interjú

Hadd tegyem ugyanazt a kérdést a fenti "bináris fa megfordítása" fölött.

Kérdező (I) : Üdvözlet, üdvözöljük cégünkben. Xxx vagyok, ééééééééééééééén. Mesélj magadról.

Jelölt (C) : xxx vagyok. Körülbelül 5 éves tapasztalatom van a Backend fejlesztésében. Szeretek technikai problémákat megoldani ...

I : Nagyon jó. Folytassuk tehát a problémamegoldó részt?

C : Persze!

I : Tehát kapsz egy bináris fát. Azt akarom, hogy fordítsa meg a bináris fát, és nyomtassa ki a kapott fát.

C : (Fejben gondolkodni) Hmmm Ok. Egy bináris fának két gyermeke van. Tehát feltételezem, hogy az invertálás azt jelenti, hogy levélről gyökérre nyomtatunk. Tehát ennek a legegyszerűbb módja az, ha végigmegyünk a fán, és megtaláljuk a leveleket ...

I : (5 perc teljes hallgatás után)  Érted a kérdést? Szüksége van valamilyen tisztázásra?

C : Tiszta vagyok . Most csak arra gondolok, hogy miként nyomtathatom ki a csomópontokat a levélből kiindulva.

I : Mit jelent a levélből kiinduló csomópontok nyomtatása?

C : Tehát alapvetően levélről gyökérre kellene nyomtatnom ugye? A levélig könnyen át lehet haladni. De a nehéz rész visszamegy?

I : Hmmm. Biztos, hogy jól érted a kérdést? Egy fa megfordítása azt jelenti, hogy fel kell cserélni a bal és jobb gyerekeket .

C : Sajnálom, nem vagyok egyértelmű. Amikor azt mondtad, hogy invert, azt gondoltam , hogy a levélről gyökérre nyomtatást értesz.

I : Rendben van (itt vesztetted el az állást) . Most, hogy világos vagy, folytassuk.

C : Igen, világos vagyok. Tehát most cserélnem kell a bal és a jobb csomópontot. Ez könnyű.

(Csendben írja a kódot)

def invert(node) t = node.left node.left = node.right node.right = t return node end 

C : Végeztem a kóddal.

I : Menő. Szóval mit tettél itt?

C : Megfordítottam a fát a bal és a jobb csomópont felcserélésével. Tehát tartok egy temp változót, hogy elérjem ugyanezt.

I : (Megpróbál elmozdulni egy megfelelő megoldás felé) De ez csak a gyökércsomópontot cseréli fel?

C : (Zavarban) Hmm igen, tehát a bal és a jobb gyerek megfordul. Ez a kérdés igaz?

I : (Még mindig nincs egyértelműség a kérdésben) Tehát a kérdés az, hogy a teljes fát meg kell fordítani. Nem csak a gyökér.

C : Jaj. Tehát nem csak a gyökér, hanem a teljes fa is. Igazam van?

I : Igen, ez helyes.

C : Oké. Hadd gondolkozzak rajta.

(2 perc múlva)

C : Azt hiszem, megkaptam. Tehát alapvetően ugyanazt az algoritmust kell csinálnom, amelyet az egész fára írtam. Igazam van?

I : Igen, de hogyan csinálod ezt?

C : (Elkezdi írni a kódot)

def invert(node) n = Node.new(node.val) invert(node.left) invert(node.right) n.left = node.right n.right = node.left return n end

Tehát én találgatás ez működik.

I : Hmmm, hadd lássam. (Megtalálja a problémát. Tudsz?) Nem vagyok biztos benne, hogy működik-e. Kérem, tudjon átfutni rajta?

C : Persze. Először a bal, majd a jobb részfát fordítom meg, majd felcserélem őket, hogy a gyökér megforduljon.

I : Hmmm. De a bal és a jobb csomópont új csomópontokat ad vissza a jobb csere után? Még mindig cseréled a régi csomópontokat.

C : Nem tudom, mit akar ezzel mondani. Azt hiszem, ez lesz a munka minden esetben.

I : Remek ember! Elfogyott az időnk. Köszönöm az időt, kedves volt veled beszélgetni. A HR kapcsolatba lép veled.

Visszacsatolás

Mit gondolsz, mi volt a végső döntés, és mi volt az interjúztató visszajelzése? A hipotetikus visszacsatolás valami ilyesmi lehet:

  • A jelölt sok mindent feltételezett, és nem tisztázta a problémát.
  • A jelölt a semmiből állt elő a megközelítéssel, és a megközelítés mögött nem volt megfelelő indokolás. (Emlékszel az interjú csendjére?)
  • A jelölt még a megvalósítás szakaszában sem volt tisztában a követelményekkel.
  • A jelölt küzdött a megvalósítással, és nem tudott felvenni a megoldás felé mutató tippeket.
  • A jelölt nem tudta azonosítani a hibákat a kódban, még akkor sem, ha elegendő időt biztosított és átvizsgálta, hogy a megoldás helyes-e.

Ha ez tényleges interjú lenne, a jelentkezőt elutasították volna. Most hogyan menjen az ideális interjú?

Második interjú

Kérdező (I) : Üdvözlet, üdvözöljük cégünkben. Xxx vagyok, ééééééééééééééén. Mesélj magadról.

Jelölt (C) : xxx vagyok. Körülbelül 5 éves tapasztalatom van a Backend fejlesztésében. Szeretek technikai problémákat megoldani ...

I : Nagyon jó. Folytassuk tehát a problémamegoldó részt?

C : Persze!

I : Tehát kapsz egy bináris fát. Azt akarom, hogy fordítsa meg a bináris fát, és nyomtassa ki a kapott fát.

C : (Hangosan gondolkodni) Hűvös. Tehát egy bináris fának két csomópontja van. Tehát mi is pontosan az invertálás? balra és jobbra cserél?

I : Pontosan. Tehát a bal csomópontnak a jobb oldalon kell lennie, és fordítva.

C : Oké. Tehát ebben az esetben mi történik?

Példát mutat be, és pontosítja a bemenetet és a kimenetet

I : Bizonyos mértékben igazad van. De ennek az egész fára kell megtörténnie, nemcsak a gyökérre. (Figyelje meg, hogy a követelményeket milyen korán szilárdították meg)

C : Ó értettem! Tehát azt gondolom, hogy ezt rekurzívan kell megtenni. Ember, ez nehéz! Hadd lássam. De előtte még csak egy példán keresztül fogom ellenőrizni a megértésemet.

Még egyet biztosít, pl. A hiányzó darabok tisztázására

I : Igen, igazad van. Ez a kimenet. Szerintem teljesen megvan a probléma. Tehát hogyan áll hozzá?

C : Hadd lássam. Tehát balra és jobbra cserélni csak temp. De akkor hogyan fogom megtenni a maradékért? Ó, igen, csak visszatérhetnék a többiekért, és ugyanezt tehetném.

I : Menő. Van-e probléma ezzel a megközelítéssel?

C : Hmmm. Igen, ha csak rekurzívan cserélem a bal és a jobb oldalt, hogyan fogom követni a régi és az új fát?

I : Nem biztos, hogy követlek. Mi a régi és az új?

C : Arra gondoltam, hogy lesznek friss gyerekek, cserélnem kell őket, és nem az öreg gyerekeket.

I : Igen, helyes.

C : Igen, egyszerűen rekurzív módon hívhatom ezt a függvényt balra és jobbra, és tárolhatom ezeket az értékeket egy változóban. Ezután frissíthettem a fát azokkal a változókkal. Így megbizonyosodhatok arról, hogy az egész fa megfordult-e.

I : Menő. Még valami hiányzik?

C : Nem, azt hiszem. Tehát O (n) időre és O (1) helyre lesz szükség, mivel nem használok extra helyet. (Figyelje meg, hogy a jelölt mennyire proaktívan tárgyalja az időt és a teret)

I : Jól vagyok. Elkezdheti a kódolást.

C : Persze. (Kódolás közben átbeszéli a kódot)

def invert(node) invert(node.left) invert(node.right) node.left,node.right = node.right, node.left return node end 

C : Tehát kész vagyok. Hadd vezessem végig a kódomat. Tehát egy olyan fához, mint ... (Egy példával elmagyarázza és szárazon fut)

I : Azt hiszem, igazad van. Minden esetben működik?

C : Hmmm. Azt hiszem, a Null mutató kivételét kapom egy üres fára. Hadd javítsam ki egy nullacsekk hozzáadásával.

I : Most jól néz ki. Bármi más hiányzik.

C : Nem, azt hiszem, más dolog, amit el ilyen nincs levél, egy levél, stb (Figyeljük meg, hogy ő nevezi ki minden esetben tartotta)

I : Menő. Jó vagyok. Bármi kérdés? :)

Visszacsatolás

Szóval mit gondol erről az interjúról?

  • A pályázó a megvalósítás megkezdése előtt tisztázta a követelményeket.
  • A jelölt befagyasztotta a követelményeket azáltal, hogy átfut néhány példát és tisztázta megértését.
  • A jelölt működőképes megoldással állt elő mindenféle vizsgálat nélkül.
  • A jelölt proaktív módon megvitatta az idő és a tér összetettségét.
  • Kódolás közben a jelöltnek világos elképzelése volt arról, hogy mit csinál és merre tart.
  • A jelölt hibája volt a kódjában, és amikor megkérték, hogy ellenőrizze a hibákat, megtalálta a hibát, és maguk javították ki.

Következtetés

Az interjúzás teljesen más készség, mint a kódolás. Annak ellenére, hogy Ön jól jár a problémamegoldásban, az interjú olyan helyzet, ahol a kérdező megpróbálja eldönteni, felvesz-e vagy sem. Tehát a kódolás mellett meg kell értenie az interjúztató nézőpontját is, hogy megkönnyítse számára a felvételét. Ebben a cikkben egy jó interjút és egy közepes interjút akartam összehasonlítani és összehasonlítani. Próbáld meg külön gyakorolni az interjúkészségeket, mivel minél többet gyakorolsz, annál jobban érzed magad. Akkor fordulhat hozzám, ha segítségre van szüksége álinterjú készítéséhez.

Ez a cikk először a //kaizencoder.com oldalon jelent meg. Ha tetszett ez a cikk, látogasson el ide, és olvassa el a hasonlót, vagy tudjon meg többet rólam!