top 50 c interview questions with answers
Často kladené základné otázky týkajúce sa rozhovorov C # o programovaní a kódovaní:
C # je programovací jazyk, ktorý rýchlo vzrástol a je tiež široko používaný. Je veľmi žiadaný, univerzálny a podporuje tiež rôzne platformy.
Nepoužívajú sa iba pre Windows, ale pre mnoho ďalších operačných systémov. Preto je veľmi dôležité dobre porozumieť tomuto jazyku, aby si získal miesto v akejkoľvek práci v priemysle testovania softvéru.
Nižšie uvádzame nielen súbor najčastejších otázok o C #, ale aj niekoľko veľmi dôležitých tém, ktorým je potrebné porozumieť, aby vyčnievali z davu populácie C #.
Pretože C # je rozsiahla téma, pre uľahčenie riešenia všetkých konceptov som túto tému rozdelil do troch častí, ako je uvedené nižšie:
- Otázky k základným koncepciám
- Otázky k poliam a reťazcom
- Pokročilé koncepcie
Tento článok obsahuje súbor 50 najdôležitejších otázok a odpovedí na pohovory C #, ktoré pokrývajú takmer všetky jeho dôležité témy, a to tak, aby ste sa ľahšie pripravili na pohovor.
Čo sa dozviete:
Najobľúbenejšie otázky a odpovede na pohovore v C #
Základné pojmy
Otázka č. 1) Čo je to predmet a trieda?
Odpoveď: Trieda je zapuzdrenie vlastností a metód, ktoré sa používajú na reprezentáciu entity v reálnom čase. Jedná sa o dátovú štruktúru, ktorá spája všetky inštancie do jednej jednotky.
Objekt je definovaný ako inštancia triedy. Technicky je to len blok alokovanej pamäte, ktorý je možné uložiť vo forme premenných, polí alebo kolekcie.
Otázka 2) Aké sú základné koncepty OOP?
Odpoveď: Štyri základné koncepty objektovo orientovaného programovania sú:
- Zapuzdrenie : Tu je vnútorná reprezentácia objektu skrytá pred pohľadom mimo definíciu objektu. Prístup k iba požadovaným informáciám je možný, zatiaľ čo zvyšok implementácie údajov je skrytý.
- Abstrakcia: Je to proces identifikácie kritického správania a údajov objektu a eliminácie irelevantných detailov.
- Dedenie : Je to schopnosť vytvárať nové triedy z inej triedy. Robí sa to prístupom, úpravou a rozšírením správania sa objektov v nadradenej triede.
- Polymorfizmus : Meno znamená, jedno meno, veľa podôb. Dosahuje sa to tým, že existuje viac metód s rovnakým názvom, ale s rôznymi implementáciami.
Otázka 3) Čo je to spravovaný a nespravovaný kód?
Odpoveď: Spravovaný kód je kód, ktorý vykonáva CLR (Common Language Runtime), t. J. Všetok kód aplikácie je založený na platforme .Net. Považuje sa to za spravované kvôli architektúre .Net, ktorá interne používa zberač odpadkov na vyčistenie nepoužívanej pamäte.
Nespravovaný kód je akýkoľvek kód, ktorý sa vykonáva za behu aplikácie iného rámca okrem .Net. Runtime aplikácie sa postará o pamäť, bezpečnosť a ďalšie výkonnostné operácie.
Otázka č. 4) Čo je to rozhranie?
Odpoveď: Rozhranie je trieda bez implementácie. Jediná vec, ktorú obsahuje, je deklarácia metód, vlastností a udalostí.
Otázka č. 5) Aké sú rôzne typy tried v C #?
Odpoveď: Rôzne typy tried v C # sú:
- Čiastočná trieda: Umožňuje svojim členom rozdelenie alebo zdieľanie s viacerými súbormi .cs. Označuje sa kľúčovým slovom Čiastočné.
- Utesnená trieda: Je to trieda, ktorú nemožno dediť. Pre prístup k členom zapečatenej triedy musíme vytvoriť objekt triedy. Označuje sa kľúčovým slovom Zapečatené .
- Abstraktná trieda : Je to trieda, ktorej objekt nie je možné vytvoriť inštanciu. Trieda sa dá iba dediť. Mal by obsahovať aspoň jednu metódu. Označuje sa kľúčovým slovom abstraktné .
- Statická trieda : Je to trieda, ktorá neumožňuje dedenie. Členovia triedy sú tiež statickí. Označuje sa kľúčovým slovom statický . Toto kľúčové slovo hovorí kompilátoru, aby skontroloval všetky náhodné inštancie statickej triedy.
Otázka č. 6) Vysvetlite kompiláciu kódu v jazyku C #.
Odpoveď: Kompilácia kódu v C # obsahuje nasledujúce štyri kroky:
- Kompilácia zdrojového kódu do spravovaného kódu kompilátorom C #.
- Kombinovanie novo vytvoreného kódu do zostáv.
- Načítava sa modul Common Language Runtime (CLR).
- Vykonanie zhromaždenia spoločnosťou CLR.
Otázka č. 7) Aké sú rozdiely medzi triedou a konštrukciou?
Odpoveď: Nižšie uvádzame rozdiely medzi triedou a štruktúrou:
Trieda | Struct |
---|---|
Podporuje dedičstvo | Nepodporuje dedičstvo |
Trieda je Pass by reference (referenčný typ) | Štruktúra je kopírovaná (typ hodnoty) |
Členovia sú predvolene súkromní | Členovia sú predvolene verejní |
Dobré pre väčšie zložité objekty | Dobré pre malé izolované modely |
Môže sa používať zberač odpadu na správu pamäte | Nie je možné použiť Garbage collector a teda žiadnu správu pamäte |
Otázka 8) Aký je rozdiel medzi metódou Virtual a metódou Abstract?
Odpoveď: Metóda Virtual musí mať vždy predvolenú implementáciu. V odvodenej triede to však možno prepísať, aj keď to nie je povinné. Dá sa to prepísať pomocou prepísať kľúčové slovo.
Abstraktná metóda nemá implementáciu. Nachádza sa v abstraktnej triede. Je povinné, aby odvodená trieda implementovala abstraktnú metódu. An prepísať kľúčové slovo tu nie je potrebné, aj keď sa dá použiť.
Otázka č. 9) Vysvetlite menné priestory v jazyku C #.
Odpoveď: Používajú sa na organizáciu veľkých kódových projektov. „Systém“ je najbežnejšie používaný menný priestor v C #. Môžeme si vytvoriť vlastný menný priestor a môžeme tiež použiť jeden menný priestor v inom, ktorý sa nazýva Vnorené menné priestory.
Označujú sa kľúčovým slovom „namespace“.
Otázka č. 10) Čo je to vyhlásenie „pomocou“ v C #?
Odpoveď: Kľúčové slovo „Používanie“ označuje, že program používa konkrétny priestor názvov.
Napríklad, pomocou systému
Tu, Systém je menný priestor. Trieda Console je definovaná v časti Systém. V našom programe teda môžeme použiť console.writeline („...“) alebo readline.
Otázka č. 11) Vysvetlite abstrakciu.
Odpoveď: Abstrakcia je jedným z konceptov OOP. Slúži na zobrazenie iba základných vlastností triedy a na skrytie nepotrebných informácií.
Vezmime si príklad automobilu:
Vodič vozidla by mal poznať podrobnosti o automobile, ako napríklad farbu, meno, zrkadlo, riadenie, prevodový stupeň, brzdu atď. Čo nemusí vedieť, je vnútorný motor, výfukový systém.
Abstrakcia teda pomáha pri poznaní toho, čo je potrebné, a skrytí vnútorných detailov pred vonkajším svetom. Skrytie interných informácií je možné dosiahnuť vyhlásením parametrov ako Súkromných pomocou súkromné kľúčové slovo.
Otázka č. 12) Vysvetlite polymorfizmus?
Odpoveď: Programovo znamená polymorfizmus rovnakú metódu, ale rôzne implementácie. Je to 2 typy, kompilácia a runtime.
- Polymorfizmus v čase kompilácie sa dosiahne preťažením operátora.
- Polymorfizmus za behu sa dosiahne prepísaním. Dedičnosť a virtuálne funkcie sa používajú počas runtime polymorfizmu.
Napríklad ,Ak má trieda metódu Void Add (), polymorfizmus sa dosiahne preťažením metódy, to znamená void Add (int a, int b), void Add (int add) sú všetky preťažené metódy.
Otázka č. 13) Ako je spracovanie výnimiek implementované v C #?
Odpoveď: Spracovanie výnimiek sa vykonáva pomocou štyroch kľúčových slov v C #:
- skús : Obsahuje blok kódu, u ktorého sa bude kontrolovať výnimka.
- chytiť : Je to program, ktorý zachytáva výnimky pomocou obsluhy výnimiek.
- konečne : Je to blok kódu napísaného na vykonanie bez ohľadu na to, či je alebo nie je zachytená výnimka.
- Hoď : Ak dôjde k problému, hodí výnimku.
Otázka č. 14) Čo sú to C / I / O triedy? Aké sú bežne používané I / O triedy?
Odpoveď: C # má menný priestor System.IO, ktorý sa skladá z tried, ktoré sa používajú na vykonávanie rôznych operácií so súbormi, ako je vytváranie, mazanie, otváranie, zatváranie atď.
Niektoré bežne používané triedy I / O sú:
- Súbor - Pomáha pri manipulácii so súborom.
- StreamWriter - Používa sa na zápis znakov do streamu.
- StreamReader - Používa sa na čítanie znakov do streamu.
- StringWriter - Používa sa na čítanie vyrovnávacej pamäte reťazca.
- StringReader - Používa sa na zápis vyrovnávacej pamäte reťazca.
- Cesta - Používa sa na vykonávanie operácií súvisiacich s informáciami o ceste.
Otázka č. 15) Čo je trieda StreamReader / StreamWriter?
Odpoveď: StreamReader a StreamWriter sú triedy menného priestoru System.IO. Používajú sa, keď chceme čítať alebo zapisovať charact90, resp. Dáta založené na čítačke.
Niektorí z členov StreamReaderu sú: Zatvoriť (), Čítať (), Čítať riadok ().
Členmi StreamWriter sú: Zatvoriť (), 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) Čo je to destruktor v C #?
Odpoveď: Destruktor sa používa na vyčistenie pamäte a uvoľnenie prostriedkov. Ale v C # to robí smetiar sám. System.GC.Collect () sa volá interne na čistenie. Niekedy však môže byť potrebné implementovať deštruktory ručne.
Napríklad:
~Car() { Console.writeline(“….”); }
Otázka č. 17) Čo je to abstraktná trieda?
Odpoveď: Trieda Abstract je trieda, ktorá je označená kľúčovým slovom abstract a je možné ju použiť iba ako základnú triedu. Táto trieda by sa mala vždy dediť. Nie je možné vytvoriť inštanciu triedy. Ak nechceme, aby nejaký program vytvoril objekt triedy, potom môžu byť tieto triedy abstraktné.
Žiadna metóda v abstraktnej triede nemá implementácie v rovnakej triede. Musia sa však implementovať v triede detí.
Napríklad:
abstract class AB1 { Public void Add(); } Class childClass : AB1 { childClass cs = new childClass (); int Sum = cs.Add(); }
Všetky metódy v abstraktnej triede sú implicitne virtuálne metódy. Virtuálne kľúčové slovo by sa preto nemalo používať so žiadnymi metódami v abstraktnej triede.
Otázka č. 18) Čo sú box a unboxing?
Odpoveď: Prevod typu hodnoty na typ referenčný sa nazýva box.
Napríklad:
int hodnota1 - = 10;
// ———— Box —————— //
objekt boxedValue = hodnota1;
Explicitná konverzia rovnakého referenčného typu (vytvorená boxom) späť na hodnotový typ sa volá Rozbaľovanie .
Napríklad:
//----Rozbaľovanie------//
int UnBoxing = int (boxedValue);
čo použiť namiesto ccleaneru
Otázka č. 19) Aký je rozdiel medzi príkazom Pokračovať a Prerušiť?
Odpoveď: Príkaz Break preruší slučku. Vykonáva kontrolu nad programom, aby opustil slučku. Pomocou príkazu Pokračovať sa v rámci kontroly programu ukončí iba aktuálna iterácia. Nenarušuje to slučku.
Otázka č. 20) Aký je rozdiel medzi konečným a finalizujúcim blokom?
Odpoveď: konečne blok sa volá po vykonaní bloku try and catch. Používa sa na spracovanie výnimiek. Tento blok kódu sa vykoná bez ohľadu na to, či je alebo nie je zachytená výnimka. Zvyčajne bude mať tento blok čistiaci kód.
metóda finalize sa volá tesne pred odvozom odpadu. Používa sa na vykonávanie operácií vyčistenia nespravovaného kódu. Zavolá sa automaticky, keď sa daná inštancia následne nezvolá.
Polia a reťazce
Otázka č. 21) Čo je to pole? Dať syntax pre jednorozmerné a viacrozmerné pole?
Odpoveď: Pole sa používa na ukladanie viacerých premenných rovnakého typu. Je to kolekcia premenných uložených v susednej pamäti.
Napríklad:
dvojité čísla = nové dvojité (10);
skóre int () = nové skóre int (4) {25,24,23,25};
Jednorozmerné pole je lineárne pole, kde sú premenné uložené v jednom riadku. Vyššie príklad je jednorozmerné pole.
Polia môžu mať viac ako jednu dimenziu. Multidimenzionálne polia sa tiež nazývajú obdĺžnikové polia.
Napríklad , int (,) numbers = new int (3,2) {{1,2}, {2,3}, {3,4}};
Otázka č. 22) Čo je to zubaté pole?
Odpoveď: Zubaté pole je pole, ktorého prvkami sú polia. Nazýva sa tiež ako pole polí. Môže to byť jeden alebo viac rozmerov.
int () jaggedArray = nový int (4) ();
Otázka č. 23) Pomenujte niektoré vlastnosti poľa.
Odpoveď: Medzi vlastnosti poľa patria:
- Dĺžka: Získava celkový počet prvkov v poli.
- IsFixedSize: Určuje, či je veľkosť poľa pevná alebo nie.
- IsReadOnly : Hovorí, či je pole iba na čítanie alebo nie.
Otázka č. 24) Čo je trieda poľa?
Odpoveď: Trieda Array je základnou triedou pre všetky polia. Poskytuje mnoho vlastností a metód. Nachádza sa v systéme menných priestorov.
Otázka č. 25) Čo je to reťazec? Aké sú vlastnosti triedy String?
Odpoveď: A String je kolekcia char objektov. Môžeme tiež deklarovať reťazcové premenné v c #.
string name = “C # otázky”;
Trieda reťazca v C # predstavuje reťazec. Vlastnosti triedy reťazcov sú:
- Znaky získajte objekt Char v aktuálnom reťazci.
- Dĺžka získava počet objektov v aktuálnom reťazci.
Otázka č. 26) Čo je to úniková sekvencia? Pomenujte niektoré únikové sekvencie reťazcov v C #.
Odpoveď: Úniková sekvencia je označená spätnou lomkou (). Spätná lomka naznačuje, že znak, ktorý za ním nasleduje, by sa mal interpretovať doslovne, alebo ide o špeciálny znak. Úniková sekvencia sa považuje za jeden znak.
Sekvencie escape reťazca sú nasledujúce:
- n - znak nového riadku
- b - Backspace
- \ - spätné lomítko
- ‘- Jednotná cenová ponuka
- ‘‘ - Dvojitá citácia
Otázka č. 27) Čo sú to regulárne výrazy? Hľadáte reťazec pomocou regulárnych výrazov?
Odpoveď: Regulárny výraz je šablóna, ktorá zodpovedá množine vstupov. Vzor môže pozostávať z operátorov, konštruktov alebo znakových literálov. Regex sa používa na analýzu reťazcov a nahradenie reťazca znakov.
Napríklad:
* zodpovedá predchádzajúcemu znaku nula alebo viackrát. Takže * b regex je ekvivalentný s b, ab, aab, aaab a tak ďalej.
Vyhľadávanie reťazca pomocou nástroja Regex:
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'); } } }
Vyššie uvedený príklad vyhľadáva výraz „Python“ proti množine vstupov z poľa jazykov. Používa Regex.IsMatch, ktorý vracia true v prípade, že sa vzor nachádza na vstupe. Vzorom môže byť akýkoľvek regulárny výraz predstavujúci vstup, s ktorým sa chceme zhodovať.
Otázka č. 28) Aké sú základné operácie s reťazcami? Vysvetlite.
Odpoveď: Niektoré zo základných operácií s reťazcami sú:
- Spojiť : Dva reťazce je možné zreťaziť buď pomocou System.String.Concat alebo pomocou operátora +.
- Upraviť : Replace (a, b) sa používa na nahradenie reťazca iným reťazcom. Trim () sa používa na orezanie reťazca na konci alebo na začiatku.
- Porovnaj : System.StringComparison () sa používa na porovnanie dvoch reťazcov, a to buď pri porovnávaní veľkých a malých písmen, alebo bez rozlišovania veľkých a malých písmen. Porovnáva hlavne dva parametre, pôvodný reťazec a reťazec.
- Vyhľadávanie : Na hľadanie konkrétneho reťazca sa používajú metódy StartWith, EndsWith.
Otázka 29) Čo je to analýza? Ako analyzovať reťazec dátumu a času?
Odpoveď: Pri analýze sa reťazec prevedie na iný dátový typ.
Napríklad:
text retazca = “500”;
int num = int.Parse (text);
500 je celé číslo. Metóda Parse teda prevádza reťazec 500 na jeho vlastný základný typ, teda int.
Rovnakým spôsobom konvertujte reťazec DateTime.
string dateTime = “1. januára 2018';
DateTime parsedValue = DateTime.Parse (dateTime);
Pokročilé koncepcie
Otázka 30) Čo je delegát? Vysvetlite.
Odpoveď: Delegát je premenná, ktorá obsahuje odkaz na metódu. Ide teda o ukazovateľ funkcie alebo referenčný typ. Všetci delegáti sú odvodení z menného priestoru System.Delegate. Delegát aj metóda, na ktorú sa odvoláva, môžu mať rovnaký podpis.
- Vyhlásenie delegáta: verejny delegat void AddNumbers (int n);
Po vyhlásení delegáta musí objekt vytvoriť delegát pomocou nového kľúčového slova.
AddNumbers an1 = nové AddNumbers (číslo);
Delegát poskytuje druh zapuzdrenia referenčnej metódy, ktorá sa interne zavolá, keď sa volá delegát.
čo nenájde statická analýza
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; } }
Vo vyššie uvedenom príklade máme delegáta myDel, ktorý berie ako parameter celočíselnú hodnotu. Program Class Class má metódu rovnakého podpisu ako delegát, ktorá sa nazýva AddNumbers ().
Ak existuje iná metóda s názvom Start (), ktorá vytvára objekt delegáta, potom je možné objekt priradiť k AddNumbers, pretože má rovnaký podpis ako delegát.
Otázka č. 31) Čo sú udalosti?
Odpoveď: Udalosti sú akcie používateľov, ktoré generujú oznámenia aplikácii, na ktoré musí odpovedať. Akciami používateľa môžu byť pohyby myši, stlačenie klávesov atď.
Programovo sa trieda, ktorá vyvoláva udalosť, nazýva vydavateľ a trieda, ktorá reaguje / prijíma udalosť, sa nazýva predplatiteľ. Udalosť by mala mať aspoň jedného predplatiteľa, inak táto udalosť nikdy nevznikne.
Na vyhlásenie udalostí sa používajú delegáti.
Verejný delegát neplatný PrintNumbers ();
Udalosť PrintNumbers myEvent;
Otázka č. 32) Ako používať delegátov na udalosti?
Odpoveď: Delegáti sú zvyknutí pripravovať udalosti a vybavovať ich. Najprv musí byť vždy deklarovaný delegát a potom sú deklarované udalosti.
Pozrime sa na príklad:
Zvážte triedu s názvom Pacient. Zvážte ďalšie dve triedy, Poistenie a Banka, ktoré od pacienta požadujú informácie o úmrtí pacienta. V tomto prípade sú predplatiteľmi poisťovne a banka a vydavateľom sa stáva trieda pacientov. Spúšťa udalosť smrti a ďalšie dve triedy by ju mali dostať.
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) Aké sú rôzne typy delegátov?
Odpoveď: Rôzne typy delegátov sú:
- Slobodný delegát : Delegát, ktorý môže volať jedinou metódou.
- Multicast delegát : Delegát, ktorý môže volať viacerými metódami. Operátory + a - sa používajú na prihlásenie a odhlásenie.
- Generický delegát : Nevyžaduje sa definovanie inštancie delegáta. Je troch typov, Action, Funcs a Predicate.
- Akcia - Vo vyššie uvedenom príklade delegátov a udalostí môžeme definíciu delegáta a udalosti nahradiť pomocou kľúčového slova Action. Delegát akcie definuje metódu, ktorú je možné vyvolať na základe argumentov, ale nevráti výsledok
Verejný delegát void deathInfo ();
Public event deathInfo deathDate;
// Nahradenie akciou //
Verejná akcia Akcia deathDate;
Akcia sa implicitne vzťahuje na delegáta.
-
- funkcie - Delegát Func definuje metódu, ktorú je možné vyvolať na základe argumentov, a vráti výsledok.
Func myDel je rovnaký ako delegát bool myDel (int a, reťazec b);
-
- Predikát - Definuje metódu, ktorú je možné vyvolať na základe argumentov, a vždy vráti bool.
Predikovať myDel je rovnaký ako delegovať bool myDel (reťazce);
Otázka č. 34) Čo znamenajú delegáti multicastu?
Odpoveď: Delegát, ktorý odkazuje na viac ako jednu metódu, sa nazýva Multicast Delegate. Multicasting sa dosahuje použitím operátorov + a + =.
Zvážte príklad z Q # 32.
Existujú dvaja predplatitelia služby deathEvent, GetPatInfo a GetDeathDetails . A preto sme použili operátor + =. To znamená kedykoľvek myDel sa volajú obaja účastníci. Delegáti budú prizvaní v poradí, v akom sú pridaní.
Otázka č. 35) Vysvetlite vydavateľom a predplatiteľom udalosti.
Odpoveď: Publisher je trieda zodpovedná za publikovanie správ rôznych typov iných tried. Správa nie je nič iné ako Udalosť uvedená v predchádzajúcich otázkach.
Z Príklad v Q # 32 je Class Patient triedou Publisher. Generuje udalosť smrťEvent , ktoré dostávajú ostatné triedy.
Predplatitelia zachytia správu typu, o ktorý sa zaujíma. Opäť z Príklad Q # 32, Poistenie triedy a Banka sú predplatiteľmi. Majú záujem o udalosti smrťEvent typu neplatný .
Otázka č. 36) Čo sú to synchrónne a asynchrónne operácie?
Odpoveď: Synchronizácia je spôsob, ako vytvoriť kód bezpečný pre vlákna, kde má k prostriedku v danom okamihu prístup iba jedno vlákno. Asynchrónne volanie čaká na dokončenie metódy pred pokračovaním v toku programu.
Synchrónne programovanie zle ovplyvňuje operácie používateľského rozhrania, keď sa používateľ pokúsi vykonať časovo náročné operácie, pretože sa použije iba jedno vlákno. V asynchrónnej prevádzke sa volanie metódy okamžite vráti, aby program mohol vykonávať ďalšie operácie, zatiaľ čo volaná metóda v určitých situáciách dokončí svoju prácu.
V C # sa na dosiahnutie asynchrónneho programovania používajú kľúčové slová Async a Await. Pozrite sa na Q # 43, kde nájdete ďalšie informácie o synchrónnom programovaní.
Otázka 37) Čo je to odraz v C #?
Odpoveď: Reflexia je schopnosť kódu získať prístup k metadátam zostavy za behu modulu. Program sa odráža sám nad sebou a pomocou metadát informuje používateľa alebo upravuje svoje správanie. Metadáta označujú informácie o objektoch, metódach.
Obor názvov System.Reflection obsahuje metódy a triedy, ktoré spravujú informácie o všetkých načítaných typoch a metódach. Používa sa hlavne pre aplikácie systému Windows, Napríklad , na zobrazenie vlastností tlačidla vo formulári systému Windows.
Objekt MemberInfo reflexie triedy sa používa na zistenie atribútov spojených s triedou.
Reflexia je implementovaná v dvoch krokoch, najskôr získame typ objektu a potom pomocou tohto typu identifikujeme členov, ako sú metódy a vlastnosti.
Na získanie typu triedy môžeme jednoducho použiť,
Zadajte mytype = myClass.GetType ();
Keď už máme typ triedy, môžeme ľahko získať ďalšie informácie o triede.
Informácie System.Reflection.MemberInfo = mytype.GetMethod („PridaťČísla“);
Výrok vyššie sa pokúša nájsť metódu s názvom Pridať čísla v triede moja trieda .
Otázka č. 38) Čo je to generická trieda?
Odpoveď: Obecná alebo generická trieda sa používa na vytváranie tried alebo objektov, ktoré nemajú žiadny konkrétny údajový typ. Dátový typ je možné priradiť počas behu programu, tj. Keď sa používa v programe.
Napríklad:
Takže z vyššie uvedeného kódu vidíme spočiatku dve metódy porovnania, na porovnanie reťazcov a int.
V prípade ďalších porovnaní parametrov dátového typu môžeme namiesto vytvárania mnohých preťažených metód vytvoriť generickú triedu a odovzdať náhradný dátový typ, tj. T. T, teda T funguje ako dátový typ, kým sa nepoužije konkrétne v metóde Main () .
Otázka č. 39) Vysvetlite, ako získať a nastaviť vlastnosti prístupu?
Odpoveď: Get a Set sa nazývajú Accessors. Využívajú ich vlastnosti. Táto vlastnosť poskytuje mechanizmus na čítanie a zápis hodnoty súkromného poľa. Na prístup k uvedenému súkromnému poľu sa používajú tieto prístupové miesta.
Získať nehnuteľnosť sa používa na vrátenie hodnoty nehnuteľnosti
Na nastavenie hodnoty sa používa prístupový objekt Set Property.
Použitie get a set je uvedené nižšie:
Otázka č. 40) Čo je vlákno? Čo je to multithreading?
Odpoveď: Vlákno je sada pokynov, ktoré je možné vykonať, čo umožní nášmu programu vykonávať súčasné spracovanie. Súbežné spracovanie nám pomáha robiť viac ako jednu operáciu súčasne. Predvolene má C # iba jedno vlákno. Ale ďalšie vlákna môžu byť vytvorené na vykonávanie kódu paralelne s pôvodným vláknom.
Niť má životný cyklus. Začína sa vždy, keď sa vytvorí trieda vlákna, a po ukončení sa ukončí. System.Titling je menný priestor, ktorý je potrebné zahrnúť do vytvárania vlákien a používania jeho členov.
Vlákna sa vytvárajú rozšírením triedy vlákien. Štart () metóda sa používa na začatie vykonávania vlákna.
//CallThread is the target method// ThreadStart methodThread = new ThreadStart(CallThread); Thread childThread = new Thread(methodThread); childThread.Start();
C # môže vykonávať viac ako jednu úlohu súčasne. To sa deje spracovaním rôznych procesov rôznymi vláknami. Toto sa nazýva MultiThreading.
Existuje niekoľko metód vlákien, ktoré sa používajú na spracovanie operácií s viacerými vláknami:
Štart, spánok, prerušenie, pozastavenie, pokračovanie a pripojenie sa.
Väčšina z týchto metód je samozrejmá.
Otázka č. 41) Pomenujte niektoré vlastnosti triedy vlákien.
Odpoveď: Niektoré vlastnosti triedy vlákien sú:
- Je nažive - obsahuje hodnotu True, keď je vlákno aktívne.
- názov - Môže vrátiť názov vlákna. Môžete tiež nastaviť názov vlákna.
- Priorita - vráti prioritnú hodnotu úlohy nastavenej operačným systémom.
- IsBackground - získa alebo nastaví hodnotu, ktorá označuje, či má byť vlákno procesom na pozadí alebo popredím.
- ThreadState - popisuje stav vlákna.
Otázka č. 42) Aké sú rôzne stavy vlákna?
Odpoveď: Rôzne stavy vlákna sú:
- Nezačaté - Vlákno je vytvorené.
- Beží - Vlákno začína vykonávanie.
- WaitSleepJoin - Vlákno volá spánok, hovory čakajú na iný objekt a hovory sa spájajú v inom vlákne.
- Pozastavené - Závit bol pozastavený.
- Potratený - Vlákno je mŕtve, ale nezmenené na stav zastavený.
- Zastavené - Vlákno sa zastavilo.
Otázka č. 43) Čo sú Async a Await?
Odpoveď: Kľúčové slová Async a Await sa používajú na vytvorenie asynchrónnych metód v jazyku C.
Asynchrónne programovanie znamená, že proces beží nezávisle od hlavných alebo iných procesov.
Používanie Async a Await je uvedené nižšie:
- Na deklaráciu metódy sa používa kľúčové slovo Async.
- Počet je úlohou typu int, ktorá volá metódu CalculateCount ().
- Calculatecount () spustí vykonávanie a niečo vypočíta.
- Na mojom vlákne sa pracuje nezávisle a potom sa dosiahne vyhlásenie o počte.
- Ak Calculatecount nie je dokončený, myMethod sa vráti k svojej volacej metóde, takže hlavné vlákno nebude blokované.
- Ak je Calculatecount už hotový, potom máme výsledok k dispozícii, keď kontrola dosiahne počet čakaní. Ďalší krok bude teda pokračovať v rovnakom vlákne. Nie je to však situácia v uvedenom prípade, keď ide o oneskorenie o 1 sekundu.
Otázka č. 44) Čo je zablokovanie?
Odpoveď: Zablokovanie je situácia, keď proces nie je schopný dokončiť svoje vykonávanie, pretože dva alebo viac procesov čaká na dokončenie druhého. To sa zvyčajne vyskytuje pri viacvláknových procesoch.
Tu je zdieľaný prostriedok zadržaný procesom a iný proces čaká na uvoľnenie prvého procesu a vlákno, ktoré drží uzamknutú položku, čaká na dokončenie iného procesu.
Zvážte nasledujúci príklad:
- Vykonať úlohy pristupuje k objB a čaká na 1 sekundu.
- Zatiaľ sa PerformtaskB pokúša získať prístup k ObjA.
- Po 1 sekunde sa PeformtaskA pokúsi získať prístup k ObjA, ktorý je uzamknutý PerformtaskB.
- PerformtaskB sa pokúša získať prístup k ObjB, ktorý je uzamknutý PerformtaskA.
To vytvára zablokovanie.
Otázka č. 45) Vysvetlite L ock , Monitory a Mutex Objekt v závitoch.
Odpoveď: Kľúčové slovo Uzamknúť zaisťuje, že do konkrétnej časti kódu môže kedykoľvek vstúpiť iba jedno vlákno. Vo vyššie uvedenom Príklad , lock (ObjA) znamená, že zámok je umiestnený na ObjA, kým ho tento proces neuvoľní, žiadne iné vlákno nebude mať prístup k ObjA.
Mutex je tiež ako zámok, ale môže pracovať naraz vo viacerých procesoch. WaitOne () sa používa na uzamknutie a ReleaseMutex () sa používa na odblokovanie. Ale program Mutex je pomalší ako blokovanie, pretože jeho získanie a uvoľnenie si vyžaduje čas.
Monitor.Enter a Monitor.Exit implementuje zámok interne. zámok je skratka pre monitory. lock (objA) interne volá.
Monitor.Enter(ObjA); try { } Finally {Monitor.Exit(ObjA));}
Otázka 46) Čo je to závodná podmienka?
Roky: Podmienka rasy nastane, keď dve vlákna pristupujú k rovnakému prostriedku a pokúšajú sa ho zmeniť súčasne. Vlákno, ktoré bude mať ako prvé prístup k prostriedku, nemožno predvídať.
Ak máme dve vlákna, T1 a T2, ktoré sa pokúšajú získať prístup k zdieľanému prostriedku s názvom X. A ak sa obe vlákna pokúsia zapísať hodnotu na X, posledná hodnota zapísaná na X sa uloží.
Otázka č. 47) Čo je združovanie vlákien?
Roky: Skupina vlákien je zbierka vlákien. Tieto vlákna je možné použiť na vykonávanie úloh bez narušenia primárneho vlákna. Keď vlákno dokončí úlohu, vlákno sa vráti do fondu.
Obor názvov System.Threading.ThreadPool má triedy, ktoré spravujú vlákna v fonde a jeho operácie.
System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(SomeTask));
Vyššie uvedený riadok predstavuje zaradenie úlohy do frontu. Metódy SomeTask by mali mať parameter typu Object.
Otázka č. 48) Čo je to serializácia?
Odpoveď: Serializácia je proces prevodu kódu do jeho binárneho formátu. Akonáhle sa prevedie na bajty, dá sa ľahko uložiť a zapísať na disk alebo akékoľvek iné úložné zariadenie. Serializácie sú užitočné hlavne vtedy, keď nechceme stratiť pôvodnú podobu kódu a ten je možné kedykoľvek získať v budúcnosti.
Akákoľvek trieda, ktorá je označená atribútom (Serializable), bude prevedená do binárnej formy.
Opačný proces získavania kódu C # späť z binárnej formy sa nazýva deserializácia.
Na serializáciu objektu potrebujeme objekt, ktorý sa má serializovať, prúd, ktorý môže obsahovať serializovaný objekt a menný priestor System.Runtime.Serialization môže obsahovať triedy na serializáciu.
Otázka č. 49) Aké sú typy serializácie?
Odpoveď: Rôzne typy serializácie sú:
- Serializácia XML - Serializuje všetky verejné vlastnosti do dokumentu XML. Keďže údaje sú vo formáte XML, je možné ich ľahko načítať a manipulovať s nimi v rôznych formátoch. Triedy sa nachádzajú v System.sml.Serialization.
- MYDLO - Triedy sa nachádzajú v System.Runtime.Serialization. Podobné ako XML, ale vytvára kompletnú obálku vyhovujúcu protokolu SOAP, ktorú môže použiť akýkoľvek systém, ktorý rozumie protokolu SOAP.
- Binárna serializácia - Umožňuje prevedenie ľubovoľného kódu do binárnej podoby. Môže serializovať a obnovovať verejné a neverejné vlastnosti. Je rýchlejšia a zaberá menej miesta.
Otázka č. 50) Čo je súbor XSD?
Odpoveď: Súbor XSD predstavuje definíciu schémy XML. Poskytuje štruktúru súboru XML. To znamená, že rozhoduje o prvkoch, ktoré by XML mali mať, v akom poradí a aké vlastnosti by mali byť prítomné. Bez súboru XSD spojeného s XML môže mať XML akékoľvek značky, akékoľvek atribúty a akékoľvek prvky.
Nástroj Xsd.exe prevádza súbory do formátu XSD. Počas serializácie kódu C # sú triedy prevádzané do formátu kompatibilného s XSD pomocou nástroja xsd.exe.
Záver
C # rýchlo rastie zo dňa na deň a hrá hlavnú úlohu v priemysle testovania softvéru.
Som si istý, že tento článok výrazne uľahčí vašu prípravu na pohovor a poskytne vám značné množstvo znalostí o väčšine tém C #.
Dúfam, že by ste boli pripravení sebavedome čeliť každému rozhovoru v C # !!
Odporúčané čítanie
- Dotazy a odpovede na pohovor
- ETL Testovacie otázky a odpovede na pohovor
- Top 50 najpopulárnejších otázok a odpovedí na rozhovory s CCNA
- Top 51 Bootstrap Interview Otázky a odpovede
- Top 20+ .NET Interview otázok a odpovedí
- Najvyšších 50+ otázok a odpovedí s databázovými rozhovormi
- Niektoré zložité otázky a odpovede na ručné testovanie
- 25 najlepších otázok a odpovedí na agilné testovacie pohovory