40 najboljih pitanja i odgovora za intervju za .Net (2026.)
Priprema za .Net intervju zahtijeva jasnoću o tome s čime se možete susresti, a razumijevanje ključnih koncepata je bitno jer druga rečenica mora sadržavati „Pitanja za .Net intervju“ kako bi se uspostavila neposredna relevantnost.
Istraživanje .Net intervjua otvara snažne karijerne mogućnosti podržane trendovima u industriji, praktičnim primjenama i dubokim tehničkim iskustvom. Stručnjaci s domenskim znanjem, iskustvom na osnovnoj razini i snažnim analitičkim vještinama imaju koristi od vrhunskih pitanja i odgovora koji pomažu i početnicima i iskusnim kandidatima da ojačaju svoje vještine u osnovnim, naprednim, srednjim, višim i direktnim tehničkim raspravama. Čitaj više…
👉 Besplatno preuzimanje PDF-a: Pitanja i odgovori za intervju za .Net
1) Što je .NET Framework i koje su njegove ključne komponente?
.NET Framework je platforma za razvoj softvera koju je razvio Microsoft koji pruža kontrolirano okruženje za izgradnju, implementaciju i pokretanje aplikacija. Podržava više jezika poput C#, VB.NET i F#. Okvir osigurava interoperabilnost jezika i upravljanje memorijom putem svog Common Language Runtime (CLR).
Ključne komponente:
| Sastavni | Description |
|---|---|
| CLR (Common Language Runtime) | Upravlja memorijom, sigurnošću i izvršavanjem koda. |
| FCL (Biblioteka klasa okvira) | Opsežna kolekcija klasa, sučelja i vrijednosnih tipova za višekratnu upotrebu. |
| ASP.NET | Omogućuje razvoj dinamičkih web aplikacija. |
| ADO.NET | Omogućuje pristup podacima iz različitih izvora podataka. |
Primjer: AC# aplikacija može koristiti ADO.NET za povezivanje s SQL Server bazom podataka putem upravljanog okruženja, osiguravajući sigurnost i skalabilnost.
2) Objasnite razliku između .NET Frameworka, .NET Corea i .NET 5/6/7.
Microsoft je razvio .NET u ujedinjenu platformu za podršku razvoju na više platformi.
. NET Framework is Windows-samo, dok .NET jezgra je otvorenog koda i višeplatformski. Od .NET 5 pa nadalje, Microsoft spojili su ih u jedno ujedinjeno okruženje za izvođenje.
| svojstvo | . NET Framework | .NET jezgra | .NET 5/6/7+ |
|---|---|---|---|
| Podrška platformi | Windows samo | Cross-platforma | Cross-platforma |
| Open Source | Ne | Da | Da |
| Izvođenje | Umjereno | visok | Vrlo visoko |
| razvoj | U cijelom sustavu | Samostalan | Fleksibilno |
| Primjer upotrebe | Naslijeđene poslovne aplikacije | Oblak i mikroservisi | Moderne višeplatformske aplikacije |
3) Kako Common Language Runtime (CLR) upravlja izvršavanjem koda?
CLR djeluje kao izvršni mehanizam za .NET aplikacije. Pretvara Intermediate Language (IL) kod u izvorni strojni kod putem Just-In-Time (JIT) kompilacije. Također omogućuje automatsko upravljanje memorijom pomoću sakupljanja smeća.
Ključne funkcije CLR-a:
- Upravljanje memorijom – Automatski dodjeljuje i oslobađa memoriju.
- Upravljanje sigurnošću – Provjerava sigurnost pristupa kodu i sigurnost temeljenu na ulogama.
- iznimka Rukovanje – Osigurava da se pogreške tijekom izvođenja uočavaju i pravilno upravljaju.
- Upravljanje nitima – Omogućuje učinkovito izvršavanje višenitnog koda.
Primjer: Kada se .NET program izvršava, CLR kompajlira IL kod u izvorni kod na zahtjev, osiguravajući optimalno izvršavanje.
4) Koje su različite vrste JIT kompajlera u .NET-u?
CLR nudi tri vrste Just-In-Time (JIT) kompajlera:
| Tip | Description | Koristite slučaj |
|---|---|---|
| Pre-JIT (NGen) | Kompajlira cijeli kod odjednom prilikom implementacije. | Smanjuje vrijeme pokretanja. |
| Econo-JIT | Kompajlira samo metode pozvane za vrijeme izvođenja i odbacuje ih nakon toga. | Okruženja s ograničenom memorijom. |
| Normalni JIT | Kompajlira kod metodu po metodu tijekom izvršavanja. | Standardni model izvršenja. |
Svaki JIT pristup balansira između predstava i korištenje resursa na temelju konteksta implementacije.
5) Što su sklopovi u .NET-u i kako se razlikuju od imenskih prostora?
An skupština je najmanja implementacijska jedinica .NET aplikacije koja sadrži kompilirani kod, metapodatke i resurse. imenski prostor, s druge strane, je logička grupaping klasa koje se koriste za organizaciju koda.
| usporedba | Assembly | Prostor |
|---|---|---|
| Priroda | Fizička datoteka (DLL/EXE) | Logička grupaping |
| Svrha | Implementacija i verzioniranje | Code organizacija |
| sadrži | Metapodaci, manifest, MSIL | Klase, sučelja |
| Primjer | System.Data.dll |
System.Data.SqlClient |
Primjer: System.Data.dll sklop može sadržavati više imenskih prostora kao što su System.Data i System.Data.SqlClient.
6) Koja je razlika između vrijednosnih tipova i referentnih tipova u .NET-u?
U .NET-u, vrste vrijednosti pohranjuje podatke izravno, dok tipovi referenci pohraniti reference na memorijsku adresu podataka.
| Temelj | Vrsta vrijednosti | Referentni tip |
|---|---|---|
| Čuvanje | Stog | gomila |
| Primjeri tipova | int, float, bool, struktura | klasa, niz, niz |
| Kopiranje | Kopira stvarnu vrijednost | Kopira referencu |
| Null dopušteno | Ne | Da |
Primjer:
int a = 5; int b = a; → Oba imaju odvojene kopije.
ClassObj x = new ClassObj(); ClassObj y = x; → Oba se odnose na isti objekt.
7) Kako funkcionira sakupljanje smeća u .NET-u?
Sakupljanje smeća (GC) u .NET-u automatski upravlja memorijom vraćanjem nekorištenih objekata. Radi u generacije optimizirati performanse.
Generacijski GC:
- Post 0: Kratkotrajni objekti (npr. privremene varijable).
- Post 1: Srednježivući objekti promovirani iz Gen 0.
- Post 2: Dugotrajni objekti (npr. statički podaci).
Prednosti:
- Sprječava curenje memorije.
- Poboljšava performanse aplikacije.
- Pojednostavljuje rukovanje memorijom za programere.
Primjer: Kada se na objekt više ne referencira, GC ga uklanja iz hrpe, oslobađajući memoriju za ponovnu upotrebu.
8) Što su delegati i po čemu se razlikuju od događaja?
A delegat je tip koji predstavlja reference na metode, dok je događaj je mehanizam koji omogućuje komunikaciju između razreda putem delegata.
| Aspekt | Delegat | događaj |
|---|---|---|
| Definicija | Objekt koji pokazuje na metodu | Mehanizam obavještavanja |
| prizivanje | Može se izravno pozvati | Pozvano putem pretplatnika |
| Primjer | Action<int> myDelegate; |
event EventHandler myEvent; |
Primjer:
public delegate void Notify(); public event Notify OnProcessCompleted;
Ovdje, OnProcessCompleted je događaj zasnovan na Notify delegat.
9) Koje su glavne prednosti i nedostaci korištenja .NET Core-a?
| Prednosti | Nedostaci |
|---|---|
| Podrška na više platformi | Strmija krivulja učenja za početnike |
| Otvoreni kod i vođen zajednicom | Ograničena podrška za naslijeđene okvire |
| Visoke performanse s Kestrel serverom | Izazovi migracije za starije projekte |
| Ugrađena injekcija ovisnosti | Neki API-ji se još uvijek razvijaju |
Primjer: .NET Core je idealan za izgradnju mikroservisa koji se pokreću na Docker kontejnerima na Linuxu i Windows poslužiteljima.
10) Objasnite životni ciklus ASP.NET stranice.
Životni ciklus ASP.NET stranice definira kako se stranica inicijalizira, obrađuje i prikazuje. Svaka faza pruža događaje koje programeri mogu obraditi kako bi izvršili prilagođenu logiku.
| Stadij | Description |
|---|---|
| Zahtjev za stranicu | Korisnik prvi put traži stranicu. |
| Start | Određuje je li zahtjev povratni. |
| Inicijalizacija | Sve kontrole su inicijalizirane. |
| Opterećenje | Podaci i kontrole stranice su učitani. |
| Obrada događaja povratne objave | Obrađuje događaje koje pokreću kontrole. |
| vraćanje | Stranica se renderira u HTML. |
| Istovariti | Faza čišćenja nakon slanja odgovora. |
Primjer: Programeri često koriste Page_Load or Page_Init događaje za inicijalizaciju kontrola ili postavljanje vezanja podataka.
11) Što je Entity Framework (EF) i kako pojednostavljuje operacije s bazom podataka?
Entity Framework (EF) je Microsoft'S Objektno-relacijski maper (ORM) što eliminira potrebu za većinom koda za pristup podacima omogućujući programerima interakciju s bazom podataka pomoću .NET objekata. Automatski obrađuje generiranje SQL-a, mapiranje podatakapingi upravljanje odnosima.
Ključne značajke:
- Podržava LINQ-to-Entiteti upita.
- Ponude automatska promjena trackralj i lijeno učitavanje.
- Pruža Code-Prvo, baza podataka prvoi Model-First pristupi.
Primjer:
using (var context = new AppDbContext())
{
var employees = context.Employees.Where(e => e.Salary > 50000).ToList();
}
Ovdje EF prevodi LINQ upit u SQL, dohvaća rezultate i mapira ih na Employee objekti automatski.
12) Objasnite razliku između Code-Prvo, Database-First i Model-First pristupi u Entity Frameworku.
| Pristup | Description | Koristite slučaj |
|---|---|---|
| Code-Prvi | Definirajte klase i pustite EF da generira bazu podataka. | Greenfield projekti. |
| Baza podataka - prvo | Prvo kreirajte bazu podataka, a EF generira klase entiteta. | Postojeće baze podataka. |
| Model-First | Vizualno dizajnirajte entitete, a EF generira i bazu podataka i klase. | Dizajn vođen dijagramima. |
Primjer: U Code-Prvi pristup, programeri stvaraju C# klase kao što su Customer i Order, a EF automatski gradi odgovarajuće tablice u SQL Serveru.
13) Što je LINQ i koje su njegove prednosti u .NET razvoju?
Jezični integrirani upit (LINQ) omogućuje upite podataka iz različitih izvora (objekti, XML, baze podataka) korištenjem konzistentne sintakse izravno unutar C# ili VB.NET-a.
Pojačava čitljivost, sigurnost tipovai provjera za vrijeme kompajliranja.
Prednosti LINQ-a:
- Ujednačena sintaksa za različite izvore podataka.
- Smanjuje složenost koda.
- Pruža IntelliSense i validaciju tijekom kompajliranja.
- Podržava odgođeno izvršavanje za optimizaciju performansi.
Primjer:
var highSalaries = employees.Where(e => e.Salary > 70000)
.OrderBy(e => e.Name)
.ToList();
14) Koja je razlika između IEnumerable, ICollection i IQueryable u .NET-u?
| Sučelje | Vrsta izvršenja | Koristite slučaj | Ključna razlika |
|---|---|---|---|
| Nebrojeno | Iteracija u memoriji | Lokalne zbirke | Izvršava se na strani klijenta. |
| ICollection | U memoriji, podržava dodavanje/uklanjanje | Izmijeni zbirke | Proširuje IEnumerable upravljanjem kolekcijama. |
| IQueryable | Odgođeno izvršenje (udaljeno) | LINQ prema SQL/EF-u | Izvršava se na razini baze podataka. |
Primjer: Korištenje IQueryable u Entity Frameworku omogućuje filtriranje na strani baze podataka, što je daleko učinkovitije od korištenja IEnumerable u sjećanju.
15) Što je asinhrono programiranje i kako async i await funkcioniraju u .NET-u?
Asinkrono programiranje u .NET-u omogućuje izvršavanje više operacija bez blokiranja glavne niti, poboljšavajući responzivnost u web i desktop aplikacijama.
Ključ Concepts:
asyncoznačava metodu kao asinhronu.awaitobustavlja izvršavanje metode dok se očekivani zadatak ne završi.- Sprječava gladovanje niti i zamrzavanje korisničkog sučelja.
Primjer:
public async Task<int> GetDataAsync()
{
var data = await httpClient.GetStringAsync("https://api.example.com");
return data.Length;
}
Korist: Glavna nit ostaje slobodna za obavljanje drugih zadataka dok se I/O operacije izvršavaju u pozadini.
16) Što je Dependency Injection (DI) i zašto je važan u .NET Coreu?
Ubrizgavanje ovisnosti (DI) je obrazac dizajna koji omogućuje labava veza između klasa ubrizgavanjem ovisnosti umjesto njihovog internog stvaranja.
Prednosti:
- Poboljšava mogućnost testiranja.
- Promomodularni dizajn testa.
- Pojednostavljuje upravljanje konfiguracijom.
Primjer:
public class OrderService
{
private readonly IEmailService _emailService;
public OrderService(IEmailService emailService)
{
_emailService = emailService;
}
}
U .NET Coreu, DI je ugrađen u okvir putem IServiceCollection spremnik koji se koristi u Startup.cs.
17) Kako učinkovito rješavate iznimke u .NET aplikacijama?
Obrada iznimaka osigurava da se pogreške tijekom izvođenja ispravno upravljaju bez rušenja aplikacije. Primarni mehanizam je pokušaj-uhvati-napokon blok.
Primjer:
try
{
int result = 10 / divisor;
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Cannot divide by zero.");
}
finally
{
Console.WriteLine("Operation completed.");
}
Najbolje prakse:
- Uvijek prvo uhvatite specifične iznimke.
- Koristiti
finallyza logiku čišćenja - Izbjegavajte prazne blokove za hvatanje.
- Koristite globalno rukovanje iznimkama u ASP.NET Core-u (
UseExceptionHandler()međuprogram).
18) Koje su ključne sigurnosne prakse u .NET aplikacijama?
Sigurnost u .NET-u obuhvaća više slojeva, uključujući autentifikaciju, autorizaciju, šifriranje podataka i validaciju unosa.
Ključne prakse:
- Koristiti ASP.NET identitet za autentifikaciju i upravljanje ulogama.
- Omogući HTTPS (SSL/TLS) za šifriranje podataka.
- Korak po korak do prijave validacija podataka i parametrizirani upiti kako bi se spriječilo SQL injection.
- Koristiti API-ji za zaštitu podataka za osiguranje kolačića i tokena.
- Implementirati JWT (JSON web tokeni) za autentifikaciju bez stanja u API-jima.
Primjer: JWT-bazirana autentifikacija se često koristi u mikroservisima za provjeru identiteta korisnika bez održavanja stanja sesije.
19) Objasnite razliku između trbušnih mišićatract klase i sučelja u C#.
| svojstvo | Kormilartract klasa | Sučelje |
|---|---|---|
| Izvršenje | Može sadržavati implementacije metoda | Samo deklaracije (C# 8 dopušta zadane vrijednosti) |
| Višestruko nasljeđivanje | Nije podržano | Podržano |
| Konstruktori | Može imati konstruktore | Ne može imati konstruktore |
| Koristite slučaj | Osnovna klasa s dijeljenim kodom | stract za više nepovezanih klasa |
Primjer:
abstract class Animal { public abstract void Speak(); }
interface IPet { void Play(); }
A Dog klasa može nasljeđivati od Animal i provesti IPet istovremeno.
20) Koji se obrasci dizajna obično koriste u .NET-u i koje su njihove prednosti?
Obrasci dizajna su dokazana rješenja za ponavljajuće probleme dizajna softvera. Oni poboljšavaju održivost, skalabilnost i čitljivost.
| tip uzorka | Primjer | Description |
|---|---|---|
| stvaralačka | Singleton, Tvornica | Upravljajte stvaranjem objekata. |
| Strukturalan | Adapter, Dekorater | Kombinirajte klase ili objekte. |
| bihevioralna | Promatrač, Strategija | Definirajte komunikaciju objekata. |
Primjer: U .NET Coreu, Singleton uzorak često se koristi za dijeljene usluge (npr. bilježenje) registrirajući ih kod AddSingleton() u injekciji ovisnosti.
21) Što je .NET MAUI i kako se razlikuje od Xamarin?
.NET MAUI (Višeplatformsko korisničko sučelje aplikacije) je evolucija Xamarin.Forms. Omogućuje programerima izradu višeplatformske aplikacije za Android, IOS, macOSi Windows iz jedne zajedničke baze koda.
| svojstvo | XamarinObrasci | .NET FIKSNO |
|---|---|---|
| Okvirna baza | .NET Framework / Mono | Ujedinjeni .NET 6+ |
| Architektura | Projekti specifični za platformu | Struktura jednog projekta |
| Izvođenje | Umjereno | Poboljšano s .NET runtime okruženjem |
| Vruće ponovno učitavanje | ograničen | Potpuna podrška za vruće ponovno punjenje |
Primjer: Jedan sam .NET MAUI projekt može uključivati kod specifičan za platformu pod mapama poput Platforms/Android or Platforms/iOS, a istovremeno dijeli zajedničke komponente korisničkog sučelja na različitim platformama.
Korist: Pojednostavljuje razvoj na više platformi i poboljšava održavanje.
22) Što je Blazor i koji su njegovi različiti modeli hostinga?
blejzer je okvir za izgradnju interaktivnih web korisničkih sučelja pomoću C# umjesto JavaSkripta. Omogućuje full-stack web razvoj s .NET-om.
| Model hostinga | Description | Mjesto izvršenja |
|---|---|---|
| Blazor poslužitelj | Radi na poslužitelju, šalje ažuriranja korisničkog sučelja putem SignalR | Server |
| Blazor WebAssembly | Izvodi se na strani klijenta u pregledniku koristeći WebAssembly | preglednik |
| Blazor hibrid (MAUI) | Kombinira web sučelje s izvornom aplikacijom za stolna računala/mobilne uređaje | Lokalna aplikacija |
Primjer: Blazor Server aplikacije su prikladne za poslovne nadzorne ploče koje zahtijevaju sigurnu, centraliziranu kontrolu, dok Blazor WebAssembly odgovara aplikacijama koje rade izvan mreže.
23) Što su mikroservisi u .NET-u i koje prednosti nude u odnosu na monolitnu arhitekturu?
Arhitektura mikroservisa dekomponira aplikaciju na neovisne, implementabilne usluge, pri čemu svaki obrađuje određenu poslovnu sposobnost.
| Aspekt | monolitan | Microservices |
|---|---|---|
| razvoj | Pojedinačna jedinica | Neovisne usluge |
| skalabilnost | Skaliranje cijele aplikacije | Skaliranje po usluzi |
| Tehnološki stog | fiksni | Podrška za poliglote |
| Pronalazak pogreške | Nizak | visok |
Prednosti:
- Neovisno postavljanje i skaliranje.
- Lakše izoliranje kvara i brži oporavak.
- Omogućuje CI/CD cjevovode i DevOps prakse.
Primjer: Sustav e-trgovine temeljen na .NET-u mogao bi odvojiti OrderService, InventoryServicei PaymentService kao pojedinačne REST ili gRPC usluge.
24) Kako gRPC poboljšava komunikaciju u .NET mikroservisima u usporedbi s REST API-jima?
gRPC (Google Poziv udaljene procedure) je visokoučinkovit komunikacijski okvir koji koristi Protokol Buffers (protobuf) za serijalizaciju poruka.
| svojstvo | REST API | gRPC |
|---|---|---|
| Format | JSON | Binarni (protobuf) |
| Brzina | Sporije zbog parsiranja JSON-a | Puno brže |
| komunikacija | HTTP 1.1 | HTTP/2 (dvosmjerno) |
| stract | OpenAPI | .proto datoteke |
| Koristite slučaj | Web aplikacije | Interna komunikacija u službi |
Primjer: U .NET-u, gRPC usluge su definirane pomoću .proto datoteke i kompajlirane u C# kod, nudeći brže i kompaktnije poruke idealne za mikroservise i IoT.
25) Koje su neke najbolje prakse za optimizaciju performansi u .NET aplikacijama?
Optimizacija performansi ključna je vještina za starije programere. Optimizacija bi se trebala usredotočiti na učinkovitost koda, upravljanje memorijom i interakcije s bazom podataka.
Najbolje prakse:
- Koristite asinkrono programiranje (
async/await) kako bi se spriječilo blokiranje. - Keširanje često korištenih podataka korištenjem MemoryCachea ili Redisa.
- Minimizirajte alokacije I koristiti
Span<T>ili objedinjavanje za velike količine podataka. - Kôd profila korištenje alata poput točkeTrace ili PerfView.
- Optimizirajte EF upite sa
AsNoTracking()za podatke samo za čitanje.
Primjer:
var users = context.Users.AsNoTracking().ToList();
Ovim se izbjegava tracking overhead, poboljšavajući performanse za velike skupove rezultata.
26) Koje su tehnike keširanja dostupne u .NET Coreu?
Predmemoriranje poboljšava performanse privremenim pohranjivanjem podataka za ponovnu upotrebu.
| Vrsta predmemorije | Description | Primjer upotrebe |
|---|---|---|
| Predmemorija u memoriji | Pohranjuje podatke u memoriju poslužitelja. | IMemoryCache |
| Distribuirana predmemorija | Dijeljena predmemorija na više poslužitelja. | IDistributedCache, Redis |
| Keširanje odgovora | Sprema HTTP odgovore u predmemoriju. | ResponseCache atribut |
| Predmemoriranje izlaza | Ponovno koristi puni renderirani izlaz. | ASP.NET Core middleware |
Primjer:
_cache.Set("EmployeeList", employeeData, TimeSpan.FromMinutes(30));
Za distribuirano keširanje, Redis se često koristi za okruženja s uravnoteženim opterećenjem.
27) Kako implementirate zapisivanje i praćenje u .NET Core aplikacijama?
Vođenje evidencije je neophodno za tracproblemi s kraljem i praćenje zdravlja sustava. .NET Core pruža ugrađene alate za evidentiranjetraccije koje se mogu integrirati s pružateljima usluga trećih strana.
Tehnike:
- Koristiti ILogger sučelje za strukturirano bilježenje.
- Integrirajte s Serilog, NLog, ili Uvid u aplikaciju.
- Pohranite zapisnike u centralizirane sustave kao što su ELK (Elastični sloj).
Primjer:
public class UserController
{
private readonly ILogger<UserController> _logger;
public UserController(ILogger<UserController> logger)
{
_logger = logger;
}
}
Alati za praćenje:
- Azure Uvid u aplikaciju
- Prometej + Grafana
- Nova relikvija / Datadog
28) Koje su glavne opcije implementacije dostupne za .NET aplikacije?
.NET aplikacije mogu se implementirati pomoću nekoliko fleksibilnih metoda:
| Vrsta postavljanja | Description | Koristite slučaj |
|---|---|---|
| Implementacija ovisno o okviru (FDD) | Zahtijeva .NET runtime instaliran na hostu. | Dijeljeni serveri. |
| Samostalno raspoređivanje (SCD) | Uključuje .NET runtime u paketu. | Izolirane aplikacije u oblaku. |
| Docker kontejneri | Paketi aplikacije s ovisnostima. | Mikroservisi i CI/CD. |
| Azure Usluga aplikacija | Hosting u oblaku za web aplikacije. | Skalabilne SaaS aplikacije. |
Primjer: Implementacija .NET 8 Web API-ja kao Docker kontejnera poboljšava prenosivost i automatizaciju CI/CD-a.
29) Kako se Azure integrirati s .NET aplikacijama za razvoj u oblaku?
Azure pruža prvoklasnu integraciju s .NET-om za izgradnju, implementaciju i upravljanje cloud-native aplikacijama.
Ključ Azure Usluge za .NET:
- Azure Usluga aplikacija – hostirati web aplikacije.
- Azure Funkcije – računanje bez servera za pozadinske zadatke.
- Azure SQL baze podataka – potpuno upravljana relacijska baza podataka.
- Azure Servisni autobus – redovi čekanja poruka za distribuirane sustave.
- Azure Ključ Vault – sigurne tajne i vjerodajnice.
Primjer: .NET mikroservis može koristiti Azure Ključ Vault sigurno pohranjivanje nizova za povezivanje s bazom podataka tijekom implementacije putem Azure DevOps CI/CD cjevovod.
30) Koji se okviri za testiranje obično koriste u .NET-u i po čemu se razlikuju?
Testiranje osigurava pouzdanost i održivost aplikacije. .NET podržava više okvira za testiranje.
| Okvir | Description | Glavne značajke |
|---|---|---|
| xJedinica | Moderni alat za testiranje otvorenog koda. | Paralelno izvršavanje testova. |
| NUjedinica | Zrelo, široko korišteno u poduzećima. | Testiranje vođeno atributima. |
| MSTest | Microsoftizvorni okvir za testiranje. | Integracija s Visual Studiom. |
Primjer:
[Fact]
public void Add_ReturnsSum()
{
Assert.Equal(4, Calculator.Add(2, 2));
}
Najbolje prakse:
- Koristiti Ismijavanje (Moq) za ovisnosti.
- Održavati visoka pokrivenost testovima s CI/CD integracijom.
- Uključivati testovi integracije za validaciju API-ja.
31) Koje su ključne nove značajke uvedene u .NET 8?
.NET 8 uvodi optimizacije performansi, izvorni AOT, i poboljšana oblak-native mogućnosti. Nastavlja se Microsoftcilj stvaranja jedinstvenog, višeplatformskog ekosustava.
Ključni dijelovi:
- Izvorni AOT (kompilacija unaprijed): Smanjuje vrijeme pokretanja i memorijski otisak.
- Poboljšanja ASP.NET Core-a: Brže usmjeravanje i poboljšana podrška za HTTP/3.
- Blazor United: Kombinira serversku stranu i webAssembly modeli za hibridne aplikacije.
- Poboljšanja performansi: 20–30% brže EF Core i LINQ operacije.
- Proširena podrška za MAUI: Poboljšani alati za višeplatformsko korisničko sučelje.
Primjer: Izvorni AOT omogućuje male, samostalne izvršne datoteke idealne za mikroservise i kontejnerizirane implementacije.
32) Što je kompilacija unaprijed (AOT) u .NET-u i kada se treba koristiti?
AOT kompilacija Prekompilira .NET Intermediate Language (IL) u izvorni kod prije izvođenja, poboljšavajući performanse pokretanja i smanjujući ovisnost o JIT kompajleru.
| Tip | Description | Najbolji slučaj upotrebe |
|---|---|---|
| JIT (Just-In-Time) | Kompajlira IL za vrijeme izvođenja. | Aplikacije za stolna računala ili poslužitelje. |
| AOT (Unaprijed vremena) | Kompajlira IL prije izvođenja. | Mikroservisi, IoT, sustavi s niskom latencijom. |
Prednosti:
- Brže vrijeme pokretanja.
- Manji memorijski otisak.
- Bolje performanse kontejnera.
Primjer:
dotnet publish -r linux-x64 -p:PublishAot=true
Ova naredba stvara izvornu AOT-kompiliranu binarnu datoteku za Linux.
33) Kako .NET programeri mogu integrirati AI ili ML mogućnosti u aplikacije?
Integracija umjetne inteligencije u .NET može se postići korištenjem ML.NET, Azure Kognitivne uslugeili vanjske biblioteke.
Pristupi:
- ML.NET: Izradite i trenirajte modele strojnog učenja izravno u .NET-u.
- Azure Kognitivne usluge: Koristite unaprijed obučene API-je za vid, govor i jezik.
- ONNX vrijeme izvođenja: Pokrenite modele obučene u Python/TensorFlow unutar .NET aplikacija.
- Integracija OpenAI API-ja: Sigurno pristupite generativnoj umjetnoj inteligenciji (npr. GPT modelima) putem REST-a.
Primjer (ML.NET):
var mlContext = new MLContext();
var model = mlContext.Model.Load("model.zip", out _);
Slučaj upotrebe: Predviđanje odljeva korisnika, otkrivanje anomalija ili inteligentne preporuke u poslovnim sustavima.
34) Koje su glavne razlike između REST API-ja i Minimal API-ja u .NET 8?
Minimalni API-ji pružaju jednostavan način za izgradnju HTTP API-ja s minimalnim standardnim kodom.
| svojstvo | REST API (baziran na kontroleru) | Minimalni API |
|---|---|---|
| Struktura | Koristi kontrolere i usmjeravanje | Definicije umetnutih ruta |
| Postavljanje | Zahtijeva atribute i middleware | Brže i jednostavnije |
| Izvođenje | Umjereno | Nešto brže (manje troškova) |
| Koristite slučaj | Složeni poslovni API-ji | Mikroservisi ili mali API-ji |
Primjer:
app.MapGet("/hello", () => "Hello, World!");
Minimalni API-ji su idealni za mikroservise i serverless aplikacije zbog svoje jednostavnosti i performansi.
35) Koji su glavni principi sigurnog kodiranja u .NET aplikacijama?
Sigurnost se mora provoditi od faze razvoja. .NET pruža ugrađene mehanizme i najbolje prakse za sigurno kodiranje.
Ključna načela:
- Potvrdi sve unose: Spriječite napade injekcijom.
- Koristite parametrizirane upite: Izbjegavajte SQL injekcije.
- Šifriranje osjetljivih podataka: Koristiti
System.Security.Cryptography. - Sigurno pohranite tajne: Koristiti Azure Ključ Vault ili korisničke tajne.
- Primijeni autentifikaciju i autorizaciju: Implementirati
ASP.NET Identityili JWT tokene. - Koristite pravila HTTPS-a i CORS-a: Spriječite curenje podataka i neovlašteni pristup.
Primjer:
using (var cmd = new SqlCommand("SELECT * FROM Users WHERE Id = @id", conn))
{
cmd.Parameters.AddWithValue("@id", userId);
}
36) Kako koristite alate za profiliranje i dijagnostiku za optimizaciju performansi .NET-a?
Profiliranje pomaže u identificiranju uskih grla u performansama CPU-a, memorije ili I/O-a.
Popularni alati:
| Oruđe | Svrha |
|---|---|
| točkaTrace / dotMemory | Profiliranje i otkrivanje curenja memorije |
| PerfView | Analiza performansi niske razine |
| dotnet-trace | Naredbeni redak tracing. |
| Uvid u aplikaciju | Telemetrija u stvarnom vremenu u produkciji |
Pristup:
- Identificirajte uska grla pomoću brojača performansi.
- Putanje profilnog koda i alokacije memorije.
- Optimizirajte LINQ upite i smanjite stvaranje objekata.
Primjer: Koristiti dotnet-counters monitor do track metrike u stvarnom vremenu poput aktivnosti CPU-a i GC-a.
37) Koje su neke učinkovite DevOps prakse za .NET aplikacije?
DevOps integracija osigurava bržu isporuku i bolju kvalitetu kroz automatizaciju i suradnju.
Ključne prakse:
- Cjevovodi CI/CD: Koristite GitHub akcije ili Azure DevOps za automatizirane izgradnje i implementacije.
- Infrastruktura kao Code (IaC): Implementirajte s ARM predlošcima, Terraformom ili Bicepom.
- Automatizirano testiranje: Integrirajte xUnit/NUnit u CI tijekove rada.
- Kontejnerizacija: Koristite Docker slike i Kubernetes (AKS).
- Praćenje: Kontinuirana telemetrija s Application Insights.
Primjer: CI/CD cjevovod u Azure DevOps stručnjaci mogu izgraditi, testirati i implementirati .NET API za Azure Usluga aplikacije automatski nakon Git commita.
38) Kako osiguravate skalabilnost i toleranciju grešaka u distribuiranim sustavima temeljenim na .NET-u?
Skalabilnost i tolerancija grešaka mogu se postići korištenjem principa distribuiranog dizajna i otpornih obrazaca.
Strategije:
- Horizontalno skaliranje: Implementirajte više instanci iza uravnoteživača opterećenja.
- Uzorak prekidača: Koristite Polly biblioteku za rješavanje prolaznih grešaka.
- Predmemoriranje i stavljanje u red: Koristite Redis i Azure Servisna sabirnica za asinhronu obradu.
- Dijeljenje baze podataka: Distribuirajte velike skupove podataka.
- Zdravstveni pregledi: Koristiti
AddHealthChecks()middleware u .NET Coreu.
Primjer (prekidač):
Policy.Handle<HttpRequestException>()
.CircuitBreaker(3, TimeSpan.FromMinutes(1));
39) Kakvu ulogu kontejnerizacija igra u modernim .NET implementacijama?
Kontejnerizacija, prvenstveno putem Lučki radnik, izolira aplikacije i njihove ovisnosti, osiguravajući dosljednost u različitim okruženjima.
Prednosti:
- Predvidljive implementacije (radi na bilo kojem hostu).
- Pojednostavljeno skaliranje s Kubernetesom (AKS).
- Lagan i brži od virtualnih strojeva.
- Lako se integrira s CI/CD tijekovima rada.
Primjer (Dockerfile):
FROM mcr.microsoft.com/dotnet/aspnet:8.0 WORKDIR /app COPY . . ENTRYPOINT ["dotnet", "MyApp.dll"]
Slučaj upotrebe: Implementacija .NET mikroservisnog klastera u Kubernetes poboljšava skalabilnost i izolaciju grešaka.
40) Kako biste dizajnirali skalabilni .NET sustav za milijune korisnika?
Dizajn sustava u .NET-u zahtijeva arhitektonsko predviđanje koje kombinira performanse, dostupnost i održivost.
Ključ ArchiTekturalne odluke:
- Koristite mikroservise: Svaka usluga se može samostalno implementirati.
- Usvojite CQRS + Event Sourcing: Odvojeni modeli čitanja/pisanja.
- Asinkrono slanje poruka: Koristiti Azure Servisni autobus ili Kafka.
- API pristupnik: Upravljajte prometom i sigurnošću.
- Sloj predmemorije: Redis ili MemoryCache za brzi pristup.
- Skalabilnost baze podataka: Koristiti Azure Cosmos DB ili particionirani SQL.
- Automatsko skaliranje: Konfiguriraj putem Azure Usluga aplikacija ili AKS.
Primjer tijeka dizajna:
Korisnici → API pristupnik → Uravnoteživač opterećenja → Mikroservisi (.NET 8 API-ji) → Baza podataka + Redis predmemorija → Telemetrija putem Application Insightsa.
🔍 Najčešća pitanja za .NET intervju sa stvarnim scenarijima i strateškim odgovorima
U nastavku slijedi 10 realističnih, često postavljanih pitanja za intervju za .NET, zajedno sa strateškim objašnjenjima i primjerima odgovora. Uključena je kombinacija pitanja temeljenih na znanju, ponašanju i situaciji.
Obavezne fraze su korištene po jednom.
1) Možete li objasniti razliku između .NET Frameworka, .NET Corea i .NET 6/7/8?
Očekivano od kandidata: Razumijevanje evolucije .NET ekosustava, mogućnosti više platformi i dugoročne podrške.
Primjer odgovora: „.NET Framework je originalni Windows-only framework, dok je .NET Core uveo višeplatformske mogućnosti i bolje performanse. .NET 6 i novije verzije ujedinjuju ekosustav pod jednim, modernim, višeplatformskim SDK-om sa značajnim poboljšanjima performansi, spremnosti za oblak i brzine razvoja.”
2) Kako implementirati ubrizgavanje ovisnosti u .NET i zašto je to korisno?
Očekivano od kandidata: Razumijevanje razdvajanja, održivosti i testiranja.
Primjer odgovora: „Ubrizgavanje ovisnosti u .NET-u se obično implementira putem ugrađenog kontejnera u Microsoft.Extensions.DependencyInjection prostor imena. Pomaže u smanjenju čvrstog povezivanja, poboljšava mogućnost testiranja i pojednostavljuje upravljanje životnim ciklusom omogućujući rješavanje ovisnosti tijekom izvođenja.
3) Opišite zahtjevan .NET projekt na kojem ste radili i kako ste doprinijeli njegovom uspjehu.
Očekivano od kandidata: Doprinos u stvarnom svijetu, rješavanje problema i odgovornost.
Primjer odgovora: „U svojoj prethodnoj ulozi pomogao sam optimizirati naslijeđenu .NET aplikaciju redizajniranjem slojeva za pristup podacima i uvođenjem predmemorije kako bi se smanjilo vrijeme odziva. To je poboljšalo performanse za više od trideset posto i značajno poboljšalo korisničko iskustvo.“
4) Kako osiguravate performanse i skalabilnost .NET aplikacije?
Očekivano od kandidata: Korištenje alata za profiliranje, arhitektonskih obrazaca i najboljih praksi kodiranja.
Primjer odgovora: „Pratim performanse pomoću alata za profiliranje kao što je dot“Trace i Application Insights, primijenite asinhrono programiranje gdje je to prikladno, implementirajte predmemoriranje i koristite skalabilne arhitektonske obrasce poput mikroservisa kada je to potrebno.”
5) Objasnite razliku između async/await i multithreadinga u .NET-u.
Očekivano od kandidata: Razumijevanje modela konkurentnosti.
Primjer odgovora: „Asinkroni i await omogućuju operacije bez blokiranja korištenjem asinkronog uzorka temeljenog na zadacima, dok višenitnost uključuje stvaranje zasebnih niti koje se izvode paralelno. Asinkrono programiranje idealno je za zadatke vezane uz ulazno/izlazne operacije, dok je višenitnost korisna za operacije vezane uz procesor.“
6) Recite mi o situaciji u kojoj ste morali brzo naučiti novu .NET tehnologiju. Kako ste tome pristupili?
Očekivano od kandidata: Prilagodljivost i kontinuirano učenje.
Primjer odgovora: „Na prethodnoj poziciji, trebao sam brzo naučiti Blazor za klijentski projekt. Posvetio sam vrijeme službenim Microsoft dokumentaciju, vježbao s malim sandbox projektima i surađivao s članovima tima kako bih osigurao da na vrijeme isporučim kvalitetne rezultate.”
7) Kako biste dizajnirali RESTful API u ASP.NET Coreu? Kojih ključnih principa se pridržavate?
Očekivano od kandidata: Poznavanje HTTP metoda, usmjeravanja, verzija i najboljih praksi.
Primjer odgovora: „Pridržavam se REST principa kao što su pravilno imenovanje resursa, odsutnost stanja i ispravna upotreba HTTP glagola. Također implementiram validaciju modela, ispravne statusne kodove, verzioniranje i mehanizme autentifikacije kao što je JWT.“
8) Kako se nosite s kratkim rokovima kada radite na više .NET projekata istovremeno?
Očekivano od kandidata: Prioritizacija, organizacija, komunikacija.
Primjer odgovora: „Na prethodnom poslu rješavao sam kratke rokove tako što sam zadatke dijelio na upravljive komponente, davao prioritet ključnim značajkama i održavao kontinuiranu komunikaciju sa zainteresiranim stranama kako bih postavio realna očekivanja.“
9) Kako održavate kvalitetu koda u .NET aplikacijama?
Očekivano od kandidata: Poznavanje testiranja, recenzija i alata.
Primjer odgovora: „Kvalitet koda održavam jediničnim testiranjem s xUnitom, pregledima koda, statičkom analizom koda i pridržavanjem SOLID principa. Ovi koraci osiguravaju dugoročnu održivost i pouzdanost.“
10) Pretpostavimo da produkcijski .NET API počne povremeno vraćati 500 pogrešaka. Kako biste pristupili dijagnosticiranju problema?
Očekivano od kandidata: Strukturirano otklanjanje pogrešaka, korištenje alata i smirenost pod pritiskom.
Primjer odgovora: „U svojoj posljednjoj ulozi, započeo bih pregledom logova, provjerom stanja ovisnosti i korištenjem Application Insightsa ili sličnih alata za…“ trace kvarova. Zatim bih izolirao je li problem povezan s bazom podataka, konfiguracijom ili kodom te bih nakon replikacije i validacije implementirao ciljane ispravke.”

