top 50 c interview questions with answers
Ofte stillede grundlæggende C # Interviewspørgsmål om programmering og kodning:
C # er et programmeringssprog, der er vokset hurtigt og også bruges bredt. Det er i høj efterspørgsel, alsidigt og understøtter også platformoverskridende.
Det bruges ikke kun til windows, men mange andre operativsystemer. Derfor er det meget vigtigt at have en stærk forståelse af dette sprog for at lande i ethvert job i softwaretestindustrien.
Nedenfor er anført ikke kun et sæt af hyppigst stillede spørgsmål om C #, men også nogle meget vigtige emner, der skal forstås for at skille sig ud fra mængden af C # -populationen.
Da C # er et stort emne, for at lette adresseringen af alle begreberne har jeg opdelt dette emne i tre dele som nævnt nedenfor:
- Spørgsmål om grundlæggende begreber
- Spørgsmål om arrays og strenge
- Avancerede koncepter
Denne artikel inkluderer et sæt top 50 C # -spørgsmål og svar, der dækker næsten alle dets vigtige emner i enkle vendinger for at hjælpe dig med at forberede dig til dit interview.
Hvad du lærer:
Mest populære C # Interviewspørgsmål og svar
Basale koncepter
Q # 1) Hvad er et objekt og en klasse?
Svar: Klasse er en indkapsling af egenskaber og metoder, der bruges til at repræsentere en realtidsenhed. Det er en datastruktur, der samler alle forekomster i en enkelt enhed.
Objekt er defineret som en forekomst af en klasse. Teknisk set er det kun en allokeret hukommelsesblok, der kan lagres i form af variabler, array eller en samling.
Q # 2) Hvad er de grundlæggende OOP-begreber?
Svar: De fire grundlæggende begreber inden for objektorienteret programmering er:
- Indkapsling : Her er den interne repræsentation af et objekt skjult fra visningen uden for objektets definition. Kun de krævede oplysninger er tilgængelige, mens resten af dataimplementeringen er skjult.
- Abstraktion: Det er en proces til at identificere den objektive kritiske opførsel og data og eliminere de irrelevante detaljer.
- Arv : Det er evnen til at oprette nye klasser fra en anden klasse. Det gøres ved at få adgang til, ændre og udvide opførsel af objekter i forældreklassen.
- Polymorfisme : Navnet betyder, et navn, mange former. Det opnås ved at have flere metoder med samme navn, men forskellige implementeringer.
Spørgsmål nr. 3) Hvad er administreret og ikke-administreret kode?
Svar: Managed code er en kode, der udføres af CLR (Common Language Runtime), dvs. al applikationskode er baseret på .Net platform. Det betragtes som styret på grund af .Net-rammen, som internt bruger affaldssamleren til at rydde op i den ubrugte hukommelse.
Ustyret kode er enhver kode, der udføres af applikationens kørselstid af enhver anden ramme bortset fra .Net. Programmets kørselstid tager sig af hukommelse, sikkerhed og andre ydeevnehandlinger.
Q # 4) Hvad er et interface?
Svar: Interface er en klasse uden implementering. Det eneste, den indeholder, er erklæringen om metoder, egenskaber og begivenheder.
Q # 5) Hvad er de forskellige typer klasser i C #?
Svar: De forskellige typer klasser i C # er:
- Delvis klasse: Det gør det muligt for dets medlemmer at blive delt eller delt med flere .cs-filer. Det er betegnet med nøgleordet Delvis.
- Forseglet klasse: Det er en klasse, der ikke kan arves. For at få adgang til medlemmerne af en forseglet klasse er vi nødt til at oprette klassens objekt. Det er betegnet med nøgleordet Forseglet .
- Abstrakt klasse : Det er en klasse, hvis objekt ikke kan instantieres. Klassen kan kun arves. Den skal indeholde mindst en metode. Det er betegnet med nøgleordet abstrakt .
- Statisk klasse : Det er en klasse, der ikke tillader arv. Klassens medlemmer er også statiske. Det er betegnet med nøgleordet statisk . Dette nøgleord beder kompilatoren om at kontrollere for utilsigtede forekomster af den statiske klasse.
Q # 6) Forklar kodekompilering i C #.
Svar: Kodekompilering i C # indeholder følgende fire trin:
- Kompilering af kildekoden til Administreret kode af C # compiler.
- Kombination af den nyoprettede kode i samlinger.
- Indlæser Common Language Runtime (CLR).
- Udførelse af samlingen ved CLR.
Q # 7) Hvad er forskellene mellem en klasse og en struktur?
Svar: Nedenfor er forskellene mellem en klasse og en struktur:
Klasse | Struktur |
---|---|
Understøtter arv | Understøtter ikke arv |
Klassen er bestået ved reference (referencetype) | Struct er forbipasserende kopi (værditype) |
Medlemmer er private som standard | Medlemmer er som standard offentlige |
God til større komplekse objekter | God til små isolerede modeller |
Kan bruge affaldssamler til hukommelsesstyring | Kan ikke bruge affaldssamler og dermed ingen hukommelsesstyring |
Q # 8) Hvad er forskellen mellem den virtuelle metode og den abstrakte metode?
Svar: Den virtuelle metode skal altid have en standardimplementering. Det kan dog tilsidesættes i den afledte klasse, selvom det ikke er obligatorisk. Det kan tilsidesættes ved hjælp af tilsidesætte nøgleord.
En abstrakt metode har ikke en implementering. Det bor i den abstrakte klasse. Det er obligatorisk, at den afledte klasse implementerer den abstrakte metode. En tilsidesætte nøgleord er ikke nødvendigt her, selvom det kan bruges.
Q # 9) Forklar navneområder i C #.
Svar: De bruges til at organisere store kodeprojekter. “System” er det mest anvendte navneområde i C #. Vi kan oprette vores eget navneområde og kan også bruge et navneområde i et andet, der kaldes Nested Namespaces.
De er betegnet med nøgleordet 'navneområde'.
Spørgsmål nr. 10) Hvad er 'brug' -sætningen i C #?
Svar: 'Brug' nøgleord angiver, at det bestemte navneområde bruges af programmet.
For eksempel, ved hjælp af System
Her, System er et navneområde. Klassen Konsol er defineret under System. Så vi kan bruge console.writeline (“….”) Eller readline i vores program.
Q # 11) Forklar abstraktion.
Svar: Abstraktion er et af OOP-begreberne. Det bruges til kun at vise de væsentlige funktioner i klassen og skjule unødvendige oplysninger.
Lad os tage et eksempel på en bil:
En bilfører skal kende detaljerne om bilen, såsom farve, navn, spejl, styring, gear, bremse osv. Det, han ikke behøver at vide, er en intern motor, udstødningssystem.
Så abstraktion hjælper med at vide, hvad der er nødvendigt og skjule de interne detaljer fra omverdenen. Skjuling af den interne information kan opnås ved at erklære sådanne parametre som Privat ved hjælp af privat nøgleord.
Q # 12) Forklar polymorfisme?
Svar: Programmatisk betyder polymorfisme den samme metode, men forskellige implementeringer. Det er af to typer, kompileringstid og kørselstid.
- Kompileringstid polymorfisme opnås ved overbelastning af operatøren.
- Runtime polymorfisme opnås ved at tilsidesætte. Arv og virtuelle funktioner bruges under Runtime polymorfisme.
For eksempel ,Hvis en klasse har en metode Void Add (), opnås polymorfisme ved overbelastning af metoden, dvs. void Add (int a, int b), void Add (int add) er alle overbelastede metoder.
Spørgsmål nr. 13) Hvordan implementeres undtagelseshåndtering i C #?
Svar: Undtagelsesbehandling håndteres ved hjælp af fire nøgleord i C #:
- prøve : Indeholder en blok kode, hvor en undtagelse kontrolleres.
- fangst : Det er et program, der fanger en undtagelse ved hjælp af undtagelsesbehandleren.
- langt om længe : Det er en blok kode skrevet til at udføre, uanset om en undtagelse er fanget eller ej.
- Kaste : Kaster en undtagelse, når der opstår et problem.
Q # 14) Hvad er C # I / O-klasser? Hvad er de almindeligt anvendte I / O-klasser?
Svar: C # har System.IO navneområde, der består af klasser, der bruges til at udføre forskellige handlinger på filer som at oprette, slette, åbne, lukke osv.
Nogle almindeligt anvendte I / O-klasser er:
- Fil - Hjælper med at manipulere en fil.
- StreamWriter - Bruges til at skrive tegn til en stream.
- StreamReader - Bruges til at læse tegn til en stream.
- StringWriter - Bruges til at læse en strengbuffer.
- StringReader - Bruges til at skrive en strengbuffer.
- Sti - Bruges til at udføre operationer relateret til stieninformation.
Q # 15) Hvad er StreamReader / StreamWriter klasse?
Svar: StreamReader og StreamWriter er klasser af namespace System.IO. De bruges, når vi henholdsvis vil læse eller skrive charact90, læserbaserede data.
Nogle af medlemmerne af StreamReader er: Luk (), Læs (), Læselinje ().
Medlemmer af StreamWriter er: Luk (), Skriv (), 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-------------------// } }
Q # 16) Hvad er en Destructor i C #?
Svar: Destructor bruges til at rydde op i hukommelsen og frigøre ressourcerne. Men i C # gøres dette af affaldssamleren alene. System.GC.Collect () kaldes internt til oprydning. Men nogle gange kan det være nødvendigt at implementere destruktorer manuelt.
For eksempel:
~Car() { Console.writeline(“….”); }
Spørgsmål nr. 17) Hvad er en abstrakt klasse?
Svar: En abstrakt klasse er en klasse, der betegnes med et abstrakt nøgleord og kun kan bruges som en basisklasse. Denne klasse skal altid arves. En instans af selve klassen kan ikke oprettes. Hvis vi ikke ønsker, at noget program skal skabe et objekt fra en klasse, kan sådanne klasser gøres abstrakte.
Enhver metode i den abstrakte klasse har ikke implementeringer i samme klasse. Men de skal implementeres i børneklassen.
For eksempel:
abstract class AB1 { Public void Add(); } Class childClass : AB1 { childClass cs = new childClass (); int Sum = cs.Add(); }
Alle metoderne i en abstrakt klasse er implicit virtuelle metoder. Derfor skal det virtuelle nøgleord ikke bruges med nogen metoder i abstraktklassen.
Spørgsmål nr. 18) Hvad er boksning og unboxing?
Svar: Konvertering af en værditype til referencetype kaldes boksning.
For eksempel:
int Værdi1 - = 10;
// ———— Boksning —————— //
objekt boxedValue = Værdi1;
Eksplicit konvertering af samme referencetype (oprettet ved boksning) kaldes tilbage til værditype Unboxing .
For eksempel:
// ———— UnBoxing —————— //
int UnBoxing = int (boxedValue);
private servere til World of Warcraft
Spørgsmål nr. 19) Hvad er forskellen mellem Fortsæt og Bruderklæring?
Svar: Break-erklæring bryder løkken. Det gør styringen af programmet for at afslutte loop. Fortsæt erklæring gør styringen af programmet til kun at afslutte den aktuelle iteration. Det bryder ikke løkken.
Spørgsmål nr. 20) Hvad er forskellen mellem endelig og afsluttende blok?
Svar: langt om længe block kaldes efter udførelsen af try and catch-blok. Det bruges til undtagelseshåndtering. Uanset om en undtagelse er fanget eller ej, vil denne blok af kode blive udført. Normalt har denne blok en oprydningskode.
afslutningsmetoden kaldes lige før skraldopsamling. Det bruges til at udføre oprydningsoperationer af ikke-administreret kode. Det kaldes automatisk, når en given instans ikke efterfølgende kaldes.
Arrays And Strings
Spørgsmål nr. 21) Hvad er en matrix? Giv syntaksen for et enkelt og flerdimensionelt array?
Svar: En Array bruges til at gemme flere variabler af samme type. Det er en samling af variabler, der er gemt i en sammenhængende hukommelsesplacering.
For eksempel:
dobbelt tal = nyt dobbelt (10);
int () score = ny int (4) {25,24,23,25};
Et enkelt dimensionelt array er et lineært array, hvor variablerne er gemt i en enkelt række. Over eksempel er et enkelt dimensionelt array.
Arrays kan have mere end en dimension. Flerdimensionelle arrays kaldes også rektangulære arrays.
For eksempel , int (,) numbers = new int (3,2) {{1,2}, {2,3}, {3,4}};
Q # 22) Hvad er en Jagged Array?
Svar: Et Jagged array er et array, hvis elementer er arrays. Det kaldes også som array af arrays. Det kan være enten enkelt eller flere dimensioner.
int () jaggedArray = ny int (4) ();
Q # 23) Navngiv nogle egenskaber ved Array.
Svar: Egenskaber ved en matrix inkluderer:
- Længde: Henter det samlede antal elementer i en matrix.
- IsFixedSize: Fortæller, om arrayet er fast i størrelse eller ej.
- IsLæs kun : Fortæller om matrixen er skrivebeskyttet eller ej.
Spørgsmål nr. 24) Hvad er en matrixklasse?
Svar: En Array-klasse er basisklassen for alle arrays. Det giver mange egenskaber og metoder. Det findes i namespace-systemet.
Spørgsmål nr. 25) Hvad er en streng? Hvad er egenskaberne ved en strengklasse?
Svar: En streng er en samling af røde genstande. Vi kan også erklære strengvariabler i c #.
strengnavn = “C # spørgsmål”;
En strengklasse i C # repræsenterer en streng. Strengklassens egenskaber er:
- Karakterer få Char-objektet i den aktuelle streng.
- Længde får antallet af objekter i den aktuelle streng.
Spørgsmål nr. 26) Hvad er en flugtsekvens? Navngiv nogle string escape-sekvenser i C #.
Svar: En Escape-sekvens er betegnet med et tilbageslag (). Omvendt skråstreg angiver, at tegnet, der følger det, skal fortolkes bogstaveligt, eller det er et specialtegn. En flugtsekvens betragtes som et enkelt tegn.
String escape sekvenser er som følger:
- n - Newline-tegn
- b - Backspace
- \ - Backslash
- '- Enkelt tilbud
- '' - Dobbelt tilbud
Spørgsmål nr. 27) Hvad er regulære udtryk? Søg i en streng ved hjælp af regulære udtryk?
Svar: Regulært udtryk er en skabelon, der passer til et sæt input. Mønsteret kan bestå af operatorer, konstruktioner eller tegnbogstaver. Regex bruges til strengparsering og erstatning af tegnstreng.
For eksempel:
* matcher det foregående tegn nul eller flere gange. Så en * b regex svarer til b, ab, aab, aaab og så videre.
Søgning efter en streng ved hjælp af 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'); } } }
Ovenstående eksempel søger efter 'Python' mod sæt indgange fra sprogarrayet. Det bruger Regex.IsMatch, som returnerer true, hvis mønsteret findes i input. Mønsteret kan være ethvert regulært udtryk, der repræsenterer det input, som vi vil matche.
Spørgsmål nr. 28) Hvad er de grundlæggende strengoperationer? Forklare.
Svar: Nogle af de grundlæggende strengoperationer er:
- Sammenkædning : To strenge kan sammenkædes enten ved hjælp af en System.String.Concat eller ved hjælp af + -operatoren.
- Modificere : Erstat (a, b) bruges til at erstatte en streng med en anden streng. Trim () bruges til at trimme strengen i slutningen eller i starten.
- Sammenligne : System.StringComparison () bruges til at sammenligne to strenge, enten en store og små bogstaver eller ikke store og små bogstaver. Tager hovedsageligt to parametre, original streng og streng, der skal sammenlignes med.
- Søg : StartWith, EndsWith-metoder bruges til at søge i en bestemt streng.
Spørgsmål nr. 29) Hvad er parsing? Hvordan analyserer jeg en dato-tidsstreng?
Svar: Parsing konverterer en streng til en anden datatype.
For eksempel:
strengtekst = “500”;
int num = int.Parse (tekst);
500 er et heltal. Så Parse-metoden konverterer strengen 500 til sin egen basetype, dvs. int.
Følg den samme metode for at konvertere en DateTime-streng.
streng dateTime = “1. januar 2018”;
DateTime parsedValue = DateTime.Parse (dateTime);
Avancerede koncepter
Spørgsmål nr. 30) Hvad er en delegeret? Forklare.
Svar: En delegeret er en variabel, der indeholder henvisningen til en metode. Derfor er det en funktionsmarkør eller referencetype. Alle delegerede stammer fra System.Delegate namespace. Både delegeret og den metode, det refererer til, kan have den samme signatur.
- Erklæring om en delegeret: offentlig delegeret ugyldige AddNumbers (int n);
Efter erklæringen fra en delegeret skal objektet oprettes af delegaten ved hjælp af det nye nøgleord.
AddNumbers an1 = nye AddNumbers (nummer);
Delegaten giver en slags indkapsling til referencemetoden, som internt bliver kaldt, når en delegat kaldes.
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 ovenstående eksempel har vi en delegeret myDel, der tager en heltalsværdi som parameter. Klasseprogrammet har en metode med den samme signatur som delegaten, kaldet AddNumbers ().
Hvis der er en anden metode kaldet Start (), der opretter et objekt fra delegaten, kan objektet tildeles AddNumbers, da det har den samme signatur som delegatens.
Spørgsmål nr. 31) Hvad er begivenheder?
Svar: Begivenheder er brugerhandlinger, der genererer meddelelser til applikationen, som den skal reagere på. Brugerhandlingerne kan være musebevægelser, tastetryk og så videre.
Programmatisk kaldes en klasse, der rejser en begivenhed, en udgiver, og en klasse, der reagerer / modtager begivenheden, kaldes en abonnent. Begivenheden skal have mindst en anden abonnent, den begivenhed hæves aldrig.
Delegater bruges til at erklære begivenheder.
Offentlige delegerede ugyldige PrintNumbers ();
Begivenhed PrintNumre myEvent;
Spørgsmål nr. 32) Hvordan bruges delegerede med begivenheder?
Svar: Delegater bruges til at rejse begivenheder og håndtere dem. Altid skal en delegeret først erklæres, og derefter erklæres begivenhederne.
Lad os se et eksempel:
Overvej en klasse kaldet Patient. Overvej to andre klasser, forsikring og bank, som kræver patientoplysninger om patient fra patientklasse. Her er forsikring og bank abonnenter, og patientklassen bliver udgiver. Det udløser dødshændelsen, og de to andre klasser skal modtage begivenheden.
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; } } }
Q # 33) Hvad er de forskellige typer delegerede?
Svar: Forskellige typer delegerede er:
- Enkelt delegeret : En delegat, der kan kalde en enkelt metode.
- Multicast-delegeret : En delegat, der kan kalde flere metoder. + og - operatører bruges til at abonnere og afmelde henholdsvis.
- Generisk delegeret : Det kræver ikke, at en instans af delegaten defineres. Det er af tre typer, Action, Funcs og Predicate.
- Handling - I ovenstående eksempel på delegerede og begivenheder kan vi erstatte definitionen af delegeret og begivenhed ved hjælp af Action-nøgleord. Handlingsdelegaten definerer en metode, der kan kaldes på argumenter, men ikke returnerer et resultat
Offentlig delegeret ugyldig deathInfo ();
Offentlig begivenhed deathInfo deathDate;
// Erstatning med handling //
Offentlig begivenhed Handling død Dato;
Handling henviser implicit til en delegeret.
-
- funktioner - En Func-delegat definerer en metode, der kan kaldes på argumenter og returnerer et resultat.
Funktion myDel er det samme som delegere bool myDel (int a, streng b);
-
- Prædikat - Definerer en metode, der kan kaldes på argumenter og altid returnerer bool.
Forudsig myDel er det samme som delegere bool myDel (streng (er));
Q # 34) Hvad betyder Multicast-delegerede?
Svar: En delegeret, der peger på mere end én metode, kaldes en multicast-delegat. Multicasting opnås ved hjælp af + og + = operator.
Overvej eksemplet fra Q # 32.
Der er to abonnenter til deathEvent, GetPatInfo og GetDeathDetails . Og derfor har vi brugt + = operator. Det betyder når som helst myDel kaldes, ringes begge abonnenter. Delegaterne kaldes i den rækkefølge, hvori de tilføjes.
Q # 35) Forklar udgivere og abonnenter i begivenheder.
Svar: Publisher er en klasse, der er ansvarlig for at offentliggøre en besked fra forskellige typer andre klasser. Beskeden er intet andet end begivenhed som diskuteret i ovenstående spørgsmål.
Fra Eksempel i Q # 32 er Class Patient Publisher-klassen. Det genererer en begivenhed dødEvent , som modtages af de andre klasser.
Abonnenter fanger beskeden af den type, som den er interesseret i. Igen fra Eksempel i Q # 32 er klasse forsikring og bank abonnenter. De er interesserede i begivenhed dødEvent af typen ugyldig .
Q # 36) Hvad er synkron og asynkron handling?
hvad er den bedste video downloader
Svar: Synkronisering er en måde at oprette en trådsikker kode på, hvor kun en tråd kan få adgang til ressourcen på et givet tidspunkt. Det asynkrone opkald venter på, at metoden skal gennemføres, før den fortsætter med programflowet.
Synkron programmering påvirker UI-operationerne dårligt, når brugeren forsøger at udføre tidskrævende operationer, da kun en tråd vil blive brugt. I asynkron operation vender metodekaldet straks tilbage, så programmet kan udføre andre operationer, mens den kaldte metode fuldender sit arbejde i visse situationer.
I C # bruges Async og Await nøgleord til at opnå asynkron programmering. Se Q # 43 for flere detaljer om synkron programmering.
Q # 37) Hvad er refleksion i C #?
Svar: Refleksion er en kodes evne til at få adgang til metadataene for samlingen under løbetiden. Et program reflekterer over sig selv og bruger metadataene til at informere brugeren eller ændre dens adfærd. Metadata refererer til information om objekter, metoder.
Navneområdet System.Reflection indeholder metoder og klasser, der styrer informationen om alle indlæste typer og metoder. Det bruges hovedsageligt til Windows-applikationer, For eksempel , for at se egenskaberne for en knap i Windows-form.
MemberInfo-objektet til klassereflektionen bruges til at finde de attributter, der er knyttet til en klasse.
Refleksion implementeres i to trin, først får vi objektets type, og derefter bruger vi typen til at identificere medlemmer såsom metoder og egenskaber.
For at få en type klasse kan vi simpelthen bruge,
Skriv mytype = myClass.GetType ();
Når vi først har en type klasse, er de andre oplysninger om klassen let tilgængelige.
System.Reflection.MemberInfo Info = mytype.GetMethod (“AddNumbers”);
Ovenstående erklæring forsøger at finde en metode med navn Tilføj numre i klassen min klasse .
Q # 38) Hvad er en generisk klasse?
Svar: Generik eller Generisk klasse bruges til at oprette klasser eller objekter, der ikke har nogen specifik datatype. Datatypen kan tildeles under kørselstid, dvs. når den bruges i programmet.
For eksempel:
Så fra ovenstående kode ser vi 2 sammenligningsmetoder oprindeligt for at sammenligne streng og int.
I tilfælde af andre sammenligninger af datatypeparametre kan vi i stedet for at skabe mange overbelastede metoder oprette en generisk klasse og videregive en erstatningstype, dvs. T. Så T fungerer som en datatype, indtil den bruges specifikt i Main () -metoden .
Q # 39) Forklar Get and Set Accessor egenskaber?
Svar: Get and Set kaldes Accessors. Disse er brugt af Properties. Ejendommen giver en mekanisme til at læse, skrive værdien af et privat felt. For at få adgang til det private felt bruges disse accessorer.
Get Property bruges til at returnere værdien af en ejendom
Set Property accessor bruges til at indstille værdien.
Brugen af get and set er som nedenfor:
Q # 40) Hvad er en tråd? Hvad er multithreading?
Svar: En tråd er et sæt instruktioner, der kan udføres, hvilket gør det muligt for vores program at udføre samtidig behandling. Samtidig behandling hjælper os med at udføre mere end én operation ad gangen. Som standard har C # kun en tråd. Men de andre tråde kan oprettes for at udføre koden parallelt med den originale tråd.
Tråden har en livscyklus. Det starter, når en trådklasse oprettes og afsluttes efter udførelsen. System.Trådning er det navneområde, der skal medtages for at oprette tråde og bruge dets medlemmer.
Tråde oprettes ved at udvide trådklassen. Start() metode bruges til at begynde udførelse af tråd.
//CallThread is the target method// ThreadStart methodThread = new ThreadStart(CallThread); Thread childThread = new Thread(methodThread); childThread.Start();
C # kan udføre mere end én opgave ad gangen. Dette gøres ved at håndtere forskellige processer ved forskellige tråde. Dette kaldes MultiThreading.
Der er flere trådmetoder, der bruges til at håndtere operationer med flere tråde:
Start, sove, afbryde, suspendere, genoptage og deltage.
De fleste af disse metoder er selvforklarende.
Q # 41) Navngiv nogle egenskaber for trådklasse.
Svar: Få egenskaber for trådklassen er:
- Er i live - indeholder værdi Sand, når en tråd er aktiv.
- Navn - Kan returnere navnet på tråden. Kan også indstille et navn til tråden.
- Prioritet - returnerer den prioriterede værdi af den opgave, der er indstillet af operativsystemet.
- IsBaggrund - får eller indstiller en værdi, der angiver, om en tråd skal være en baggrundsproces eller forgrund.
- ThreadState - beskriver trådtilstanden.
Q # 42) Hvad er de forskellige tilstande for en tråd?
Svar: Forskellige tilstande for en tråd er:
- Ikke startet - Tråden er oprettet.
- Løb - Tråd starter udførelse.
- Vent med at sove - Trådopkald sover, opkald venter på et andet objekt og opkald slutter sig til en anden tråd.
- Suspenderet - Tråden er suspenderet.
- Afbrudt - Tråden er død, men ikke ændret til tilstand stoppet.
- Holdt op - Tråden er stoppet.
Q # 43) Hvad er Async og Await?
Svar: Async og Await nøgleord bruges til at oprette asynkrone metoder i C.
Asynkron programmering betyder, at processen kører uafhængigt af hovedprocesser eller andre processer.
Brug af Async og Await er som vist nedenfor:
- Async-nøgleord bruges til metodedeklarationen.
- Optællingen er af en opgave af typen int, der kalder metoden CalculateCount ().
- Calculatecount () starter udførelsen og beregner noget.
- Uafhængigt arbejde udføres på min tråd, og derefter afventer antallet af udsagn.
- Hvis Calculatecount ikke er færdig, vender myMethod tilbage til sin kaldemetode, så hovedtråden bliver ikke blokeret.
- Hvis beregningstællingen allerede er afsluttet, har vi resultatet tilgængeligt, når kontrollen når afventningstælling. Så det næste trin fortsætter i samme tråd. Imidlertid er det ikke situationen i ovenstående tilfælde, hvor forsinkelsen på 1 sekund er involveret.
Spørgsmål nr. 44) Hvad er en deadlock?
Svar: En deadlock er en situation, hvor en proces ikke er i stand til at fuldføre dens udførelse, fordi to eller flere processer venter på, at hinanden er færdig. Dette sker normalt i multi-threading.
Her opbevares en delt ressource af en proces, og en anden proces venter på, at den første proces frigiver den, og tråden, der holder det låste element, venter på, at en anden proces skal gennemføres.
Overvej nedenstående eksempel:
- Udfør opgaver adgang til objB og venter i 1 sekund.
- I mellemtiden forsøger PerformtaskB at få adgang til ObjA.
- Efter 1 sekund forsøger PeformtaskA at få adgang til ObjA, som er låst af PerformtaskB.
- PerformtaskB forsøger at få adgang til ObjB, som er låst af PerformtaskA.
Dette skaber Deadlock.
Q # 45) Forklar L ok , Skærme og Mutex Objekt i trådning.
Svar: Lås nøgleord sikrer, at kun en tråd kan indtaste et bestemt afsnit af koden på et givet tidspunkt. I ovenstående Eksempel , lås (ObjA) betyder, at låsen er placeret på ObjA, indtil denne proces frigiver den, ingen anden tråd kan få adgang til ObjA.
Mutex er også som en lås, men det kan arbejde på tværs af flere processer ad gangen. WaitOne () bruges til at låse, og ReleaseMutex () bruges til at frigøre låsen. Men Mutex er langsommere end lås, da det tager tid at erhverve og frigive det.
Monitor.Enter og Monitor.Exit redskaber låses internt. en lås er en genvej til skærme. lock (objA) internt opkald.
Monitor.Enter(ObjA); try { } Finally {Monitor.Exit(ObjA));}
Spørgsmål nr. 46) Hvad er en race-tilstand?
Flere år: Race-tilstand opstår, når to tråde får adgang til den samme ressource og forsøger at ændre den på samme tid. Den tråd, der først kan få adgang til ressourcen, kan ikke forudsiges.
Hvis vi har to tråde, T1 og T2, og de prøver at få adgang til en delt ressource kaldet X. Og hvis begge tråde forsøger at skrive en værdi til X, gemmes den sidste værdi, der er skrevet til X.
Q # 47) Hvad er trådpooling?
Flere år: Trådpulje er en samling af tråde. Disse tråde kan bruges til at udføre opgaver uden at forstyrre den primære tråd. Når tråden er færdig med opgaven, vender tråden tilbage til puljen.
System.Threading.ThreadPool navneområde har klasser, der styrer tråde i puljen og dens operationer.
System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(SomeTask));
Ovenstående linje køer en opgave. SomeTask-metoder skal have en parameter af typen Objekt.
Spørgsmål nr. 48) Hvad er serialisering?
Svar: Serialisering er en proces til konvertering af kode til dens binære format. Når det er konverteret til byte, kan det let gemmes og skrives til en disk eller sådanne lagerenheder. Serialiseringer er hovedsageligt nyttige, når vi ikke ønsker at miste den oprindelige form for koden, og den kan hentes når som helst i fremtiden.
Enhver klasse, der er markeret med attributten (Serializable), konverteres til sin binære form.
Den omvendte proces med at få C #-koden tilbage fra den binære form kaldes Deserialisering.
For at serialisere et objekt skal vi have objektet, der skal serialiseres, en stream, der kan indeholde det serielle objekt og navneområdet System.Runtime.Serialization kan indeholde klasser til serialisering.
Spørgsmål nr. 49) Hvad er typerne af serialisering?
Svar: De forskellige typer serialisering er:
- XML-serialisering - Det seriererer alle de offentlige egenskaber til XML-dokumentet. Da dataene er i XML-format, kan de let læses og manipuleres i forskellige formater. Klasserne findes i System.sml.Serialization.
- SÆBE - Klasser findes i System.Runtime.Serialization. Svarende til XML men producerer en komplet SOAP-konvolut, der kan bruges af ethvert system, der forstår SOAP.
- Binær serialisering - Tillader, at enhver kode konverteres til sin binære form. Kan serieisere og gendanne offentlige og ikke-offentlige ejendomme. Det er hurtigere og optager mindre plads.
Q # 50) Hvad er en XSD-fil?
Svar: En XSD-fil står for XML Schema Definition. Det giver en struktur for XML-filen. Det betyder, at det bestemmer de elementer, som XML skal have, og i hvilken rækkefølge og hvilke egenskaber der skal være til stede. Uden en XSD-fil tilknyttet XML kan XML have alle tags, alle attributter og alle elementer.
Xsd.exe-værktøjet konverterer filerne til XSD-format. Under serialisering af C # -kode konverteres klasserne til XSD-kompatibelt format af xsd.exe.
Konklusion
C # vokser hurtigt dag for dag, og det spiller en vigtig rolle i softwaretestindustrien.
Jeg er sikker på, at denne artikel vil gøre din forberedelse til interviewet meget lettere og give dig en hel del viden om de fleste C # -emner.
Håber du ville være klar til at møde ethvert C # interview med tillid !!
Anbefalet læsning
- Interviewspørgsmål og svar
- ETL Testing Interview Spørgsmål og svar
- Top 50 mest populære CCNA Interviewspørgsmål og svar
- Top 51 Bootstrap Interview Spørgsmål og svar
- Top 20+ .NET Interview Spørgsmål og svar
- Top 50+ spørgsmål og svar til databaseinterviews
- Nogle vanskelige manuelle testspørgsmål og svar
- 25 bedste spørgsmål om svar på Agile Testing Interview og svar