MI-kódolási interjúkérdések: példák és gyakorlás

Szerző: Aaron Cao · Frissítve

MI-kódolási interjúkérdések: példák és gyakorlás
Készülj tömbökkel, hash-táblákkal, fákkal, gráfokkal, dinamikus programozással és hibakereséssel kapcsolatos feladatokra. Gyakorlás közben az MI adhat tippeket, javasolhat teszteseteket és értékelheti a magyarázataidat. A helyességet és a komplexitást továbbra is neked kell ellenőrizned. Élő segítséget csak akkor használj, ha az interjú szabályai megengedik.

Készülj tömbökkel, hash-táblákkal, fákkal, gráfokkal, dinamikus programozással és hibakereséssel kapcsolatos feladatokra. Gyakorlás közben az MI adhat tippeket, javasolhat teszteseteket és értékelheti a magyarázataidat. A helyességet és a komplexitást továbbra is neked kell ellenőrizned. Élő segítséget csak akkor használj, ha az interjú szabályai megengedik.

Mely kódolási interjúfeladatokat érdemes először gyakorolni?

Az algoritmusok nevének ismerete mellett is bizonytalan lehetsz abban, hogyan kezdj neki egy új problémának. Ezek a gyakorlófeladatok konkrét bemeneteket kapcsolnak össze a megoldási lehetőségekkel, a komplexitási korlátokkal és azokkal a szélső esetekkel, amelyeket szóban is el kell magyaráznod.

  • Two Sum: adj vissza két különböző indexet, amelyek értékeinek összege a célérték. A [3, 3] tömb és a 6 célérték esetén a válasz mindkét pozíciót használja. Haladj végig a tömbön a korábban látott értékeket tároló hash-táblával: az aktuális érték eltárolása előtt keresd meg a kiegészítő értéket. Így nem használod fel újra ugyanazt az indexet. A várható időigény O(n), a többlet tárigény O(n). Tisztázd, mit kell visszaadni, ha nincs megfelelő pár.
  • Keresd meg a leghosszabb, ismétlődő karakter nélküli részkarakterláncot. Az 'abba' esetén a hossz 2. Tartsd nyilván minden karakter legutóbbi pozícióját, és kezelj egy ismétlődésmentes ablakot. A bal határ soha nem léphet visszafelé, ha egy korábbi előfordulás már az aktuális ablakon kívül van. Hash-táblás kereséssel a várható időigény O(n). Tisztázd, mi számít karakternek.
  • Vond össze az egymást átfedő zárt intervallumokat. Az [1, 3], [3, 5] és [8, 10] intervallumokból [1, 5] és [8, 10] legyen. Rendezz kezdőpont szerint, majd hosszabbítsd meg az aktuális intervallumot, vagy kezdj újat. A rendezés miatt az időigény O(n log n). A közös végponttal rendelkező zárt intervallumok átfedik egymást; kérdezd meg, hogy ez megfelel-e a feladat definíciójának.
  • Fordíts meg egy körmentes, egyszeresen láncolt listát. Mentsd el a következő csomópontot, mielőtt módosítod az aktuális csomópont következő mutatóját. Az iteratív megoldás időigénye O(n), többlet tárigénye O(1). Kövesd végig az üres, az egycsomópontos és a kétcsomópontos listát. Magyarázd el, hogy az egyes iterációk után a lista mely része van már megfordítva.
  • Add vissza egy bináris fa értékeit szintenként. Használj sort, és dolgozd fel az aktuális szint csomópontjainak számát, mielőtt a következő szintre lépsz. Az időigény O(n); a segédsor tárigénye O(w), ahol w a legszélesebb szint szélessége, a visszaadott kimenetet nem számítva. Tesztelj üres fával és olyan fával, amelynek minden szintjén csak egy gyermek van.
  • Döntsd el, hogy minden kurzus teljesíthető-e az előfeltételek mellett. Modellezd az előfeltételeket irányított gráfként, és használj topologikus rendezést. Ha V csúcsnál kevesebbet dolgozol fel, maradt irányított kör. Az időigény O(V + E). Tesztelj különálló komponenseket, elszigetelt kurzust és önmagától függő kurzust.
  • Keresd meg az adott összeghez szükséges legkevesebb érmét. Tételezz fel korlátlan számú, pozitív egész címletű érmét. Az [1, 3, 4] címletek és a 6 összeg esetén a legnagyobb érme elsőkénti választása három érmét használ; a 3 + 3 két érmét. A dinamikus programozási állapot az egyes összegekhez szükséges érmék minimális száma legyen, azzal kezdve, hogy a nulla összeghez nulla érme kell. A célértéket A-val és a címletek számát c-vel jelölve a szabványos megközelítés időigénye O(Ac), tárigénye O(A). A nem elérhető összegeket kezeld külön.

A szerepkör és témakör szerint rendezett kapcsolódó gyakorlóanyagért tekintsd meg az interjúkérdés-gyűjteményt.

Milyen egy jól elmagyarázott megoldás?

Tekintsük ezt a feladatot: Számold meg azokat a nem üres, összefüggő résztömböket, amelyek összege egyenlő a célértékkel, negatív értékeket is megengedve. Az [1, -1, 1] tömb és az 1 célérték esetén a válasz 3: bármelyik egyelemű [1] résztömb vagy a teljes tömb.

Kezdj egy alapmegoldással: válassz ki minden kezdőpozíciót, majd futó összeget vezetve told ki a végpozíciót. Ennek időigénye O(n²), többlet tárigénye O(1). A szokásos szűkülő ablakos megközelítés itt nem megbízható, mert a negatív értékek miatt nem igaz az a feltételezés, hogy az ablak bővítése növeli az összeget.

A gyorsabb megközelítés prefixösszegeket és gyakorisági táblát használ. Ha az aktuális prefixösszeg s, akkor minden korábbi, s - célérték értékű prefix egy megfelelő összegű résztömböt azonosít. A táblát a nulla prefixösszeg egy előfordulásával inicializáld, amely a tömb kezdete előtti üres prefixet jelképezi.

  • Feldolgozási sorrend: Add hozzá az aktuális értéket a prefixösszeghez, számold meg az egyező korábbi prefixeket, majd rögzítsd az aktuális prefixet. Ha előbb rögzítenéd, nulla célérték esetén tévesen beleszámolnál egy üres résztömböt.
  • Invariáns: Az aktuális prefix rögzítése előtt a tábla az aktuális pozíció előtt végződő összes prefix gyakoriságát tartalmazza.
  • Komplexitás: Minden elem állandó számú táblaműveletet végez. A várható időigény O(n), feltételezve a hash-műveletek várhatóan állandó idejét; a többlet tárigény O(n).
  • Ellenőrzések: Az üres tömb eredménye 0. A [0, 0] tömb és a 0 célérték esetén az eredmény 3. Rögzített szélességű egész típusoknál számolj a túlcsordulással mind a halmozott összegben, mind az eredmény számlálójában.

Hasznos kiegészítő kérdés, hogy a feladat csak a darabszámot vagy magukat a résztömböket kéri-e. Minden egyező résztömb visszaadása kimeneti költséggel jár: egy csupa nulla tömbnek n(n + 1)/2 megfelelő nem üres résztömbje van, ha a célérték nulla.

Hogyan használd az MI-t kódolási feladatok gyakorlására?

Segítségkérés előtt próbáld meg önállóan megoldani a feladatot, majd a továbblépéshez szükséges legkisebb beavatkozást kérd. A következő utasítások ellenőrizhető gyakorlássá alakítják az MI-vel folytatott beszélgetést.

  • Kérj egyetlen tippet: Adj egy tippet arról, milyen információt tároljak. Még ne adj kódot, és ne nevezd meg a teljes algoritmust.
  • Tedd próbára az érvelést: Ez a ciklusinvariánsom. Keress olyan bemenetet, amelynél a megvalósításom megsérti, vagy magyarázd el, hogy az egyes frissítések miért őrzik meg. Ellenőrizd magad a választ; a modell egyetértése nem bizonyítja a helyességet.
  • Ellenőrizd a komplexitást: Számold össze, mennyi munkát végeznek ebben a megvalósításban a szeletelések, rendezések, tárolóműveletek és rekurzív hívások. Egy ismert algoritmusnév nem határozza meg a tényleges kódod komplexitását.
  • Generálj teszteket: Javasolj eseteket üres bemenetre, ismétlődő elemekre, határértékekre és lehetetlen eredményekre. Mindegyiknél magyarázd el a várt választ. Vezesd le ezeket a válaszokat önállóan, mielőtt tesztorákulumként használod őket.
  • Változtass meg egy korlátozást: Hogyan változik a megoldás, ha a bemenet rendezett, nem módosítható, vagy adatfolyamként érkezik? A kód átírása előtt magyarázd el az új kompromisszumot.

Képzelj el egy backend fejlesztőt, aki egy felhőszolgáltatónál meghirdetett senior szerepkörre készül. Egy előfeltétel-gráfos feladat megoldása után olyan különálló gráfot kér egy MI-alapú gyakorlópartnertől, amely kört tartalmaz. Ezután a tippet nem használva követi végig a sort, és elmagyarázza, miért fedi fel a kört a feldolgozott csúcsok száma.

Egy teljes megoldás elolvasása után zárd be, majd emlékezetből építsd újra az algoritmust, az invariánst és a teszteket. A kód reprodukálásánál hasznosabb, ha el tudod magyarázni, miért működik, és hozzá tudod igazítani egy módosult korlátozáshoz.

Ha beszélgetésben szeretnéd gyakorolni az érvelésed magyarázatát, látogasd meg a próbainterjú oldalát.

Hogyan illeszkedik a SubcueAI egy engedélyezett élő kódolási interjúba?

A SubcueAI két felületen kínál élő segítséget. Kiemelt natív alkalmazása macOS és Windows rendszeren rögzíti a rendszerhangot és a mikrofonodat, a segítséget pedig egy lebegő helyi fedvényen jeleníti meg. Asztali értekezlet-kliensekkel működik, köztük a Zoom és a Microsoft Teams alkalmazással.

A böngészőbővítmény szintén élő segítséget nyújt a Chromium-alapú böngészők, köztük a Chrome és az Edge oldalsó paneljén. Csak az értekezletet tartalmazó lap hangját rögzíti, így olyan böngészőlapon futó hívásokkal használható, mint a Google Meet. Az interjúztatót ezen a lapon keresztül hallja, a mikrofonodat soha nem rögzíti, és a jelölt beszédét nem írja át. A Firefox-verzió csak próbainterjúkhoz használható.

Egyik felület sem ad értekezletbotot a híváshoz, és nem illeszt tartalmi szkriptet az értekezlet oldalába. Kódolási feladatoknál különítsd el a szóban elhangzó és az írásban megjelenő kontextust: a hangrögzítés önmagában nem továbbítja a csak egy szerkesztőben látható feladatleírást vagy kódot. Minden javaslatot ellenőrizz a pontos feladat, a korlátozások és a megvalósítás alapján.

Élő segítség használata előtt erősítsd meg az interjú szabályait. A SubcueAI nem minden körülmények között észlelhetetlen. A képernyőmegosztás, a felvételkészítés, a felügyelt értékelések és a vállalat által kezelt eszközök nem tartoznak az elrejthetőségre vonatkozó biztosítékok körébe. Egy megosztott vagy rögzített képernyő felfedheti a fedvényt vagy az oldalsó panelt, az eszköz- és felügyeleti megoldások pedig figyelhetik a tevékenységet.

Az elérhető felületek beállításához lásd a SubcueAI útmutatóját.

GYIK

Az MI-kódolási interjúkérdések azonosak a gépi tanulási interjúkérdésekkel?

A kifejezés jelenthet MI segítségével gyakorolt kódolási feladatokat vagy egy MI-fejlesztői szerepkör kérdéseit is. Ez az oldal általános szoftverfejlesztési kódolási gyakorlatokat tárgyal. MI- vagy gépi tanulási szerepkörhöz készülj olyan kapcsolódó feladatokra is, mint egy vektor skaláris szorzatának megvalósítása, a hiányzó adatok kezelése vagy egy modellértékelési módszer ismertetése. A további témákat az állásleírás alapján válaszd ki.

Mit tisztázzak egy kódolási megoldás megírása előtt?

Tisztázd a bemenet és a kimenet szerződését, a bemenet méretét, hogy megengedettek-e ismétlődő vagy negatív értékek, módosíthatod-e a bemenetet, és mi történik, ha nincs megoldás. Vezess végig egy kis példát, ismertess egy alapmegközelítést, majd magyarázd el, melyik korlátozás indokolja az optimalizálást.

Gyakorlás közben kérjek teljes megoldást az MI-től?

Először próbálj tippet kérni. Ha teljes megoldásra van szükséged, azonosítsd vele a hiányzó ötletet, majd zárd be, és építsd fel önállóan a választ. Magyarázd el az invariánst, vezesd le a komplexitást, és oldj meg egy módosított korlátozású változatot, mielőtt megtanultnak tekinted a témát.

Mit tegyek, ha egy MI által generált megoldás elbukik egy teszten?

Csökkentsd a bemenetet a legkisebb még hibás esetre, és önállóan határozd meg a várt választ. Kövesd az állapotváltozásokat addig, amíg a megvalósítás meg nem sérti a tervezett invariánsát. Javítsd ki a hibás alapfeltevést, majd futtasd újra a sikertelen esetet és a kapcsolódó határeseteket. Ne fogadj el egy módosított választ kizárólag azért, mert a modell szerint már helyes.

Hallhatja a SubcueAI mindkét beszélőt egy kódolási interjú során?

A natív macOS és Windows alkalmazás rögzíti a rendszerhangot és a mikrofonodat, így az értekezletből érkező interjúztatói hangot és a szóbeli válaszaidat is. A Chrome és Edge bővítmény csak az értekezletet tartalmazó lap hangját rögzíti; nem rögzíti a mikrofonodat, és nem írja át a beszédedet. A Firefox-verzió csak próbainterjúkat támogat.

Kapcsolódó kérdések

← Több erről: Interjúkérdések szerep és téma szerint