top 50 c interview questions with answers
Nejčastější dotazy týkající se rozhovorů C # o programování a kódování:
C # je programovací jazyk, který rychle rostl a je také široce používán. Je velmi žádaný, univerzální a podporuje také různé platformy.
Nepoužívá se pouze pro Windows, ale pro mnoho dalších operačních systémů. Proto je velmi důležité dobře rozumět tomuto jazyku, abyste mohli přistoupit na jakoukoli práci v oboru testování softwaru.
Níže uvádíme nejen sadu nejčastěji kladených otázek C #, ale také několik velmi důležitých témat, kterým je třeba rozumět, aby vyčnívaly z davu populace C #.
Protože C # je rozsáhlé téma, pro usnadnění řešení všech konceptů jsem rozdělil toto téma na tři části, jak je uvedeno níže:
- Otázky k základním pojmům
- Otázky k polím a řetězcům
- Pokročilé koncepty
Tento článek obsahuje sadu 50 nejčastějších otázek a odpovědí na pohovory C #, které pokrývají téměř všechna jeho důležitá témata jednoduše, aby vám pomohly připravit se na rozhovor.
Co se naučíte:
Nejoblíbenější C # Interview otázky a odpovědi
Základní pojmy
Otázka č. 1) Co je to předmět a třída?
Odpovědět: Třída je zapouzdření vlastností a metod, které se používají k reprezentaci entity v reálném čase. Jedná se o datovou strukturu, která spojuje všechny instance do jedné jednotky.
Objekt je definován jako instance třídy. Technicky jde pouze o blok přidělené paměti, který lze uložit ve formě proměnných, pole nebo kolekce.
Otázka č. 2) Jaké jsou základní koncepty OOP?
Odpověď: Čtyři základní koncepty objektově orientovaného programování jsou:
- Zapouzdření : Zde je vnitřní reprezentace objektu skryta před pohledem mimo definici objektu. Lze přistupovat pouze k požadovaným informacím, zatímco zbytek implementace dat je skrytý.
- Abstrakce: Jedná se o proces identifikace kritického chování a dat objektu a odstranění nepodstatných detailů.
- Dědictví : Jedná se o schopnost vytvářet nové třídy z jiné třídy. To se provádí přístupem, úpravou a rozšířením chování objektů v nadřazené třídě.
- Polymorfismus : Jméno znamená jedno jméno, mnoho podob. Toho je dosaženo tím, že máme více metod se stejným názvem, ale s různými implementacemi.
Otázka č. 3) Co je spravovaný a nespravovaný kód?
Odpovědět: Spravovaný kód je kód, který provádí CLR (Common Language Runtime), tj. Veškerý kód aplikace je založen na platformě .Net. Je to považováno za spravované z důvodu .Net framework, který interně používá garbage collector k vyčištění nepoužívané paměti.
Nespravovaný kód je jakýkoli kód, který se spouští za běhu aplikace jiného rámce kromě .Net. Runtime aplikace se postará o paměť, zabezpečení a další výkonnostní operace.
Otázka č. 4) Co je to rozhraní?
Odpovědět: Rozhraní je třída bez implementace. Jediná věc, kterou obsahuje, je deklarace metod, vlastností a událostí.
Otázka č. 5) Jaké jsou různé typy tříd v C #?
Odpověď: Různé typy tříd v C # jsou:
- Částečná třída: Umožňuje jeho členům být rozděleni nebo sdíleni s více soubory .cs. Označuje se klíčovým slovem Částečný.
- Uzavřená třída: Je to třída, kterou nelze zdědit. Pro přístup k členům zapečetěné třídy musíme vytvořit objekt třídy. Označuje se klíčovým slovem Sealed .
- Abstraktní třída : Je to třída, jejíž objekt nelze vytvořit instanci. Třídu lze pouze zdědit. Mělo by obsahovat alespoň jednu metodu. Označuje se klíčovým slovem abstraktní .
- Statická třída : Je to třída, která neumožňuje dědičnost. Členové třídy jsou také statičtí. Označuje se klíčovým slovem statický . Toto klíčové slovo říká kompilátoru, aby zkontroloval všechny náhodné instance statické třídy.
Q # 6) Vysvětlete kompilaci kódu v C #.
Odpověď: Kompilace kódu v C # zahrnuje následující čtyři kroky:
- Kompilace zdrojového kódu do spravovaného kódu kompilátorem C #.
- Kombinování nově vytvořeného kódu do sestavení.
- Načítání modulu Common Language Runtime (CLR).
- Provedení sestavení CLR.
Otázka č. 7) Jaké jsou rozdíly mezi třídou a strukturou?
Odpověď: Níže jsou uvedeny rozdíly mezi třídou a strukturou:
Třída | Struct |
---|---|
Podporuje dědičnost | Nepodporuje dědičnost |
Class is Pass by reference (reference type) | Struct is Pass by Copy (Typ hodnoty) |
Členové jsou ve výchozím nastavení soukromí | Členové jsou ve výchozím nastavení veřejní |
Dobré pro větší složité objekty | Dobré pro malé izolované modely |
Může použít sběrač odpadu pro správu paměti | Nelze použít Garbage collector a tedy žádnou správu paměti |
Otázka č. 8) Jaký je rozdíl mezi metodou Virtual a metodou Abstract?
Odpovědět: Metoda Virtual musí mít vždy výchozí implementaci. V odvozené třídě jej však lze přepsat, i když to není povinné. Lze jej přepsat pomocí přepsat klíčové slovo.
Metoda Abstract nemá implementaci. Nachází se v abstraktní třídě. Je povinné, aby odvozená třída implementovala abstraktní metodu. An přepsat klíčové slovo zde není nutné, i když ho lze použít.
Q # 9) Vysvětlete jmenné prostory v C #.
Odpovědět: Používají se k organizaci velkých projektů kódu. „Systém“ je nejpoužívanější jmenný prostor v C #. Můžeme vytvořit svůj vlastní jmenný prostor a můžeme také použít jeden jmenný prostor v jiném, který se nazývá vnořené jmenné prostory.
Jsou označeny klíčovým slovem „namespace“.
Otázka č. 10) Co je výraz „using“ v C #?
Odpovědět: Klíčové slovo „Používání“ označuje, že program používá konkrétní jmenný prostor.
Například, pomocí systému
Tady, Systém je jmenný prostor. Konzole třídy je definována v části Systém. V našem programu tedy můžeme použít soubor console.writeline („…“) nebo readline.
Otázka č. 11) Vysvětlete abstrakci.
Odpovědět: Abstrakce je jedním z konceptů OOP. Používá se k zobrazení pouze základních funkcí třídy a skrytí nepotřebných informací.
Vezměme si příklad automobilu:
Řidič automobilu by měl znát podrobnosti o automobilu, jako je barva, jméno, zrcátko, řízení, rychlostní stupeň, brzda atd. Co nemusí vědět, je vnitřní motor, výfukový systém.
Abstrakce tedy pomáhá vědět, co je nezbytné, a skrýt vnitřní podrobnosti před vnějším světem. Skrytí interních informací lze dosáhnout deklarováním takových parametrů jako Soukromých pomocí soukromé klíčové slovo.
Otázka č. 12) Vysvětlete polymorfismus?
Odpovědět: Programově Polymorfismus znamená stejnou metodu, ale různé implementace. Je 2 typů, Compile-time a Runtime.
- Polymorfismus v době kompilace je dosaženo přetížením operátora.
- Runtime polymorfismus je dosaženo přepsáním. Dědičnost a virtuální funkce se používají během běhového polymorfismu.
Například ,Pokud má třída metodu Void Add (), je polymorfismus dosažen přetížením metody, to znamená void Add (int a, int b), void Add (int add) jsou všechny přetížené metody.
Otázka č. 13) Jak je zpracování výjimek implementováno v C #?
Odpověď: Zpracování výjimek se provádí pomocí čtyř klíčových slov v C #: Answer: Exception handling is done using four keywords in C #:
- Snaž se : Obsahuje blok kódu, u kterého bude zkontrolována výjimka.
- úlovek : Je to program, který zachytí výjimku pomocí obsluhy výjimek.
- Konečně : Jedná se o blok kódu napsaného k provedení bez ohledu na to, zda je výjimka chycena nebo ne.
- Házet : Pokud dojde k problému, vyvolá výjimku.
Otázka č. 14) Co jsou C / I / O třídy? Jaké jsou běžně používané třídy I / O?
Odpovědět: C # má System.IO jmenný prostor, skládající se z tříd, které se používají k provádění různých operací se soubory, jako je vytváření, mazání, otevírání, zavírání atd.
Některé běžně používané třídy I / O jsou:
- Soubor - Pomáhá při manipulaci se souborem.
- StreamWriter - Používá se pro psaní znaků do streamu.
- StreamReader - Používá se pro čtení znaků do streamu.
- StringWriter - Používá se ke čtení řetězcové vyrovnávací paměti.
- StringReader - Používá se pro zápis řetězcové vyrovnávací paměti.
- Cesta - Používá se k provádění operací souvisejících s informacemi o cestě.
Otázka č. 15) Co je třída StreamReader / StreamWriter?
Odpovědět: StreamReader a StreamWriter jsou třídy oboru názvů System.IO. Používají se, když chceme číst nebo zapisovat charact90, resp. Data založená na čtečce.
Někteří z členů StreamReaderu jsou: Zavřít (), Číst (), Řádek čtení ().
Členy StreamWriter jsou: Zavřít (), Write (), Writeline ().
Class Program1 { using(StreamReader sr = new StreamReader(“C:ReadMe.txt”) { //----------------code to read-------------------// } using(StreamWriter sw = new StreamWriter(“C:ReadMe.txt”)) { //-------------code to write-------------------// } }
Otázka č. 16) Co je destruktor v C #?
Odpovědět: Destruktor se používá k vyčištění paměti a uvolnění prostředků. Ale v C # to provádí garbage collector sám. System.GC.Collect () se interně nazývá pro čištění. Někdy však může být nutné implementovat destruktory ručně.
Například:
~Car() { Console.writeline(“….”); }
Otázka č. 17) Co je abstraktní třída?
Odpovědět: Třída Abstract je třída, která je označena abstraktním klíčovým slovem a lze ji použít pouze jako základní třídu. Tato třída by měla být vždy zděděna. Instanci samotné třídy nelze vytvořit. Nechceme-li, aby jakýkoli program vytvořil objekt třídy, lze takové třídy vytvořit abstraktní.
Žádná metoda v abstraktní třídě nemá implementace ve stejné třídě. Musí však být implementovány v podřízené třídě.
Například:
abstract class AB1 { Public void Add(); } Class childClass : AB1 { childClass cs = new childClass (); int Sum = cs.Add(); }
Všechny metody v abstraktní třídě jsou implicitně virtuální metody. Proto by virtuální klíčové slovo nemělo být používáno s žádnými metodami v abstraktní třídě.
Otázka č. 18) Co jsou box a unboxing?
Odpovědět: Převod typu hodnoty na typ odkazu se nazývá Boxing.
Například:
int Hodnota1 - = 10;
//----Box------//
object boxedValue = Hodnota1;
Volá se explicitní převod stejného referenčního typu (vytvořeného boxováním) zpět na typ hodnoty Rozbalení .
Například:
//----Rozbalení------//
int UnBoxing = int (boxedValue);
program pro sledování teploty CPU a GPU
Otázka č. 19) Jaký je rozdíl mezi příkazem Pokračovat a Přerušení?
Odpovědět: Příkaz Break přeruší smyčku. Umožňuje ovládání programu k opuštění smyčky. Příkaz Pokračovat umožňuje ovládacímu prvku programu ukončit pouze aktuální iteraci. Neruší smyčku.
Otázka č. 20) Jaký je rozdíl mezi konečným a finalizujícím blokem?
Odpovědět: Konečně blok je volán po provedení bloku try and catch. Používá se pro zpracování výjimek. Bez ohledu na to, zda je výjimka zachycena nebo ne, bude tento blok kódu spuštěn. Obvykle bude mít tento blok čisticí kód.
metoda finalizace se nazývá těsně před uvolněním paměti. Používá se k provádění operací vyčištění nespravovaného kódu. Automaticky se volá, když daná instance není následně volána.
Pole a řetězce
Otázka č. 21) Co je to pole? Zadejte syntaxi pro jedno a vícerozměrné pole?
Odpovědět: Pole se používá k ukládání více proměnných stejného typu. Jedná se o kolekci proměnných uložených v souvislém paměťovém místě.
Například:
dvojitá čísla = nová dvojitá (10);
int () skóre = nový int (4) {25,24,23,25};
Jedno dimenzionální pole je lineární pole, kde jsou proměnné uloženy v jednom řádku. Výše příklad je jednorozměrné pole.
Pole mohou mít více než jednu dimenzi. Vícerozměrná pole se také nazývají obdélníková pole.
Například , int (,) numbers = new int (3,2) {{1,2}, {2,3}, {3,4}};
Otázka č. 22) Co je to zubaté pole?
Odpovědět: Jagged array je pole, jehož prvky jsou pole. Nazývá se také jako pole polí. Může to být jeden nebo více rozměrů.
int () jaggedArray = nový int (4) ();
Otázka č. 23) Pojmenujte některé vlastnosti pole.
Odpověď: Mezi vlastnosti pole patří:
- Délka: Získá celkový počet prvků v poli.
- IsFixedSize: Říká, zda je velikost pole pevná nebo ne.
- IsReadOnly : Říká, zda je pole jen pro čtení nebo ne.
Otázka č. 24) Co je třída Array?
Odpovědět: Třída Array je základní třídou pro všechna pole. Poskytuje mnoho vlastností a metod. Je přítomen v systému jmenného prostoru.
Otázka č. 25) Co je to řetězec? Jaké jsou vlastnosti třídy String?
Odpovědět: A String je kolekce char objektů. Můžeme také deklarovat řetězcové proměnné v jazyce C #.
string name = “C # otázky”;
Řetězcová třída v C # představuje řetězec. Vlastnosti třídy řetězce jsou:
- Znaky získat objekt Char v aktuálním řetězci.
- Délka získá počet objektů v aktuálním řetězci.
Otázka č. 26) Co je to úniková sekvence? Pojmenujte některé řídicí sekvence řetězce v C #.
Odpovědět: Sekvence Escape je označena zpětným lomítkem (). Zpětné lomítko označuje, že znak, který následuje, by měl být interpretován doslovně, nebo se jedná o speciální znak. Úniková sekvence se považuje za jeden znak.
Řetězcové únikové sekvence jsou následující:
- n - Znak nového řádku
- b - Backspace
- \ - Zpětné lomítko
- “- Jednoduchá nabídka
- „“ - Dvojitá nabídka
Otázka č. 27) Co jsou regulární výrazy? Hledáte řetězec pomocí regulárních výrazů?
Odpovědět: Regulární výraz je šablona, která odpovídá sadě vstupů. Vzor se může skládat z operátorů, konstrukcí nebo literálů znaků. Regex se používá pro analýzu řetězců a nahrazení řetězců znaků.
Například:
* odpovídá předchozímu znaku nula nebo vícekrát. Takže * b regex je ekvivalentní s b, ab, aab, aaab atd.
Hledání řetězce pomocí Regexu:
static void Main(string() args) { string() languages = { 'C#', 'Python', 'Java' }; foreach(string s in languages) { if(System.Text.RegularExpressions.Regex.IsMatch(s,'Python')) { Console.WriteLine('Match found'); } } }
Výše uvedený příklad hledá „Python“ proti množině vstupů z pole jazyků. Používá Regex.IsMatch, který vrací true v případě, že se vzor najde na vstupu. Vzorem může být libovolný regulární výraz představující vstup, který chceme porovnat.
Otázka č. 28) Jaké jsou základní operace s řetězci? Vysvětlit.
Odpověď: Některé ze základních operací s řetězci jsou:
- Zřetězit : Dva řetězce lze zřetězit buď pomocí System.String.Concat nebo pomocí operátoru +.
- Upravit : Replace (a, b) se používá k nahrazení řetězce jiným řetězcem. Trim () se používá k oříznutí řetězce na konci nebo na začátku.
- Porovnat : System.StringComparison () se používá k porovnání dvou řetězců, buď porovnání malých a velkých písmen, nebo malých a velkých písmen. Hlavně trvá dva parametry, původní řetězec a řetězec, které mají být porovnány.
- Vyhledávání : Metody StartWith, EndsWith se používají k vyhledávání konkrétního řetězce.
Otázka č. 29) Co je to analýza? Jak analyzovat řetězec data a času?
Odpovědět: Při analýze se řetězec převede na jiný datový typ.
Například:
text řetězce = „500“;
int num = int.Parse (text);
500 je celé číslo. Metoda Parse tedy převede řetězec 500 na svůj vlastní základní typ, tj. Int.
Stejným způsobem převeďte řetězec DateTime.
string dateTime = „1. ledna 2018“;
DateTime parsedValue = DateTime.Parse (dateTime);
Pokročilé koncepty
Otázka 30) Co je to delegát? Vysvětlit.
Odpovědět: Delegát je proměnná, která obsahuje odkaz na metodu. Jedná se tedy o ukazatel funkce nebo referenční typ. Všichni delegáti jsou odvozeni z oboru názvů System.Delegate. Delegát i metoda, na kterou odkazuje, mohou mít stejný podpis.
- Deklarace delegáta: public delegate void AddNumbers (int n);
Po deklaraci delegáta musí objekt vytvořit delegát pomocí nového klíčového slova.
AddNumbers an1 = nové AddNumbers (číslo);
Delegát poskytuje druh zapouzdření do referenční metody, která bude interně vyvolána při volání delegáta.
public delegate int myDel(int number); public class Program { public int AddNumbers(int a) { int Sum = a + 10; return Sum; } public void Start() { myDel DelgateExample = AddNumbers; } }
Ve výše uvedeném příkladu máme delegáta myDel, který jako parametr přijímá celočíselnou hodnotu. Program Class má metodu stejného podpisu jako delegát, nazvanou AddNumbers ().
Pokud existuje jiná metoda s názvem Start (), která vytváří objekt delegáta, může být objekt přiřazen k AddNumbers, protože má stejný podpis jako delegát.
Otázka č. 31) Co jsou události?
Odpovědět: Události jsou akce uživatelů, které generují oznámení do aplikace, na kterou musí reagovat. Akce uživatele mohou být pohyby myši, stisknutí kláves atd.
Programově se třída, která vyvolá událost, nazývá vydavatel a třída, která reaguje / přijímá událost, se nazývá předplatitel. Událost by měla mít alespoň jednoho předplatitele, jinak tato událost nikdy nevznikne.
Delegáti se používají k deklaraci událostí.
Public delegate void PrintNumbers ();
Událost PrintNumbers myEvent;
Otázka č. 32) Jak používat delegáty s událostmi?
Odpovědět: Delegáti se používají k vyvolání událostí a jejich zpracování. Nejprve musí být vždy deklarován delegát a poté jsou deklarovány Události.
jak zobrazit xml soubory ve Wordu
Podívejme se na příklad:
Zvažte třídu zvanou Pacient. Zvažte další dvě třídy, Pojištění a Banka, které vyžadují informace o úmrtí pacienta ze třídy pacientů. Pojišťovna a banka jsou předplatiteli a třída pacientů se stává vydavatelem. Spouští událost smrti a další dvě třídy by ji měly přijmout.
namespace ConsoleApp2 { public class Patient { public delegate void deathInfo();//Declaring a Delegate// public event deathInfo deathDate;//Declaring the event// public void Death() { deathDate(); } } public class Insurance { Patient myPat = new Patient(); void GetDeathDetails() { //-------Do Something with the deathDate event------------// } void Main() { //--------Subscribe the function GetDeathDetails----------// myPat.deathDate += GetDeathDetails; } } public class Bank { Patient myPat = new Patient(); void GetPatInfo () { //-------Do Something with the deathDate event------------// } void Main() { //--------Subscribe the function GetPatInfo ----------// myPat.deathDate += GetPatInfo; } } }
Otázka č. 33) Jaké jsou různé typy delegátů?
Odpověď: Různé typy delegátů jsou:
- Jeden delegát : Delegát, který může volat jedinou metodu.
- Delegát vícesměrového vysílání : Delegát, který může volat více metod. Operátory + a - se používají k odběru a odhlášení.
- Obecný delegát : Nevyžaduje, aby byla definována instance delegáta. Je tří typů, Action, Funcs a Predicate.
- Akce - Ve výše uvedeném příkladu delegátů a událostí můžeme definici delegáta a události nahradit pomocí klíčového slova Action. Delegát akce definuje metodu, kterou lze volat na argumenty, ale nevrátí výsledek
Veřejný delegát void deathInfo ();
Veřejná událost deathInfo deathDate;
// Nahrazení akcí //
Veřejná akce Akce deathDate;
Akce implicitně odkazuje na delegáta.
-
- funkce - Delegát Func definuje metodu, kterou lze vyvolat na argumentech, a vrátí výsledek.
Func myDel je stejný jako delegovat bool myDel (int a, řetězec b);
-
- Predikát - Definuje metodu, kterou lze vyvolat na argumentech, a vždy vrátí bool.
Predikovat myDel je stejný jako delegovat bool myDel (řetězce);
Otázka č. 34) Co znamenají delegáti vícesměrového vysílání?
Odpovědět: Delegát, který odkazuje na více než jednu metodu, se nazývá Multicast Delegate. Multicasting je dosažen pomocí operátorů + a + =.
Zvažte příklad z Q # 32.
Existují dva předplatitelé deathEvent, GetPatInfo , a GetDeathDetails . A proto jsme použili operátor + =. To znamená kdykoli mýdel je voláno, jsou voláni oba předplatitelé. Delegáti budou voláni v pořadí, v jakém jsou přidáni.
Otázka č. 35) Vysvětlete vydavatelům a předplatitelům události.
Odpovědět: Publisher je třída odpovědná za publikování zprávy různých typů jiných tříd. Zpráva není nic jiného než Událost, jak je popsáno ve výše uvedených otázkách.
Z Příklad v Q # 32 je Class Patient třída Publisher. Generuje událost smrtEvent , který dostávají ostatní třídy.
Předplatitelé zachytí zprávu typu, o který se zajímá. Opět z Příklad Q # 32, Class Insurance a Bank jsou předplatitelé. Zajímají se o událost smrtEvent typu prázdnota .
Otázka č. 36) Co jsou synchronní a asynchronní operace?
Odpovědět: Synchronizace je způsob, jak vytvořit kód bezpečný pro vlákna, kde k danému prostředku může v daném okamžiku přistupovat pouze jeden podproces. Asynchronní volání čeká na dokončení metody před pokračováním v toku programu.
Synchronní programování špatně ovlivňuje operace uživatelského rozhraní, když se uživatel pokusí provést časově náročné operace, protože bude použito pouze jedno vlákno. V asynchronní operaci se volání metody okamžitě vrátí, aby program mohl provádět další operace, zatímco volaná metoda dokončí svou práci v určitých situacích.
V C # se pro dosažení asynchronního programování používají klíčová slova Async a Await. Podívejte se na Q # 43, kde najdete další podrobnosti o synchronním programování.
Otázka č. 37) Co je to odraz v C #?
Odpovědět: Reflexe je schopnost kódu přistupovat k metadatům sestavení za běhu. Program se odráží sám na sobě a používá metadata k informování uživatele nebo k úpravě svého chování. Metadata označují informace o objektech, metodách.
Obor názvů System.Reflection obsahuje metody a třídy, které spravují informace o všech načtených typech a metodách. Používá se hlavně pro aplikace Windows, Například , pro zobrazení vlastností tlačítka ve formuláři systému Windows.
Objekt MemberInfo reflexe třídy se používá k objevení atributů přidružených ke třídě.
Reflexe je implementována ve dvou krocích, nejprve získáme typ objektu a poté použijeme typ k identifikaci členů, jako jsou metody a vlastnosti.
K získání typu třídy můžeme jednoduše použít,
Zadejte mytype = myClass.GetType ();
Jakmile máme typ třídy, lze snadno získat přístup k dalším informacím o třídě.
System.Reflection.MemberInfo Info = mytype.GetMethod („Přidat čísla“);
Výše uvedené prohlášení se pokusí najít metodu s názvem Přidat čísla ve třídě moje třída .
Otázka č. 38) Co je obecná třída?
Odpovědět: Obecná nebo obecná třída se používá k vytváření tříd nebo objektů, které nemají žádný konkrétní datový typ. Datový typ lze přiřadit za běhu, tj. Když se používá v programu.
Například:
Z výše uvedeného kódu tedy zpočátku vidíme 2 metody porovnání, abychom porovnali řetězec a int.
V případě jiných srovnání parametrů datového typu můžeme místo vytváření mnoha přetížených metod vytvořit obecnou třídu a předat náhradní datový typ, tj. T. Takže T funguje jako datový typ, dokud nebude použit konkrétně v metodě Main () .
Otázka č. 39) Vysvětlete Získat a nastavit vlastnosti přistupujícího objektu?
Odpovědět: Get a Set se nazývají Accessors. Používá je Vlastnosti. Vlastnost poskytuje mechanismus pro čtení, zápis hodnoty soukromého pole. Pro přístup k tomuto soukromému poli se používají tyto přístupové objekty.
Získat vlastnost se používá k vrácení hodnoty vlastnosti
Pro nastavení hodnoty se používá přístupový objekt Set Property.
Použití get a set je níže:
Otázka č. 40) Co je vlákno? Co je to multithreading?
Odpovědět: Vlákno je sada pokynů, které lze provést, což umožní našemu programu provádět souběžné zpracování. Souběžné zpracování nám pomáhá provádět více než jednu operaci najednou. Ve výchozím nastavení má C # pouze jedno vlákno. Ale ostatní vlákna mohou být vytvořena k provedení kódu paralelně s původním vláknem.
Nit má životní cyklus. Spustí se vždy, když se vytvoří třída vlákna, a po provedení se ukončí. System.Threading je jmenný prostor, který je třeba zahrnout, aby bylo možné vytvářet vlákna a používat jeho členy.
Vlákna jsou vytvořena rozšířením třídy vláken. Start() metoda se používá k zahájení provádění podprocesu.
//CallThread is the target method// ThreadStart methodThread = new ThreadStart(CallThread); Thread childThread = new Thread(methodThread); childThread.Start();
C # může provádět více než jeden úkol najednou. To se provádí zpracováním různých procesů různými vlákny. Toto se nazývá MultiThreading.
Existuje několik metod podprocesů, které se používají ke zpracování operací s více podprocesy:
Spusťte, spěte, přerušte, pozastavte, pokračujte a připojte se.
Většina z těchto metod je samozřejmostí.
Otázka č. 41) Pojmenujte některé vlastnosti třídy vlákna.
Odpověď: Několik vlastností třídy vláken je:
- Je naživu - obsahuje hodnotu True, když je vlákno aktivní.
- název - Může vrátit název vlákna. Také můžete nastavit název vlákna.
- Přednost - vrátí prioritní hodnotu úlohy nastavenou operačním systémem.
- IsBackground - získá nebo nastaví hodnotu, která označuje, zda má být vlákno procesem na pozadí nebo v popředí.
- Stav vlákna - popisuje stav vlákna.
Q # 42) Jaké jsou různé stavy vlákna?
Odpověď: Různé stavy vlákna jsou:
- Nezačal - Vlákno je vytvořeno.
- Běh - Vlákno zahájí provádění.
- WaitSleepJoin - Vlákno volá spánek, volání čeká na jiný objekt a volání se připojí na jiné vlákno.
- Pozastaveno - Nit byla pozastavena.
- Přerušeno - Vlákno je mrtvé, ale nezměněno na stav zastaveno.
- Zastavil - Nit se zastavila.
Otázka č. 43) Co jsou Async a Await?
Odpovědět: Klíčová slova Async a Await se používají k vytvoření asynchronních metod v C.
Asynchronní programování znamená, že proces běží nezávisle na hlavních nebo jiných procesech.
Použití Async a Await je uvedeno níže:
- Pro deklaraci metody se používá klíčové slovo Async.
- Počet je úkolu typu int, který volá metodu CalculateCount ().
- Calculatecount () zahájí provádění a něco vypočítá.
- Nezávislá práce se provádí na mém vlákně a poté se dosáhne příkazu count count.
- Pokud Calculatecount není dokončen, myMethod se vrátí ke své volací metodě, takže hlavní vlákno nebude blokováno.
- Pokud je Calculatecount již hotový, pak máme výsledek k dispozici, když ovládací prvek dosáhne countit count. Další krok bude tedy pokračovat ve stejném vlákně. Není to však situace ve výše uvedeném případě, kdy se jedná o zpoždění o 1 sekundu.
Otázka č. 44) Co je zablokování?
Odpovědět: Zablokování je situace, kdy proces není schopen dokončit své spuštění, protože dva nebo více procesů čekají na dokončení druhého. K tomu obvykle dochází při vícevláknovém zpracování.
Zde sdílený prostředek drží proces a další proces čeká na uvolnění prvního procesu a vlákno, které drží uzamčenou položku, čeká na dokončení dalšího procesu.
Zvažte níže uvedený příklad:
- Provádět úkoly přistupuje k objB a čeká 1 sekundu.
- Mezitím se PerformtaskB pokusí získat přístup k ObjA.
- Po 1 sekundě se PeformtaskA pokusí získat přístup k ObjA, který je uzamčen PerformtaskB.
- PerformtaskB se pokusí o přístup k ObjB, který je uzamčen PerformtaskA.
To vytváří zablokování.
Otázka č. 45) Vysvětlete L. ock , Monitory , a Mutex Objekt ve vlákně.
Odpovědět: Klíčové slovo Lock zajišťuje, že do určité části kódu může v daném okamžiku vstoupit pouze jedno vlákno. Ve výše uvedeném Příklad , lock (ObjA) znamená, že zámek je umístěn na ObjA, dokud ho tento proces neuvolní, žádné jiné vlákno nebude mít přístup k ObjA.
Mutex je také jako zámek, ale může pracovat napříč několika procesy najednou. WaitOne () se používá k uzamčení a ReleaseMutex () se používá k uvolnění zámku. Ale Mutex je pomalejší než zámek, protože jeho získání a vydání vyžaduje čas.
Monitor.Enter a Monitor.Exit implementuje zámek interně. zámek je zkratka pro monitory. lock (objA) interně volá.
Monitor.Enter(ObjA); try { } Finally {Monitor.Exit(ObjA));}
Otázka č. 46) Co je podmínka závodu?
Roky: Podmínka závodu nastane, když dvě vlákna přistupují ke stejnému prostředku a snaží se jej změnit současně. Vlákno, které bude mít přístup ke zdroji jako první, nelze předvídat.
Pokud máme dvě vlákna, T1 a T2, a pokoušejí se získat přístup ke sdílenému prostředku s názvem X. A pokud se obě vlákna pokusí zapsat hodnotu na X, poslední hodnota zapsaná do X se uloží.
Q # 47) Co je sdružování vláken?
Roky: Pool vláken je kolekce vláken. Tato vlákna lze použít k provádění úkolů bez narušení primárního vlákna. Jakmile vlákno dokončí úkol, vlákno se vrátí do fondu.
Obor názvů System.Threading.ThreadPool má třídy, které spravují vlákna ve fondu a jeho operace.
System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(SomeTask));
Výše uvedený řádek zařadí úkol do fronty. Metody SomeTask by měly mít parametr typu Object.
Otázka č. 48) Co je to serializace?
Odpovědět: Serializace je proces převodu kódu do jeho binárního formátu. Jakmile je převeden na bajty, lze jej snadno uložit a zapsat na disk nebo jakékoli takové úložné zařízení. Serializace jsou užitečné zejména v případě, že nechceme ztratit původní podobu kódu a lze jej kdykoli v budoucnu načíst.
Jakákoli třída, která je označena atributem (Serializable), bude převedena do binární podoby.
Zpětný proces získávání kódu C # zpět z binární formy se nazývá deserializace.
K serializaci objektu potřebujeme objekt, který má být serializován, stream, který může obsahovat serializovaný objekt a obor názvů System.Runtime.Serialization může obsahovat třídy pro serializaci.
Otázka č. 49) Jaké jsou typy serializace?
Odpověď: Různé typy serializace jsou:
- Serializace XML - Serializuje všechny veřejné vlastnosti do dokumentu XML. Jelikož jsou data ve formátu XML, lze je snadno číst a manipulovat s nimi v různých formátech. Třídy jsou umístěny v System.sml.Serialization.
- MÝDLO - Třídy jsou umístěny v System.Runtime.Serialization. Podobně jako XML, ale vytváří kompletní obálku kompatibilní se SOAP, kterou může použít jakýkoli systém, který rozumí SOAP.
- Binární serializace - Umožňuje převod libovolného kódu do binární podoby. Může serializovat a obnovit veřejné a neveřejné vlastnosti. Je rychlejší a zabírá méně místa.
Otázka 50) Co je soubor XSD?
Odpovědět: Soubor XSD znamená XML Schema Definition. Poskytuje strukturu souboru XML. To znamená, že rozhoduje o prvcích, které by XML měl mít, v jakém pořadí a jaké vlastnosti by měly být přítomny. Bez souboru XSD přidruženého k XML může mít XML jakékoli značky, jakékoli atributy a jakékoli prvky.
Nástroj Xsd.exe převádí soubory do formátu XSD. Během serializace kódu C # jsou třídy převedeny do formátu kompatibilního s XSD pomocí xsd.exe.
Závěr
C # rychle roste každým dnem a hraje hlavní roli v odvětví testování softwaru.
Jsem si jist, že tento článek výrazně usnadní vaši přípravu na pohovor a poskytne vám značné množství znalostí o většině témat C #.
Doufám, že budete připraveni sebevědomě čelit jakémukoli rozhovoru v C # !!
Doporučené čtení
- Dotazy a odpovědi na pohovor
- ETL Testing Interview Otázky a odpovědi
- Top 50 nejoblíbenějších dotazů a odpovědí na rozhovor s CCNA
- Top 51 Bootstrap Interview Otázky a odpovědi
- Top 20+ .NET Interview Otázky a odpovědi
- Nejlépe 50+ otázek a odpovědí na rozhovory s databázemi
- Několik složitých otázek a odpovědí na ruční testování
- 25 nejlepších agilních testovacích otázek a odpovědí na rozhovor