40 nejlepších otázek a odpovědí na pohovorech o .Net (2026)

Příprava na pohovor v oblasti .Net vyžaduje jasnou představu o tom, s čím se můžete setkat, a pochopení klíčových konceptů je nezbytné, protože druhá věta musí obsahovat „Otázky na pohovor v oblasti .Net“, aby se zajistila okamžitá relevantnost.
Pohovory o .Netu otevírají silné kariérní příležitosti podpořené trendy v oboru, praktickými aplikacemi a hlubokými technickými zkušenostmi. Odborníci s odbornými znalostmi v dané oblasti, základními zkušenostmi a silnými analytickými schopnostmi těží z nejlepších otázek a odpovědí, které pomáhají jak začínajícím, tak zkušeným kandidátům posílit jejich dovednosti v oblasti technických diskusí na základních, pokročilých, středních, seniorních a živých technických pozicích. Přečtěte si více ...
👉 Stažení PDF zdarma: Otázky a odpovědi k pohovoru na .Net
1) Co je .NET Framework a jaké jsou jeho klíčové komponenty?
.NET Framework je platforma pro vývoj softwaru vyvinutá společností Microsoft který poskytuje řízené prostředí pro tvorbu, nasazování a spouštění aplikací. Podporuje více jazyků, jako jsou C#, VB.NET a F#. Framework zajišťuje interoperabilitu jazyků a správu paměti prostřednictvím svého Common Language Runtime (CLR).
Klíčové komponenty:
| Složka | Description |
|---|---|
| CLR (Common Language Runtime) | Spravuje paměť, zabezpečení a provádění kódu. |
| FCL (knihovna tříd Frameworku) | Rozsáhlá kolekce opakovaně použitelných tříd, rozhraní a hodnotových typů. |
| ASP.NET | Umožňuje vývoj dynamických webových aplikací. |
| ADO.NET | Poskytuje přístup k datům z různých datových zdrojů. |
Příklad: Aplikace AC# se může pomocí ADO.NET připojit k databázi SQL Serveru prostřednictvím spravovaného prostředí, což zajišťuje bezpečnost a škálovatelnost.
2) Vysvětlete rozdíl mezi .NET Framework, .NET Core a .NET 5/6/7.
Microsoft vyvinula .NET do jednotné platformy pro podporu vývoje napříč platformami.
. NET Framework is Windows-pouze, zatímco .NET Core je open-source a multiplatformní. Od .NET 5 dále, Microsoft sloučil je do jednoho jednotného běhového prostředí.
| vlastnost | . NET Framework | .NET Core | .NET 5/6/7+ |
|---|---|---|---|
| Podpora platformy | Windows 👔 | Křížová platforma | Křížová platforma |
| Open Source | Ne | Ano | Ano |
| Výkon | Středně | Vysoký | Velmi vysoko |
| Rozvinutí | Celý systém | Soběstačný | Pružný |
| Příklad použití | Starší podnikové aplikace | Cloud a mikroslužby | Moderní multiplatformní aplikace |
3) Jakým způsobem Common Language Runtime (CLR) spravuje provádění kódu?
CLR funguje jako spouštěcí engine pro aplikace .NET. Převádí kód v jazyce Intermediate Language (IL) do nativního strojového kódu pomocí kompilace Just-In-Time (JIT). Také poskytuje automatickou správu paměti pomocí garbage collection.
Klíčové funkce CLR:
- Správa paměti – Automaticky alokuje a uvolňuje paměť.
- Správa zabezpečení – Ověřuje zabezpečení přístupu ke kódu a zabezpečení založené na rolích.
- Manipulace s výjimkami – Zajišťuje, aby byly chyby za běhu zachyceny a správně zpracovány.
- Správa vláken – Zajišťuje efektivní provádění vícevláknového kódu.
Příklad: Když je spuštěn program v .NET, CLR na vyžádání kompiluje kód IL do nativního kódu, čímž zajišťuje optimální provedení.
4) Jaké jsou různé typy JIT kompilátorů v .NET?
CLR nabízí tři typy kompilátorů Just-In-Time (JIT):
| Typ | Description | Použijte pouzdro |
|---|---|---|
| Před-JIT (NGen) | Zkompiluje celý kód najednou v době nasazení. | Zkracuje dobu spouštění. |
| Econo-JIT | Kompiluje pouze metody volané za běhu a následně je zahodí. | Prostředí s omezenou pamětí. |
| Normální JIT | Kompiluje kód metodu po metodě během provádění. | Standardní model provedení. |
Každý JIT přístup balancuje mezi výkon si využití zdrojů na základě kontextu nasazení.
5) Co jsou to sestavy (assembles) v .NET a jak se liší od jmenných prostorů (namespaces)?
An montáž je nejmenší nasaditelná jednotka aplikace .NET, která obsahuje kompilovaný kód, metadata a zdroje. jmenný prostor, na druhou stranu, je logické seskupení tříd používaných pro organizaci kódu.
| Porovnání | Assembly | Namespace |
|---|---|---|
| Příroda | Fyzický soubor (DLL/EXE) | Logické seskupení |
| Účel | Nasazení a verzování | Organizace kódu |
| obsahuje | Metadata, manifest, MSIL | Třídy, rozhraní |
| Příklad | System.Data.dll |
System.Data.SqlClient |
Příklad: System.Data.dll Sestava může obsahovat více jmenných prostorů, například System.Data si System.Data.SqlClient.
6) Jaký je rozdíl mezi hodnotovými typy a referenčními typy v .NET?
V .NETu, typy hodnot ukládat data přímo, zatímco referenční typy ukládat odkazy na paměťovou adresu dat.
| Základna | Typ hodnoty | Typ reference |
|---|---|---|
| Skladování | Stoh | halda |
| Příklady typů | celé číslo, číslo s plovoucí čárkou, bool, struktura | třída, pole, řetězec |
| Kopírování | Zkopíruje skutečnou hodnotu | Zkopíruje referenci |
| Nulová hodnota povolena | Ne | Ano |
Příklad:
int a = 5; int b = a; → Oba obsahují samostatné kopie.
ClassObj x = new ClassObj(); ClassObj y = x; → Oba se vztahují ke stejnému objektu.
7) Jak funguje garbage collection v .NET?
Garbage Collection (GC) v .NET automaticky spravuje paměť tím, že uvolňuje nepoužívané objekty. Funguje v generací optimalizovat výkon.
Generační GC:
- Gen 0: Krátkodobé objekty (např. dočasné proměnné).
- Gen 1: Středně dlouhověké objekty povýšené z Gen 0.
- Gen 2: Dlouhodobě fungující objekty (např. statická data).
Výhody:
- Zabraňuje únikům paměti.
- Zlepšuje výkon aplikace.
- Zjednodušuje práci s pamětí pro vývojáře.
Příklad: Když se na objekt již neodkazuje, GC jej odstraní z haldy a uvolní tak paměť pro opětovné použití.
8) Co jsou delegáti a jak se liší od akcí?
A delegovat je typ, který představuje odkazy na metody, zatímco událost je mechanismus, který umožňuje komunikaci mezi třídami prostřednictvím delegátů.
| Vzhled | Delegát | událost |
|---|---|---|
| Definice | Objekt, který odkazuje na metodu | Mechanismus oznamování |
| Vyvolání | Lze volat přímo | Vyvoláno prostřednictvím odběratelů |
| Příklad | Action<int> myDelegate; |
event EventHandler myEvent; |
Příklad:
public delegate void Notify(); public event Notify OnProcessCompleted;
Zde, OnProcessCompleted je událost založená na Notify delegát.
9) Jaké jsou hlavní výhody a nevýhody používání .NET Core?
| Výhody | Nevýhody |
|---|---|
| Podpora napříč platformami | Strmější křivka učení pro začátečníky |
| Open-source a komunitní | Omezená podpora starších frameworků |
| Vysoký výkon se serverem Kestrel | Problémy s migrací u starších projektů |
| Vestavěná injekce závislostí | Některá API se stále vyvíjejí |
Příklad: .NET Core je ideální pro vytváření mikroslužeb, které běží na kontejnerech Dockeru v Linuxu a... Windows servery.
10) Vysvětlete životní cyklus stránky ASP.NET.
Životní cyklus stránky ASP.NET definuje, jak je stránka inicializována, zpracovávána a vykreslována. Každá fáze poskytuje události, které mohou vývojáři zpracovat a spustit tak vlastní logiku.
| Fáze | Description |
|---|---|
| Žádost o stránku | Uživatel si stránku poprvé vyžádá. |
| Home | Určuje, zda se jedná o postback požadavek. |
| Inicializace | Všechny ovládací prvky jsou inicializovány. |
| Zatížení | Data a ovládací prvky stránky jsou načteny. |
| Zpracování událostí zpětného odeslání | Zpracovává události spouštěné ovládacími prvky. |
| překlad | Stránka je vykreslena do HTML. |
| vyložit | Fáze čištění po odeslání odpovědi. |
Příklad: Vývojáři často používají Page_Load or Page_Init události pro inicializaci ovládacích prvků nebo nastavení datových vazeb.
11) Co je Entity Framework (EF) a jak zjednodušuje databázové operace?
Entity Framework (EF) je MicrosoftJe Objektově-relační mapovač (ORM) To eliminuje potřebu většiny kódu pro přístup k datům tím, že umožňuje vývojářům interagovat s databází pomocí objektů .NET. Automaticky se stará o generování SQL, mapování dat a správu vztahů.
Klíčové vlastnosti:
- Podporuje LINQ-to-Entities dotazy.
- Nabídky automatické sledování změn si líné načítání.
- Poskytuje Kód na prvním místě, databáze na prvním místě, a Model-First přístupy.
Příklad:
using (var context = new AppDbContext())
{
var employees = context.Employees.Where(e => e.Salary > 50000).ToList();
}
Zde EF překládá dotaz LINQ do SQL, načítá výsledky a mapuje je na Employee objekty automaticky.
12) Vysvětlete rozdíl mezi přístupy Code-First, Database-First a Model-First v Entity Frameworku.
| Přístup | Description | Použijte pouzdro |
|---|---|---|
| Kód na prvním místě | Definujte třídy a nechte EF vygenerovat databázi. | Projekty na zelené louce. |
| Databáze na prvním místě | Nejprve vytvořte databázi a EF generuje třídy entit. | Stávající databáze. |
| Model-First | Entity navrhujte vizuálně a EF generuje jak databázi, tak třídy. | Návrh řízený diagramy. |
Příklad: V přístupu Code-First vývojáři vytvářejí třídy C#, jako například Customer si Ordera EF automaticky sestaví odpovídající tabulky v SQL Serveru.
13) Co je LINQ a jaké jsou jeho výhody ve vývoji v .NET?
Jazykově integrovaný dotaz (LINQ) umožňuje dotazování dat z různých zdrojů (objekty, XML, databáze) s využitím konzistentní syntaxe přímo v C# nebo VB.NET.
Zvyšuje to čitelnost, typová bezpečnost, a kontrola během kompilace.
Výhody LINQ:
- Jednotná syntaxe pro různé zdroje dat.
- Snižuje složitost kódu.
- Poskytuje IntelliSense a ověření během kompilace.
- Podporuje odložené spuštění pro optimalizaci výkonu.
Příklad:
var highSalaries = employees.Where(e => e.Salary > 70000)
.OrderBy(e => e.Name)
.ToList();
14) Jaký je rozdíl mezi IEnumerable, ICollection a IQueryable v .NET?
| Rozhraní | Typ provedení | Použijte pouzdro | Klíčový rozdíl |
|---|---|---|---|
| IEpočetné | Iterace v paměti | Místní sbírky | Spouští se na straně klienta. |
| ICollection | V paměti, podporuje přidávání/odebírání | Upravit kolekce | Rozšiřuje IEnumerable o správu kolekcí. |
| IQueryable | Odložené provedení (vzdálené) | LINQ to SQL/EF | Spouští se na úrovni databáze. |
Příklad: Použití IQueryable v Entity Framework umožňuje filtrování na straně databáze, což je mnohem efektivnější než použití IEnumerable v paměti.
15) Co je asynchronní programování a jak fungují async a await v .NET?
Asynchronní programování v .NET umožňuje provádění více operací bez blokování hlavního vlákna, což zlepšuje odezvu webových a desktopových aplikací.
Klíč Concepts:
asyncoznačí metodu jako asynchronní.awaitPozastaví provádění metody, dokud se nedokončí očekávaná úloha.- Zabraňuje hladovění vláken a zamrzání uživatelského rozhraní.
Příklad:
public async Task<int> GetDataAsync()
{
var data = await httpClient.GetStringAsync("https://api.example.com");
return data.Length;
}
Výhoda: Hlavní vlákno zůstává volné pro zpracování jiných úloh, zatímco I/O operace probíhají na pozadí.
16) Co je Dependency Injection (DI) a proč je důležité v .NET Core?
Vkládání závislostí (DI) je návrhový vzor, který umožňuje volné spojení mezi třídami vkládáním závislostí, spíše než jejich interním vytvářením.
Výhody:
- Zlepšuje testovatelnost.
- Promomodulární design testů.
- Zjednodušuje správu konfigurace.
Příklad:
public class OrderService
{
private readonly IEmailService _emailService;
public OrderService(IEmailService emailService)
{
_emailService = emailService;
}
}
V .NET Core je DI zabudována do frameworku prostřednictvím IServiceCollection nádoba použitá v Startup.cs.
17) Jak efektivně ošetřujete výjimky v .NET aplikacích?
Ošetření výjimek zajišťuje, že chyby za běhu jsou správně spravovány bez pádu aplikace. Primárním mechanismem je try-catch-finally blok.
Příklad:
try
{
int result = 10 / divisor;
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Cannot divide by zero.");
}
finally
{
Console.WriteLine("Operation completed.");
}
Osvědčené postupy:
- Vždy nejprve zachyťte konkrétní výjimky.
- Použijte
finallypro logiku čištění - Vyhněte se prázdným blokům catch.
- Použití globálního zpracování výjimek v ASP.NET Core (
UseExceptionHandler()middleware).
18) Jaké jsou klíčové bezpečnostní postupy v aplikacích .NET?
Bezpečnost v .NET zahrnuje více vrstev včetně ověřování, autorizace, šifrování dat a ověřování vstupu.
Klíčové postupy:
- Použijte Identita ASP.NET pro ověřování a správu rolí.
- umožnit HTTPS (SSL/TLS) pro šifrování dat.
- Přihláška validace dat a parametrizované dotazy aby se zabránilo SQL injection.
- Použijte API pro ochranu dat pro zabezpečení souborů cookie a tokenů.
- Nářadí JWT (webové tokeny JSON) pro bezstavovou autentizaci v API.
Příklad: Ověřování založené na JWT se běžně používá v mikroslužbách k ověření identity uživatele bez zachování stavu relace.
19) Vysvětlete rozdíl mezi abstraktními třídami a rozhraními v jazyce C#.
| vlastnost | Abstraktní třída | Rozhraní |
|---|---|---|
| Implementace | Může obsahovat implementace metod | Pouze deklarace (C# 8 umožňuje výchozí hodnoty) |
| Vícenásobné dědictví | Není podporováno | Podporované |
| Konstruktory | Může mít konstruktory | Nemůže mít konstruktory |
| Použijte pouzdro | Základní třída se sdíleným kódem | Smlouva pro více nesouvisejících tříd |
Příklad:
abstract class Animal { public abstract void Speak(); }
interface IPet { void Play(); }
A Dog třída může dědit z Animal a implementovat IPet zároveň.
20) Jaké návrhové vzory se běžně používají v .NET a jaké jsou jejich výhody?
Návrhové vzory jsou osvědčenými řešeními opakujících se problémů s návrhem softwaru. Vylepšují udržovatelnost, škálovatelnost a čitelnost.
| druh vzoru | Příklad | Description |
|---|---|---|
| Tvořivý | Singleton, továrna | Spravovat vytváření objektů. |
| Strukturální | Adaptér, dekoratér | Kombinujte třídy nebo objekty. |
| Behaviorální | Pozorovatel, Strategie | Definujte objektovou komunikaci. |
Příklad: V .NET Core, Singletonový vzor se často používá pro sdílené služby (např. protokolování) jejich registrací u AddSingleton() v injekci závislostí.
21) Co je .NET MAUI a jak se liší od Xamarin?
.NET MAUI (víceplatformní uživatelské rozhraní aplikací) je vývoj Xamarin.Forms. Umožňuje vývojářům vytvářet multiplatformní aplikace for Android, IOS, macOS, a Windows z jedné sdílené kódové základny.
| vlastnost | Xamarin.Formuláře | .NET OPRAVEN |
|---|---|---|
| Rámcová základna | .NET Framework / Mono | Unified .NET 6+ |
| Architecture | Projekty specifické pro platformu | Struktura jednoho projektu |
| Výkon | Středně | Vylepšeno s běhovým prostředím .NET |
| Hot Reload | Omezený | Plná podpora horkého nabíjení |
Příklad: Single .NET MAUI Projekt může obsahovat kód specifický pro platformu ve složkách jako Platforms/Android or Platforms/iOS, a zároveň sdílí společné komponenty uživatelského rozhraní napříč platformami.
Výhoda: Zjednodušuje vývoj napříč platformami a zlepšuje údržbu.
22) Co je Blazor a jaké jsou jeho různé hostingové modely?
blejzr je framework pro vytváření interaktivních webových uživatelských rozhraní pomocí C# namísto JavaSkript. Umožňuje full-stack webový vývoj s .NET.
| Model hostingu | Description | Místo provedení |
|---|---|---|
| Blazor Server | Běží na serveru, odesílá aktualizace uživatelského rozhraní přes SignalR | Server |
| Blazor WebAssembly | Spouští se na straně klienta v prohlížeči pomocí webového rozhraní.Assembly | prohlížeč |
| Blazor Hybrid (MAUI) | Kombinuje webové rozhraní s nativní desktopovou/mobilní aplikací | Místní aplikace |
Příklad: Aplikace Blazor Server jsou vhodné pro podnikové dashboardy vyžadující bezpečné a centralizované řízení, zatímco Blazor WebAssembly vhodný pro offline aplikace.
23) Co jsou mikroslužby v .NET a jaké výhody nabízejí oproti monolitické architektuře?
Architektura mikroslužeb rozkládá aplikaci na nezávislé, nasaditelné služby, přičemž každý z nich se zabývá specifickou obchodní schopností.
| Vzhled | jednolitý | Mikroslužby |
|---|---|---|
| Rozvinutí | Jednotka | Nezávislé služby |
| Škálovatelnost | Celá aplikace se škáluje | Škálování na službu |
| Zásobník technologií | Opravena | Podpora polyglotů |
| Izolace poruch | Nízké | Vysoký |
Výhody:
- Nezávislé nasazení a škálování.
- Snadnější izolace chyb a rychlejší obnova.
- Umožňuje CI/CD pipelines a DevOps postupy.
Příklad: Systém elektronického obchodování založený na .NET by mohl oddělit OrderService, InventoryService, a PaymentService jako jednotlivé služby REST nebo gRPC.
24) Jak gRPC zlepšuje komunikaci v mikroslužbách .NET ve srovnání s REST API?
gRPC (Vzdálené volání procedur Google) je vysoce výkonný komunikační rámec využívající Protokol Buffers (protobuf) pro serializaci zpráv.
| vlastnost | REST API | gRPC |
|---|---|---|
| Formát | JSON | Binární (protobuf) |
| Rychlost | Pomalejší kvůli parsování JSON | Mnohem rychlejší |
| Komunikace | HTTP 1.1 | HTTP/2 (obousměrné) |
| Smlouva | OpenAPI | Soubory .proto |
| Použijte pouzdro | Webové aplikace | Interní komunikace služeb |
Příklad: V .NET jsou služby gRPC definovány pomocí .proto soubory a zkompilovány do kódu C#, což nabízí rychlejší a kompaktnější zasílání zpráv, ideální pro mikroslužby a IoT.
25) Jaké jsou některé osvědčené postupy pro optimalizaci výkonu v aplikacích .NET?
Ladění výkonu je klíčovou dovedností pro seniorní vývojáře. Optimalizace by se měla zaměřit na efektivitu kódu, správu paměti a interakce s databází.
Osvědčené postupy:
- Používejte asynchronní programování (
async/await), aby se zabránilo zablokování. - Ukládání často používaných dat do mezipaměti pomocí MemoryCache nebo Redisu.
- Minimalizujte alokace A použití
Span<T>nebo sdružování pro velká data. - Kód profilu pomocí nástrojů jako dotTrace nebo PerfView.
- Optimalizace EF dotazů s
AsNoTracking()pro data pouze pro čtení.
Příklad:
var users = context.Users.AsNoTracking().ToList();
Tím se zabrání režijním nákladům na sledování a zlepší se výkon u velkých sad výsledků.
26) Jaké techniky ukládání do mezipaměti jsou k dispozici v .NET Core?
Ukládání do mezipaměti zlepšuje výkon dočasným ukládáním dat pro opětovné použití.
| Typ mezipaměti | Description | Příklad Použití |
|---|---|---|
| Mezipaměť v paměti | Ukládá data do paměti serveru. | IMemoryCache |
| Distribuovaná mezipaměť | Sdílená mezipaměť napříč servery. | IDistributedCache, Redis |
| Ukládání odpovědí do mezipaměti | Ukládá HTTP odpovědi do mezipaměti. | ResponseCache atribut |
| Ukládání výstupu do mezipaměti | Znovu použije celý vykreslený výstup. | Middleware ASP.NET Core |
Příklad:
_cache.Set("EmployeeList", employeeData, TimeSpan.FromMinutes(30));
Pro distribuované ukládání do mezipaměti se Redis často používá v prostředích s vyvažováním zátěže.
27) Jak implementujete protokolování a monitorování v aplikacích .NET Core?
Protokolování je nezbytné pro sledování problémů a monitorování stavu systému. .NET Core poskytuje vestavěné abstrakce protokolování, které lze integrovat s poskytovateli třetích stran.
Techniky:
- Použijte ILogger rozhraní pro strukturované logování.
- Integrace s Serilog, NLognebo Statistiky aplikace.
- Ukládání protokolů do centralizovaných systémů, jako je ELK (Elastický zásobník).
Příklad:
public class UserController
{
private readonly ILogger<UserController> _logger;
public UserController(ILogger<UserController> logger)
{
_logger = logger;
}
}
Monitorovací nástroje:
- Azure Statistiky aplikace
- Prométheus + Grafana
- Nová relikvie / Datadog
28) Jaké jsou hlavní možnosti nasazení dostupné pro .NET aplikace?
Aplikace .NET lze nasadit pomocí několika flexibilních metod:
| Typ nasazení | Description | Použijte pouzdro |
|---|---|---|
| Nasazení závislé na frameworku (FDD) | Vyžaduje běhové prostředí .NET nainstalované na hostiteli. | Sdílené servery. |
| Samostatné nasazení (SCD) | Balíček obsahuje běhové prostředí .NET. | Izolované cloudové aplikace. |
| Docker kontejnery | Balíčky aplikací se závislostmi. | Mikroslužby a CI/CD. |
| Azure Aplikační služba | Cloudový hosting pro webové aplikace. | Škálovatelné SaaS aplikace. |
Příklad: Nasazení webového API .NET 8 jako kontejneru Dockeru zlepšuje přenositelnost a automatizaci CI/CD.
29) Jak se to dělá Azure integrovat s .NET aplikacemi pro cloudový vývoj?
Azure poskytuje prvotřídní integraci s .NET pro vytváření, nasazení a správu cloudových aplikací.
Klíč Azure Služby pro .NET:
- Azure Aplikační služba – hostovat webové aplikace.
- Azure Funkce – bezserverové výpočty pro úlohy na pozadí.
- Azure Databáze SQL – plně spravovaná relační databáze.
- Azure Autobusová doprava – řazení zpráv do fronty pro distribuované systémy.
- Azure Klíč Vault – bezpečné tajemství a přihlašovací údaje.
Příklad: Mikroslužba .NET může používat Azure Klíč Vault bezpečně ukládat řetězce pro připojení k databázi během jejich nasazení prostřednictvím Azure DevOps CI/CD kanál.
30) Jaké testovací frameworky se běžně používají v .NET a jak se liší?
Testování zajišťuje spolehlivost a udržovatelnost aplikace. .NET podporuje více testovacích frameworků.
| Rámec | Description | KLÍČOVÉ VLASTNOSTI |
|---|---|---|
| xUnit | Moderní testovací nástroj s otevřeným zdrojovým kódem. | Paralelní provádění testů. |
| NUjednotka | Zralý, široce používaný v podnicích. | Testování řízené atributy. |
| MSTest | Microsoftnativní testovací framework. | Integrace s Visual Studiem. |
Příklad:
[Fact]
public void Add_ReturnsSum()
{
Assert.Equal(4, Calculator.Add(2, 2));
}
Osvědčené postupy:
- Použijte Výsměch (Moq) pro závislosti.
- Udržovat vysoké pokrytí testy s integrací CI/CD.
- Zahrnout integrační testy pro validaci API.
31) Jaké jsou klíčové nové funkce zavedené v .NET 8?
.NET 8 představuje optimalizace výkonu, nativní AOTa zlepšil se cloud nativní schopnosti. Pokračuje MicrosoftCílem je vytvořit jednotný ekosystém napříč platformami.
Hlavní přednosti:
- Nativní AOT (kompilace předem): Snižuje dobu spouštění a paměťovou náročnost.
- Vylepšení ASP.NET Core: Rychlejší směrování a vylepšená podpora HTTP/3.
- Blazor United: Kombinuje serverovou stranu a webAssembly modely pro hybridní aplikace.
- Zvýšení výkonu: O 20–30 % rychlejší operace EF Core a LINQ.
- Rozšířená podpora MAUI: Vylepšené nástroje pro multiplatformní uživatelské rozhraní.
Příklad: Nativní AOT umožňuje malé, samostatné spustitelné soubory, ideální pro mikroslužby a kontejnerizované nasazení.
32) Co je to kompilace Ahead-of-Time (AOT) v .NET a kdy by se měla používat?
Kompilace AOT Před spuštěním překompiluje .NET Intermediate Language (IL) do nativního kódu, čímž zlepšuje výkon při spouštění a snižuje závislost na JIT kompilátoru.
| Typ | Description | Nejlepší případ použití |
|---|---|---|
| JIT (Just-In-Time) | Kompiluje IL za běhu. | Desktopové nebo serverové aplikace. |
| AOT (předem) | Zkompiluje IL před během. | Mikroslužby, IoT, systémy s nízkou latencí. |
Výhody:
- Rychlejší doba spuštění.
- Menší paměťová náročnost.
- Lepší výkon kontejneru.
Příklad:
dotnet publish -r linux-x64 -p:PublishAot=true
Tento příkaz vytvoří nativní binární soubor kompilovaný pomocí AOT pro Linux.
33) Jak mohou vývojáři .NET integrovat funkce umělé inteligence nebo strojového učení do aplikací?
Integrace umělé inteligence v .NET lze dosáhnout pomocí ML.NET, Azure Kognitivní služby, nebo externí knihovny.
Přístupy:
- ML.NET: Vytvářejte a trénujte modely strojového učení přímo v .NET.
- Azure Kognitivní služby: Používejte předem natrénovaná API pro zrak, řeč a jazyk.
- Běhové prostředí ONNX: Spouštějte modely trénované v Python/TensorFlow v rámci .NET aplikací.
- Integrace OpenAI API: Bezpečný přístup k generativní umělé inteligenci (např. modelům GPT) prostřednictvím REST.
Příklad (ML.NET):
var mlContext = new MLContext();
var model = mlContext.Model.Load("model.zip", out _);
Případ použití: Predikce odchodu uživatelů, detekce anomálií nebo inteligentní doporučení v podnikových systémech.
34) Jaké jsou hlavní rozdíly mezi REST API a Minimal API v .NET 8?
Minimální API poskytují jednoduchý způsob, jak vytvářet HTTP API s minimálním počtem standardního kódu.
| vlastnost | REST API (založené na kontroleru) | Minimální API |
|---|---|---|
| Struktura | Používá kontroléry a směrování | Definice vložených tras |
| Nastavení | Vyžaduje atributy a middleware | Rychlejší a jednodušší |
| Výkon | Středně | O něco rychlejší (menší režie) |
| Použijte pouzdro | Komplexní podniková API | Mikroslužby nebo malá API |
Příklad:
app.MapGet("/hello", () => "Hello, World!");
Minimální API jsou ideální pro mikroslužby a bezserverové aplikace díky své jednoduchosti a výkonu.
35) Jaké jsou hlavní principy bezpečného kódování v .NET aplikacích?
Zabezpečení musí být vynucováno od fáze vývoje. .NET poskytuje vestavěné mechanismy a osvědčené postupy pro bezpečné kódování.
Klíčové principy:
- Ověřte všechny vstupy: Zabraňte injekčním útokům.
- Použití parametrizovaných dotazů: Vyhněte se SQL injection.
- Šifrovat citlivá data: Použijte
System.Security.Cryptography. - Bezpečně uložte tajemství: Použijte Azure Klíč Vault nebo uživatelské tajemství.
- Použít ověřování a autorizaci: Nářadí
ASP.NET Identitynebo JWT tokeny. - Používejte zásady HTTPS a CORS: Zabraňte únikům dat a neoprávněnému přístupu.
Příklad:
using (var cmd = new SqlCommand("SELECT * FROM Users WHERE Id = @id", conn))
{
cmd.Parameters.AddWithValue("@id", userId);
}
36) Jak používáte nástroje pro profilování a diagnostiku k optimalizaci výkonu .NET?
Profilování pomáhá identifikovat úzká hrdla výkonu v procesoru, paměti nebo I/O.
Oblíbené nástroje:
| Nástroj | Účel |
|---|---|
| dotTrace / dotMemory | Profilování a detekce úniků paměti |
| PerfView | Analýza výkonu na nízké úrovni |
| dotnet-trace | Trasování příkazového řádku |
| Statistiky aplikace | Telemetrie v reálném čase v produkčním prostředí |
Přístup:
- Identifikujte úzká hrdla pomocí čítačů výkonu.
- Cesty profilového kódu a alokace paměti.
- Optimalizujte dotazy LINQ a snižte vytváření objektů.
Příklad: Použijte dotnet-counters monitor sledovat metriky v reálném čase, jako je aktivita CPU a GC.
37) Jaké jsou některé efektivní DevOps postupy pro .NET aplikace?
Integrace DevOps zajišťuje rychlejší dodání a lepší kvalitu prostřednictvím automatizace a spolupráce.
Klíčové postupy:
- CI/CD potrubí: Použijte akce GitHubu nebo Azure DevOps pro automatizované sestavení a nasazení.
- Infrastruktura jako kód (IaC): Nasaďte pomocí šablon ARM, Terraformu nebo Bicepu.
- Automatické testování: Integrujte xUnit/NUnit do pracovních postupů CI.
- Kontejnerizace: Používejte obrazy Dockeru a Kubernetes (AKS).
- Monitoring: Nepřetržitá telemetrie s Application Insights.
Příklad: Kanál CI/CD v Azure DevOps mohou vytvářet, testovat a nasazovat .NET API pro Azure Aplikační služba se automaticky spustí po potvrzení (commitu) v Gitu.
38) Jak zajišťujete škálovatelnost a odolnost vůči chybám v distribuovaných systémech založených na .NET?
Škálovatelnosti a odolnosti proti chybám lze dosáhnout pomocí principů distribuovaného návrhu a odolných vzorů.
strategie:
- Horizontální měřítko: Nasaďte více instancí za nástroj pro vyrovnávání zátěže.
- Schéma jističe: Pro zpracování přechodných poruch použijte knihovnu Polly.
- Ukládání do mezipaměti a řazení do front: Používejte Redis a Azure Service Bus pro asynchronní zpracování.
- Sdílení databáze: Distribuujte velké datové sady.
- Zdravotní kontroly: Použijte
AddHealthChecks()middleware v .NET Core.
Příklad (jistič):
Policy.Handle<HttpRequestException>()
.CircuitBreaker(3, TimeSpan.FromMinutes(1));
39) Jakou roli hraje kontejnerizace v moderních nasazeních .NET?
Kontejnerizace, především prostřednictvím přístavní dělník, izoluje aplikace a jejich závislosti a zajišťuje konzistenci napříč prostředími.
Výhody:
- Předvídatelné nasazení (funguje na jakémkoli hostiteli).
- Zjednodušené škálování s Kubernetes (AKS).
- Lehký a rychlejší než virtuální stroje.
- Snadná integrace s pracovními postupy CI/CD.
Příklad (Dockerfile):
FROM mcr.microsoft.com/dotnet/aspnet:8.0 WORKDIR /app COPY . . ENTRYPOINT ["dotnet", "MyApp.dll"]
Případ použití: Nasazení clusteru mikroslužeb .NET v Kubernetes zlepšuje škálovatelnost a izolaci chyb.
40) Jak byste navrhli škálovatelný .NET systém pro miliony uživatelů?
Návrh systémů v .NET vyžaduje architektonickou prozíravost kombinující výkon, dostupnost a udržovatelnost.
Klíč Archistrukturální rozhodnutí:
- Používejte mikroslužby: Každá služba je nezávisle nasaditelná.
- Přijměte CQRS + Event Sourcing: Samostatné modely pro čtení/zápis.
- Asynchronní zasílání zpráv: Použijte Azure Service Bus nebo Kafka.
- Brána API: Řízení provozu a bezpečnosti.
- Vrstva mezipaměti: Redis nebo MemoryCache pro vysokorychlostní přístup.
- Škálovatelnost databáze: Použijte Azure Cosmos DB nebo dělený SQL.
- Automatické škálování: Konfigurovat prostřednictvím Azure Aplikační služba nebo AKS.
Příklad postupu návrhu:
Uživatelé → API Gateway → Load Balancer → Mikroslužby (.NET 8 API) → Databáze + Redis Cache → Telemetrie přes Application Insights.
🔍 Nejčastější otázky na pohovorech o .NET s reálnými scénáři a strategickými odpověďmi
Níže uvádíme 10 realistických, často kladených otázek pro pohovor o .NET spolu se strategickými vysvětleními a vzorovými odpověďmi. Součástí je kombinace otázek založených na znalostech, chování a situačních otázek.
Požadované fráze byly použity jednou.
1) Můžete vysvětlit rozdíl mezi .NET Framework, .NET Core a .NET 6/7/8?
Očekává se od kandidáta: Pochopení vývoje ekosystému .NET, multiplatformních možností a dlouhodobé podpory.
Příklad odpovědi: „.NET Framework je originální Windows-only framework, zatímco .NET Core zavedlo multiplatformní funkce a lepší výkon. .NET 6 a novější sjednotily ekosystém pod jednou, moderní multiplatformní SDK s významným zlepšením výkonu, připravenosti na cloud a rychlosti vývoje.“
2) Jak implementujete vkládání závislostí v .NET a proč je to užitečné?
Očekává se od kandidáta: Pochopení oddělení, udržovatelnosti a testovatelnosti.
Příklad odpovědi: „Vkládání závislostí v .NET je obvykle implementováno prostřednictvím vestavěného kontejneru v…“ Microsoft.Extensions.DependencyInjection jmenný prostor. Pomáhá omezit těsné vazby, zlepšuje testovatelnost a zjednodušuje správu životního cyklu tím, že umožňuje řešení závislostí za běhu.“
3) Popište náročný .NET projekt, na kterém jste pracovali, a jak jste přispěli k jeho úspěchu.
Očekává se od kandidáta: Příspěvek v reálném světě, řešení problémů a odpovědnost.
Příklad odpovědi: „Ve své předchozí roli jsem pomáhal s optimalizací starší aplikace .NET přepracováním vrstev pro přístup k datům a zavedením ukládání do mezipaměti pro zkrácení doby odezvy. To zlepšilo výkon o více než třicet procent a výrazně zlepšilo uživatelský komfort.“
4) Jak zajišťujete výkon a škálovatelnost .NET aplikace?
Očekává se od kandidáta: Používání nástrojů pro profilování, architektonických vzorů a osvědčených postupů kódování.
Příklad odpovědi: „Výkon monitoruji pomocí profilovacích nástrojů, jako jsou dotTrace a Application Insights, v případě potřeby používám asynchronní programování, implementuji ukládání do mezipaměti a v případě potřeby používám škálovatelné architektonické vzory, jako jsou mikroslužby.“
5) Vysvětlete rozdíl mezi async/await a multithreadingem v .NET.
Očekává se od kandidáta: Pochopení modelů souběžnosti.
Příklad odpovědi: „Asynchronní a await umožňují neblokující operace využitím asynchronního vzoru založeného na úlohách, zatímco multithreading zahrnuje vytváření samostatných vláken, která běží paralelně. Asynchronní programování je ideální pro úlohy vázané na I/O, zatímco multithreading je užitečný pro operace vázané na CPU.“
6) Povězte mi o situaci, kdy jste se museli rychle naučit novou technologii .NET. Jak jste k tomu přistoupili?
Očekává se od kandidáta: Adaptabilita a neustálé učení.
Příklad odpovědi: „Na předchozí pozici jsem se potřeboval rychle naučit Blazor pro klientský projekt. Věnoval jsem čas oficiálním…“ Microsoft dokumentace, procvičoval si malé sandboxové projekty a spolupracoval s členy týmu, abych zajistil včasné dodání kvalitních výsledků.“
7) Jak byste navrhli RESTful API v ASP.NET Core? Jaké klíčové principy dodržujete?
Očekává se od kandidáta: Znalost HTTP metod, směrování, verzování a osvědčených postupů.
Příklad odpovědi: „Řidím se principy REST, jako je správné pojmenování zdrojů, bezstavová dostupnost a správné používání HTTP sloves. Také implementuji validaci modelů, správné stavové kódy, verzování a mechanismy ověřování, jako je JWT.“
8) Jak zvládáte krátké termíny při práci na více .NET projektech současně?
Očekává se od kandidáta: Stanovení priorit, organizace, komunikace.
Příklad odpovědi: „V mém předchozím zaměstnání jsem zvládal krátké termíny tím, že jsem úkoly rozděloval na zvládnutelné komponenty, upřednostňoval kritické funkce a udržoval průběžnou komunikaci se zainteresovanými stranami, abych si stanovil realistická očekávání.“
9) Jak udržujete kvalitu kódu v .NET aplikacích?
Očekává se od kandidáta: Znalost testování, recenzí a nástrojů.
Příklad odpovědi: „Kvalitu kódu udržuji pomocí jednotkového testování s xUnit, revizí kódu, statické analýzy kódu a dodržování principů SOLID. Tyto kroky zajišťují dlouhodobou udržovatelnost a spolehlivost.“
10) Předpokládejme, že produkční rozhraní .NET API začne občas vracet 500 chyb. Jak byste přistupovali k diagnostice problému?
Očekává se od kandidáta: Strukturované ladění, používání nástrojů a klid pod tlakem.
Příklad odpovědi: „V mé poslední roli bych začínal kontrolou protokolů, kontrolou stavu závislostí a používáním Application Insights nebo podobných nástrojů k trasování selhání. Poté bych izoloval, zda se problém týká databáze, konfigurace nebo kódu, a po replikaci a ověření bych nasadil cílené opravy.“
