Angular Állásinterjú-kérdések, Amikre Számíthatsz

Szerző: Aaron Cao · Frissítve

Angular Állásinterjú-kérdések, Amikre Számíthatsz
Először a change detection jön: mi váltja ki az ellenőrzést, mit változtat az OnPush, és hogyan illeszkednek ide a signals. Utána dependency injection, RxJS operátorválasztás és a subscription-ök eltakarítása. A legtöbb kör hozzáad egy élő gyakorlatot, jellemzően egy typeahead keresést, amit service-szel, debounceTime-mal és switchMap-pel építenek.

Először a change detection jön: mi váltja ki az ellenőrzést, mit változtat az OnPush, és hogyan illeszkednek ide a signals. Utána dependency injection, RxJS operátorválasztás és a subscription-ök eltakarítása. A legtöbb kör hozzáad egy élő gyakorlatot, jellemzően egy typeahead keresést, amit service-szel, debounceTime-mal és switchMap-pel építenek.

Mely Angular fogalmakat kérdezik a leggyakrabban?

Az Angular API-felülete hatalmas, és a publikált kérdéslisták úgy kezelnek minden decorator-t, mintha egyforma eséllyel jönne elő. Nem egyforma eséllyel jönnek elő. Ez a szakasz azokat a területeket fedi le, amelyek valóban eldöntik a legtöbb kört, hogy a gyakorlásod illeszkedjen a valós eloszláshoz. Négy csoport dominál:

  • Change detection: mi váltja ki az ellenőrzést, hogyan patchel a Zone.js aszinkron API-kat, mit változtat az OnPush, és hogyan engedik a signals, hogy az Angular kihagyjon munkát.
  • Dependency injection: hierarchikus injectorok, providedIn, injection tokenek, és az inject() függvény a konstruktor paraméterekkel szemben.
  • RxJS: observable-ök a promise-okkal szemben, a megfelelő operátor kiválasztása, és a subscription-ök eltakarítása, mielőtt egy komponens megsemmisül.
  • Komponensarchitektúra: standalone komponensek, inputok és outputok, content projection, és lifecycle hookok.

A verziótudatosság itt jobban számít, mint a legtöbb más framework körben, mert az Angular irányt váltott. A standalone komponensek, a beépített control flow blokkok, az @if és az @for, a deferrable views, és a signals mind a legutóbbi major verziókban érkeztek, ezért a kérdezők gyakran megkérdezik, mit írnál ma ahhoz képest, amit egy régebbi kódbázis használ. Ha mindkettőt ismered, és tudod, miért váltott irányt a framework, jobb benyomást kelt, mint az egyik oldal mellett kiállni.

Mennyire mélyek az RxJS és signals kérdések?

Mélyebbek, mint puszta operátornevek. Az RxJS-kérdés, amely elválasztja a szinteket, az, hogy melyik flattening operátor illik: a switchMap lemondja az előző belső kérést, és illik a typeahead-hez, a mergeMap mindent párhuzamosan futtat, a concatMap megőrzi a sorrendet, az exhaustMap pedig figyelmen kívül hagyja az új eventeket, amíg egy még folyamatban van, ezért illik egy submit gombhoz. A kérdezők ezután feltehetik a szivárgás-kérdést: mi történik egy kézi subscription-nel, amikor a komponens megsemmisül, és miért szünteti meg a problémát az async pipe vagy a takeUntilDestroyed.

A signals kérdések újabbak, és általában a motivációból indulnak ki, nem az API-ból. Számíts arra, hogy elmagyarázd, mi az a signal, hogyan vezeti le belőle a computed az értékét, mire jó egy effect, és miért ad az Angularnak a signals egy finomabb módot annak megtudására, hogy mi változott, mint a teljes komponensfa újraellenőrzése. Egy erős válasz összeköti a két témát: a signals és az OnPush is csökkenti a change detection által végzett munkát, de a signals ezt az olvasások követésével teszi, nem pedig azzal, hogy szűkíti, mikor fut le egy ellenőrzés.

A kérdezők nem várják el, hogy már minden újdonságot használtál. Azt várják, hogy elmondd, melyik verzióban dolgoztál utoljára, és tisztán érvelj a többiről.

Milyen élő kódolási gyakorlatokra számíthatsz?

A legtöbb Angular kör magában foglalja, hogy valami kicsit építesz, miközben a kérdező figyel. Az ismétlődő gyakorlatok cégek között is stabilak:

  • API hívása egy service-ből, és az eredmény renderelése async pipe-pal.
  • Typeahead keresés építése debounceTime-mal, distinctUntilChanged-dzsel és switchMap-pel.
  • Reactive form írása egyedi validatorral és látható hibaállapotokkal.
  • Adat átadása egy parent és egy child komponens között, majd feljebb emelése egy service-be.
  • Route hozzáadása lazy-loaded komponenssel és guarddal.

Egy front-end mérnök, aki egy középszintű termékszerepre interjúzik, például megépítheti a typeahead-et, majd rákérdezhetnek arra, mi történik, ha a válaszok rossz sorrendben érkeznek, hogyan mutass loading állapotot, és mi történjen, ha a felhasználó törli a beviteli mezőt. Ezek a kiegészítések döntik el a kört, ezért a followup kérdéseket gyakorold, ne a boldog utat. A szomszédos halmazok, amelyekkel az Angular körök még gyakran nyitnak, beleértve a tiszta JavaScript és TypeScript alapokat, a kérdésbankok központjában találhatók.

Hogyan gyakorolj, hogy átvigye magát a valódi körre?

Egy kérdéslista elolvasása felismerést épít, nem felidézést, a kör pedig a felidézést teszteli, miközben valaki figyel. A megoldás az ismétlés a kör valós formájában: építsd fel a szokásos gyakorlatokat egy üres projektből, mondd hangosan a change detection és subscription döntéseidet gépelés közben, és nyeld el a megszakításokat anélkül, hogy elveszítenéd a fonalat. A halmaz lefuttatása szóbeli próbaként, kérdésenként egyesével followupokkal, pontosan az, amire a mock interjú gyakorlás való.

Egy korlátot érdemes egyértelműen kimondani: az élő Angular körök szinte mindig megosztott editorban vagy látható képernyővel futnak, és minden, ami azon a képernyőn van, látható a kérdezőnek. Egy asszisztens a felkészülésbe és a beszélgetésvezérelt körökbe való, nem egy megosztott képernyőre. Hogy mely formátumok mit engednek, azt az interjútípusok ismertetik.

GYIK

Még mindig ismernem kell az NgModules-t?

Olvasási szinten igen. Sok production Angular még mindig NgModules-on fut, ezért számíts kérdésekre arról, mit deklarált egy modul, és hogyan váltotta ki a providedIn a legtöbb provider tömböt. Az új kódra vonatkozó kérdéseket standalone komponensekben teszik fel, amelyek az alapértelmezettek a legújabb verziókban.

Az AngularJS ugyanaz, mint az Angular?

Nem, és a kérdezők néha ellenőrzik. Az AngularJS az 1.x vonal scope-okkal, digest cycle-ökkel és controllerekkel. A 2-es verziótól kezdve az Angular egy külön framework, TypeScriptre és komponensekre épülve. Ha egy állásleírás AngularJS-t ír, erősítsd meg, melyikre gondolnak, mielőtt felkészülnél.

Mennyi RxJS-re van szükségem, ha a csapat signals-t használ?

Még mindig sokra. A signals jól lefedi a komponens állapotát, de a HTTP hívások, a router eventek és a form értékfolyamok observable-ök, ezért az operátorválasztás és a takarítás továbbra is előjön. A csapatok mindkettőt keverik, és annak elmagyarázása, hol illik az egyik és a másik, gyakori senior kérdés.

Kérdeznek a kérdezők a tesztelésről?

Általában stratégiaként, nem API-felidézésként. Számíts arra, hogy mit tesztelnél komponens szinten az end to end-del szemben, hogyan állítja be a TestBed egy komponenst, és hogyan hamisítanál egy service-t. A kompromisszum megnevezése többet nyom a latban, mint egy matcher elszavalása.

Hány Angular verzióról kellene tudnom beszélni?

Arról, amiben dolgoztál, plusz arról, ami azóta változott. A kérdezők a standalone komponensekről, a control flow blokkokról és a signals-ról kérdeznek, mert ezek a válaszok aktualitást jeleznek. Ha elmondod, melyik verzióban adtál ki legutóbb, és tisztán érvelsz a többiről, az teljes válasz.

Kapcsolódó kérdések

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