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

Otázky a odpovědi na pohovoru o .Netu

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:

  1. Správa paměti – Automaticky alokuje a uvolňuje paměť.
  2. Správa zabezpečení – Ověřuje zabezpečení přístupu ke kódu a zabezpečení založené na rolích.
  3. Manipulace s výjimkami – Zajišťuje, aby byly chyby za běhu zachyceny a správně zpracovány.
  4. 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:

  1. Gen 0: Krátkodobé objekty (např. dočasné proměnné).
  2. Gen 1: Středně dlouhověké objekty povýšené z Gen 0.
  3. 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:

  1. Jednotná syntaxe pro různé zdroje dat.
  2. Snižuje složitost kódu.
  3. Poskytuje IntelliSense a ověření během kompilace.
  4. 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:

  • async označí metodu jako asynchronní.
  • await Pozastaví 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 finally pro 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:

  1. Použijte Identita ASP.NET pro ověřování a správu rolí.
  2. umožnit HTTPS (SSL/TLS) pro šifrování dat.
  3. Přihláška validace dat a parametrizované dotazy aby se zabránilo SQL injection.
  4. Použijte API pro ochranu dat pro zabezpečení souborů cookie a tokenů.
  5. 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:

  1. Používejte asynchronní programování (async/await), aby se zabránilo zablokování.
  2. Ukládání často používaných dat do mezipaměti pomocí MemoryCache nebo Redisu.
  3. Minimalizujte alokace A použití Span<T> nebo sdružování pro velká data.
  4. Kód profilu pomocí nástrojů jako dotTrace nebo PerfView.
  5. 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:

  1. Azure Aplikační služba – hostovat webové aplikace.
  2. Azure Funkce – bezserverové výpočty pro úlohy na pozadí.
  3. Azure Databáze SQL – plně spravovaná relační databáze.
  4. Azure Autobusová doprava – řazení zpráv do fronty pro distribuované systémy.
  5. 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:

  1. Nativní AOT (kompilace předem): Snižuje dobu spouštění a paměťovou náročnost.
  2. Vylepšení ASP.NET Core: Rychlejší směrování a vylepšená podpora HTTP/3.
  3. Blazor United: Kombinuje serverovou stranu a webAssembly modely pro hybridní aplikace.
  4. Zvýšení výkonu: O 20–30 % rychlejší operace EF Core a LINQ.
  5. 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:

  1. ML.NET: Vytvářejte a trénujte modely strojového učení přímo v .NET.
  2. Azure Kognitivní služby: Používejte předem natrénovaná API pro zrak, řeč a jazyk.
  3. Běhové prostředí ONNX: Spouštějte modely trénované v Python/TensorFlow v rámci .NET aplikací.
  4. 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:

  1. Ověřte všechny vstupy: Zabraňte injekčním útokům.
  2. Použití parametrizovaných dotazů: Vyhněte se SQL injection.
  3. Šifrovat citlivá data: Použijte System.Security.Cryptography.
  4. Bezpečně uložte tajemství: Použijte Azure Klíč Vault nebo uživatelské tajemství.
  5. Použít ověřování a autorizaci: Nářadí ASP.NET Identity nebo JWT tokeny.
  6. 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:

  1. Identifikujte úzká hrdla pomocí čítačů výkonu.
  2. Cesty profilového kódu a alokace paměti.
  3. 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:

  1. Horizontální měřítko: Nasaďte více instancí za nástroj pro vyrovnávání zátěže.
  2. Schéma jističe: Pro zpracování přechodných poruch použijte knihovnu Polly.
  3. Ukládání do mezipaměti a řazení do front: Používejte Redis a Azure Service Bus pro asynchronní zpracování.
  4. Sdílení databáze: Distribuujte velké datové sady.
  5. 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í:

  1. Používejte mikroslužby: Každá služba je nezávisle nasaditelná.
  2. Přijměte CQRS + Event Sourcing: Samostatné modely pro čtení/zápis.
  3. Asynchronní zasílání zpráv: Použijte Azure Service Bus nebo Kafka.
  4. Brána API: Řízení provozu a bezpečnosti.
  5. Vrstva mezipaměti: Redis nebo MemoryCache pro vysokorychlostní přístup.
  6. Škálovatelnost databáze: Použijte Azure Cosmos DB nebo dělený SQL.
  7. 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.“

Shrňte tento příspěvek takto: