40 parimat .Neti intervjuuküsimust ja vastust (2026)

.Neti intervjuuküsimused ja vastused

.Neti intervjuuks valmistumine nõuab selgust selles, millega võite kokku puutuda, ja põhimõistete mõistmine on oluline, sest teine ​​lause peab sisaldama „.Neti intervjuuküsimusi”, et näidata kohest asjakohasust.

.Net-i intervjuude uurimine avab tugevaid karjäärivõimalusi, mida toetavad valdkonna trendid, praktilised rakendused ja põhjalikud tehnilised kogemused. Valdkonna asjatundlikkuse, algtaseme kogemuste ja tugevate analüüsioskustega spetsialistid saavad kasu parimatest küsimustest ja vastustest, mis aitavad nii algajatel kui ka kogenud kandidaatidel oma oskusi tugevdada nii algtaseme, edasijõudnute, kesktaseme, seeniori kui ka praktilistes tehnilistes aruteludes.
Loe rohkem…

👉 Tasuta PDF-i allalaadimine: .Neti intervjuuküsimused ja vastused

1) Mis on .NET Framework ja millised on selle põhikomponendid?

.NET Framework on tarkvaraarendusplatvorm, mille on välja töötanud Microsoft mis pakub kontrollitud keskkonda rakenduste loomiseks, juurutamiseks ja käitamiseks. See toetab mitut keelt nagu C#, VB.NET ja F#. Raamistik tagab keelte koostalitlusvõime ja mäluhalduse oma Common Language Runtime'i (CLR) kaudu.

Põhikomponendid:

Komponent Kirjeldus
CLR (Common Language Runtime) Haldab mälu, turvalisust ja koodi täitmist.
FCL (raamistikuklasside teek) Suur valik korduvkasutatavaid klasse, liideseid ja väärtustüüpe.
ASP.NET Võimaldab dünaamilist veebirakenduste arendamist.
ADO.NET Pakub andmetele juurdepääsu erinevatest andmeallikatest.

Näide: AC# rakendus saab ADO.NET-i abil luua ühenduse SQL Serveri andmebaasiga hallatud keskkonna kaudu, tagades turvalisuse ja skaleeritavuse.


2) Selgitage .NET Frameworki, .NET Core'i ja .NET 5/6/7 erinevust.

Microsoft on arendanud .NET-i ühtseks platvormiks, mis toetab platvormideülest arendust.

.NET Framework is Windows- ainult samal ajal kui .NET Core on avatud lähtekoodiga ja platvormideülene. Alates .NET 5 edasi, Microsoft ühendas need üheks ühtseks käituskeskkonnaks.

tunnusjoon .NET Framework .NET Core .NET 5/6/7+
Platvormi tugi Windows ainult Cross-platvorm Cross-platvorm
Open Source Ei Jah Jah
jõudlus Mõõdukas Kõrge Väga kõrge
Deployment Süsteemne Iseseisev Paindlik
Kasutamise näide Vananenud ettevõtte rakendused Pilve- ja mikroteenused Kaasaegsed mitmeplatvormilised rakendused

3) Kuidas haldab Common Language Runtime (CLR) koodi käivitamist?

CLR toimib .NET-rakenduste täitmismootorina. See teisendab intermediate Language (IL) koodi natiivseks masinkoodiks Just-In-Time (JIT) kompileerimise abil. Samuti pakub see automaatset mäluhaldust prügikorje abil.

CLR-i põhifunktsioonid:

  1. Mäluhaldus – Eraldab ja vabastab mälu automaatselt.
  2. Turvalisuse juhtimine – Kontrollib koodile juurdepääsu turvalisust ja rollipõhist turvalisust.
  3. Välja arvatud käitlemine – Tagab, et käitusaja vead tuvastatakse ja hallatakse õigesti.
  4. Lõime haldamine – Pakub mitmekeermelise koodi tõhusat täitmist.

Näide: Kui .NET-programm käivitatakse, kompileerib CLR IL-koodi nõudmisel natiivkoodiks, tagades optimaalse täitmise.


4) Millised on .NET-is kasutatavad erinevat tüüpi JIT-kompilaatorid?

CLR pakub kolme tüüpi Just-In-Time (JIT) kompilaatoreid:

KASUTUSALA Kirjeldus Kasuta Case'it
Eel-JIT (NGen) Kompileerib kogu koodi korraga juurutamise ajal. Vähendab käivitusaega.
Econo-JIT Kompileerib ainult käitusajal kutsutud meetodid ja loobub neist hiljem. Mälupiiranguga keskkonnad.
Tavaline ühine uurimisrühm Kompileerib koodi täitmise ajal meetod-meetodi haaval. Standardne teostusmudel.

Iga JIT-lähenemisviis tasakaalustab järgmist: jõudlus ja ressursikasutus juurutamise konteksti põhjal.


5) Mis on .NET-i assemblerid ja mille poolest need erinevad nimeruumidest?

An kokkupanek on .NET-rakenduse väikseim juurutatav üksus, mis sisaldab kompileeritud koodi, metaandmeid ja ressursse. A nimeruumteisest küljest on see loogiline alusping koodi korraldamiseks kasutatavatest klassidest.

võrdlus Assembly Nimeruum
loodus Füüsiline fail (DLL/EXE) Loogiline rühmping
Eesmärk Juurutamine ja versioonimine Code organisatsioon
Sisaldab Metaandmed, manifest, MSIL Klassid, liidesed
Näide System.Data.dll System.Data.SqlClient

Näide: System.Data.dll assembly võib sisaldada mitut nimeruumi, näiteks System.Data ja System.Data.SqlClient.


6) Mis vahe on .NET-is väärtustüüpidel ja viitetüüpidel?

.NET-is väärtustüübid salvestada andmeid otse, samal ajal kui viitetüübid salvesta viited andmete mäluaadressile.

Alus Väärtuse tüüp Viitetüüp
Säilitamine Stack hunnik
Näidistüübid int, float, bool, struct klass, massiiv, string
Kopeerimine Kopeerib tegeliku väärtuse Kopeerib viite
Null lubatud Ei Jah

Näide:

int a = 5; int b = a; → Mõlemal on eraldi koopiad.

ClassObj x = new ClassObj(); ClassObj y = x; → Mõlemad viitavad samale objektile.


7) Kuidas prügikoristus .NET-is töötab?

Prügikoristus (GC) .NET-is haldab mälu automaatselt, taastades kasutamata objekte. See töötab Põlvkonnad jõudluse optimeerimiseks.

Põlvkondadevaheline üldhinnang:

  1. 0. põlvkond: Lühiajalised objektid (nt ajutised muutujad).
  2. 1. põlvkond: Keskmise elueaga objektid ülendatakse 0. põlvkonnast.
  3. 2. põlvkond: Pikaealised objektid (nt staatilised andmed).

Eelised:

  • Hoiab ära mälulekkeid.
  • Parandab rakenduste jõudlust.
  • Lihtsustab arendajate jaoks mäluhaldust.

Näide: Kui objektile enam ei viidata, eemaldab GC selle kuhjast, vabastades mälu taaskasutamiseks.


8) Kes on delegaadid ja mille poolest nad erinevad ürituste korraldajatest?

A delegeerima on tüüp, mis esindab viiteid meetoditele, samas kui sündmus on mehhanism, mis võimaldab delegaatide kaudu klassidevahelist suhtlust.

Aspekt Delegaat sündmus
Määratlus Objekt, mis osutab meetodile Teavitusmehhanism
Kutsumine Võib otse helistada Tellijate kaudu kutsutud
Näide Action<int> myDelegate; event EventHandler myEvent;

Näide:

public delegate void Notify();  
public event Notify OnProcessCompleted;

Siin OnProcessCompleted on sündmus, mis põhineb Notify delegaat.


9) Millised on .NET Core'i kasutamise peamised eelised ja puudused?

Eelised Puudused
Platvormideülene tugi Järsem õppimiskõver algajatele
Avatud lähtekoodiga ja kogukonna juhitud Piiratud tugi pärandraamistikele
Suur jõudlus Kestrel serveriga Vanemate projektide migratsiooniprobleemid
Sisseehitatud sõltuvussüstimine Mõned API-d on veel arenemisjärgus

Näide: .NET Core sobib ideaalselt mikroteenuste loomiseks, mis töötavad Dockeri konteinerites Linuxis ja Windows Serverid.


10) Selgitage ASP.NET-lehe elutsüklit.

ASP.NET-i lehe elutsükkel määratleb, kuidas lehte initsialiseeritakse, töödeldakse ja renderdatakse. Iga etapp pakub sündmusi, mida arendajad saavad kohandatud loogika käivitamiseks käsitleda.

Stage Kirjeldus
Lehekülje taotlus Kasutaja taotleb lehte esimest korda.
Avaleht Määrab, kas päring on tagasipööratud.
Vormindamine Kõik juhtnupud on initsialiseeritud.
Koormus Lehe andmed ja juhtelemendid laaditakse.
Tagasisaatmise sündmuste käitlemine Tegeleb juhtelementide käivitatud sündmustega.
visualiseerimine Leht renderdatakse HTML-iks.
Laadige maha Puhastusfaas pärast vastuse saatmist.

Näide: Arendajad kasutavad sageli Page_Load or Page_Init sündmused juhtelementide initsialiseerimiseks või andmesidumiste määramiseks.


11) Mis on Entity Framework (EF) ja kuidas see lihtsustab andmebaasitoiminguid?

Entiteetide raamistik (EF) on Microsoft'S Objekti-relatsioonikaardistaja (ORM) mis välistab enamiku andmetele juurdepääsu koodi vajaduse, võimaldades arendajatel andmebaasiga suhelda .NET-objektide abil. See tegeleb automaatselt SQL-i genereerimise, andmekaardistamisepingja suhete haldamine.

Peamised omadused:

  • Toetab LINQ-üksuste vahel päringud.
  • Pakkumised automaatne muutus trackuningas ja laisk laadimine.
  • Annab Code-Esiteks, andmebaas-esimeneja Model-First lähenemisi.

Näide:

using (var context = new AppDbContext())
{
    var employees = context.Employees.Where(e => e.Salary > 50000).ToList();
}

Siin teisendab EF LINQ päringu SQL-iks, hangib tulemused ja seob need Employee objektid automaatselt.


12) Selgitage erinevust Code-Esiteks, andmebaasi-eeskätt ja mudeli-eeskätt lähenemisviisid Entity Frameworkis.

Lähenemine Kirjeldus Kasuta Case'it
Code-Esiteks Defineeri klassid ja lase EF-il andmebaasi genereerida. Greenfieldi projektid.
Andmebaas-esimene Loo esmalt andmebaas ja EF genereerib üksuste klassid. Olemasolevad andmebaasid.
Model-First Kujunda üksusi visuaalselt ja EF genereerib nii andmebaasi kui ka klassid. Diagrammipõhine disain.

Näide: Aastal Code-Esimese lähenemisviisi kohaselt loovad arendajad C# klassid, näiteks Customer ja Orderja EF loob vastavad tabelid SQL Serveris automaatselt.


13) Mis on LINQ ja millised on selle eelised .NET arenduses?

Keelega integreeritud päring (LINQ) võimaldab pärida andmeid erinevatest allikatest (objektid, XML, andmebaasid), kasutades ühtset süntaksit otse C# või VB.NET sees.

See täiustab loetavust, tüübiohutusja kompileerimisaegne kontroll.

LINQ eelised:

  1. Ühtne süntaks erinevate andmeallikate jaoks.
  2. Vähendab koodi keerukust.
  3. Pakub IntelliSense'i ja kompileerimise ajal valideerimist.
  4. Toetab edasilükatud täitmist jõudluse optimeerimiseks.

Näide:

var highSalaries = employees.Where(e => e.Salary > 70000)
                            .OrderBy(e => e.Name)
                            .ToList();

14) Mis vahe on .NET-is IEnumerable'il, ICollectionil ja IQueryable'il?

Interface Täitmise tüüp Kasuta Case'it Peamine erinevus
Loendamatu Mälusisene iteratsioon Kohalikud kogud Käivitub kliendi poolel.
iCollection Mälusisene, toetab lisamist/eemaldamist Kollektsioonide muutmine Laiendab IEnumerable'i kogude haldamisega.
IQueryable Edasilükatud täitmine (kaugjuhtimise teel) LINQ-st SQL/EF-iks Käivitub andmebaasi tasandil.

Näide: Kasutamine IQueryable Entity Frameworkis võimaldab see andmebaasipoolset filtreerimist, mis on palju tõhusam kui IEnumerable mälus.


15) Mis on asünkroonne programmeerimine ja kuidas asünkroon ja await .NET-is töötavad?

Asünkroonne programmeerimine .NET-is võimaldab mitme toimingu teostamist ilma põhilõime blokeerimata, parandades veebi- ja töölauarakenduste reageerimisvõimet.

Võti Concepts:

  • async märgib meetodi asünkroonseks.
  • await peatab meetodi täitmise kuni oodatava ülesande lõpuleviimiseni.
  • Hoiab ära lõimede nälgimise ja kasutajaliidese hangumise.

Näide:

public async Task<int> GetDataAsync()
{
    var data = await httpClient.GetStringAsync("https://api.example.com");
    return data.Length;
}

Kasu: Põhilõim jääb vabaks teiste ülesannete täitmiseks, samal ajal kui I/O-toiming taustal toimub.


16) Mis on sõltuvusinjektsioon (DI) ja miks see on .NET Core'is oluline?

Sõltuvusinjektsioon (DI) on disainimuster, mis võimaldab lahtine sidur klasside vahel sõltuvuste süstimise, mitte nende sisemise loomise teel.

Plussid:

  • Parandab testitavust.
  • Promotesti moodulkujundus.
  • Lihtsustab konfiguratsioonihaldust.

Näide:

public class OrderService
{
    private readonly IEmailService _emailService;
    public OrderService(IEmailService emailService)
    {
        _emailService = emailService;
    }
}

.NET Core'is on DI raamistikku sisse ehitatud läbi IServiceCollection kasutatud konteiner Startup.cs.


17) Kuidas .NET-rakendustes erandeid tõhusalt käsitleda?

Erandite käsitlemine tagab, et käitusaja vigu hallatakse korralikult ilma rakendust krahhita. Peamine mehhanism on proovi-püüda-lõpuks blokeerida.

Näide:

try
{
    int result = 10 / divisor;
}
catch (DivideByZeroException ex)
{
    Console.WriteLine("Cannot divide by zero.");
}
finally
{
    Console.WriteLine("Operation completed.");
}

Parimad tavad:

  • Püüa alati kõigepealt kinni konkreetsetest eranditest.
  • Kasutama finally puhastusloogika jaoks
  • Väldi tühje püüdmisplokke.
  • Kasutage globaalset erandite käsitlemist ASP.NET Core'is (UseExceptionHandler() vahevara).

18) Millised on .NET-rakenduste peamised turvapraktikad?

TURVALISUS .NET-is hõlmab see mitut kihti, sealhulgas autentimist, autoriseerimist, andmete krüptimist ja sisendi valideerimist.

Peamised tavad:

  1. Kasutama ASP.NET identiteet autentimiseks ja rollide haldamiseks.
  2. Võimaldama HTTPS (SSL/TLS) andmete krüpteerimiseks.
  3. kehtima andmete valideerimine ja parameetrilised päringud SQL-süstimise vältimiseks.
  4. Kasutama Andmekaitse API-d küpsiste ja žetoonide turvamiseks.
  5. Täitma JWT (JSON veebitokenid) API-des kodakondsuseta autentimise jaoks.

Näide: JWT-põhist autentimist kasutatakse tavaliselt mikroteenustes kasutaja identiteedi kontrollimiseks ilma seansi olekut säilitamata.


19) Selgita kõhulihaste jatract-klassid ja liidesed C#-s.

tunnusjoon Abstract-klass Interface
Täitmine Võib sisaldada meetodite rakendamist Ainult deklaratsioonid (C# 8 lubab vaikeväärtusi)
Mitmekordne pärand Ei toetata Toetatud
Konstruktorid Võib sisaldada konstruktoreid Ei saa olla konstruktoreid
Kasuta Case'it Baasklass jagatud koodiga koostract mitme omavahel mitteseotud klassi jaoks

Näide:

abstract class Animal { public abstract void Speak(); }
interface IPet { void Play(); }

A Dog klass saab pärida Animal ja rakendada IPet samaaegselt.


20) Milliseid kujundusmustreid .NET-is tavaliselt kasutatakse ja millised on nende eelised?

Disainimustrid on tõestatud lahendused korduvatele tarkvaradisaini probleemidele. Need täiustavad hooldatavus, skaleeritavus ja loetavus.

Mustri tüüp Näide Kirjeldus
Loominguline Singleton, tehas Objektide loomise haldamine.
struktuurne Adapter, dekoraator Kombineeri klasse või objekte.
Käitumist Vaatleja, strateegia Defineeri objektikommunikatsioon.

Näide: .NET Core'is Singletoni muster kasutatakse sageli jagatud teenuste (nt logimise) jaoks, registreerides need AddSingleton() sõltuvuse süstimisel.


21) Mis on .NET MAUI ja mille poolest see erineb Xamarin?

.NET MAUI (mitmeplatvormiline rakenduse kasutajaliides) on evolutsioon Xamarin.Forms. See võimaldab arendajatel luua platvormideülesed rakendused eest Android, IOS, macOSja Windows ühest jagatud koodibaasist.

tunnusjoon Xamarin.Vormid .NET MAUI
Raamistiku alus .NET raamistik / Mono Ühendatud .NET 6+
Architektuur Platvormispetsiifilised projektid Ühe projekti struktuur
jõudlus Mõõdukas Täiustatud .NET-i käituskeskkonnaga
Kuum uuesti laadimine piiratud Täielik kuuma laadimise tugi

Näide: Üksik .NET MAUI projekt võib sisaldada platvormipõhist koodi kaustades, näiteks Platforms/Android or Platforms/iOS, jagades samal ajal ühiseid kasutajaliidese komponente platvormide vahel.

Kasu: Lihtsustab platvormideülest arendust ja parandab hooldatavust.


22) Mis on Blazor ja millised on selle erinevad hostimismudelid?

Blazer on raamistik interaktiivsete veebikasutajaliideste loomiseks, kasutades C# asemel JavaSkript. See võimaldab täismahus veebiarendust .NET-iga.

Majutusmudel Kirjeldus Täitmise asukoht
Blazori server Töötab serveris, saadab kasutajaliidese uuendusi läbi SignalR server
Blazori veebAssembly Töötab kliendi poolel brauseris, kasutades veebiAssembly brauseri
Blazori hübriid (MAUI) Ühendab veebiliidese natiivse töölaua-/mobiilirakendusega Kohalik rakendus

Näide: Blazor Serveri rakendused sobivad ettevõtte armatuurlaudadele, mis vajavad turvalist ja tsentraliseeritud kontrolli, samas kui Blazor WebAssembly sobib võrguühenduseta rakendustele.


23) Mis on .NET-i mikroteenused ja milliseid eeliseid need pakuvad monoliitse arhitektuuri ees?

Mikroteenuste arhitektuur lagundab rakenduse osadeks sõltumatud, juurutatavad teenused, millest igaüks tegeleb kindla ärivõimekusega.

Aspekt monoliitne Microservices
Deployment Üksik üksus Sõltumatud teenused
Skaalautuvus Kogu rakenduse skaleerimine Skaala teenuse kohta
Tehnoloogia virn Fikseeritud Polüglottide tugi
Rikke isolatsioon Madal Kõrge

Plussid:

  • Sõltumatu juurutamine ja skaleerimine.
  • Lihtsam rikete isoleerimine ja kiirem taastumine.
  • Võimaldab CI/CD torujuhtmeid ja DevOps tavasid.

Näide: .NET-põhine e-kaubandussüsteem võib eraldada OrderService, InventoryServiceja PaymentService üksikute REST- või gRPC-teenustena.


24) Kuidas parandab gRPC .NET-i mikroteenuste suhtlust võrreldes REST API-dega?

gRPC (Google Kaugprotseduurikutse) on suure jõudlusega suhtlusraamistik, mis kasutab Protokoll Buffers (protobuf) sõnumite serialiseerimiseks.

tunnusjoon REST API gRPC
vorming JSON Binaarne (protobuf)
Kiirus JSON-i parsimise tõttu aeglasem Palju kiirem
KOMMUNIKATSIOON HTTP 1.1 HTTP/2 (kahesuunaline)
koostract OpenAPI .proto-failid
Kasuta Case'it Veebirakendused Sisemine teeninduskommunikatsioon

Näide: .NET-is defineeritakse gRPC-teenused, kasutades .proto failid ja kompileeritakse C# koodi, pakkudes kiiremat ja kompaktsemat sõnumsidet, mis sobib ideaalselt mikroteenuste ja IoT jaoks.


25) Millised on mõned parimad tavad .NET-rakenduste jõudluse optimeerimiseks?

Jõudluse häälestamine on vanemate arendajate jaoks võtmeoskus. Optimeerimine peaks keskenduma koodi efektiivsusele, mäluhaldusele ja andmebaasi interaktsioonidele.

Parimad tavad:

  1. Kasutage asünkroonset programmeerimist (async/await) blokeerimise vältimiseks.
  2. Vahemällu salvesta sageli kasutatavad andmed kasutades MemoryCache'i või Redist.
  3. Minimeerige eraldisi ja kasutamise Span<T> või suurte andmete koondamine.
  4. Profiilikood kasutades selliseid tööriistu nagu dotTrace või PerfView.
  5. Optimeeri EF-päringuid koos AsNoTracking() kirjutuskaitstud andmete jaoks.

Näide:

var users = context.Users.AsNoTracking().ToList();

See väldib tracsuur lisakulu, parandades suurte tulemuskogumite jõudlust.


26) Millised vahemällu salvestamise tehnikad on .NET Core'is saadaval?

Vahemällu salvestamine parandab jõudlust, salvestades andmeid ajutiselt taaskasutamiseks.

Vahemälu tüüp Kirjeldus Kasutamise näide
Mälusisene vahemälu Salvestab andmeid serveri mällu. IMemoryCache
Hajutatud vahemälu Jagatud vahemälu serverite vahel. IDistributedCache, Redis
Vastuste vahemällu salvestamine Vahemällu salvestab HTTP-vastused. ResponseCache atribuut
Väljundi vahemällu salvestamine Taaskasutab täielikult renderdatud väljundit. ASP.NET Core'i vahetarkvara

Näide:

_cache.Set("EmployeeList", employeeData, TimeSpan.FromMinutes(30));

Hajutatud vahemällu salvestamiseks kasutatakse Redist sageli koormusega tasakaalustatud keskkondades.


27) Kuidas rakendada logimist ja jälgimist .NET Core'i rakendustes?

Metsaraie on oluline tracKingi probleemid ja süsteemi tervise jälgimine. .NET Core pakub sisseehitatud logimisvõimalusitracmis saavad integreeruda kolmandate osapoolte pakkujatega.

Tehnikad:

  • Kasutama ILogger struktureeritud logimise liides.
  • Integreerige rakendusega Serilog, NLogvõi Rakenduse teadmised.
  • Salvestage logisid tsentraliseeritud süsteemides, näiteks ELK (elastne virn).

Näide:

public class UserController
{
    private readonly ILogger<UserController> _logger;
    public UserController(ILogger<UserController> logger)
    {
        _logger = logger;
    }
}

Järelevalve tööriistad:

  • Azure Rakenduse teadmised
  • Prometheus + Grafana
  • Uus reliikvia / Datadog

28) Millised on .NET-rakenduste peamised juurutamisvõimalused?

.NET-rakendusi saab juurutada mitme paindliku meetodi abil:

Juurutamise tüüp Kirjeldus Kasuta Case'it
Raamistikust sõltuv juurutamine (FDD) Nõuab hostile installitud .NET-i käituskeskkonda. Jagatud serverid.
Iseseisev juurutamine (SCD) Pakett sisaldab .NET käituskeskkonda. Isoleeritud pilverakendused.
Dockeri konteinerid Pakitab rakenduse sõltuvustega. Mikroteenused ja CI/CD.
Azure Rakendusteenus Pilvepõhine veebirakenduste hostimine. Skaleeritavad SaaS-rakendused.

Näide: .NET 8 veebiliidese (Web API) juurutamine Dockeri konteinerina parandab kaasaskantavust ja CI/CD automatiseerimist.


29) Kuidas Azure integreerida .NET-rakendustega pilvearenduseks?

Azure pakub esmaklassilist integratsiooni .NET-iga pilvepõhiste rakenduste loomiseks, juurutamiseks ja haldamiseks.

Võti Azure .NET-i teenused:

  1. Azure Rakendusteenus – veebirakenduste majutamine.
  2. Azure Funktsioonid – serverita arvutus taustal tehtavateks toiminguteks.
  3. Azure SQL andmebaas – täielikult hallatav relatsioonandmebaas.
  4. Azure Teenindusbuss – hajutatud süsteemide sõnumijärjekorda seadmine.
  5. Azure Võti Vault – turvalised saladused ja volitused.

Näide: .NET-mikroteenus võib kasutada Azure Võti Vault andmebaasi ühendusstringide turvaline salvestamine juurutamise ajal Azure DevOps CI/CD torujuhe.


30) Milliseid testimisraamistikke .NET-is tavaliselt kasutatakse ja mille poolest need erinevad?

Testimine tagab rakenduse töökindluse ja hooldatavuse. .NET toetab mitut testimisraamistikku.

Raamistik Kirjeldus Põhijooned
xÜhik Kaasaegne avatud lähtekoodiga testimistööriist. Paralleelne testide sooritamine.
NUnit Küps, laialdaselt kasutatav ettevõtetes. Atribuutpõhine testimine.
MSTest Microsoftnatiivne testimisraamistik. Integratsioon Visual Studioga.

Näide:

[Fact]
public void Add_ReturnsSum()
{
    Assert.Equal(4, Calculator.Add(2, 2));
}

Parimad tavad:

  • Kasutama Pilkamine (Moq) sõltuvuste jaoks.
  • Säilitama kõrge testimise ulatus CI/CD integratsiooniga.
  • Sisaldama integratsioonitestid API valideerimiseks.

31) Millised on .NET 8 peamised uued funktsioonid?

.NET 8 tutvustab jõudluse optimeerimine, natiivne AOT, ja paranenud pilv-emakeel võimed. See jätkub Microsofteesmärk on luua ühtne ja platvormideülene ökosüsteem.

Peamised olulisemad teemad:

  1. Natiivne AOT (eelnev kompileerimine): Vähendab käivitusaega ja mälukasutust.
  2. ASP.NET põhitäiustused: Kiirem marsruutimine ja täiustatud HTTP/3 tugi.
  3. Blazor United: Ühendab serveripoolse ja veebiAssembly hübriidrakenduste mudelid.
  4. Jõudluse suurendamine: 20–30% kiiremad EF Core'i ja LINQ toimingud.
  5. Laiendatud MAUI tugi: Täiustatud tööriistad platvormideülese kasutajaliidese jaoks.

Näide: Natiivne AOT võimaldab väikeseid, iseseisvaid käivitatavaid faile, mis sobivad ideaalselt mikroteenuste ja konteinerdatud juurutuste jaoks.


32) Mis on .NET-is eelkompileerimine (Ahead-of-Time ehk AOT) ja millal seda kasutada tuleks?

AOT-i koostamine kompileerib .NET Intermediate Language'i (IL) enne käitusaega natiivkoodiks, parandades käivitusjõudlust ja vähendades sõltuvust JIT-kompilaatorist.

KASUTUSALA Kirjeldus Parim kasutuskohver
JIT (täpselt õigel ajal) Kompileerib IL-i käitusajal. Töölaua- või serverirakendused.
AOT (Ahead-of-Time) Kompileerib IL-i enne käitusaega. Mikroteenused, asjade internet, madala latentsusega süsteemid.

Plussid:

  • Kiirem käivitusaeg.
  • Väiksem mälumaht.
  • Parem konteineri jõudlus.

Näide:

dotnet publish -r linux-x64 -p:PublishAot=true

See käsk loob Linuxi jaoks natiivse AOT-kompileeritud binaarfaili.


33) Kuidas saavad .NET-arendajad tehisintellekti või masinõppe võimalusi rakendustesse integreerida?

.NET-i tehisintellekti integreerimine on võimalik, kasutades ML.NET, Azure Kognitiivsed teenusedvõi välised teegid.

Lähenemised:

  1. ML.NET: Loo ja treeni masinõppe mudeleid otse .NET-is.
  2. Azure Kognitiivsed teenused: Kasutage nägemise, kõne ja keele jaoks eelnevalt treenitud API-sid.
  3. ONNX-i käitusaeg: Käivita treenitud mudeleid Python/TensorFlow .NET-rakendustes.
  4. OpenAI API integreerimine: Ligipääs generatiivsele tehisintellektile (nt GPT-mudelitele) turvaliselt REST-i kaudu.

Näide (ML.NET):

var mlContext = new MLContext();
var model = mlContext.Model.Load("model.zip", out _);

Kasutusjuhtum: Kasutajate lahkumise ennustamine, anomaaliate tuvastamine või intelligentsed soovitused ettevõtte süsteemides.


34) Millised on REST API-de ja minimaalsete API-de peamised erinevused .NET 8-s?

Minimaalsed API-d pakuvad kerget viisi HTTP API-de loomiseks minimaalse mallikoodiga.

tunnusjoon REST API (kontrolleripõhine) Minimaalne API
struktuur Kasutab kontrollereid ja marsruutimist Tekstisisesed marsruudimääratlused
Seade Nõuab atribuute ja vahetarkvara Kiirem ja lihtsam
jõudlus Mõõdukas Veidi kiirem (väiksem üldkulu)
Kasuta Case'it Komplekssed ettevõtte API-d Mikroteenused või väikesed API-d

Näide:

app.MapGet("/hello", () => "Hello, World!");

Minimaalsed API-d sobivad oma lihtsuse ja jõudluse tõttu ideaalselt mikroteenuste ja serverita rakenduste jaoks.


35) Millised on .NET-rakenduste turvalise kodeerimise peamised põhimõtted?

Turvalisust tuleb tagada juba arendusfaasist alates. .NET pakub turvalise kodeerimise jaoks sisseehitatud mehhanisme ja parimaid tavasid.

Põhiprintsiibid:

  1. Kinnitage kõik sisendid: Süstimisrünnakute ennetamine.
  2. Kasutage parameetriga päringuid: Vältige SQL-süstimist.
  3. Tundlike andmete krüptimine: Kasutama System.Security.Cryptography.
  4. Hoidke saladusi turvaliselt: Kasutama Azure Võti Vault või kasutajasaladusi.
  5. Rakenda autentimist ja autoriseerimist: Täitma ASP.NET Identity või JWT tokenid.
  6. Kasutage HTTPS-i ja CORS-i poliitikaid: Vältige andmete lekkeid ja volitamata juurdepääsu.

Näide:

using (var cmd = new SqlCommand("SELECT * FROM Users WHERE Id = @id", conn))
{
    cmd.Parameters.AddWithValue("@id", userId);
}

36) Kuidas kasutate profileerimis- ja diagnostikatööriistu .NET-i jõudluse optimeerimiseks?

Profileerimine aitab tuvastada jõudluse kitsaskohti protsessoris, mälus või sisend-/väljundis.

Populaarsed tööriistad:

Vahend Eesmärk
täppTrace / dotMemory Profileerimine ja mälulekke tuvastamine
PerfView Madala taseme jõudlusanalüüs
dotnet-trace Käsurida tracse
Rakenduse teadmised Reaalajas telemeetria tootmises

Lähenemisviis:

  1. Tuvastage kitsaskohad jõudlusloendurite abil.
  2. Profiilikoodi teed ja mälu eraldamine.
  3. Optimeeri LINQ päringuid ja vähenda objektide loomist.

Näide: Kasutama dotnet-counters monitor et track reaalajas mõõdikud, näiteks protsessori ja GC aktiivsus.


37) Millised on mõned tõhusad DevOps-praktikad .NET-rakenduste jaoks?

DevOpsi integratsioon tagab automatiseerimise ja koostöö kaudu kiirema tarne ja parema kvaliteedi.

Peamised tavad:

  • CI/CD torujuhtmed: Kasutage GitHubi toiminguid või Azure DevOps automatiseeritud versioonide ja juurutuste jaoks.
  • Infrastruktuur kui Code (Siseauditi komitee): Juuruta ARM-mallide, Terraformi või Bicepi abil.
  • Automatiseeritud testimine: Integreeri xUnit/NUnit CI töövoogudesse.
  • Konteinerimine: Kasutage Dockeri kujutisi ja Kubernetesit (AKS).
  • Järelevalve: Pidev telemeetria Application Insightsiga.

Näide: CI/CD torujuhe Azure DevOps saab luua, testida ja juurutada .NET API-d, et Azure Rakendusteenus automaatselt Giti kinnituse korral.


38) Kuidas tagada skaleeritavus ja rikketaluvus .NET-põhistes hajussüsteemides?

Skaleeritavust ja rikketaluvust saab saavutada hajutatud disainipõhimõtete ja vastupidavate mustrite abil.

strateegiad:

  1. Horisontaalne skaleerimine: Juurutage koormuse tasakaalustaja taha mitu eksemplari.
  2. Kaitselüliti muster: Kasutage mööduvate vigade haldamiseks Polly teeki.
  3. Vahemällu salvestamine ja järjekorda panemine: Kasutage Redis't ja Azure Teenindussiin asünkroonseks töötlemiseks.
  4. Andmebaasi jagamine: Levitage suuri andmekogumeid.
  5. Tervisekontroll: Kasutama AddHealthChecks() vahevara .NET Core'is.

Näide (kaitselüliti):

Policy.Handle<HttpRequestException>()
      .CircuitBreaker(3, TimeSpan.FromMinutes(1));

39) Milline roll on konteinerdamisel tänapäevastes .NET juurutustes?

Konteinereerimine, peamiselt läbi laevalaadija, isoleerib rakendused ja nende sõltuvused, tagades järjepidevuse eri keskkondades.

Eelised:

  • Ennustatavad juurutused (töötab igas hostis).
  • Lihtsustatud skaleerimine Kubernetesega (AKS).
  • Kergem ja kiirem kui virtuaalmasinad.
  • Integreerub hõlpsalt CI/CD töövoogudega.

Näide (Dockerfile):

FROM mcr.microsoft.com/dotnet/aspnet:8.0
WORKDIR /app
COPY . .
ENTRYPOINT ["dotnet", "MyApp.dll"]

Kasutusjuhtum: .NET-mikroteenuste klastri juurutamine Kuberneteses parandab skaleeritavust ja rikete isoleerimist.


40) Kuidas kujundaksite skaleeritava .NET-süsteemi miljonitele kasutajatele?

.NET-i süsteemi disain nõuab arhitektuurilist ettenägelikkust, mis ühendab jõudluse, käideldavuse ja hooldatavuse.

Võti ArchiArhitektuurilised otsused:

  1. Kasutage mikroteenuseid: Iga teenus on iseseisvalt juurutatav.
  2. CQRS-i + sündmuste hankimise kasutuselevõtt: Eraldi lugemis-/kirjutamismudelid.
  3. Asünkroonne sõnumside: Kasutama Azure Teenindusbuss või Kafka.
  4. API lüüs: Halda liiklust ja turvalisust.
  5. Vahemälu kiht: Redis või MemoryCache kiire juurdepääsu tagamiseks.
  6. Andmebaasi skaleeritavus: Kasutama Azure Cosmos DB või jaotatud SQL.
  7. Automaatne skaleerimine: Konfigureeri läbi Azure Rakenduste teenus või AKS.

Näidisdisaini voost:

Kasutajad → API lüüs → Koormuse tasakaalustaja → Mikroteenused (.NET 8 API-d) → Andmebaas + Redis vahemälu → Telemeetria Application Insightsi kaudu.


🔍 Parimad .NET-i intervjuuküsimused koos reaalsete stsenaariumide ja strateegiliste vastustega

Allpool on 10 realistlikku ja sageli esitatavat .NET-intervjuuküsimust koos strateegiliste selgituste ja näidisvastustega. Lisatud on nii teadmistepõhiseid, käitumuslikke kui ka olukorraalaseid küsimusi.

Nõutavaid fraase on igaüht kasutatud üks kord.

1) Kas saaksite selgitada .NET Frameworki, .NET Core'i ja .NET 6/7/8 erinevust?

Kandidaadilt oodatakse: .NET ökosüsteemi arengu, platvormideüleste võimaluste ja pikaajalise toe mõistmine.

Näite vastus: „.NET Framework on originaalne Windowsainult raamistikku, samas kui .NET Core pakkus platvormideüleseid võimalusi ja paremat jõudlust. .NET 6 ja hilisemad versioonid ühendavad ökosüsteemi ühe moodsa platvormideülese SDK alla, millel on märkimisväärsed parandused jõudluses, pilvevalmiduses ja arenduskiiruses.


2) Kuidas rakendada sõltuvussüstimist .NET-is ja miks see kasulik on?

Kandidaadilt oodatakse: Lahtisidumise, hooldatavuse ja testitavuse mõistmine.

Näite vastus: „Sõltuvuste süstimine .NET-is rakendatakse tavaliselt sisseehitatud konteineri kaudu.“ Microsoft.Extensions.DependencyInjection nimeruum. See aitab vähendada tihedat seotust, parandab testitavust ja lihtsustab elutsükli haldust, võimaldades sõltuvuste lahendamist käitusajal.


3) Kirjeldage keerulist .NET-projekti, mille kallal te töötasite, ja kuidas te selle edule kaasa aitasite.

Kandidaadilt oodatakse: Reaalse maailma panustamine, probleemide lahendamine ja vastutuse võtmine.

Näite vastus: „Oma eelmises rollis aitasin optimeerida pärand .NET-rakendust, kujundades ümber andmepääsu kihid ja rakendades vahemällu salvestamist, et vähendada reageerimisaega. See parandas jõudlust enam kui kolmkümmend protsenti ja oluliselt kasutajakogemust.“


4) Kuidas tagate .NET-rakenduse jõudluse ja skaleeritavuse?

Kandidaadilt oodatakse: Profileerimisvahendite, arhitektuurimustrite ja parimate kodeerimistavade kasutamine.

Näite vastus: „Jälgin jõudlust profileerimisvahendite, näiteks dotTrace ja Application Insightsi, rakendage vajadusel asünkroonset programmeerimist, rakendage vahemällu salvestamist ja kasutage vajadusel skaleeritavaid arhitektuurimustreid, näiteks mikroteenuseid.


5) Selgitage .NET-is asünkroonse/ootatava ja mitmelõimelise töö erinevust.

Kandidaadilt oodatakse: Samaaegsusmudelite mõistmine.

Näite vastus: „Asünkroonne ja ootav programmeerimine võimaldavad blokeerimata toiminguid, kasutades ära ülesandepõhist asünkroonset mustrit, samas kui mitmekeermeline programmeerimine hõlmab eraldi lõimede loomist, mis töötavad paralleelselt. Asünkroonne programmeerimine sobib ideaalselt sisend-/väljundülesannete jaoks, samas kui mitmekeermeline programmeerimine on kasulik protsessoriga seotud toimingute jaoks.“


6) Räägi mulle olukorrast, kus pidid kiiresti uue .NET-tehnoloogia selgeks õppima. Kuidas sa sellele lähenesid?

Kandidaadilt oodatakse: Kohanduvus ja pidev õppimine.

Näite vastus: „Eelmisel ametikohal pidin kliendiprojekti jaoks Blazori kiiresti selgeks õppima. Pühendasin aega ametlikule…“ Microsoft dokumentatsiooni, harjutasin väikeste liivakastiprojektidega ja tegin meeskonnaliikmetega koostööd, et tagada kvaliteetsete tulemuste õigeaegne saavutamine.”


7) Kuidas kujundaksite ASP.NET Core'is RESTful API-t? Milliseid põhiprintsiipe te järgite?

Kandidaadilt oodatakse: Teadmised HTTP-meetoditest, marsruutimisest, versioonimisest ja parimatest tavadest.

Näite vastus: „Järgin REST-i põhimõtteid, nagu ressursside õige nimetamine, kodakondsuseta olek ja HTTP-verbide korrektne kasutamine. Samuti rakendan mudeli valideerimist, õigeid olekukoode, versioonimist ja autentimismehhanisme, näiteks JWT.“


8) Kuidas tulete toime lühikeste tähtaegadega, kui töötate samaaegselt mitme .NET-projektiga?

Kandidaadilt oodatakse: Prioriseerimine, organiseerimine, suhtlemine.

Näite vastus: „Eelmisel töökohal sain lühikeste tähtaegadega hakkama, jagades ülesanded hallatavateks osadeks, seades esikohale kriitilised funktsioonid ja hoides pidevalt sidusrühmadega ühendust, et seada realistlikke ootusi.“


9) Kuidas säilitada koodi kvaliteeti .NET-rakendustes?

Kandidaadilt oodatakse: Tuttav testimise, arvustuste ja tööriistadega.

Näite vastus: „Hoian koodi kvaliteeti xUnitiga ühiktestimise, koodiülevaatuse, staatilise koodianalüüsi ja SOLID-põhimõtete järgimise abil. Need sammud tagavad pikaajalise hooldatavuse ja töökindluse.“


10) Oletame, et tootmiskeskkonnas töötav .NET API hakkab vahelduvalt tagastama 500 viga. Kuidas te probleemi diagnoosima hakkaksite?

Kandidaadilt oodatakse: Struktureeritud veaotsing, tööriistade kasutamine ja rahulik olemine surve all.

Näite vastus: „Oma viimases rollis alustaksin logide ülevaatamisega, sõltuvuste seisundi kontrollimisega ja Application Insightsi või sarnaste tööriistade kasutamisega, et…“ trace tõrked. Seejärel eraldaksin probleemi andmebaasist, konfiguratsioonist või koodist, ning pärast replikatsiooni ja valideerimist rakendaksin sihipäraseid parandusi.

Võta see postitus kokku järgmiselt: