top 50 c interview questions with answers
Ofte stilte grunnleggende C # intervjusspørsmål om programmering og koding:
C # er et programmeringsspråk som har vokst raskt og brukes også mye. Den er i høy etterspørsel, allsidig og støtter også plattform.
Det brukes ikke bare til windows, men mange andre operativsystemer. Derfor er det veldig viktig å ha en sterk forståelse av dette språket for å lande i en hvilken som helst jobb i Software Testing-bransjen.
Nedenfor er vervet ikke bare et sett med ofte stilte spørsmål om C #, men også noen veldig viktige emner som skal forstås for å skille seg ut fra mengden av C # -populasjonen.
Siden C # er et enormt emne, for å gjøre det enkelt å ta opp alle konseptene, har jeg delt dette emnet i tre deler som nevnt nedenfor:
- Spørsmål om grunnleggende konsepter
- Spørsmål om arrays og strenger
- Avanserte konsepter
Denne artikkelen inneholder et sett med topp 50 C # intervju spørsmål og svar som dekker nesten alle viktige emner i enkle termer, for å hjelpe deg med å forberede deg på intervjuet.
Hva du vil lære:
Mest populære C # intervju spørsmål og svar
Enkle konsepter
Q # 1) Hva er et objekt og en klasse?
Svar: Klasse er en innkapsling av egenskaper og metoder som brukes til å representere en sanntidsenhet. Det er en datastruktur som samler alle forekomster i en enkelt enhet.
Objekt er definert som en forekomst av en klasse. Teknisk sett er det bare en allokert minne som kan lagres i form av variabler, array eller en samling.
Q # 2) Hva er de grunnleggende OOP-konseptene?
Svar: De fire grunnleggende begrepene for objektorientert programmering er:
- Innkapsling : Her er den interne representasjonen av et objekt skjult fra utsikten utenfor objektets definisjon. Bare den nødvendige informasjonen er tilgjengelig, mens resten av dataimplementeringen er skjult.
- Abstraksjon: Det er en prosess for å identifisere den kritiske oppførselen og dataene til et objekt og eliminere de irrelevante detaljene.
- Arv : Det er evnen til å lage nye klasser fra en annen klasse. Det gjøres ved å få tilgang til, endre og utvide oppførselen til objekter i foreldreklassen.
- Polymorfisme : Navnet betyr, ett navn, mange former. Det oppnås ved å ha flere metoder med samme navn, men forskjellige implementeringer.
Q # 3) Hva er administrert og ikke-administrert kode?
Svar: Managed code er en kode som kjøres av CLR (Common Language Runtime), dvs. all applikasjonskode er basert på .Net-plattformen. Det regnes som administrert på grunn av .Net-rammeverket som internt bruker søppeloppsamleren for å rydde opp det ubrukte minnet.
Uadministrert kode er hvilken som helst kode som kjøres av programkjøringstid for ethvert annet rammeverk bortsett fra .Net. Programmets kjøretid tar seg av minne, sikkerhet og andre ytelsesoperasjoner.
Q # 4) Hva er et grensesnitt?
Svar: Grensesnitt er en klasse uten implementering. Det eneste den inneholder er erklæringen om metoder, egenskaper og hendelser.
Q # 5) Hva er de forskjellige typene klasser i C #?
Svar: De forskjellige typene klasser i C # er:
- Delvis klasse: Det lar medlemmene deles eller deles med flere .cs-filer. Det er betegnet med nøkkelordet Delvis.
- Forseglet klasse: Det er en klasse som ikke kan arves. For å få tilgang til medlemmene i en forseglet klasse, må vi lage objektet til klassen. Det er betegnet med nøkkelordet Forseglet .
- Abstrakt klasse : Det er en klasse hvis objekt ikke kan instantiseres. Klassen kan bare arves. Den skal inneholde minst en metode. Det er betegnet med nøkkelordet abstrakt .
- Statisk klasse : Det er en klasse som ikke tillater arv. Klassens medlemmer er også statiske. Det er betegnet med nøkkelordet statisk . Dette nøkkelordet ber kompilatoren sjekke for tilfeldige tilfeller av den statiske klassen.
Q # 6) Forklar kodekompilering i C #.
Svar: Kodesammensetning i C # inneholder følgende fire trinn:
- Kompilering av kildekoden til administrert kode av C # compiler.
- Kombinere den nyopprettede koden i samlinger.
- Laster inn Common Language Runtime (CLR).
- Gjennomføring av forsamlingen av CLR.
Q # 7) Hva er forskjellen mellom en klasse og en struktur?
Svar: Nedenfor er forskjellene mellom en klasse og en struktur:
Klasse | Struktur |
---|---|
Støtter arv | Støtter ikke arv |
Klassen er bestått av referanse (referansetype) | Struct er Pass by Copy (Verditype) |
Medlemmer er private som standard | Medlemmene er offentlige som standard |
Bra for større komplekse gjenstander | Bra for små isolerte modeller |
Kan bruke avfallssamler for minnehåndtering | Kan ikke bruke søppeloppsamler og dermed ingen minnestyring |
Q # 8) Hva er forskjellen mellom den virtuelle metoden og den abstrakte metoden?
Svar: Den virtuelle metoden må alltid ha en standardimplementering. Imidlertid kan det overstyres i den avledede klassen, selv om det ikke er obligatorisk. Det kan overstyres ved hjelp av overstyring nøkkelord.
En abstrakt metode har ingen implementering. Det ligger i den abstrakte klassen. Det er obligatorisk at den avledede klassen implementerer den abstrakte metoden. An overstyring nøkkelord er ikke nødvendig her, selv om det kan brukes.
Q # 9) Forklar navneplasser i C #.
Svar: De brukes til å organisere store kodeprosjekter. “System” er det mest brukte navneområdet i C #. Vi kan lage vårt eget navneområde og kan også bruke ett navneområde i et annet, som heter Nested Namespaces.
De er betegnet med nøkkelordet 'namespace'.
Q # 10) Hva er 'bruk' -uttrykk i C #?
Svar: 'Å bruke' nøkkelord betegner at det spesielle navneområdet brukes av programmet.
For eksempel, bruker System
Her, System er et navneområde. Klassen Konsoll er definert under System. Så vi kan bruke console.writeline (“….”) Eller readline i programmet vårt.
Q # 11) Forklar abstraksjon.
Svar: Abstraksjon er et av OOP-begrepene. Den brukes til å vise bare de viktigste funksjonene i klassen og skjule unødvendig informasjon.
La oss ta et eksempel på en bil:
En sjåfør av bilen bør vite detaljene om bilen, for eksempel farge, navn, speil, styring, gir, brems osv. Det han ikke trenger å vite er en intern motor, eksosanlegg.
Så, abstraksjon hjelper til å vite hva som er nødvendig og skjule de indre detaljene fra omverdenen. Skjuling av intern informasjon kan oppnås ved å erklære parametere som Privat ved hjelp av privat nøkkelord.
Sp # 12) Forklar polymorfisme?
Svar: Programmatisk betyr polymorfisme den samme metoden, men forskjellige implementeringer. Det er av to typer, kompileringstid og kjøretid.
- Kompileringstidspolymorfisme oppnås ved overbelastning av operatøren.
- Runtime polymorfisme oppnås ved å overstyre. Arv og virtuelle funksjoner brukes under Runtime polymorfisme.
For eksempel ,Hvis en klasse har en metode Void Add (), oppnås polymorfisme ved å overbelaste metoden, det vil si void Add (int a, int b), void Add (int add) er alle overbelastede metoder.
Q # 13) Hvordan implementeres Unntakshåndtering i C #?
Svar: Unntakshåndtering gjøres ved hjelp av fire nøkkelord i C #:
- prøve : Inneholder en blokk med kode som et unntak vil bli sjekket for.
- å fange : Det er et program som fanger et unntak ved hjelp av unntaksbehandleren.
- endelig : Det er en blokk med kode som skal utføres, uansett om et unntak er fanget eller ikke.
- Kaste : Kaster et unntak når et problem oppstår.
Q # 14) Hva er C # I / O-klasser? Hva er de vanligste I / O-klassene?
Svar: C # har System.IO navneområde, som består av klasser som brukes til å utføre forskjellige operasjoner på filer som å opprette, slette, åpne, lukke osv.
Noen vanlige I / O-klasser er:
- Fil - Hjelper med å manipulere en fil.
- StreamWriter - Brukes til å skrive tegn til en strøm.
- StreamReader - Brukes til å lese tegn til en strøm.
- StringWriter - Brukes til å lese en strengbuffer.
- StringReader - Brukes til å skrive en strengbuffer.
- Sti - Brukes til å utføre operasjoner relatert til stiinformasjonen.
Sp # 15) Hva er StreamReader / StreamWriter-klassen?
Svar: StreamReader og StreamWriter er klasser med namespace System.IO. De brukes når vi vil lese eller skrive henholdsvis charact90, leserbaserte data.
Noen av medlemmene i StreamReader er: Lukk (), Les (), Leselinje ().
Medlemmer av StreamWriter er: Lukk (), skriv (), skrivelinje ().
Class Program1 { using(StreamReader sr = new StreamReader(“C:ReadMe.txt”) { //----------------code to read-------------------// } using(StreamWriter sw = new StreamWriter(“C:ReadMe.txt”)) { //-------------code to write-------------------// } }
Q # 16) Hva er en Destructor i C #?
Svar: Destructor brukes til å rydde opp i minnet og frigjøre ressursene. Men i C # gjør dette søppeloppsamleren alene. System.GC.Collect () kalles internt for å rydde opp. Men noen ganger kan det være nødvendig å implementere destruktører manuelt.
For eksempel:
~Car() { Console.writeline(“….”); }
Spørsmål 17) Hva er en abstrakt klasse?
Svar: En abstrakt klasse er en klasse som er betegnet med abstrakt nøkkelord og kan bare brukes som en basisklasse. Denne klassen skal alltid arves. En forekomst av selve klassen kan ikke opprettes. Hvis vi ikke vil at noe program skal lage et objekt av en klasse, kan slike klasser gjøres abstrakte.
Enhver metode i abstraktklassen har ikke implementeringer i samme klasse. Men de må implementeres i barneklassen.
For eksempel:
abstract class AB1 { Public void Add(); } Class childClass : AB1 { childClass cs = new childClass (); int Sum = cs.Add(); }
Alle metodene i en abstrakt klasse er implisitt virtuelle metoder. Derfor bør det virtuelle nøkkelordet ikke brukes med noen metoder i abstraktklassen.
Sp # 18) Hva er boksing og unboxing?
Svar: Å konvertere en verditype til referansetype kalles Boxing.
For eksempel:
int Verdi1 - = 10;
// ———— Boksing —————— //
objekt boxedValue = Verdi1;
Eksplisitt konvertering av samme referansetype (opprettet ved boksing) tilbake til verditype kalles Unboxing .
For eksempel:
// ———— UnBoxing —————— //
int UnBoxing = int (boxedValue);
inngangsnivå qa tester intervju spørsmål
Spørsmål nr. 19) Hva er forskjellen mellom Fortsett og Bryt uttalelse?
Svar: Break uttalelse bryter løkken. Det gjør kontrollen av programmet for å gå ut av loop. Fortsett uttalelse gjør kontrollen av programmet for å avslutte bare den gjeldende iterasjonen. Det bryter ikke løkken.
Spørsmål nr. 20) Hva er forskjellen mellom endelig og sluttblokk?
Svar: endelig block kalles etter utførelse av try and catch block. Den brukes til unntakshåndtering. Uansett om et unntak er fanget eller ikke, vil denne kodeblokken bli utført. Vanligvis vil denne blokken ha en oppryddingskode.
finalize-metoden kalles like før søppeloppsamling. Den brukes til å utføre oppryddingsoperasjoner av ikke-administrert kode. Det kalles automatisk når en gitt forekomst ikke blir ringt opp senere.
Arrays And Strings
Q # 21) Hva er en matrise? Gi syntaksen for et enkelt og flerdimensjonalt utvalg?
Svar: En matrise brukes til å lagre flere variabler av samme type. Det er en samling variabler som er lagret på en sammenhengende minneplassering.
For eksempel:
doble tall = ny dobbel (10);
int () score = ny int (4) {25,24,23,25};
En enkelt dimensjonal matrise er en lineær matrise der variablene er lagret i en enkelt rad. Ovenfor eksempel er en enkeltdimensjonal matrise.
Arrays kan ha mer enn én dimensjon. Flerdimensjonale matriser kalles også rektangulære matriser.
For eksempel , int (,) numbers = new int (3,2) {{1,2}, {2,3}, {3,4}};
Q # 22) Hva er en Jagged Array?
Svar: En Jagged array er en array der elementene er arrays. Det kalles også som en rekke matriser. Det kan være enten enkelt eller flere dimensjoner.
int () jaggedArray = new int (4) ();
Q # 23) Nevn noen egenskaper til Array.
Svar: Egenskapene til en matrise inkluderer:
- Lengde: Får det totale antallet elementer i en matrise.
- IsFixedSize: Forteller om matrisen er fast i størrelse eller ikke.
- ErLes bare : Forteller om matrisen er skrivebeskyttet eller ikke.
Q # 24) Hva er en Array Class?
Svar: En Array-klasse er basisklassen for alle matriser. Det gir mange egenskaper og metoder. Den er tilstede i navneromssystemet.
Q # 25) Hva er en streng? Hva er egenskapene til en strengklasse?
Svar: En streng er en samling røyeobjekter. Vi kan også erklære strengvariabler i c #.
strengnavn = “C # spørsmål”;
En strengklasse i C # representerer en streng. Egenskapene til strengklassen er:
- Tegn få Char-objektet i gjeldende streng.
- Lengde får antall objekter i gjeldende streng.
Spørsmål nr. 26) Hva er en rømningssekvens? Nevn noen String escape-sekvenser i C #.
Svar: En Escape-sekvens er betegnet med tilbakeslag (). Backslash indikerer at karakteren som følger den skal tolkes bokstavelig, eller det er en spesiell karakter. En rømningssekvens blir betraktet som et enkelt tegn.
String escape-sekvenser er som følger:
- n - Newline-tegn
- b - Tilbake
- \ - tilbakeslag
- ’- Enkelt tilbud
- ’’ - Dobbelt tilbud
Spørsmål nr. 27) Hva er vanlige uttrykk? Søk i en streng ved å bruke vanlige uttrykk?
Svar: Regulært uttrykk er en mal som samsvarer med et sett med input. Mønsteret kan bestå av operatorer, konstruksjoner eller bokstavbokstaver. Regex brukes til å tolke og erstatte tegnstrengen.
For eksempel:
* samsvarer med forrige tegn null eller flere ganger. Så, a * b regex tilsvarer b, ab, aab, aaab og så videre.
Søker etter en streng ved hjelp av 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'); } } }
Eksemplet ovenfor søker etter 'Python' mot settet med innganger fra språkmatrisen. Den bruker Regex.IsMatch som returnerer true i tilfelle hvis mønsteret er funnet i inngangen. Mønsteret kan være hvilket som helst regulært uttrykk som representerer inngangen vi vil matche.
Spørsmål nr. 28) Hva er de grunnleggende strengoperasjonene? Forklare.
Svar: Noen av de grunnleggende strengoperasjonene er:
- Sammenkobling : To strenger kan sammenkobles enten ved å bruke en System.String.Concat eller ved å bruke + -operatøren.
- Endre : Erstatt (a, b) brukes til å erstatte en streng med en annen streng. Trim () brukes til å trimme strengen på slutten eller i begynnelsen.
- Sammenligne : System.StringComparison () brukes til å sammenligne to strenger, enten en skiller mellom store og små bokstaver eller ikke store og små bokstaver. Tar hovedsakelig to parametere, original streng og streng som skal sammenlignes med.
- Søk : StartWith, EndsWith-metoder brukes til å søke i en bestemt streng.
Sp # 29) Hva er parsing? Hvordan analysere en dato-tidsstreng?
Svar: Parsing konverterer en streng til en annen datatype.
For eksempel:
strengtekst = “500”;
int num = int.Parse (tekst);
500 er et helt tall. Så, Parse-metoden konverterer strengen 500 til sin egen basetype, dvs. int.
Følg samme metode for å konvertere en DateTime-streng.
streng dateTime = “1. jan 2018”;
DateTime parsedValue = DateTime.Parse (dateTime);
Avanserte konsepter
Spørsmål nr. 30) Hva er en delegat? Forklare.
Svar: En delegat er en variabel som inneholder referansen til en metode. Derfor er det en funksjonspeker eller referansetype. Alle delegater kommer fra System.Delegate namespace. Både delegat og metoden det refererer til kan ha samme signatur.
- Erklære en delegat: offentlig delegat ugyldig AddNumbers (int n);
Etter erklæringen fra en delegat, må objektet opprettes av delegaten ved hjelp av det nye nøkkelordet.
AddNumbers an1 = nye AddNumbers (nummer);
Delegaten gir en slags innkapsling til referansemetoden, som internt blir ringt når en delegat blir ringt.
ved hjelp av matriser i funksjoner c ++
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; } }
I eksemplet ovenfor har vi en delegert myDel som tar en heltallverdi som parameter. Klasseprogrammet har en metode med samme signatur som delegaten, kalt AddNumbers ().
Hvis det er en annen metode kalt Start () som oppretter et objekt til delegaten, kan objektet tildeles AddNumbers ettersom det har samme signatur som delegatens.
Spørsmål nr. 31) Hva er hendelser?
Svar: Hendelser er brukerhandlinger som genererer varsler til applikasjonen den må svare på. Brukerhandlingene kan være musebevegelser, tastetrykk og så videre.
Programmatisk kalles en klasse som reiser en hendelse en utgiver, og en klasse som svarer / mottar hendelsen kalles en abonnent. Arrangementet skal ha minst en abonnent, den hendelsen blir aldri reist.
Delegater brukes til å erklære hendelser.
Offentlig delegat ugyldig PrintNumbers ();
Event PrintNumbers myEvent;
Spørsmål nr. 32) Hvordan bruke delegater med arrangementer?
Svar: Delegater brukes til å løfte begivenheter og håndtere dem. Alltid må en delegat erklæres først, og deretter erklæres hendelsene.
La oss se et eksempel:
Tenk på en klasse som heter Pasient. Tenk på to andre klasser, forsikring og bank som krever pasientens dødsinformasjon fra pasientklassen. Her er forsikring og bank abonnenter, og pasientklassen blir utgiver. Det utløser dødshendelsen, og de to andre klassene skal motta hendelsen.
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; } } }
Sp # 33) Hva er de forskjellige typene delegater?
Svar: Ulike typer delegater er:
- Enkelt delegat : En delegat som kan kalle en enkelt metode.
- Multicast-delegat : En delegat som kan ringe flere metoder. + og - operatører brukes til å abonnere og avslutte abonnementet.
- Generisk delegat : Det krever ikke at en forekomst av delegaten defineres. Det er av tre typer, Action, Funcs og Predicate.
- Handling - I eksemplet ovenfor om delegater og hendelser kan vi erstatte definisjonen av delegat og hendelse ved hjelp av Action-nøkkelord. Handlingsdelegaten definerer en metode som kan kalles på argumenter, men som ikke gir et resultat
Offentlig delegat ugyldig deathInfo ();
Offentlig hendelse deathInfo deathDate;
// Erstatt med handling //
Offentlig hendelse Handling død Dato;
Handling refererer implisitt til en delegat.
-
- funksjoner - En Func-delegat definerer en metode som kan kalles på argumenter og returnerer et resultat.
Funksjon myDel er det samme som delegere bool myDel (int a, streng b);
-
- Predikere - Definerer en metode som kan kalles på argumenter og alltid returnerer boolen.
Forutsi myDel er det samme som delegat bool myDel (streng);
Q # 34) Hva betyr Multicast-delegater?
Svar: En delegat som peker på mer enn én metode, kalles en Multicast-delegat. Multicasting oppnås ved å bruke + og + = operator.
Tenk på eksemplet fra Q # 32.
Det er to abonnenter på deathEvent, GetPatInfo , og GetDeathDetails . Og derfor har vi brukt + = operator. Det betyr når myDel kalles, blir begge abonnentene ringt. Delegatene vil bli kalt i den rekkefølgen de blir lagt til.
Q # 35) Forklar utgivere og abonnenter i arrangementer.
Svar: Publisher er en klasse som er ansvarlig for å publisere en melding fra forskjellige typer andre klasser. Meldingen er ingenting annet enn hendelse som diskutert i spørsmålene ovenfor.
Fra Eksempel i Q # 32 er Class Patient Publisher-klassen. Det genererer en hendelse dødEvent , som blir mottatt av de andre klassene.
Abonnenter fanger meldingen av typen den er interessert i. Igjen fra Eksempel av Q # 32 er klasseforsikring og bank abonnenter. De er interessert i arrangement dødEvent av typen tomrom .
Q # 36) Hva er synkrone og asynkrone operasjoner?
Svar: Synkronisering er en måte å lage en trådsikker kode der bare en tråd kan få tilgang til ressursen til enhver tid. Den asynkrone samtalen venter på at metoden skal fullføres før du fortsetter med programflyten.
Synkron programmering påvirker UI-operasjonene dårlig når brukeren prøver å utføre tidkrevende operasjoner, siden bare en tråd vil bli brukt. I asynkron drift vil metodeanropet umiddelbart komme tilbake slik at programmet kan utføre andre operasjoner mens den anropte metoden fullfører arbeidet i visse situasjoner.
I C # brukes nøkkelord Async og Await for å oppnå asynkron programmering. Se på Q # 43 for mer informasjon om synkron programmering.
Q # 37) Hva er refleksjon i C #?
Svar: Refleksjon er muligheten til en kode for å få tilgang til metadataene til forsamlingen i løpet av kjøretiden. Et program reflekterer over seg selv og bruker metadataene til å informere brukeren eller endre oppførselen. Metadata refererer til informasjon om objekter, metoder.
Navneområdet System.Reflection inneholder metoder og klasser som administrerer informasjonen til alle de lastede typene og metodene. Den brukes hovedsakelig til Windows-applikasjoner, For eksempel , for å vise egenskapene til en knapp i et Windows-skjema.
MemberInfo-objektet til klasserefleksjonen brukes til å oppdage attributtene som er knyttet til en klasse.
Refleksjon er implementert i to trinn, først får vi typen av objektet, og deretter bruker vi typen til å identifisere medlemmer som metoder og egenskaper.
For å få en type klasse, kan vi bare bruke,
Skriv inn mytype = myClass.GetType ();
Når vi har en type klasse, er det lett å få tilgang til den andre informasjonen om klassen.
System.Reflection.MemberInfo Info = mytype.GetMethod (“AddNumbers”);
Ovenfor uttalelse prøver å finne en metode med navn AddNumbers i klassen klassen min .
Q # 38) Hva er en generisk klasse?
Svar: Generikk eller Generisk klasse brukes til å lage klasser eller objekter som ikke har noen spesifikk datatype. Datatypen kan tildeles i løpet av kjøretiden, dvs. når den brukes i programmet.
For eksempel:
Så fra koden ovenfor ser vi to sammenligningsmetoder i utgangspunktet, for å sammenligne streng og int.
I tilfelle andre datatypeparameter sammenligninger, i stedet for å lage mange overbelastede metoder, kan vi opprette en generisk klasse og sende en erstatningstype, dvs. T. Så T fungerer som en datatype til den brukes spesifikt i Main () -metoden .
Q # 39) Forklar Get and Set Accessor egenskaper?
Svar: Get and Set kalles Accessors. Disse er brukt av Properties. Eiendommen gir en mekanisme for å lese, skrive verdien av et privat felt. For å få tilgang til det private feltet brukes disse aksessorene.
Get Property brukes til å returnere verdien til en eiendom
Set Property accessor brukes til å sette verdien.
Bruk av get and set er som nedenfor:
Q # 40) Hva er en tråd? Hva er Multithreading?
Svar: En tråd er et sett med instruksjoner som kan utføres, som gjør at vårt program kan utføre samtidig behandling. Samtidig behandling hjelper oss å gjøre mer enn én operasjon om gangen. Som standard har C # bare en tråd. Men de andre trådene kan opprettes for å utføre koden parallelt med den opprinnelige tråden.
Tråden har en livssyklus. Den starter når en trådklasse opprettes og avsluttes etter utførelsen. System.Tråding er navneområdet som må inkluderes for å lage tråder og bruke medlemmene.
Tråder opprettes ved å utvide trådklassen. Start() metoden brukes til å starte trådutførelse.
//CallThread is the target method// ThreadStart methodThread = new ThreadStart(CallThread); Thread childThread = new Thread(methodThread); childThread.Start();
C # kan utføre mer enn én oppgave om gangen. Dette gjøres ved å håndtere forskjellige prosesser med forskjellige tråder. Dette kalles MultiThreading.
Det er flere trådmetoder som brukes til å håndtere operasjoner med flere tråder:
Start, sove, avbryte, suspendere, gjenoppta og bli med.
De fleste av disse metodene er selvforklarende.
Q # 41) Nevn noen egenskaper til trådklassen.
Svar: Få egenskaper for trådklassen er:
- Er i live - inneholder verdien True når en tråd er aktiv.
- Navn - Kan returnere navnet på tråden. Kan også sette et navn på tråden.
- Prioritet - returnerer den prioriterte verdien av oppgaven som er angitt av operativsystemet.
- IsBackground - får eller setter en verdi som indikerer om en tråd skal være en bakgrunnsprosess eller forgrunn.
- ThreadState - beskriver trådtilstanden.
Q # 42) Hva er de forskjellige tilstandene til en tråd?
Svar: Ulike tilstander i en tråd er:
- Ikke startet - Tråden er opprettet.
- Løping - Tråden starter utførelsen.
- WaitSleepJoin - Tråden kaller søvn, samtaler venter på et annet objekt og samtaler blir med på en annen tråd.
- Suspendert - Tråden er suspendert.
- Abortert - Tråden er død, men ikke endret til tilstand stoppet.
- Stoppet - Tråden har stoppet.
Q # 43) Hva er Async og Await?
Svar: Async og Await søkeord brukes til å lage asynkrone metoder i C.
Asynkron programmering betyr at prosessen kjører uavhengig av hovedprosesser eller andre prosesser.
Bruk av Async og Await er som vist nedenfor:
- Async-nøkkelord brukes til metodedeklarasjonen.
- Tellingen er av en oppgave av typen int som kaller metoden CalculateCount ().
- Calculatecount () starter utførelsen og beregner noe.
- Det gjøres et uavhengig arbeid på tråden min, og så venter man på at antall uttalelser blir nådd.
- Hvis ikke beregningstallet er ferdig, vil myMethod gå tilbake til anropsmetoden, slik at hovedtråden ikke blir blokkert.
- Hvis beregningstellingen allerede er ferdig, har vi resultatet tilgjengelig når kontrollen når ventetelling. Så neste trinn vil fortsette i samme tråd. Imidlertid er det ikke situasjonen i ovennevnte tilfelle der forsinkelsen på 1 sekund er involvert.
Spørsmål nr. 44) Hva er en dødlås?
Svar: En dødlås er en situasjon der en prosess ikke er i stand til å fullføre utførelsen fordi to eller flere prosesser venter på at hverandre skal fullføres. Dette skjer vanligvis i flertråding.
Her holdes en delt ressurs av en prosess, og en annen prosess venter på at den første prosessen skal frigjøres, og tråden som holder det låste elementet venter på at en annen prosess skal fullføres.
Tenk på eksemplet nedenfor:
- Utfør oppgaver får tilgang til objB og venter i 1 sekund.
- I mellomtiden prøver PerformtaskB å få tilgang til ObjA.
- Etter 1 sekund prøver PeformtaskA å få tilgang til ObjA som er låst av PerformtaskB.
- PerformtaskB prøver å få tilgang til ObjB som er låst av PerformtaskA.
Dette skaper Deadlock.
Q # 45) Forklar L ok , Skjermer , og Mutex Objekt i gjenging.
Svar: Lås nøkkelord sørger for at bare en tråd kan legge inn en bestemt del av koden til enhver tid. I det ovennevnte Eksempel , lock (ObjA) betyr at låsen er plassert på ObjA til denne prosessen frigjør den, ingen annen tråd kan få tilgang til ObjA.
Mutex er også som en lås, men det kan fungere på tvers av flere prosesser om gangen. WaitOne () brukes til å låse og ReleaseMutex () brukes til å frigjøre låsen. Men Mutex er tregere enn lås da det tar tid å skaffe seg og frigjøre den.
Monitor.Enter og Monitor.Exit redskaper låses internt. en lås er en snarvei for skjermer. lock (objA) internt samtaler.
Monitor.Enter(ObjA); try { } Finally {Monitor.Exit(ObjA));}
Q # 46) Hva er en løpstilstand?
År: Løpetilstand oppstår når to tråder får tilgang til samme ressurs og prøver å endre den samtidig. Tråden som vil ha tilgang til ressursen først kan ikke forutsies.
Hvis vi har to tråder, T1 og T2, og de prøver å få tilgang til en delt ressurs kalt X. Og hvis begge trådene prøver å skrive en verdi til X, vil den siste verdien som er skrevet til X bli lagret.
Q # 47) Hva er trådpooling?
År: Trådbasseng er en samling tråder. Disse trådene kan brukes til å utføre oppgaver uten å forstyrre primærtråden. Når tråden er fullført, går tråden tilbake til bassenget.
System.Threading.ThreadPool navnerom har klasser som administrerer trådene i bassenget og dets operasjoner.
System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(SomeTask));
Ovennevnte linje køer en oppgave. SomeTask-metoder skal ha en parameter av typen Objekt.
Q # 48) Hva er serialisering?
Svar: Serialisering er en prosess for å konvertere kode til sitt binære format. Når den er konvertert til byte, kan den enkelt lagres og skrives til en disk eller slike lagringsenheter. Serialiseringer er hovedsakelig nyttige når vi ikke vil miste den opprinnelige koden, og den kan hentes når som helst i fremtiden.
Enhver klasse som er merket med attributtet (Serializable) konverteres til sin binære form.
Den omvendte prosessen med å få C # -koden tilbake fra den binære formen kalles Deserialization.
For å serialisere et objekt trenger vi at objektet skal serieiseres, en strøm som kan inneholde det serieiserte objektet og navneområdet System.Runtime.Serialization kan inneholde klasser for serialisering.
Spørsmål nr. 49) Hva er typene serialisering?
Svar: De forskjellige typene serialisering er:
- XML-serialisering - Den serieriserer alle offentlige eiendommer til XML-dokumentet. Siden dataene er i XML-format, kan de enkelt leses og manipuleres i forskjellige formater. Klassene ligger i System.sml.Serialization.
- SÅPE - Klasser ligger i System.Runtime.Serialization. I likhet med XML, men produserer en komplett SOAP-konvolutt som kan brukes av ethvert system som forstår SOAP.
- Binær serialisering - Tillater at en hvilken som helst kode konverteres til sin binære form. Kan serieisere og gjenopprette offentlige og ikke-offentlige eiendommer. Det er raskere og tar mindre plass.
Q # 50) Hva er en XSD-fil?
Svar: En XSD-fil står for XML Schema Definition. Det gir en struktur for XML-filen. Det betyr at den bestemmer elementene som XML skal ha og i hvilken rekkefølge og hvilke egenskaper som skal være til stede. Uten en XSD-fil assosiert med XML, kan XML ha alle koder, alle attributter og andre elementer.
Xsd.exe-verktøyet konverterer filene til XSD-format. Under serialisering av C # -kode konverteres klassene til XSD-kompatibelt format av xsd.exe.
Konklusjon
C # vokser raskt dag for dag, og det spiller en viktig rolle i Software Testing Industry.
Jeg er sikker på at denne artikkelen vil gjøre forberedelsene dine til intervjuet mye enklere og gi deg en god kunnskap om de fleste C # -emnene.
Håper du ville være klar til å møte ethvert C # -intervju med selvtillit!
Anbefalt lesing
- Intervju spørsmål og svar
- ETL Testing Intervju Spørsmål og svar
- Topp 50 mest populære CCNA-intervjuspørsmål og svar
- Topp 51 Bootstrap intervju spørsmål og svar
- Topp 20+ .NET intervju spørsmål og svar
- Topp 50+ Database Intervju Spørsmål og svar
- Noen vanskelige manuelle testspørsmål og svar
- 25 beste spørsmål om svar og svar på smidig testing