top 50 c interview questions with answers
Česta pitanja o osnovnom C # intervjuu o programiranju i kodiranju:
C # je programski jezik koji je brzo rastao i također se široko koristi. Potražen je, svestran je i podržava više platformi.
Ne koristi se samo za prozore već i za mnoge druge operativne sustave. Stoga je vrlo važno imati snažno razumijevanje ovog jezika kako biste stali na bilo koji posao u industriji testiranja softvera.
U nastavku se nalazi ne samo niz najčešće postavljanih pitanja o C #, već i neke vrlo važne teme koje treba razumjeti kako bi se izdvojile iz mase C # populacije.
Kako je C # velika tema, zbog jednostavnosti adresiranja svih koncepata, podijelio sam ovu temu u tri dijela kako je spomenuto u nastavku:
- Pitanja o osnovnim pojmovima
- Pitanja o nizovima i žicama
- Napredni koncepti
Ovaj članak uključuje skup od 50 najboljih pitanja i odgovora na C # intervjuu koji pokrivaju gotovo sve njegove važne teme jednostavnim riječima kako bi vam pomogli da se pripremite za intervju.
Što ćete naučiti:
Najpopularnija pitanja i odgovori na # intervjuu
Osnovni koncepti
P # 1) Što je objekt i klasa?
Odgovor: Klasa je enkapsulacija svojstava i metoda koje se koriste za predstavljanje entiteta u stvarnom vremenu. To je struktura podataka koja okuplja sve instance u jednoj jedinici.
Objekt je definiran kao instanca klase. Tehnički, to je samo dodijeljeni blok memorije koji se može pohraniti u obliku varijabli, niza ili zbirke.
P # 2) Koji su temeljni koncepti OOP-a?
Odgovor: Četiri temeljna koncepta objektno orijentiranog programiranja su:
- Kapsulacija : Ovdje je unutarnji prikaz objekta skriven od pogleda izvan njegove definicije. Mogu se pristupiti samo potrebnim informacijama, dok je ostatak implementacije podataka skriven.
- Apstrakcija: To je postupak identificiranja kritičnog ponašanja i podataka objekta i uklanjanja nebitnih detalja.
- Nasljeđivanje : To je sposobnost stvaranja novih razreda iz drugog razreda. To se postiže pristupom, modificiranjem i proširivanjem ponašanja objekata u roditeljskoj klasi.
- Polimorfizam : Ime znači, jedno ime, mnogo oblika. Postiže se višestrukim metodama s istim nazivom, ali različitim implementacijama.
P # 3) Što je upravljani i neupravljani kôd?
Odgovor: Upravljani kod je kôd koji izvršava CLR (Common Language Runtime), tj. Sav aplikacijski kôd temelji se na .Net platformi. Smatra se upravljanim zbog .Net okvira koji interno koristi sakupljač smeća da očisti neiskorištenu memoriju.
Neupravljani kôd je bilo koji kôd koji se izvršava izvršavanjem aplikacije bilo kojeg drugog okvira, osim .Net-a. Izvršavanje aplikacije pobrinut će se za memoriju, sigurnost i druge radnje izvedbe.
P # 4) Što je sučelje?
Odgovor: Sučelje je klasa bez implementacije. Jedino što sadrži je deklaracija metoda, svojstava i događaja.
P # 5) Koje su različite vrste klasa u C #?
Odgovor: Različite vrste klase u C # su:
- Djelomična klasa: Omogućuje svojim članovima da budu podijeljeni ili podijeljeni s više .cs datoteka. Označava se ključnom riječi Djelomično.
- Zapečaćeni razred: To je klasa koja se ne može naslijediti. Da bismo pristupili članovima zapečaćene klase, moramo stvoriti objekt klase. Označava se ključnom riječi Zapečaćeno .
- Sažetak klase : To je klasa čiji se objekt ne može instancirati. Klasa se može naslijediti samo. Trebao bi sadržavati barem jednu metodu. Označava se ključnom riječi sažetak .
- Statička klasa : To je klasa koja ne dopušta nasljeđivanje. Članovi razreda su također statični. Označava se ključnom riječi statički . Ova ključna riječ poručuje prevoditelju da provjeri ima li slučajnih slučajeva statičke klase.
P # 6) Objasniti kompilaciju koda u C #.
Odgovor: Kompilacija koda u C # uključuje sljedeća četiri koraka:
- Kompajliranje izvornog koda u Managed code pomoću C # kompajlera.
- Kombiniranje novostvorenog koda u sklopove.
- Učitavanje uobičajenog vremena izvođenja (CLR).
- Izvršenje skupštine od strane CLR-a.
P # 7) Koje su razlike između klase i strukture?
Odgovor: Dolje su date razlike između klase i strukture:
Razred | Struktura |
---|---|
Podržava nasljeđivanje | Ne podržava nasljeđivanje |
Predmet je proslijediti referencom (vrsta reference) | Struktura se prosljeđuje kopijom (vrsta vrijednosti) |
Članovi su prema zadanim postavkama privatni | Članovi su prema zadanim postavkama javni |
Dobro za veće složene objekte | Dobro za male izolirane modele |
Može koristiti sakupljač otpada za upravljanje memorijom | Ne može se koristiti sakupljač smeća, a time i upravljanje memorijom |
P # 8) Koja je razlika između virtualne metode i apstraktne metode?
Odgovor: Virtualna metoda uvijek mora imati zadanu implementaciju. Međutim, to se može nadjačati u izvedenoj klasi, iako nije obvezno. To se može nadjačati pomoću nadjačati ključna riječ.
Apstraktna metoda nema provedbu. Prebiva u apstraktnoj klasi. Obavezno je da izvedena klasa provodi apstraktnu metodu. An nadjačati ključna riječ ovdje nije potrebna, ali se može koristiti.
P # 9) Objasniti prostore imena u C #.
Odgovor: Koriste se za organizaciju velikih kodnih projekata. 'Sustav' je najčešće korišten prostor imena u C #. Možemo stvoriti vlastiti prostor imena, a također možemo koristiti jedan prostor imena u drugom, koji se naziva ugniježđeni imenski prostori.
Označeni su ključnom riječi 'prostor imena'.
P # 10) Što je 'upotreba' izjave u C #?
Odgovor: Ključna riječ 'Using' označava da program koristi određeni prostor imena.
Na primjer, pomoću sustava
Ovdje, Sustav je prostor imena. Konzola klase definirana je pod System. Dakle, možemo koristiti console.writeline ('...') ili readline u našem programu.
P # 11) Objasnite apstrakciju.
Odgovor: Apstrakcija je jedan od OOP koncepata. Koristi se za prikaz samo bitnih značajki klase i skrivanje nepotrebnih podataka.
Uzmimo primjer automobila:
Vozač automobila trebao bi znati detalje o automobilu poput boje, imena, ogledala, upravljača, brzine, kočnice itd. Ono što ne mora znati je unutarnji motor, ispušni sustav.
Dakle, apstrakcija pomaže u spoznaji što je potrebno i skrivanju unutarnjih detalja od vanjskog svijeta. Skrivanje internih podataka može se postići deklariranjem takvih parametara kao Privatno pomoću privatna ključna riječ.
P # 12) Objasniti polimorfizam?
Odgovor: Programski, polimorfizam znači istu metodu, ali različite implementacije. To je 2 vrste, Compile-time i Runtime.
- Polimorfizam kompilacije postiže se preopterećenjem operatera.
- Izvršni polimorfizam postiže se poništavanjem. Nasljeđivanje i virtualne funkcije koriste se tijekom runtime polimorfizma.
Na primjer ,Ako klasa ima metodu Void Add (), polimorfizam se postiže preopterećenjem metode, odnosno void Add (int a, int b), void Add (int add) su sve preopterećene metode.
P # 13) Kako se u C # provodi rukovanje iznimkama?
Odgovor: Rukovanje iznimkama vrši se pomoću četiri ključne riječi u C #:
- probati : Sadrži blok koda za koji će se provjeriti iznimka.
- ulov : To je program koji hvata iznimku uz pomoć rukovatelja iznimkama.
- konačno : To je blok koda napisan za izvršavanje bez obzira je li izuzetak uhvaćen ili ne.
- Bacanje : Dobavlja iznimku kada se pojavi problem.
P # 14) Što su C # I / O razredi? Koji su najčešće korišteni I / O razredi?
Odgovor: C # ima prostor imena System.IO, koji se sastoji od klasa koje se koriste za izvođenje različitih operacija nad datotekama poput stvaranja, brisanja, otvaranja, zatvaranja itd.
Neke najčešće korištene I / O klase su:
- Datoteka - Pomaže u manipulaciji datotekom.
- StreamWriter - Koristi se za upisivanje znakova u stream.
- StreamReader - Koristi se za čitanje znakova u streamu.
- StringWriter - Koristi se za čitanje međuspremnika niza.
- StringReader - Koristi se za pisanje međuspremnika niza.
- Staza - Koristi se za izvođenje operacija povezanih s informacijama o putu.
P # 15) Što je klasa StreamReader / StreamWriter?
Odgovor: StreamReader i StreamWriter su klase prostora imena System.IO. Koriste se kada želimo čitati ili pisati charact90, odnosno podatke temeljene na čitaču.
Neki od članova StreamReader-a su: Zatvori (), pročitaj (), pročitaj liniju ().
Članovi StreamWriter-a su: Close (), 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-------------------// } }
P # 16) Što je destruktor u C #?
Odgovor: Destruktor se koristi za čišćenje memorije i oslobađanje resursa. Ali u C # to sakupljač smeća samostalno radi. System.GC.Collect () poziva se interno radi čišćenja. Ali ponekad će biti potrebno ručno implementirati destruktore.
Na primjer:
~Car() { Console.writeline(“….”); }
P # 17) Što je sažetak?
Odgovor: Apstraktna klasa je klasa koja se označava sažetkom ključne riječi i može se koristiti samo kao osnovna klasa. Ovu klasu uvijek treba naslijediti. Ne može se stvoriti instanca same klase. Ako ne želimo da bilo koji program kreira objekt klase, takve se klase mogu učiniti apstraktnim.
Bilo koja metoda u apstraktnoj klasi nema implementacije u istoj klasi. Ali oni se moraju primijeniti u razredu djeteta.
Na primjer:
abstract class AB1 { Public void Add(); } Class childClass : AB1 { childClass cs = new childClass (); int Sum = cs.Add(); }
Sve metode u apstraktnoj klasi implicitno su virtualne metode. Stoga se virtualna ključna riječ ne smije koristiti s bilo kojim metodama u apstraktnoj klasi.
P # 18) Što su boks i raspakiranje?
Odgovor: Pretvaranje vrste vrijednosti u referentni tip naziva se boks.
Na primjer:
int Vrijednost1 - = 10;
//----Boks------//
objekt boxedValue = Vrijednost1;
Poziva se eksplicitna pretvorba iste referentne vrste (stvorene boksanjem) natrag u vrstu vrijednosti Raspakirati .
Na primjer:
//----Raspakirati------//
int UnBoxing = int (boxedValue);
koje su različite vrste ispitivanja
P # 19) Koja je razlika između Izjava o nastavku i prekidu?
Odgovor: Izjava Break prekida petlju. Omogućuje kontrolu programa za izlazak iz petlje. Izjava Continue čini kontrolu nad programom da izađe samo iz trenutne iteracije. Ne prekida petlju.
P # 20) Koja je razlika između konačno i finaliziranog bloka?
Odgovor: konačno blok se poziva nakon izvršavanja try and catch bloka. Koristi se za rukovanje iznimkama. Bez obzira je li izuzetak uhvaćen ili ne, ovaj će se blok koda izvršiti. Obično će ovaj blok imati kod za čišćenje.
metoda finalize poziva se neposredno prije odvoza smeća. Koristi se za obavljanje operacija čišćenja neupravljanog koda. Automatski se poziva kada se zadana instanca naknadno ne pozove.
Nizovi i žice
P # 21) Što je niz? Dati sintaksu za jednodimenzionalni niz?
Odgovor: Niz se koristi za pohranu više varijabli istog tipa. To je zbirka varijabli pohranjenih na susjednom memorijskom mjestu.
Na primjer:
dvostruki brojevi = novi dvostruki (10);
int () rezultat = novi int (4) {25,24,23,25};
Jednodimenzionalni niz je linearni niz u kojem su varijable pohranjene u jednom retku. Iznad primjer je jednodimenzionalni niz.
Nizovi mogu imati više dimenzija. Višedimenzionalni nizovi nazivaju se i pravokutni nizovi.
Na primjer , int (,) brojevi = novi int (3,2) {{1,2}, {2,3}, {3,4}};
P # 22) Što je nazubljeni niz?
Odgovor: Nazubljeni niz je niz čiji su elementi nizovi. Također se naziva i nizom nizova. To može biti jedna ili više dimenzija.
int () jaggedArray = novi int (4) ();
P # 23) Navedite neka svojstva Arraya.
Odgovor: Svojstva niza uključuju:
- Duljina: Dobiva ukupan broj elemenata u polju.
- IsFixedSize: Kaže je li niz fiksne veličine ili ne.
- IsReadOnly : Govori je li niz samo za čitanje ili ne.
P # 24) Što je klasa niza?
Odgovor: Klasa niza je osnovna klasa za sve nizove. Pruža mnoga svojstva i metode. Prisutan je u sustavu prostora imena.
P # 25) Što je niz? Koja su svojstva niza klasa?
Odgovor: Niz je skup predmeta od čara. Također možemo deklarirati varijable niza u c #.
naziv niza = 'Pitanja C #';
Klasa niza u C # predstavlja niz. Svojstva klase nizova su:
- Znakovi dobiti objekt Char u trenutnom nizu.
- Duljina dobiva broj objekata u trenutnom nizu.
P # 26) Što je Escape Sequence? Imenujte neke nizanje stringa u C #.
Odgovor: Slijed Escape označen je kosom crtom (). Povratna crta ukazuje na to da bi znak koji slijedi trebao biti tumačen doslovno ili je to poseban znak. Slijed bijega smatra se jednim znakom.
Nizovi bijega niza su sljedeći:
- n - Znak novog reda
- b - Povratni prostor
- \ - Povratna crta
- ’- Jedan navodnik
- ’’ - Dvostruki navod
P # 27) Što su regularni izrazi? Pretražiti niz pomoću regularnih izraza?
Odgovor: Regularni izraz je predložak koji odgovara skupu ulaznih podataka. Uzorak se može sastojati od operatora, konstrukcija ili znakovnih literala. Regex se koristi za raščlanjivanje i zamjenu niza znakova.
Na primjer:
* podudara se s prethodnim znakom nula ili više puta. Dakle, a * b regularni izraz jednak je b, ab, aab, aaab i tako dalje.
Pretraživanje niza pomoću Regex-a:
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'); } } }
Gornji primjer traži 'Python' prema skupu unosa iz niza jezika. Koristi Regex.IsMatch koji vraća true u slučaju da se uzorak pronađe na ulazu. Uzorak može biti bilo koji regularni izraz koji predstavlja ulaz koji želimo podudarati.
P # 28) Koje su osnovne string operacije? Objasniti.
Odgovor: Neke od osnovnih operacija niza su:
- Spojiti : Dvije se žice mogu povezati pomoću System.String.Concat ili pomoću operatora +.
- Izmijeniti : Zamjena (a, b) koristi se za zamjenu niza drugim nizom. Trim () koristi se za obrezivanje niza na kraju ili na početku.
- Usporedite : System.StringComparison () koristi se za usporedbu dva niza, bilo usporedbu velikih i malih slova ili ne. Uglavnom su potrebna dva parametra, izvorni niz i niz s kojima se uspoređuje.
- traži : StartWith, metode EndsWith koriste se za pretraživanje određenog niza.
P # 29) Što je raščlanjivanje? Kako raščlaniti niz vremena i datuma?
Odgovor: Raščlanjivanje pretvara niz u drugu vrstu podataka.
Na primjer:
tekst teksta = '500';
int num = int.Parse (tekst);
500 je cijeli broj. Dakle, metoda Parse pretvara niz 500 u vlastiti osnovni tip, tj. Int.
Slijedite istu metodu za pretvaranje niza DateTime.
string dateTime = '1. siječnja 2018.';
DateTime parsedValue = DateTime.Parse (dateTime);
Napredni koncepti
P # 30) Što je delegat? Objasniti.
Odgovor: Delegat je varijabla koja sadrži referencu na metodu. Stoga je to pokazivač funkcije ili referentni tip. Svi delegati izvedeni su iz prostora imena System.Delegate. I delegat i metoda na koju se odnosi mogu imati isti potpis.
- Izjava delegata: javni delegat void AddNumbers (int n);
Nakon deklaracije delegata, delegat mora stvoriti objekt pomoću nove ključne riječi.
AddNumbers an1 = novi AddNumbers (broj);
Delegat pruža neku vrstu enkapsulacije referentne metode, koja će se interno pozvati kada se pozove 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; } }
U gornjem primjeru imamo delegata myDel koji uzima cijelu vrijednost kao parametar. Razredni program ima metodu istog potpisa kao i delegat, nazvan AddNumbers ().
Ako postoji druga metoda koja se naziva Start () koja kreira objekt delegata, tada se objekt može dodijeliti AddNumbers jer ima isti potpis kao i delegat.
P # 31) Što su događaji?
Odgovor: Događaji su radnje korisnika koje generiraju obavijesti aplikaciji na koje mora odgovoriti. Korisničke radnje mogu biti pokreti miša, pritiskanje tipki i tako dalje.
Programski se klasa koja pokreće događaj naziva izdavač, a klasa koja reagira / prima događaj naziva se pretplatnik. Događaj bi trebao imati barem jednog pretplatnika, a taj događaj nikada nije pokrenut.
Delegati se koriste za deklariranje događaja.
Javni delegat void PrintNumbers ();
Brojevi ispisa događaja myEvent;
P # 32) Kako koristiti delegate s događajima?
Odgovor: Delegati se koriste za pokretanje događaja i rukovanje njima. Uvijek prvo treba deklarirati delegata, a zatim se deklariraju Događaji.
Pogledajmo primjer:
Razmislite o klasi pod nazivom Pacijent. Razmotrite još dvije klase, osiguranje i banka koja zahtijeva podatke o smrti pacijenta iz klase pacijenata. Ovdje su pretplatnici osiguranje i banka, a klasa Patient postaje Publisher. Pokreće smrtni slučaj, a ostale dvije klase trebaju ga primiti.
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; } } }
P # 33) Koji su različiti tipovi delegata?
Odgovor: Različite vrste delegata su:
- Jedan poslanik : Delegat koji može pozvati jednu metodu.
- Multicast delegat : Delegat koji može pozvati više metoda. Operatori + i - koriste se za pretplatu, odnosno odjavu pretplate.
- Generički delegat : Ne zahtijeva definiranje instance delegata. Tri je vrste, Action, Funcs i Predicate.
- Akcijski - U gornjem primjeru delegata i događaja, definiciju delegata i događaja možemo zamijeniti pomoću ključne riječi Action. Delegat akcije definira metodu koja se može pozvati na argumente, ali ne vraća rezultat
Javni delegat void deathInfo ();
Javni događaj deathInfo deathDate;
// Zamjena akcijom //
Javni događaj Akcija deathDate;
Akcija se implicitno odnosi na delegata.
-
- funkcije - Func delegat definira metodu koja se može pozvati na argumente i vraća rezultat.
Func myDel je isto što i delegirati bool myDel (int a, niz b);
-
- Predikat - Definira metodu koja se može pozvati na argumente i uvijek vraća bool.
Predikat myDel je isto što i delegirati bool myDel (niz);
P # 34) Što znače delegatori multicast-a?
Odgovor: Delegat koji upućuje na više metoda naziva se Multicast delegat. Multicasting se postiže korištenjem operatora + i + =.
Razmotrimo primjer iz pitanja br. 32.
Postoje dva pretplatnika za deathEvent, GetPatInfo , i GetDeathDetails . Stoga smo koristili operator + =. To znači kad god mojDel , pozivaju se oba pretplatnika. Delegati će biti pozvani redoslijedom kojim su dodani.
P # 35) Objasnite izdavačima i pretplatnicima u događajima.
Odgovor: Publisher je razred odgovoran za objavljivanje poruka različitih vrsta drugih razreda. Poruka nije ništa drugo nego Događaj kako je raspravljeno u gornjim pitanjima.
Od Primjer u Q # 32, Class Patient je klasa Publisher. To generira Događaj deathEvent , koji dobivaju ostali razredi.
Pretplatnici bilježe poruku one vrste koja ga zanima. Opet iz Primjer od Q # 32, Class Insurance i Bank su pretplatnici. Zanima ih događaj deathEvent tipa poništiti .
P # 36) Što su sinkrone i asinkrone operacije?
Odgovor: Sinkronizacija je način za stvaranje koda koji je siguran za nit gdje samo jedna nit može pristupiti resursu u bilo kojem trenutku. Asinkroni poziv čeka da se metoda dovrši prije nastavka s protokom programa.
Sinkroni programiranje loše utječe na operacije korisničkog sučelja kada korisnik pokušava izvesti dugotrajne operacije jer će se koristiti samo jedna nit. U asinkronoj operaciji poziv metode odmah će se vratiti tako da program može izvoditi druge operacije dok pozvana metoda dovršava svoj posao u određenim situacijama.
U C # se za postizanje asinkronog programiranja koriste ključne riječi Async i Await. Pogledajte Q # 43 za više detalja o sinkronom programiranju.
P # 37) Što je refleksija u C #?
Odgovor: Refleksija je sposobnost koda da pristupi metapodacima sklopa tijekom izvođenja. Program se odražava na sebe i koristi metapodatke za informiranje korisnika ili modificiranje njegovog ponašanja. Metapodaci se odnose na informacije o objektima, metodama.
Prostor imena System.Reflection sadrži metode i klase koje upravljaju informacijama svih učitanih tipova i metoda. Uglavnom se koristi za Windows programe, Na primjer , za pregled svojstava gumba u obliku prozora.
Objekt MemberInfo odraza klase koristi se za otkrivanje atributa povezanih s klasom.
Refleksija se provodi u dva koraka, prvo dobivamo vrstu objekta, a zatim koristimo tip za identificiranje članova kao što su metode i svojstva.
Da bismo dobili tip klase, možemo jednostavno koristiti,
Upišite mytype = myClass.GetType ();
Jednom kada imamo vrstu nastave, lako se može pristupiti ostalim informacijama o nastavi.
System.Reflection.MemberInfo Info = mytype.GetMethod („AddNumbers“);
Gornja izjava pokušava pronaći metodu s imenom AddNumbers u razredu moj razred .
P # 38) Što je generička klasa?
Odgovor: Generička ili generička klasa koristi se za stvaranje klasa ili objekata koji nemaju nikakav određeni tip podataka. Vrsta podataka može se dodijeliti tijekom izvođenja, tj. Kada se koristi u programu.
Na primjer:
Dakle, iz gornjeg koda, u početku vidimo 2 metode usporedbe, za usporedbu niza i int.
U slučaju usporedbe parametara drugog tipa podataka, umjesto stvaranja mnogih preopterećenih metoda, možemo stvoriti generičku klasu i proslijediti zamjenski tip podataka, tj. T. Dakle, T djeluje kao tip podataka dok se posebno ne koristi u metodi Main () .
P # 39) Objasnite Get i Set svojstva Accessora?
Odgovor: Get i Set nazivaju se Accessors. Njih koristi Svojstva. Svojstvo pruža mehanizam za čitanje, upisivanje vrijednosti privatnog polja. Za pristup tom privatnom polju koriste se ovi pristupnici.
Get Property koristi se za vraćanje vrijednosti nekretnine
Postavka svojstva koristi se za postavljanje vrijednosti.
Korištenje get i set je kao u nastavku:
P # 40) Što je nit? Što je Multithreading?
Odgovor: Nit je skup uputa koje se mogu izvršiti, što će našem programu omogućiti istodobnu obradu. Istodobna obrada pomaže nam istovremeno odraditi više operacija. Prema zadanim postavkama, C # ima samo jednu nit. Ali ostale niti mogu se stvoriti za izvršavanje koda paralelno s izvornom niti.
Tema ima životni ciklus. Počinje kad god se stvori klasa niti i završava se nakon izvršenja. Sustav.Nitanje je prostor imena koji treba uključiti za stvaranje niti i upotrebu njegovih članova.
Niti se stvaraju proširenjem klase niti. Početak() metoda koristi se za započinjanje izvođenja niti.
//CallThread is the target method// ThreadStart methodThread = new ThreadStart(CallThread); Thread childThread = new Thread(methodThread); childThread.Start();
C # može istodobno izvršiti više zadataka. To se postiže rukovanjem različitim procesima različitim nitima. To se naziva MultiThreading.
Postoji nekoliko metoda niti koje se koriste za rukovanje operacijama s više niti:
Pokreni, spavaj, prekini, obustavi, nastavi i pridruži se.
Većina ovih metoda su samorazumljive.
P # 41) Navedite neka svojstva klase niti.
Odgovor: Nekoliko svojstava klase niti su:
- Živ je - sadrži vrijednost True kada je nit aktivna.
- Ime - Može vratiti ime niti. Također, može postaviti naziv niti.
- Prioritet - vraća prioritetnu vrijednost zadatka koji je postavio operativni sustav.
- IsBackground - dobiva ili postavlja vrijednost koja pokazuje treba li nit biti pozadinski postupak ili prvi plan.
- ThreadState - opisuje stanje niti.
Q # 42) Koja su različita stanja niti?
Odgovor: Različita stanja niti su:
- Nepokrenuto - Tema je stvorena.
- Trčanje - Navoj započinje izvršenje.
- WaitSleepJoin - Pozivi niti spavaju, pozivi čekaju na drugom objektu, a pozivi se spajaju na drugoj niti.
- Suspendiran - Navoj je suspendiran.
- Prekinut - Navoj je mrtav, ali nije promijenjen u stanje zaustavljen.
- Zaustavili - Navoj je stao.
Q # 43) Što su Async i Await?
Odgovor: Ključne riječi Async i Await koriste se za stvaranje asinkronih metoda u C.
Asinkrono programiranje znači da se postupak izvodi neovisno o glavnim ili drugim procesima.
Korištenje Asynca i Awaita prikazano je dolje:
- Ključna riječ Async koristi se za deklaraciju metode.
- Brojanje je zadatka tipa int koji poziva metodu CalculateCount ().
- Calculatecount () započinje izvršenje i izračunava nešto.
- Nezavisno se radi na mojoj niti, a zatim se dolazi do izjave čekati brojanje.
- Ako Calculatecount nije gotov, myMethod će se vratiti na svoju metodu pozivanja, tako da glavna nit neće biti blokirana.
- Ako je Calculatecount već završen, tada imamo na raspolaganju rezultat kada kontrola dostigne čekati count. Tako će se sljedeći korak nastaviti u istoj niti. Međutim, nije situacija u gore navedenom slučaju kada je uključeno kašnjenje od 1 sekunde.
P # 44) Što je zastoj?
Odgovor: Zastoj je situacija u kojoj postupak ne može dovršiti svoje izvršavanje jer dva ili više procesa čekaju da jedan drugi završi. To se obično događa kod više navoja.
Ovdje postupak drži zajednički resurs, a drugi postupak čeka da ga prvi proces pusti, a nit koja drži zaključanu stavku čeka da se drugi proces završi.
Razmotrite donji primjer:
- Izvršite zadatke kojima pristupa objB i čeka 1 sekundu.
- U međuvremenu, PerformtaskB pokušava pristupiti ObjA.
- Nakon 1 sekunde, PeformtaskA pokušava pristupiti ObjA koji je zaključan od strane PerformtaskB.
- PerformtaskB pokušava pristupiti ObjB-u koji je zaključan od strane PerformtaskA.
Ovo stvara mrtvu točku.
P # 45) Objasnite L ok , Monitori , i Mutex Objekt u navoju.
Odgovor: Ključna riječ Lock osigurava da samo jedna nit može ući u određeni odjeljak koda u bilo kojem trenutku. U navedenom Primjer , lock (ObjA) znači da se brava postavlja na ObjA dok je ovaj postupak ne oslobodi, niti jedna druga nit ne može pristupiti ObjA.
Mutex je također poput brave, ali istovremeno može raditi na više procesa. WaitOne () koristi se za zaključavanje, a ReleaseMutex () koristi se za otpuštanje brave. Ali Mutex je sporiji od zaključavanja, jer treba vremena da ga se nabavi i otpusti.
Monitor.Enter i Monitor.Exit ugrađuju interno zaključavanje. brava je prečac za Monitore. lock (objA) interno poziva.
Monitor.Enter(ObjA); try { } Finally {Monitor.Exit(ObjA));}
P # 46) Što su uvjeti utrke?
Godine: Stanje utrke događa se kada dvije niti pristupaju istom resursu i pokušavaju ga istovremeno promijeniti. Nit koja će moći prvo pristupiti resursu ne može se predvidjeti.
Ako imamo dvije niti, T1 i T2, i oni pokušavaju pristupiti zajedničkom resursu zvanom X. A ako obje niti pokušaju upisati vrijednost u X, zadnja vrijednost zapisana u X bit će spremljena.
P # 47) Što je udruživanje niti?
Godine: Thread pool je skup niti. Te se niti mogu koristiti za izvršavanje zadataka bez ometanja primarne niti. Nakon što nit dovrši zadatak, nit se vraća u spremište.
Prostor imena System.Threading.ThreadPool ima klase koje upravljaju nitima u spremištu i njegovim operacijama.
System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(SomeTask));
Gornji redak postavlja zadatak u red čekanja. Metode SomeTask trebaju imati parametar tipa Object.
P # 48) Što je serializacija?
Odgovor: Serijalizacija je postupak pretvaranja koda u njegov binarni format. Jednom kada se pretvori u bajtove, može se lako pohraniti i zapisati na disk ili bilo koji takav uređaj za pohranu. Serijalizacije su uglavnom korisne kada ne želimo izgubiti izvorni oblik koda i on se može dohvatiti bilo kada u budućnosti.
Svaka klasa koja je označena atributom (Serializable) pretvorit će se u svoj binarni oblik.
Obrnuti postupak vraćanja C # koda iz binarnog oblika naziva se Deserijalizacija.
Da bismo serializirali objekt, potreban nam je serijski objekt, tok koji može sadržavati serializirani objekt i prostor imena System.Runtime.Serialization može sadržavati klase za serializaciju.
P # 49) Koje su vrste serializacije?
Odgovor: Različite vrste serializacije su:
- XML serializacija - Serijalizira sva javna svojstva u XML dokumentu. Budući da su podaci u XML formatu, njima se lako može čitati i manipulirati u raznim formatima. Klase se nalaze u System.sml.Serialization.
- SAPUN - Predmeti se nalaze u System.Runtime.Serialization. Slično XML-u, ali proizvodi potpunu omotnicu usklađenu sa SOAP-om koju može koristiti bilo koji sustav koji razumije SOAP.
- Binarna serializacija - Omogućuje pretvaranje bilo kojeg koda u binarni oblik. Može serializirati i obnoviti javnu i nejavnu imovinu. Brži je i zauzima manje prostora.
P # 50) Što je XSD datoteka?
Odgovor: XSD datoteka označava definiciju XML sheme. Daje strukturu za XML datoteku. To znači da odlučuje o elementima koje XML treba imati i kojim redoslijedom i koja svojstva trebaju biti prisutna. Bez XSD datoteke povezane s XML-om, XML može imati bilo kakve oznake, bilo kakve atribute i bilo koje elemente.
pitanja o intervjuu za web usluge za sapun i odmor
Alat Xsd.exe pretvara datoteke u XSD format. Tijekom serializacije C # koda, klase xsd.exe pretvaraju u format koji je u skladu s XSD.
Zaključak
C # brzo raste iz dana u dan i igra glavnu ulogu u industriji testiranja softvera.
Siguran sam da će vam ovaj članak znatno olakšati pripremu za intervju i pružiti priličnu količinu znanja o većini C # tema.
Nadam se da ćete biti spremni suočiti se s bilo kojim intervjuom na C # !!
Preporučena literatura
- Intervjuirajte pitanja i odgovore
- Pitanja i odgovori za ispitivanje ETL-a
- Top 50 najpopularnijih pitanja i odgovora za CCNA intervjue
- Top 51 pitanja i odgovori za intervju za Bootstrap
- Top 20+ .NET intervjua s pitanjima i odgovorima
- Top 50 i više pitanja i odgovora za intervjue u bazi podataka
- Neka nezgodna ručna ispitivanja Pitanja i odgovori
- 25 najboljih agilnih testova za pitanja i odgovore na intervjue