La ce întrebări de interviu .NET să mă aștept?

De Aaron Cao · Actualizat la

La ce întrebări de interviu .NET să mă aștept?
Așteaptă-te la întrebări despre mediul de execuție (CLR, colectarea memoriei, tipuri valoare față de tipuri referință), limbaj (async și await, LINQ, tipuri generice, records), frameworkuri (middleware ASP.NET Core și injecția dependențelor, EF Core) și scenarii precum o scurgere de memorie într-un serviciu care rulează mult timp sau un endpoint API lent. Intervievatorii evaluează raționamentul.

Așteaptă-te la întrebări despre mediul de execuție (CLR, colectarea memoriei, tipuri valoare față de tipuri referință), limbaj (async și await, LINQ, tipuri generice, records), frameworkuri (middleware ASP.NET Core și injecția dependențelor, EF Core) și scenarii precum o scurgere de memorie într-un serviciu care rulează mult timp sau un endpoint API lent. Intervievatorii evaluează raționamentul.

Ce întrebări despre runtime și limbaj deschid un interviu .NET?

Intervievatorii încep de unde începe și frameworkul: mediul de execuție. Așteaptă-te să explici ce face Common Language Runtime (încarcă ansambluri, compilează just-in-time limbajul intermediar, gestionează memoria), apoi să aprofundezi colectarea memoriei. Șirul întrebărilor ulterioare este previzibil: de ce colectorul folosește generații, ce face ca un obiect să supraviețuiască până la o generație ulterioară, la ce servește heap-ul pentru obiecte mari și de ce există IDisposable și using dacă memoria este gestionată. La ultima întrebare, răspunde menționând resurse negestionate, precum handle-uri de fișiere și conexiuni, pe care colectorul nu știe să le elibereze prompt.

  • Tipuri valoare și tipuri referință. Unde se află fiecare, ce înseamnă copierea pentru fiecare și ce cost are boxing-ul.
  • async și await. Explică faptul că un task așteptat eliberează firul apelant în loc să-l blocheze, de ce async void este rezervat handlerelor de evenimente și la ce deadlock se referă avertismentele despre .Result.
  • LINQ. Execuția amânată este capcana: o interogare IEnumerable rulează când este enumerată, nu când este scrisă, iar o interogare adresată unui provider de baze de date este tradusă în SQL doar pentru expresiile pe care acesta le înțelege.
  • Tipuri generice, interfețe și records. Constrângeri, de ce interfețele sunt preferabile claselor de bază pentru testabilitate și ce avantaj oferă egalitatea după valoare a unui record.

Răspunde la fiecare întrebare explicând mecanismul și o consecință. Afirmația că o colectare a generației zero este ieftină deoarece majoritatea obiectelor dispar repede reprezintă nivelul dorit de intervievatori; simpla enumerare a generațiilor, fără motiv, nu este suficientă.

Cum arată întrebările despre ASP.NET Core și EF Core?

Scrii controllere cu încredere, dar te temi că întrebările vor viza infrastructura pe care o atingi rar. Teama este justificată, fiindcă aici apar întrebările despre framework; iată infrastructura în ordinea în care este abordată de obicei, împreună cu întrebarea ulterioară asociată fiecărui subiect.

  • Pipeline-ul cererii. Middleware-ul rulează în ordinea înregistrării, iar fiecare componentă decide dacă o apelează pe următoarea. Întrebare ulterioară: unde se află autentificarea în raport cu autorizarea și ce se întâmplă dacă le înregistrezi în ordine inversă?
  • Duratele de viață ale injecției dependențelor. Singleton există pe durata aplicației, scoped pe durata unei cereri, iar transient este creat la fiecare rezolvare. Capcana clasică este injectarea unui serviciu scoped, precum un context de bază de date, într-un singleton; fii pregătit să explici de ce aceasta este o eroare.
  • Configurare și opțiuni. Surse suprapuse, suprascrieri în funcție de mediu și modelul options pentru setări tipizate.
  • EF Core. Urmărirea modificărilor și când trebuie dezactivată pentru interogările doar în citire, problema N+1 și modul în care încărcarea eager sau proiecția o evită, migrările și momentul real în care o interogare scrisă manual este preferabilă LINQ.
  • Testare. Cum fac interfețele și containerul DI un serviciu testabil și ce demonstrează sau nu demonstrează un provider în memorie despre o bază de date reală.

Cei mai buni candidați fac legătura între acestea: un context scoped rezolvat într-un serviciu singleton de fundal nu este o întrebare de cultură generală, ci o eroare reală de memorie și corectitudine pe care intervievatorii au livrat-o deja și vor să audă că ai crea explicit un scope.

Cum se desfășoară întrebările bazate pe scenarii?

Interviurile pentru poziții senior prezintă un simptom și urmăresc metoda ta. Un exemplu reprezentativ: unui inginer backend care susține un interviu pentru un rol senior la o companie de logistică i se spune că memoria unui API ASP.NET Core crește timp de mai multe zile, până când containerul repornește. Un răspuns bun nu presupune. Întreabă ce s-a schimbat, verifică obiectele reținute de cache-uri statice sau abonamente de lungă durată la evenimente, caută servicii scoped păstrate de singleton-uri, inspectează creșterea heap-ului pentru obiecte mari și recurge la un snapshot de memorie înainte de a propune o soluție. Intervievatorul evaluează ordinea investigației.

Alte scenarii recurente: un endpoint lent numai sub sarcină, caz în care răspunsul trece de la apelurile sincrone către baza de date la async, epuizarea pool-ului de conexiuni și caching; o condiție de concurență într-o colecție partajată și costurile colecțiilor concurente și ale opțiunilor de blocare; o cerere care trebuie să apeleze trei servicii downstream și felul în care gestionezi timeout-urile, reîncercările și eșecurile parțiale; precum și o migrare care trebuie să adauge o coloană fără întreruperi. În fiecare caz, precizează constrângerea, alege un mecanism și explică deschis compromisul.

Acestea devin mult mai ușoare după ce le-ai repetat cu voce tare, inclusiv cu întrebări ulterioare; pentru aceasta este conceput modul de interviu simulat. Celelalte colecții pentru limbaje și roluri se găsesc la întrebări de interviu după rol și subiect.

Poate ajuta un asistent AI la întrebările .NET?

În rundele conversaționale, da, în limitele declarate. Aplicația desktop nativă SubcueAI pentru macOS și Windows captează sunetul sistemului și microfonul și afișează sugestii scurte de răspuns într-un overlay local; astfel, când intervievatorul întreabă de ce un context scoped într-un singleton este o eroare, mecanismul apare pe ecran în timp ce îl explici în propriile cuvinte. Extensia de browser acoperă apelurile din filele de browser în Chrome și Edge, captând exclusiv sunetul filei întâlnirii. Niciun bot nu intră în apel și nimic nu este injectat în pagina întâlnirii; configurarea este prezentată pe pagina de tutorial.

Limitele: o evaluare supravegheată, un ecran înregistrat, un laptop administrat de companie sau un exercițiu de programare live în care scrii C# sub observație nu sunt acoperite, iar asistentul este cel mai puțin eficient tocmai când interviul îți cere să scrii cod. Este cel mai eficient pentru întrebările de mai sus despre runtime, framework și compromisuri. Încarcă-i mai întâi CV-ul, pentru ca sugestiile să reflecte sistemele pe care le-ai construit în realitate; acel profil se află în editorul de CV-uri.

Întrebări frecvente

De ce are generații colectorul de memorie .NET?

Majoritatea obiectelor dispar repede, astfel că o colectare frecventă și ieftină a celei mai noi generații recuperează cea mai mare parte a memoriei fără să scaneze întregul heap. Obiectele care supraviețuiesc sunt promovate și colectate mai rar, ceea ce menține pauzele scurte pentru tiparele obișnuite de alocare.

Care este diferența dintre singleton, scoped și transient în ASP.NET Core?

Singleton este creat o singură dată pentru aplicație, scoped o dată pentru fiecare cerere, iar transient la fiecare rezolvare. Injectarea unui serviciu scoped într-un singleton îl păstrează pe întreaga durată de viață a aplicației, ceea ce reprezintă o eroare frecventă în cazul contextelor de baze de date.

Ce face de fapt await?

Înregistrează restul metodei drept continuare și redă controlul apelantului, astfel încât firul rămâne liber cât timp operația așteptată se finalizează. Blocarea unui task cu .Result sau .Wait poate provoca, în schimb, un deadlock în contexte care au nevoie să recupereze acel fir.

Ce este problema N+1 în EF Core?

Încărcarea unei liste de entități părinte, urmată de câte o interogare separată pentru fiecare părinte, pentru a-i obține copiii. Încărcarea eager cu Include sau proiectarea exclusivă a câmpurilor necesare o transformă într-una sau două interogări.

Poate SubcueAI ajuta în timpul unui test de programare .NET supravegheat?

Nu. Evaluările supravegheate și înregistrate nu sunt acoperite, iar programarea live sub observație este munca ta. Este destinat rundelor conversaționale, iar modul de interviu simulat este locul în care poți exersa înaintea lor.

Întrebări similare

← Mai mult despre Întrebări de interviu după rol și temă