top 50 c interview questions with answers
Pogosto zastavljena osnovna C # intervjujska vprašanja o programiranju in kodiranju:
C # je programski jezik, ki je hitro zrasel in se tudi pogosto uporablja. Je zelo povpraševan, vsestranski in podpira tudi večplastne platforme.
Ne uporablja se samo za okna, temveč tudi za številne druge operacijske sisteme. Zato je zelo pomembno, da dobro razumemo ta jezik, da bomo pristali na katerem koli delovnem mestu v industriji za testiranje programske opreme.
Spodaj navedeni niso le nabor najpogostejših vprašanj o C #, temveč tudi nekaj zelo pomembnih tem, ki jih je treba razumeti, da bi izstopali iz množice populacije C #.
Ker je C # obsežna tema, sem zaradi enostavnosti obravnave vseh konceptov to temo razdelil na tri dele, kot je omenjeno spodaj:
- Vprašanja o osnovnih pojmih
- Vprašanja o nizih in nizih
- Napredni koncepti
Ta članek vključuje nabor najboljših 50 vprašanj in odgovorov na razgovor za C #, ki na preprost način zajemajo skoraj vse njegove pomembne teme, da se boste lažje pripravili na razgovor.
Kaj se boste naučili:
Najbolj priljubljena vprašanja in odgovori na intervjuje C #
Osnovni koncepti
V # 1) Kaj je objekt in razred?
Odgovor: Razred je enkapsulacija lastnosti in metod, ki se uporabljajo za predstavitev entitete v realnem času. Gre za podatkovno strukturo, ki združi vse primerke v eno samo enoto.
Objekt je opredeljen kot primerek razreda. Tehnično gre le za dodeljeni blok pomnilnika, ki ga lahko shranimo v obliki spremenljivk, matrike ali zbirke.
V # 2) Kateri so temeljni koncepti OOP?
Odgovor: Štirje temeljni koncepti objektno usmerjenega programiranja so:
- Kapsulacija : Tu je notranja predstavitev predmeta skrita pred pogledom zunaj definicije predmeta. Dostopati je mogoče le do zahtevanih informacij, preostala izvedba podatkov pa je skrita.
- Abstrakcija: Gre za postopek prepoznavanja kritičnega vedenja in podatkov predmeta ter odstranjevanja nepomembnih podrobnosti.
- Dedovanje : To je sposobnost ustvarjanja novih razredov iz drugega razreda. To se naredi z dostopom, spreminjanjem in razširjanjem vedenja predmetov v nadrejenem razredu.
- Polimorfizem : Ime pomeni, eno ime, veliko oblik. To se doseže z več metodami z istim imenom, vendar različnimi izvedbami.
V # 3) Kaj je upravljana in neupravljana koda?
Odgovor: Upravljana koda je koda, ki jo izvaja CLR (Common Language Runtime), tj. Vsa programska koda temelji na platformi .Net. Šteje se, da je upravljan zaradi ogrodja .Net, ki interno uporablja zbiralnik smeti za čiščenje neuporabljenega pomnilnika.
Neupravljana koda je katera koli koda, ki se izvaja z izvajanjem aplikacije katerega koli drugega ogrodja, razen .Net. Izvajalno okolje aplikacije bo poskrbelo za pomnilnik, varnost in druge operacijske postopke.
V # 4) Kaj je vmesnik?
Odgovor: Vmesnik je razred brez izvedbe. Edino, kar vsebuje, je izjava o metodah, lastnostih in dogodkih.
V # 5) Katere vrste razredov obstajajo v jeziku C #?
Odgovor: Različne vrste predavanj v jeziku C # so:
- Delni razred: Omogoča delitev ali skupno rabo svojih članov z več datotekami .cs. Označena je s ključno besedo Delno.
- Zaprti razred: To je razred, ki ga ni mogoče podedovati. Za dostop do članov zapečatenega razreda moramo ustvariti predmet razreda. Označena je s ključno besedo Zapečateno .
- Povzetek pouka : To je razred, katerega predmeta ni mogoče ustvariti. Razred je mogoče samo podedovati. Vsebovati mora vsaj eno metodo. Označena je s ključno besedo povzetek .
- Statični razred : Gre za razred, ki ne dovoljuje dedovanja. Člani razreda so tudi statični. Označena je s ključno besedo statična . Ta ključna beseda pove prevajalniku, naj preveri, ali obstajajo nenamerni primeri statičnega razreda.
V # 6) Pojasnite prevajanje kode v jeziku C #.
Odgovor: Zbiranje kode v jeziku C # vključuje naslednje štiri korake:
- Prevajanje izvorne kode v upravljano kodo s pomočjo prevajalnika C #.
- Združevanje novo ustvarjene kode v sklope.
- Nalaganje običajnega izvajalnega okolja (CLR).
- Izvedba sklopa s strani CLR.
Q # 7) Kakšne so razlike med razredom in konstrukcijo?
Odgovor: Spodaj so razlike med razredom in konstrukcijo:
Razred | Struktura |
---|---|
Podpira dedovanje | Ne podpira dedovanja |
Razred je Pass by reference (referenčna vrsta) | Struct is Pass by Copy (vrsta vrednosti) |
Člani so privzeto zasebni | Člani so privzeto javni |
Dobro za večje kompleksne predmete | Dobro za majhne izolirane modele |
Lahko uporablja zbiralnik odpadkov za upravljanje spomina | Ne morem uporabljati zbiralnika smeti in zato ne upravlja s pomnilnikom |
V # 8) Kakšna je razlika med virtualno in abstraktno metodo?
Odgovor: Virtualna metoda mora vedno imeti privzeto izvedbo. Vendar ga je mogoče v izpeljanem razredu preglasiti, čeprav ni obvezen. Lahko ga preglasite z preglasiti ključna beseda.
Abstraktna metoda nima izvedbe. Biva v abstraktnem razredu. Obvezno je, da izvedeni razred izvaja abstraktno metodo. An preglasiti ključna beseda tukaj ni potrebna, čeprav jo je mogoče uporabiti.
V # 9) Pojasnite imenske prostore v jeziku C #.
Odgovor: Uporabljajo se za organizacijo velikih kodnih projektov. 'Sistem' je najpogosteje uporabljen imenski prostor v jeziku C #. Ustvarimo lahko svoj imenski prostor in lahko uporabimo tudi en imenski prostor v drugem, ki se imenuje ugnezdeni imenski prostori.
Označeni so s ključno besedo “imenski prostor”.
V # 10) Kaj je v C # stavek 'z uporabo'?
Odgovor: Ključna beseda 'Uporaba' pomeni, da program uporablja določen imenski prostor.
Na primer, z uporabo sistema
Tukaj, Sistem je imenski prostor. Razred Console je definiran pod System. Torej lahko v našem programu uporabimo console.writeline (“....”) Ali readline.
V # 11) Pojasnite abstrakcijo.
Odgovor: Abstrakcija je eden od konceptov OOP. Uporablja se za prikaz samo bistvenih lastnosti razreda in skrivanje nepotrebnih informacij.
Vzemimo primer avtomobila:
Voznik avtomobila bi moral poznati podrobnosti o avtomobilu, kot so barva, ime, ogledalo, krmiljenje, prestava, zavora itd. Kar mu ni treba vedeti, je notranji motor, izpušni sistem.
Abstrakcija torej pomaga vedeti, kaj je potrebno, in skriti notranje podrobnosti pred zunanjim svetom. Skrivanje notranjih informacij je mogoče doseči z razglasitvijo parametrov kot zasebnih z uporabo zasebno ključna beseda.
V # 12) Pojasnite polimorfizem?
Odgovor: Programsko pomeni polimorfizem isto metodo, vendar različne izvedbe. Ima dve vrsti, čas prevajanja in čas izvajanja.
- Prekomorni polimorfizem dosežemo s preobremenitvijo operaterja.
- Polimorfizem med izvajanjem dosežemo s preglasitvijo. Funkcije dedovanja in virtualne funkcije se uporabljajo med polimorfizmom med izvajanjem.
Na primer ,Če ima razred metodo Void Add (), se polimorfizem doseže s preobremenitvijo metode, to je void Add (int a, int b), void Add (int add) so vse preobremenjene metode.
V # 13) Kako je v C # izvedeno ravnanje z izjemami?
Odgovor: Obravnava izjem se izvaja s pomočjo štirih ključnih besed v jeziku C #:
- poskusite : Vsebuje blok kode, za katerega bo preverjena izjema.
- ulov : To je program, ki ujame izjemo s pomočjo upravljalnika izjem.
- končno : To je blok kode, napisan za izvajanje, ne glede na to, ali je izjema ujeta ali ne.
- Vrzi : Vrne izjemo, ko pride do težave.
V # 14) Kaj so C # I / O razredi? Kateri so pogosto uporabljeni V / I razredi?
Odgovor: C # ima imenski prostor System.IO, sestavljen iz razredov, ki se uporabljajo za izvajanje različnih operacij nad datotekami, kot so ustvarjanje, brisanje, odpiranje, zapiranje itd.
Nekateri najpogosteje uporabljeni V / I razredi so:
- mapa - Pomaga pri obdelavi datoteke.
- StreamWriter - Uporablja se za zapisovanje znakov v tok.
- StreamReader - Uporablja se za branje znakov v toku.
- StringWriter - Uporablja se za branje medpomnilnika nizov.
- StringReader - Uporablja se za pisanje niznega vmesnika.
- Pot - Uporablja se za izvajanje operacij, povezanih z informacijami o poti.
V # 15) Kaj je razred StreamReader / StreamWriter?
Odgovor: StreamReader in StreamWriter sta razreda imenskega prostora System.IO. Uporabljajo se, kadar želimo brati ali pisati charact90, podatke na podlagi bralcev.
Nekateri člani StreamReaderja so: Zapri (), branje (), branje črte ().
Člani StreamWriterja so: Zapri (), Napišite (), Napišite vrstico ().
Class Program1 { using(StreamReader sr = new StreamReader(“C:ReadMe.txt”) { //----------------code to read-------------------// } using(StreamWriter sw = new StreamWriter(“C:ReadMe.txt”)) { //-------------code to write-------------------// } }
V # 16) Kaj je destruktor v C #?
Odgovor: Destructor se uporablja za čiščenje pomnilnika in osvobajanje virov. Toda v C # to naredi zbiralnik smeti sam. Za čiščenje se interno prikliče System.GC.Collect (). Včasih pa bo morda treba destruktorje uvesti ročno.
Na primer:
~Car() { Console.writeline(“….”); }
V # 17) Kaj je abstraktni razred?
Odgovor: Razred Abstract je razred, ki je označen z abstraktno ključno besedo in se lahko uporablja samo kot osnovni razred. Ta razred je treba vedno podedovati. Primerka samega razreda ni mogoče ustvariti. Če ne želimo, da bi kateri koli program ustvaril objekt razreda, lahko take razrede naredimo abstraktne.
Nobena metoda v abstraktnem razredu nima izvedb v istem razredu. Vendar jih je treba izvajati v otrokovem razredu.
Na primer:
abstract class AB1 { Public void Add(); } Class childClass : AB1 { childClass cs = new childClass (); int Sum = cs.Add(); }
Vse metode v abstraktnem razredu so implicitno virtualne metode. Zato navidezne ključne besede ne bi smeli uporabljati z nobenimi metodami v abstraktnem razredu.
V # 18) Kaj sta boks in unboxing?
Odgovor: Pretvorba vrste vrednosti v referenčno vrsto se imenuje boks.
Na primer:
int Vrednost1 - = 10;
// ———— Boks —————— //
objekt boxedValue = Vrednost1;
Pokliče se eksplicitna pretvorba iste referenčne vrste (ustvarjene z boksanjem) nazaj v vrsto vrednosti Razpakiranje .
Na primer:
// ———— Odstranitev —————— //
int UnBoxing = int (boxedValue);
c in c ++ razlika
V # 19) Kakšna je razlika med Izjava o nadaljevanju in prekinitvi?
Odgovor: Stavek Break prekine zanko. Omogoča nadzor programa za izhod iz zanke. Izjava Continue omogoča nadzor programa za izhod samo iz trenutne ponovitve. Ne prekine zanke.
V # 20) Kakšna je razlika med dokončnim in dokončnim blokom?
Odgovor: končno blok se pokliče po izvedbi bloka try and catch. Uporablja se za obravnavo izjem. Ne glede na to, ali je izjema ujeta ali ne, bo ta blok kode izveden. Običajno ima ta blok kodo za čiščenje.
metoda finalize se pokliče tik pred zbiranjem smeti. Uporablja se za čiščenje neupravljane kode. Samodejno se pokliče, ko dani primerek ni pozneje poklican.
Nizi in nizi
V # 21) Kaj je matrika? Dajte sintakso za enojno in večdimenzionalno matriko?
Odgovor: Array se uporablja za shranjevanje več spremenljivk istega tipa. Je zbirka spremenljivk, shranjenih na sosednjem pomnilniškem mestu.
Na primer:
dvojne številke = novo dvojno (10);
int () rezultat = nov int (4) {25,24,23,25};
Enodimenzionalno polje je linearno polje, kjer so spremenljivke shranjene v eni vrstici. Zgoraj primer je enodimenzionalna matrika.
Polja imajo lahko več dimenzij. Večdimenzionalni nizi se imenujejo tudi pravokotni nizi.
Na primer , int (,) številke = novo int (3,2) {{1,2}, {2,3}, {3,4}};
V # 22) Kaj je nazobčana matrika?
Odgovor: Nazobčana matrika je matrika, katere elementi so nizi. Imenuje se tudi kot niz nizov. Lahko je eno ali več dimenzij.
int () jaggedArray = nov int (4) ();
V # 23) Poimenujte nekatere lastnosti polja.
Odgovor: Lastnosti matrike vključujejo:
- Dolžina: Pridobi skupno število elementov v matriki.
- IsFixedSize: Pove, ali je polje fiksno veliko ali ne.
- IsReadOnly : Pove, ali je matrika samo za branje ali ne.
V # 24) Kaj je razred matrike?
Odgovor: Razred matrike je osnovni razred za vse nize. Zagotavlja številne lastnosti in metode. Prisoten je v sistemu imenskega prostora.
V # 25) Kaj je niz? Kakšne so lastnosti nizovnega razreda?
Odgovor: String je zbirka predmetov char. V c # lahko razglasimo tudi spremenljivke niza.
ime niza = “Vprašanja C #”;
Razred nizov v C # predstavlja niz. Lastnosti razreda nizov so:
- Znaki dobite objekt Char v trenutnem nizu.
- Dolžina dobi število predmetov v trenutnem nizu.
V # 26) Kaj je zaporedje pobega? Poimenujte nekaj zaporedja ubežnega niza v C #.
Odgovor: Zaporedje pobega je označeno s poševnico (). Poševnica nazaj pomeni, da je treba znak, ki mu sledi, razlagati dobesedno ali pa gre za poseben znak. Ubežno zaporedje se obravnava kot en sam znak.
Zaporedja ubežnega niza so naslednja:
- n - Znak za novo vrstico
- b - Backspace
- \ - povratna poševnica
- ’- enojna ponudba
- ’’ - dvojna ponudba
V # 27) Kaj so regularni izrazi? Iščete niz po regularnih izrazih?
Odgovor: Regularni izraz je predloga, ki ustreza naboru vhodnih podatkov. Vzorec je lahko sestavljen iz operatorjev, konstruktov ali literarnih znakov. Regex se uporablja za razčlenjevanje in nadomeščanje niza znakov.
Na primer:
* se nič ali večkrat ujema s prejšnjim znakom. Torej, a * b regularni izraz je enakovreden b, ab, aab, aaab itd.
Iskanje niza z uporabo regularnega izraza:
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'); } } }
Zgornji primer išče »Python« glede na nabor vhodov iz polja jezikov. Uporablja Regex.IsMatch, ki vrne true, če je vzorec najden v vhodu. Vzorec je lahko kateri koli regularni izraz, ki predstavlja vhod, s katerim se želimo ujemati.
V # 28) Katere so osnovne nizovne operacije? Pojasnite.
Odgovor: Nekatere osnovne nizne operacije so:
- Združite : Dva niza lahko združite bodisi z uporabo System.String.Concat bodisi z uporabo operatorja +.
- Spremeni : Zamenjaj (a, b) se uporablja za zamenjavo niza z drugim nizom. Trim () se uporablja za obrezovanje niza na koncu ali na začetku.
- Primerjaj : System.StringComparison () se uporablja za primerjavo dveh nizov, bodisi primerjavo med velikimi in malimi črkami ali ne. V glavnem je treba primerjati dva parametra, originalni niz in niz.
- Iskanje : StartWith, metode EndsWith se uporabljajo za iskanje določenega niza.
V # 29) Kaj je razčlenjevanje? Kako razčleniti niz časovnega datuma?
Odgovor: Razčlenjevanje pretvori niz v drug podatkovni tip.
Na primer:
niz besedila = “500”;
int num = int.Parse (besedilo);
500 je celo število. Torej metoda Parse pretvori niz 500 v svoj osnovni tip, tj. Int.
Upoštevajte isto metodo za pretvorbo niza DateTime.
string dateTime = “1. januar 2018”;
DateTime parsedValue = DateTime.Parse (dateTime);
Napredni koncepti
V # 30) Kaj je delegat? Pojasnite.
Odgovor: Delegat je spremenljivka, ki vsebuje sklic na metodo. Zato gre za funkcijski kazalec ali referenčni tip. Vsi delegati izhajajo iz imenskega prostora System.Delegate. Delegat in metoda, na katero se sklicuje, imata lahko isti podpis.
- Razglasitev pooblaščenca: javni delegat void AddNumbers (int n);
Po izjavi delegata mora delegat z novo ključno besedo ustvariti objekt.
AddNumbers an1 = novo AddNumbers (število);
Delegat zagotavlja nekakšno enkapsulacijo referenčne metode, ki se bo interno poklicala, ko se pokliče delegat.
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; } }
V zgornjem primeru imamo delegata myDel, ki za parameter vzame celoštevilčno vrednost. Razredni program ima metodo istega podpisa kot delegat, imenovano AddNumbers ().
Če obstaja druga metoda, imenovana Start (), ki ustvari objekt delegata, potem je objekt mogoče dodeliti AddNumbers, saj ima enak podpis kot delegat.
V # 31) Kaj so dogodki?
Odgovor: Dogodki so dejanja uporabnika, ki ustvarjajo obvestila aplikaciji, na katero se mora odzvati. Uporabniška dejanja so lahko premiki miške, pritiskanje tipk itd.
Programsko se razred, ki sproži dogodek, imenuje založnik, razred, ki se odzove / sprejme dogodek, pa naročnik. Dogodek bi moral imeti vsaj enega naročnika, sicer pa dogodek nikoli ne pride.
Delegati se uporabljajo za razglasitev dogodkov.
Javni delegat void PrintNumbers ();
Številka tiska dogodka myEvent;
V # 32) Kako uporabiti delegate z dogodki?
Odgovor: Delegati se uporabljajo za zbiranje dogodkov in njihovo obdelavo. Vedno je treba najprej prijaviti delegata in nato razglasiti Dogodke.
Oglejmo si primer:
Razmislite o razredu z imenom Patient. Upoštevajte še dva razreda, zavarovanje in banka, ki zahtevata podatke o smrti bolnika iz pacientovega razreda. Tu sta naročnika zavarovanje in banka, razred pacient pa postane založnik. Sproži smrtni dogodek, preostala dva razreda pa bi ga morala prejeti.
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; } } }
V # 33) Katere so različne vrste delegatov?
Odgovor: Različne vrste delegatov so:
- Posamezni delegat : Pooblaščenec, ki lahko pokliče eno samo metodo.
- Delegat večkastnega pošiljanja : Pooblaščenec, ki lahko pokliče več metod. Operaterja + in - se uporabljata za naročanje oziroma odjavo.
- Splošni delegat : Ne zahteva določitve primerka delegata. Je treh vrst, Action, Funcs in Predicate.
- Ukrepanje - V zgornjem primeru delegatov in dogodkov lahko nadomestimo definicijo delegata in dogodka s ključno besedo Action. Delegat akcije definira metodo, ki jo je mogoče poklicati na argumente, vendar ne vrne rezultata
Javni delegat void deathInfo ();
Javni dogodek deathInfo deathDate;
// Zamenjava z akcijo //
Javni dogodek Akcija deathDate;
Dejanje se implicitno nanaša na pooblaščenca.
-
- funkcije - Func delegat definira metodo, ki jo je mogoče poklicati na argumente, in vrne rezultat.
Func myDel je enako kot delegiraj bool myDel (int a, niz b);
-
- Predikat - Določi metodo, ki jo je mogoče priklicati na argumente in vedno vrne logično vrednost.
Predikat myDel je enako kot delegiraj bool myDel (nizi);
V # 34) Kaj pomenijo večpredstavni delegati?
Odgovor: Delegat, ki kaže na več kot eno metodo, se imenuje Multicast Delegat. Multicasting se doseže z uporabo operatorjev + in + =.
Poglejmo primer iz vprašanja št. 32.
Naročniki za deathEvent, GetPatInfo , in GetDeathDetails . In zato smo uporabili operator + =. Pomeni, kadarkoli myDel se pokličeta oba naročnika. Delegati bodo poklicani v vrstnem redu, v katerem so dodani.
V # 35) Pojasnite založnikom in naročnikom v dogodkih.
Odgovor: Publisher je razred, ki je odgovoren za objavo sporočil različnih vrst drugih razredov. Sporočilo ni nič drugega kot dogodek, kot je razloženo v zgornjih vprašanjih.
Iz Primer v Q # 32 je Class Patient razred Publisher. Ustvarja dogodek deathEvent , ki ga prejmejo drugi razredi.
Naročniki zajamejo sporočilo tiste vrste, ki ga zanima. Spet iz Primer od Q # 32, zavarovalci razredov in banke so naročniki. Zanima jih dogodek deathEvent vrste praznino .
V # 36) Kaj so sinhrone in asinhrone operacije?
Odgovor: Sinhronizacija je način za ustvarjanje kode, varne za nit, pri kateri lahko do vira v določenem trenutku dostopa samo ena nit. Asinhroni klic čaka, da se metoda zaključi, preden nadaljuje s programskim tokom.
Sinhrono programiranje slabo vpliva na operacije uporabniškega vmesnika, ko uporabnik poskuša izvesti dolgotrajne operacije, saj bo uporabljena samo ena nit. Pri asinhroni operaciji se klic metode takoj vrne, tako da lahko program izvaja druge operacije, medtem ko klicana metoda v določenih situacijah zaključi svoje delo.
V C # se za doseganje asinhronega programiranja uporabljajo ključne besede Async in Await. Za podrobnosti o sinhronem programiranju si oglejte Q # 43.
V # 37) Kaj je odsev v C #?
Odgovor: Odsev je zmožnost kode, da med izvajanjem dostopa do metapodatkov sklopa. Program razmišlja sam o sebi in uporablja metapodatke za obveščanje uporabnika ali spreminjanje njegovega vedenja. Metapodatki se nanašajo na informacije o predmetih in metodah.
Imenski prostor System.Reflection vsebuje metode in razrede, ki upravljajo informacije o vseh naloženih vrstah in metodah. Uporablja se predvsem za Windows, Na primer , da si ogledate lastnosti gumba v obliki okna.
Objekt MemberInfo odseva razreda se uporablja za odkrivanje atributov, povezanih z razredom.
Refleksija se izvede v dveh korakih, najprej dobimo vrsto predmeta, nato pa s tipom identificiramo člane, kot so metode in lastnosti.
Če želite dobiti vrsto predavanja, lahko preprosto uporabimo,
Vnesite mytype = myClass.GetType ();
Ko imamo vrsto predavanja, je do drugih informacij o predavanju enostavno dostopati.
System.Reflection.MemberInfo Info = mytype.GetMethod (»AddNumbers«);
Zgornji stavek poskuša najti metodo z imenom AddNumbers v razredu moj razred .
V # 38) Kaj je generični razred?
Odgovor: Generični ali generični razred se uporablja za ustvarjanje razredov ali predmetov, ki nimajo določenega podatkovnega tipa. Podatkovni tip je mogoče dodeliti med izvajanjem, tj. Ko se uporablja v programu.
Na primer:
Iz zgornje kode torej na začetku vidimo 2 primerjalni metodi za primerjavo nizov in int.
V primeru primerjave parametrov drugega podatkovnega tipa lahko namesto ustvarjanja številnih preobremenjenih metod ustvarimo generični razred in prenesemo nadomestni podatkovni tip, tj. T. Torej, T deluje kot podatkovni tip, dokler se ne uporablja posebej v metodi Main () .
V # 39) Pojasnite pridobivanje in nastavitev lastnosti Accessorja?
Odgovor: Get in Set se imenujejo Accessors. Te uporablja Lastnosti. Lastnost ponuja mehanizem za branje in zapisovanje vrednosti zasebnega polja. Za dostop do tega zasebnega polja se uporabljajo ti dostopniki.
Get Property se uporablja za vrnitev vrednosti lastnosti
Nastavitev lastnosti se uporablja za nastavitev vrednosti.
Uporaba get in set je naslednja:
V # 40) Kaj je nit? Kaj je večnitnost?
Odgovor: Nit je niz navodil, ki jih je mogoče izvesti, kar bo našemu programu omogočilo sočasno obdelavo. Sočasna obdelava nam pomaga narediti več operacij hkrati. Privzeto ima C # samo eno nit. Toda druge niti je mogoče ustvariti za izvajanje kode vzporedno z izvirno nitjo.
Nit ima življenjski cikel. Začne se vsakič, ko se ustvari razred niti in se po izvedbi zaključi. System.Nitke je imenski prostor, ki ga je treba vključiti za ustvarjanje niti in uporabo njegovih članov.
Niti se ustvarijo z razširitvijo razreda niti. Začni () metoda se uporablja za začetek izvajanja niti.
//CallThread is the target method// ThreadStart methodThread = new ThreadStart(CallThread); Thread childThread = new Thread(methodThread); childThread.Start();
C # lahko izvede več nalog hkrati. To se naredi z obdelavo različnih procesov z različnimi nitmi. To se imenuje MultiThreading.
Obstaja več metod niti, ki se uporabljajo za obdelavo večnitnih operacij:
Začni, spi, prekini, zaustavi, nadaljuj in se pridruži.
Večina teh metod je samoumevnih.
V # 41) Poimenujte nekatere lastnosti razreda niti.
Odgovor: Nekaj lastnosti razreda niti je:
- IsAlive - vsebuje vrednost True, ko je nit aktivna.
- Ime - Lahko vrne ime niti. Prav tako lahko nastavite ime niti.
- Prednostna naloga - vrne prednostno vrednost naloge, ki jo nastavi operacijski sistem.
- IsBackground - dobi ali nastavi vrednost, ki označuje, ali naj bo nit v ozadju ali v ospredju.
- ThreadState - opisuje stanje niti.
Q # 42) Katera so različna stanja niti?
brute force geslo cracker prenos za android -
Odgovor: Različna stanja niti so:
- Neodkrito - Navoj je ustvarjen.
- Tek - Nit se začne izvajati.
- WaitSleepJoin - Klici niti spijo, klici čakajo na drug predmet in klici se združijo v drugi niti.
- Suspended - Navoj je prekinjen.
- Prekinil - Navoj je mrtev, vendar ni spremenjen v stanje zaustavljen.
- Ustavljeno - Nit se je ustavila.
Q # 43) Kaj sta Async in Await?
Odgovor: Ključne besede Async in Await se uporabljajo za ustvarjanje asinhronih metod v C.
Asinhrono programiranje pomeni, da postopek teče neodvisno od glavnih ali drugih procesov.
Uporaba Async in Await je prikazana spodaj:
- Ključna beseda Async se uporablja za izjavo metode.
- Štetje je naloga tipa int, ki pokliče metodo CalculateCount ().
- Calculatecount () začne izvajanje in nekaj izračuna.
- Samostojno delo se opravi na moji niti in nato pride do izjave o čakanju na štetje.
- Če račun izračuna ne bo končan, se bo myMethod vrnil k svoji klicni metodi, zato glavna nit ne bo blokirana.
- Če je izračun števila že končan, imamo na voljo rezultat, ko kontrolnik doseže čakanje štetja. Tako se bo naslednji korak nadaljeval v isti niti. Ni pa situacija v zgornjem primeru, ko gre za zamudo 1 sekunde.
V # 44) Kaj je mrtva točka?
Odgovor: Zastoj je situacija, ko postopek ne more dokončati izvedbe, ker dva ali več procesov čakata, da se konča. Običajno se to zgodi pri večnitnostih.
Tu je proces v skupni rabi vira v skupni rabi, drugi postopek pa čaka, da ga sprosti prvi postopek, nit, ki drži zaklenjeni element, pa čaka, da se zaključi še en postopek.
Upoštevajte spodnji primer:
- Opravite naloge, dostopne objB, in počakajte 1 sekundo.
- Medtem PerformtaskB poskuša dostopati do ObjA.
- Po 1 sekundi PeformtaskA poskuša dostopati do ObjA, ki ga zaklene PerformtaskB.
- PerformtaskB poskuša dostopati do ObjB, ki ga zaklene PerformtaskA.
To ustvarja Deadlock.
V # 45) Pojasnite L ok , Monitorji , in Mutex Predmet v navoju.
Odgovor: Ključna beseda Lock zagotavlja, da lahko samo določena nit kdaj vnese določen odsek kode. V zgornjem Primer , lock (ObjA) pomeni, da je ključavnica postavljena na ObjA, dokler je ta postopek ne sprosti, nobena druga nit ne more dostopati do ObjA.
Mutex je tudi kot ključavnica, vendar lahko deluje hkrati v več procesih. WaitOne () se uporablja za zaklepanje, ReleaseMutex () pa za sprostitev zaklepanja. Toda Mutex je počasnejši od zaklepanja, saj traja čas, da ga pridobite in sprostite.
Monitor.Enter in Monitor.Exit izvajata interno zaklepanje. ključavnica je bližnjica za monitorje. lock (objA) interni klici.
Monitor.Enter(ObjA); try { } Finally {Monitor.Exit(ObjA));}
V # 46) Kaj je dirka?
Leta: Pogoj dirke se pojavi, ko dve niti dostopata do istega vira in ga poskušata hkrati spremeniti. Niti, ki bo lahko najprej dostopala do vira, ni mogoče predvideti.
Če imamo dve niti, T1 in T2, in poskušata dostopati do vira v skupni rabi, imenovanega X. In če obe niti poskusita zapisati vrednost v X, se zadnja vrednost, zapisana v X, shrani.
Q # 47) Kaj je združevanje niti?
Leta: Skupina niti je zbirka niti. Te niti se lahko uporabljajo za izvajanje nalog, ne da bi motili primarno nit. Ko nit zaključi nalogo, se nit vrne v področje.
Imenski prostor System.Threading.ThreadPool ima razrede, ki upravljajo niti v področju in njegove operacije.
System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(SomeTask));
Zgornja vrstica čaka nalogo. Metode SomeTask bi morale imeti parameter tipa Object.
V # 48) Kaj je serializacija?
Odgovor: Serializacija je postopek pretvorbe kode v njeno binarno obliko. Ko je pretvorjen v bajte, ga je mogoče enostavno shraniti in zapisati na disk ali katero koli takšno pomnilniško napravo. Serializacije so uporabne predvsem, če ne želimo izgubiti prvotne oblike kode in jo je mogoče kadar koli v prihodnosti pridobiti.
Vsak razred, ki je označen z atributom (Serializable), bo pretvorjen v svojo binarno obliko.
Povratni postopek pridobivanja kode C # iz binarnega obrazca se imenuje Deserializacija.
Za serializacijo predmeta potrebujemo, da je objekt serializiran, tok, ki lahko vsebuje serializirani objekt in imenski prostor System.Runtime.Serialization lahko vsebuje razrede za serializacijo.
V # 49) Katere so vrste serializacije?
Odgovor: Različne vrste serializacije so:
- XML serializacija - Serializira vse javne lastnosti dokumenta XML. Podatki so v obliki XML, zato jih je mogoče zlahka brati in upravljati z njimi v različnih formatih. Razredi so v System.sml.Serialization.
- MILO - Predavanja so v System.Runtime.Serialization. Podobno kot XML, vendar proizvaja popolno ovojnico, združljivo s SOAP, ki jo lahko uporabi kateri koli sistem, ki razume SOAP.
- Binarna serializacija - Omogoča pretvorbo katere koli kode v njeno binarno obliko. Lahko serializira in obnovi javno in nejavno lastnino. Je hitrejši in zavzame manj prostora.
V # 50) Kaj je datoteka XSD?
Odgovor: Datoteka XSD pomeni definicijo sheme XML. Daje strukturo za datoteko XML. To pomeni, da odloča o elementih, ki jih mora imeti XML, in v kakšnem vrstnem redu ter kakšne lastnosti morajo biti prisotne. Brez datoteke XSD, povezane z XML, ima lahko XML vse oznake, vse atribute in vse elemente.
Orodje Xsd.exe pretvori datoteke v format XSD. Med serializacijo kode C # xsd.exe razrede pretvori v format, združljiv z XSD.
Zaključek
C # hitro raste iz dneva v dan in ima pomembno vlogo v industriji za testiranje programske opreme.
Prepričan sem, da vam bo ta članek veliko olajšal priprave na intervju in vam omogočil precejšnje znanje o večini tem C #.
Upam, da se boste pripravljeni samozavestno soočiti s katerim koli intervjujem C #
Priporočeno branje
- Vprašanja in odgovori za intervju
- Vprašanja in odgovori za preizkušanje ETL
- 50 najbolj priljubljenih vprašanj in odgovorov za intervjuje CCNA
- Top 51 vprašanj in odgovorov za intervju z Bootstrapom
- Najboljših 20+ vprašanj in odgovorov na .NET
- Top 50+ vprašanj in odgovorov za intervjuje v zbirki podatkov
- Nekaj zapletenih ročnih preizkusov Vprašanja in odgovori
- 25 najboljših vprašanj in odgovorov za intervju z agilnim testiranjem