Az 50 legjobb C# interjúkérdés és válasz (2025)
C#-interjú kérdések és válaszok pályakezdőknek és 2/3/5/10 éves tapasztalattal
Íme a C# interjúkérdések és válaszok friss, valamint 5 vagy 10 éves tapasztalattal rendelkező jelöltek számára, hogy megszerezzék álmaik állásukat.
1) Mi az a C#?
A C# egy objektumorientált, típusbiztos és felügyelt nyelv, amelyet a .Net keretrendszer fordít le generálás céljából. Microsoft Középfokú nyelv.
👉 Ingyenes PDF letöltés: C# Interjúinterjú kérdések és válaszok
2) Magyarázza el a megjegyzés típusait C# példákkal
Egyvonalas
Példa:
//This is a single line comment
ii. Többsoros (/* */)
Példa:
/*This is a multiple line comment We are in line 2 Last line of comment*/
iii. XML megjegyzések (///).
Példa:
/// summary; /// Set error message for multilingual language. /// summary
3) Több fogási blokk is végrehajtható?
Nem, több hasonló típusú fogási blokk nem hajtható végre. A megfelelő fogási kód végrehajtása után a vezérlés átkerül a végső blokkba, majd a végső blokkot követő kód végrehajtásra kerül.
4) Mi a különbség a nyilvános, statikus és üres között?
A nyilvánosan deklarált változók vagy metódusok bárhol elérhetők az alkalmazásban. A statikusan deklarált változók vagy metódusok globálisan elérhetők az osztály példányának létrehozása nélkül. A statikus tagok alapértelmezés szerint nem érhetők el globálisan, ez a használt hozzáférés típusától függ. A fordító a metódus címét tárolja belépési pontként, és ezt az információt használja fel a végrehajtás megkezdéséhez, mielőtt bármilyen objektum jönne létre. A Void pedig egy típusmódosító, amely kimondja, hogy a metódus vagy változó nem ad vissza semmilyen értéket.
C# interjúkérdések
5) Mi az objektum?
Az objektum egy osztály példánya, amelyen keresztül elérjük az adott osztály metódusait. Az „Új” kulcsszó objektum létrehozására szolgál. A memóriában objektumot létrehozó osztály információkat tartalmaz az adott osztály metódusairól, változóiról és viselkedéséről.
6) Határozza meg a konstruktorokat
A konstruktor egy olyan tagfüggvény egy osztályban, amelynek neve megegyezik az osztályával. A konstruktor automatikusan meghívásra kerül, amikor objektumosztály jön létre. Az osztály inicializálása közben összeállítja az adattagok értékeit.
7) Mi az a Jagged Arrays?
Azt a tömböt, amelynek tömb típusú elemei vannak, szaggatott tömbnek nevezzük. Az elemek különböző méretűek és méretűek lehetnek. A szaggatott tömböt tömbök tömbjének is nevezhetjük.
8) Mi a különbség a ref & out paraméterek között?
A ref-ként átadott argumentumot inicializálni kell a metódusnak való átadás előtt, míg az out paramétert nem kell inicializálni a metódusnak való átadás előtt.
9) Mire jó a 'using' utasítás a C#-ban?
A „használó” blokk egy erőforrás beszerzésére és feldolgozására szolgál, majd a blokk végrehajtásának befejeztével automatikusan megsemmisíti.
10) Mi a szerializálás?
Ha egy objektumot hálózaton keresztül szeretnénk szállítani, akkor az objektumot bájtok folyamává kell alakítanunk. Az objektum bájtfolyammá alakításának folyamatát szerializálásnak nevezzük. Ahhoz, hogy egy objektum szerializálható legyen, meg kell valósítania az ISerialize Interface-t. A de-szerializálás az objektum bájtfolyamból történő létrehozásának fordított folyamata.
11) Használhatjuk a „this” parancsot statikus metóduson belül?
Statikus metódusban nem használhatjuk az „Ezt”, mert statikus metódusban csak statikus változókat/módszereket használhatunk.
12) Mi a különbség az állandók és a csak olvasható között?
A konstans változókat a fordításkor deklarálják és inicializálják. Az érték utólag nem módosítható. A csak olvasható csak akkor használatos, ha az értéket futási időben szeretnénk hozzárendelni.
13) Mi az interfész osztály? Mondj rá egy példát
Az interfész egy absztrakt osztály, amelynek csak nyilvános absztrakt metódusai vannak, és a metódusoknak csak a deklarációjuk van, a definíciójuk nem. Ezeket az absztrakt metódusokat az örökölt osztályokban kell megvalósítani.
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) Mik azok az érték- és referenciatípusok?
Egy értéktípus a saját memóriaterületén belül tárol egy adatértéket. Példa
int a = 30;
A referenciatípus annak az objektumnak a címét tárolja, ahol az értéket tárolják. Ez egy másik memóriahelyre mutató mutató.
string b = "Hello Guru99!!";
15) Mit jelent az egyéni vezérlés és a felhasználói vezérlés?
Az egyéni vezérlők lefordított kódként (DLL-ként) generált vezérlők, amelyek könnyebben használhatók és hozzáadhatók az eszköztárhoz. A fejlesztők áthúzhatják a vezérlőket webes űrlapjaikra. Az attribútumok tervezési időben. Könnyen hozzáadhatunk egyéni vezérlőket több alkalmazáshoz (ha megosztott DLL-ekhez). Tehát, ha privátak, akkor a dll-be másolhatjuk a webalkalmazás bin könyvtárába, majd hozzáadhatjuk a hivatkozást, és használhatjuk őket.
A felhasználói vezérlők nagyon hasonlítanak az ASP-fájlokhoz, és könnyen létrehozhatók. A felhasználói vezérlők nem helyezhetők el az eszköztárban, és nem húzhatók ki belőle. A dizájnjuk és a kódjuk mögött van. A felhasználói vezérlők fájlkiterjesztése ascx.
16) Mik azok a lezárt osztályok C# nyelven?
Lezárt osztályokat hozunk létre, ha korlátozni akarjuk az osztály öröklését. Lezárt módosító, amely megakadályozza az osztályból való származtatást. Ha erőszakosan megadunk egy lezárt osztályt alaposztálynak, akkor fordítási hiba történik.
17) Mi az a módszer túlterhelés?
A módszer túlterhelése több, azonos nevű metódus létrehozása egyedi aláírásokkal ugyanabban az osztályban. Amikor fordítunk, a fordító túlterhelési felbontást használ a meghívandó konkrét metódus meghatározásához.
18) Mi a különbség az Array és az Arraylist között?
Egy tömbben csak azonos típusú elemek lehetnek. Összehasonlításkor a tömb mérete rögzített. A tömblista hasonló a tömbhöz, de nincs rögzített mérete.
19) Felülbírálható egy privát virtuális metódus?
Nem, mert az osztályon kívül nem érhetők el.
20) Ismertesse a „védett belső” hozzáférhetőségi módosítót.
A védett belső változók/metódusok elérhetők ugyanazon az összeállításon belül, valamint az ebből a szülőosztályból származó osztályokból is.
21) Mi a különbség a System.String és a System.Text.StringBuilder osztályok között?
A System.String megváltoztathatatlan. Amikor módosítjuk egy karakterlánc-változó értékét, akkor új memória kerül lefoglalásra az új értékhez, és az előző memóriafoglalás felszabadul. A System.StringBuilder-t úgy tervezték, hogy rendelkezzen egy változtatható karakterlánc koncepciójával, ahol különféle műveletek hajthatók végre anélkül, hogy külön memóriahelyet lefoglalnának a módosított karakterlánchoz.
22) Mi a különbség a System.Array.CopyTo() és a System.Array.Clone() között?
<p></p>
Clone()
módszerrel létrehozunk egy új tömbobjektumot, amely tartalmazza az eredeti tömb összes elemét és használja CopyTo()
módszer. A meglévő tömb összes eleme egy másik meglévő tömbbe másolódik. Mindkét módszer egy sekély másolást hajt végre.
23) Hogyan rendezhetjük a Tömb elemeit csökkenő sorrendbe?
<p></p>
Sort()
módszerek követik Reverse()
módszer.
24) Írja le a C# szintaxisát, hogy elkapjon egy kivételt
A kivétel elkapására try-catch blokkokat használunk. A Catch blokk rendszer paraméterrel rendelkezhet. Kivétel típusa.
Például:
try { GetAllData(); } catch (Exception ex) { }
A fenti példában kihagyhatjuk a paramétert a catch utasításból.
25) Mi a különbség az interfész és az absztrakt osztály között?
Az interfészek minden olyan metódussal rendelkeznek, amely csak deklarációt tartalmaz, de nincs definíció. Egy absztrakt osztályban rendelkezhetünk néhány konkrét módszerrel. Egy interfész osztályban minden metódus nyilvános. Egy absztrakt osztálynak lehetnek privát metódusai.
26) Mi a különbség a Finalize() és Dispose() metódusok között?
Dispose()
akkor hívódik meg, ha azt akarjuk, hogy egy objektum felszabadítson velük minden nem felügyelt erőforrást. Másrészről, Finalize()
ugyanarra a célra használják, de nem biztosítja egy tárgy szemétgyűjtését.
27) Mik azok a körkörös hivatkozások?
A körkörös hivatkozás olyan helyzet, amelyben két vagy több erőforrás kölcsönösen függ egymástól, ami a zárolási állapotot okozza, és az erőforrásokat használhatatlanná teszi.
28) Mik azok az általánosságok a C#.NET-ben?
Az általánosokat újrafelhasználható kódosztályok készítésére használják a kódredundancia csökkentése, a típusbiztonság és a teljesítmény növelése érdekében. A generikumok segítségével gyűjtőosztályokat hozhatunk létre. Általános gyűjtemény létrehozásához a System.Collections.Generic névteret kell használni az olyan osztályok helyett, mint például az ArrayList a System.Collections névtérben. A Generics támogatja a paraméterezett típusok használatát.
29) Mi az objektumkészlet a .NET-ben?
Az objektumkészlet egy olyan tároló, amely használatra kész objektumokat tartalmaz. Nyomon követi az éppen használatban lévő objektumot, a készletben lévő objektumok teljes számát. Ez csökkenti az objektumok létrehozásának és újbóli létrehozásának többletköltségét.
30) Sorolja fel a .net általánosan használt kivételtípusait
ArgumentException, ArgumentNullException, ArgumentOutOfRangeException, ArithmeticException, DivideByZeroException,OverflowException, IndexOutOfRangeException, InvalidCastException, InvalidOperationException, IOEndOfStreamException, NullReferenceException, OutOfMemoryException, StackOverflowException stb.
31) Mik azok az egyéni kivételek?
Néha előfordulnak olyan hibák, amelyeket a felhasználói igényeknek megfelelően kell kezelni. Egyéni kivételek használatosak, és meghatározott kivételek.
32) Mik azok a küldöttek?
A küldöttek ugyanazok a funkciómutatók C++, de az egyetlen különbség az, hogy típusbiztosak, ellentétben a funkciómutatókkal. A küldöttekre azért van szükség, mert sokkal általánosabb típusbiztos függvények írhatók velük.
33) Hogyan örökölhetsz egy osztályt másik osztályba C# nyelven?
A kettőspontot öröklődési operátorként használják a C#-ban. Csak tegyen egy kettőspontot, majd az osztály nevét.
public class DerivedClass : BaseClass
34) Mi az a .net alaposztálya, amelyből az összes osztály származik?
System.Object
35) Mi a különbség a módszer felülbírálása és a túlterhelés között?
A metódus felülbírálásánál megváltoztatjuk a módszer definícióját a származtatott osztályban, amely megváltoztatja a metódus viselkedését. A metódus túlterhelése egy azonos nevű metódus létrehozása ugyanazon az osztályon belül, különböző aláírásokkal.
36) Milyen különböző módokon lehet egy módszert túlterhelni?
A módszerek túlterhelhetők egy paraméterhez tartozó különböző adattípusok, a paraméterek eltérő sorrendje és a paraméterek eltérő száma használatával.
37) Miért nem lehet megadni az interfészen belüli metódusok hozzáférhetőségi módosítóját?
Egy interfészben virtuális metódusaink vannak, amelyeknek nincs metódusdefiníciójuk. Az összes metódust felül kell bírálni a származtatott osztályban. Ezért mindegyik nyilvános.
38) Hogyan állíthatjuk be, hogy az osztály öröklődik, de megakadályozzuk a metódus felülírását?
Nyilvánossá nyilvánítsa az osztályt, és a metódust lezárja, hogy ne kerüljön felülírásra.
39) Mi történik, ha az örökölt interfészek egymásnak ellentmondó metódusnevekkel rendelkeznek?
Az implementáció rajtad múlik, mivel a módszer a saját osztályodban található. Probléma adódhat, ha a különböző interfészekről származó metódusok eltérő adatokat várnak, de a fordítót illetően minden rendben van.
40) Mi a különbség a Struktúra és az Osztály között?
A struktúrák érték típusú változók, az osztályok pedig referenciatípusok. A veremben tárolt struktúrák többletköltséget, de gyorsabb visszakeresést okoznak. A struktúrák nem örökölhetők.
41) Hogyan használjunk nullálható típusokat a .Net-ben?
Az értéktípusok normál vagy null értéket vehetnek fel. Az ilyen típusokat nullálható típusoknak nevezzük.
Int? someID = null; If(someID.HasVAlue) { }
42) Hogyan hozhatunk létre tömböt nem alapértelmezett értékekkel?
Az Enumerable.Repeat segítségével létrehozhatunk egy tömböt nem alapértelmezett értékekkel.
43) Mi a különbség az „is” és „as” operátorok között a c#-ban?
Az „is” operátor egy objektum adott típussal való kompatibilitásának ellenőrzésére szolgál, és az eredményt Boolean-ként adja vissza.
Az „as” operátor egy objektum típusba vagy osztályba öntésére szolgál.
44) Mi az a multicast delegált?
A több kezelővel rendelkező küldöttet csoportos küldésnek nevezzük. Minden kezelő egy metódushoz van hozzárendelve.
45) Mik azok az indexelők a C# .NET-ben?
Az indexelőket okosnak nevezik tömbök C#-ban. Lehetővé teszi, hogy egy osztály példányait ugyanúgy indexeljék, mint egy tömböt.
Például:
public int this[int index] // Indexer declaration
46) Mi a különbség a „throw” és a „throw ex” között a .NET-ben?
A „Throw” utasítás megőrzi az eredeti hiba veremét, míg a „throw ex” a verem nyomát a dobási ponttól kapja. Mindig ajánlott a „dobás” használata, mert pontosabb hibainformációt ad.
47) Mik azok a C# attribútumok és jelentősége?
A C# lehetőséget biztosít a fejlesztőknek deklaratív címkék meghatározására bizonyos entitásokon, pl. Az osztályt, metódust stb. attribútumoknak nevezzük. Az attribútum információi futás közben lekérhetők a Reflection segítségével.
48) Hogyan valósíthatunk meg egy egyedi tervezési mintát C#-ban?
Egyetlen mintában egy osztálynak csak egy példánya lehet, és hozzáférési pontot biztosít hozzá globálisan.
Például:
Public sealed class Singleton { Private static readonly Singleton _instance = new Singleton(); }
49) Mi a különbség a directcast és a ctype között?
A DirectCast az objektum típusának konvertálására szolgál, amelynek futásidejű típusának meg kell egyeznie a DirectCastben megadott típussal.
A Ctype a konverzióhoz használatos, ahol a konverzió a kifejezés és a típus között van meghatározva.
50) A C# kód felügyelt vagy nem menedzselt kód?
A C# felügyelt kód, mivel a Common Language Runtime képes lefordítani a C# kódot köztes nyelvre.
51) Mi az a konzolalkalmazás?
A konzolalkalmazás egy olyan alkalmazás, amely a parancssorból futtatható Windows. Bármilyen kezdő a .Neten, egy konzolalkalmazás felépítése ideális esetben az első lépés.
52) Mondjon példát egy elem eltávolítására a sorból!
A dequeue metódus egy elem eltávolítására szolgál a sorból.
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(); } } }
Ezek az interjúkérdések a viva-ban is segítenek.