50 nejlepších otázek a odpovědí na rozhovory v C# (2025)
Otázky a odpovědi na pohovor v C# pro začátečníky a 2/3/5/10 let zkušeností
Zde jsou otázky a odpovědi na pohovor v C# pro čerstvější i 5 nebo 10 let zkušené kandidáty, aby získali svou vysněnou práci.
1) Co je C#?
C# je objektově orientovaný, typově bezpečný a spravovaný jazyk, který je kompilován rámcem .Net, aby generoval Microsoft Středně pokročilý jazyk.
👉 Zdarma ke stažení PDF: C# Interview Interview Otázky a odpovědi
2) Vysvětlete typy komentářů v C# s příklady
Jeden řádek
Příklad:
//This is a single line comment
ii. Více řádků (/* */)
Příklad:
/*This is a multiple line comment We are in line 2 Last line of comment*/
iii. Komentáře XML (///).
Příklad:
/// summary; /// Set error message for multilingual language. /// summary
3) Lze provést více bloků catch?
Ne, více bloků zachycení podobného typu nelze provést. Po provedení správného kódu catch se ovládací prvek přenese do závěrečného bloku a poté se provede kód, který následuje za konečným blokem.
4) Jaký je rozdíl mezi veřejným, statickým a prázdným?
Veřejně deklarované proměnné nebo metody jsou dostupné kdekoli v aplikaci. Statické deklarované proměnné nebo metody jsou globálně přístupné bez vytváření instance třídy. Statické členy nejsou standardně globálně přístupné, záleží na typu použitého modifikovaného přístupu. Kompilátor ukládá adresu metody jako vstupní bod a používá tuto informaci k zahájení provádění před vytvořením jakýchkoli objektů. A Void je modifikátor typu, který říká, že metoda nebo proměnná nevrací žádnou hodnotu.
Otázky na pohovor v C#
5) Co je to předmět?
Objekt je instancí třídy, jejímž prostřednictvím přistupujeme k metodám této třídy. Klíčové slovo „New“ se používá k vytvoření objektu. Třída, která vytvoří objekt v paměti, bude obsahovat informace o metodách, proměnných a chování této třídy.
6) Definujte konstruktory
Konstruktor je členská funkce ve třídě, která má stejný název jako její třída. Konstruktor se automaticky vyvolá při každém vytvoření třídy objektu. Konstruuje hodnoty datových členů při inicializaci třídy.
7) Co je Jagged Arrays?
Pole, které má prvky typu pole, se nazývá zubaté pole. Prvky mohou mít různé rozměry a velikosti. Zubaté pole můžeme také nazvat jako pole polí.
8) Jaký je rozdíl mezi parametry ref & out?
Argument předaný jako ref musí být inicializován před předáním metodě, zatímco parametr out nemusí být inicializován před předáním metodě.
9) Jaké je použití příkazu 'using' v C#?
'Using' blok se používá k získání zdroje a jeho zpracování a poté se automaticky zlikviduje, když je provedení bloku dokončeno.
10) Co je serializace?
Když chceme přenést objekt po síti, musíme objekt převést na proud bajtů. Proces převodu objektu na proud bajtů se nazývá serializace. Aby byl objekt serializovatelný, měl by implementovat rozhraní ISerialize. De-serializace je obrácený proces vytváření objektu z proudu bajtů.
11) Můžeme použít „tento“ příkaz v rámci statické metody?
Nemůžeme použít 'Toto' ve statické metodě, protože ve statické metodě můžeme použít pouze statické proměnné/metody.
12) Jaký je rozdíl mezi konstantami a pouze pro čtení?
Konstantní proměnné jsou deklarovány a inicializovány v době kompilace. Hodnotu nelze poté změnit. Pouze pro čtení se používá pouze tehdy, když chceme přiřadit hodnotu za běhu.
13) Co je třída rozhraní? Uveďte jeden příklad
Rozhraní je abstraktní třída, která má pouze veřejné abstraktní metody a metody mají pouze deklaraci, nikoli definici. Tyto abstraktní metody musí být implementovány ve zděděných třídách.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { interface Guru99Interface { void SetTutorial(int pID, string pName); String GetTutorial(); } class Guru99Tutorial : Guru99Interface { protected int TutorialID; protected string TutorialName; public void SetTutorial(int pID, string pName) { TutorialID = pID; TutorialName = pName; } public String GetTutorial() { return TutorialName; } static void Main(string[] args) { Guru99Tutorial pTutor = new Guru99Tutorial(); pTutor.SetTutorial(1,".Net by Guru99"); Console.WriteLine(pTutor.GetTutorial()); Console.ReadKey(); } } }
14) Co jsou typy hodnot a referenční typy?
Typ hodnoty uchovává datovou hodnotu ve svém vlastním paměťovém prostoru. Příklad
int a = 30;
Typ reference ukládá adresu objektu, kde je hodnota uložena. Je to ukazatel na jiné místo v paměti.
string b = "Hello Guru99!!";
15) Co je to Custom Control a User Control?
Vlastní ovládací prvky jsou ovládací prvky generované jako kompilovaný kód (DLL), jejich použití je jednodušší a lze je přidat do sady nástrojů. Vývojáři mohou přetahovat ovládací prvky do svých webových formulářů. Atributy mohou v době návrhu. Můžeme snadno přidat vlastní ovládací prvky do Multiple Applications (If Shared Dlls). Pokud jsou tedy soukromé, můžeme je zkopírovat do dll do adresáře bin webové aplikace a poté přidat odkaz a použít je.
Uživatelské ovládací prvky jsou velmi podobné souborům typu ASP a lze je snadno vytvořit. Uživatelské ovládací prvky nelze umístit do panelu nástrojů a přetáhnout z něj – vypustit. Mají svůj design a kódování. Přípona souboru pro uživatelské ovládací prvky je ascx.
16) Co jsou uzavřené třídy v C#?
Zapečetěné třídy vytváříme, když chceme omezit třídu, která má být zděděna. Zapečetěný modifikátor používaný k zabránění odvození z třídy. Pokud násilně určíme uzavřenou třídu jako základní třídu, dojde k chybě při kompilaci.
17) Co je přetížení metody?
Přetěžování metod je vytváření více metod se stejným názvem s jedinečnými podpisy ve stejné třídě. Když kompilujeme, kompilátor používá rozlišení přetížení k určení konkrétní metody, která má být vyvolána.
18) Jaký je rozdíl mezi Array a Arraylist?
V poli můžeme mít pouze položky stejného typu. Velikost pole je při porovnání pevná. To arraylist je podobné jako pole, ale nemá pevnou velikost.
19) Lze soukromou virtuální metodu přepsat?
Ne, protože mimo třídu nejsou přístupní.
20) Popište modifikátor přístupnosti „protected internal“.
Chráněné interní proměnné/metody jsou dostupné v rámci stejného sestavení a také z tříd, které jsou odvozeny od této nadřazené třídy.
21) Jaké jsou rozdíly mezi třídami System.String a System.Text.StringBuilder?
System.String je neměnný. Když upravíme hodnotu řetězcové proměnné, pak se nové hodnotě přidělí nová paměť a uvolní se předchozí přidělení paměti. System.StringBuilder byl navržen tak, aby měl koncept měnitelného řetězce, kde lze provádět různé operace bez přidělení samostatného paměťového místa pro upravený řetězec.
22) Jaký je rozdíl mezi System.Array.CopyTo() a System.Array.Clone()?
Použití Clone()
metodou, vytvoříme nový objekt pole obsahující všechny prvky v původním poli a pomocí CopyTo()
metoda. Všechny prvky existujícího pole se zkopírují do jiného existujícího pole. Obě metody provádějí mělkou kopii.
23) Jak můžeme seřadit prvky pole v sestupném pořadí?
Použití Sort()
metody následované Reverse()
metoda.
24) Zapište si syntaxi C# pro zachycení výjimky
K zachycení výjimky používáme bloky try-catch. Blok catch může mít parametr typu system.Exception.
Např:
try { GetAllData(); } catch (Exception ex) { }
Ve výše uvedeném příkladu můžeme parametr z příkazu catch vynechat.
25) Jaký je rozdíl mezi rozhraním a abstraktní třídou?
Rozhraní mají všechny metody, které mají pouze deklaraci, ale žádnou definici. V abstraktní třídě můžeme mít nějaké konkrétní metody. Ve třídě rozhraní jsou všechny metody veřejné. Abstraktní třída může mít soukromé metody.
26) Jaký je rozdíl mezi metodami Finalize() a Dispose()?
Dispose()
se volá, když chceme, aby objekt s nimi uvolnil všechny nespravované prostředky. Na druhou stranu, Finalize()
se používá ke stejnému účelu, ale nezajišťuje shromažďování odpadu objektu.
27) Co jsou kruhové odkazy?
Kruhová reference je situace, ve které jsou dva nebo více zdrojů na sobě závislé, způsobí stav uzamčení a způsobí, že zdroje nejsou použitelné.
28) Co jsou generika v C#.NET?
Generika se používají k vytváření opakovaně použitelných tříd kódu ke snížení redundance kódu, zvýšení bezpečnosti typu a výkonu. Pomocí generik můžeme vytvářet třídy kolekce. Chcete-li vytvořit obecnou kolekci, měl by být použit jmenný prostor System.Collections.Generic namísto tříd, jako je ArrayList v oboru jmen System.Collections. Generics podporuje použití parametrizovaných typů.
29) Co je objektový fond v .NET?
Fond objektů je kontejner s objekty připravenými k použití. Sleduje objekt, který se aktuálně používá, celkový počet objektů ve fondu. To snižuje režii vytváření a opětovného vytváření objektů.
30) Vyjmenujte běžně používané typy výjimek v .net
ArgumentException, ArgumentNullException, ArgumentOutOfRangeException, ArithmeticException, DivideByZeroException,OverflowException, IndexOutOfRangeException, InvalidCastException, InvalidOperationException, IOEndOfStreamException, NullReferenceException, OutOfMemoryException, StackOverflowException atd.
31) Co jsou vlastní výjimky?
Někdy se vyskytnou nějaké chyby, které je třeba ošetřit podle požadavků uživatele. Používají se pro ně vlastní výjimky a používají se definované výjimky.
32) Co jsou delegáti?
Delegáti jsou stejní jako ukazatelé funkcí C++, ale jediný rozdíl je v tom, že jsou typově bezpečné, na rozdíl od ukazatelů funkcí. Delegáti jsou vyžadováni, protože je lze použít k psaní mnohem obecnějších typově bezpečných funkcí.
33) Jak zdědíte třídu do jiné třídy v C#?
Dvojtečka se používá jako operátor dědičnosti v C#. Stačí umístit dvojtečku a poté název třídy.
public class DerivedClass : BaseClass
34) Jaká je základní třída v .net, ze které jsou všechny třídy odvozeny?
System.Object
35) Jaký je rozdíl mezi přepsáním metody a přetížením metody?
Při přepisování metody měníme definici metody v odvozené třídě, která mění chování metody. Přetížení metody je vytvoření metody se stejným názvem ve stejné třídě s různými podpisy.
36) Jakými různými způsoby může být metoda přetížena?
Metody mohou být přetíženy pomocí různých datových typů pro parametr, různého pořadí parametrů a různého počtu parametrů.
37) Proč nemůžete specifikovat modifikátor přístupnosti pro metody uvnitř rozhraní?
V rozhraní máme virtuální metody, které nemají definici metody. Všechny metody mají být v odvozené třídě přepsány. Proto jsou všechny veřejné.
38) Jak můžeme nastavit třídu tak, aby byla zděděna, ale zabránit přepsání metody?
Deklarujte třídu jako veřejnou a udělejte metodu zapečetěnou, abyste zabránili jejímu přepsání.
39) Co se stane, pokud mají zděděná rozhraní konfliktní názvy metod?
Implementace je na vás, protože metoda je uvnitř vaší vlastní třídy. Může nastat problém, když metody z různých rozhraní očekávají různá data, ale pokud se o to stará kompilátor, jste v pořádku.
40) Jaký je rozdíl mezi strukturou a třídou?
Struktury jsou proměnné typu hodnoty a třídy jsou referenční typy. Struktury uložené v zásobníku způsobují další režii, ale rychlejší načítání. Struktury nelze zdědit.
41) Jak používat typy s možnou hodnotou Null v .Net?
Typy hodnot mohou mít buď své normální hodnoty, nebo hodnotu null. Takové typy se nazývají typy s možností null.
Int? someID = null; If(someID.HasVAlue) { }
42) Jak můžeme vytvořit pole s jinými než výchozími hodnotami?
Můžeme vytvořit pole s jinými než výchozími hodnotami pomocí Enumerable.Repeat.
43) Jaký je rozdíl mezi operátory „je“ a „as“ v c#?
Operátor „is“ se používá ke kontrole kompatibility objektu s daným typem a vrací výsledek jako booleovský.
Operátor „as“ se používá pro přetypování objektu na typ nebo třídu.
44) Co je to delegát vícesměrového vysílání?
Delegát, kterému je přiřazeno více obslužných rutin, se nazývá delegát vícesměrového vysílání. Každému handleru je přiřazena metoda.
45) Co jsou indexery v C# .NET?
Indexery jsou známé jako chytré pole v C#. Umožňuje indexování instancí třídy stejným způsobem jako pole.
Např:
public int this[int index] // Indexer declaration
46) Jaký je rozdíl mezi „throw“ a „throw ex“ v .NET?
Příkaz „Throw“ zachovává původní chybový zásobník, zatímco příkaz „throw ex“ má trasování zásobníku z jejich bodu vyvolání. Vždy se doporučuje používat „hodit“, protože poskytuje přesnější informace o chybě.
47) Co jsou atributy C# a jejich význam?
C# poskytuje vývojářům způsob, jak definovat deklarativní značky pro určité entity, např. Třída, metoda atd. se nazývají atributy. Informace o atributu lze získat za běhu pomocí funkce Reflection.
48) Jak implementovat návrhový vzor singleton v C#?
Ve vzoru singleton může mít třída pouze jednu instanci a poskytuje k ní přístupový bod globálně.
Např:
Public sealed class Singleton { Private static readonly Singleton _instance = new Singleton(); }
49) Jaký je rozdíl mezi directcast a ctype?
DirectCast se používá k převodu typu objektu, který vyžaduje, aby byl typ běhu stejný jako typ určený v DirectCast.
Ctype se používá pro převod, kde je převod definován mezi výrazem a typem.
50) Je kód C# spravovaný nebo nespravovaný?
C# je spravovaný kód, protože Common language runtime dokáže zkompilovat kód C# do středně pokročilého jazyka.
51) Co je konzolová aplikace?
Konzolová aplikace je aplikace, kterou lze spustit z příkazového řádku Windows. Pro jakékoli začátečník na .NetuVytvoření konzolové aplikace je v ideálním případě prvním krokem.
52) Uveďte příklad odstranění prvku z fronty
Metoda dequeue se používá k odstranění prvku z fronty.
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Program { static void Main(string[] args) { Queue qt = new Queue(); qt.Enqueue(1); qt.Enqueue(2); qt.Enqueue(3); foreach (Object obj in qt) { Console.WriteLine(obj); } Console.WriteLine(); Console.WriteLine(); Console.WriteLine("The number of elements in the Queue " + qt.Count); Console.WriteLine("Does the Queue contain " + qt.Contains(3)); Console.ReadKey(); } } }
Tyto otázky na pohovoru také pomohou ve vašem životě (ústních)