top 50 c interview questions with answers
Vanliga grundläggande C # intervjufrågor om programmering och kodning:
C # är ett programmeringsspråk som har vuxit snabbt och används också i stor utsträckning. Den är mycket efterfrågad, mångsidig och stöder också plattform.
Det används inte bara för windows utan många andra operativsystem. Därför är det mycket viktigt att ha en stark förståelse för detta språk för att landa i alla jobb inom mjukvarutestningsindustrin.
Nedan anlitas inte bara en uppsättning vanliga frågor om C # utan också några mycket viktiga ämnen som ska förstås för att sticka ut från mängden i C # -populationen.
Eftersom C # är ett stort ämne, för att enkelt ta itu med alla begrepp, har jag delat upp detta ämne i tre delar som nämns nedan:
- Frågor om grundläggande begrepp
- Frågor om arrays och strängar
- Avancerade begrepp
Den här artikeln innehåller en uppsättning topp 50 C # intervjufrågor och svar som täcker nästan alla dess viktiga ämnen i enkla termer för att hjälpa dig att förbereda dig för din intervju.
Vad du kommer att lära dig:
Mest populära C # intervjufrågor och svar
Grundläggande koncept
F # 1) Vad är ett objekt och en klass?
Svar: Klass är en inkapsling av egenskaper och metoder som används för att representera en realtidsenhet. Det är en datastruktur som sammanför alla instanser i en enda enhet.
Objekt definieras som en förekomst av en klass. Tekniskt sett är det bara ett tilldelat minne som kan lagras i form av variabler, array eller en samling.
F # 2) Vilka är de grundläggande OOP-begreppen?
Svar: De fyra grundläggande begreppen för objektorienterad programmering är:
- Inkapsling : Här är den interna representationen av ett objekt dold från vyn utanför objektets definition. Endast erforderlig information kan nås medan resten av dataimplementeringen är dold.
- Abstraktion: Det är en process för att identifiera ett objekts kritiska beteende och data och eliminera de irrelevanta detaljerna.
- Arv : Det är förmågan att skapa nya klasser från en annan klass. Det görs genom att komma åt, modifiera och utvidga beteendet hos objekt i föräldraklassen.
- Polymorfism : Namnet betyder, ett namn, många former. Det uppnås genom att ha flera metoder med samma namn men olika implementeringar.
F # 3) Vad är Managed and Unmanaged code?
Svar: Managed code är en kod som körs av CLR (Common Language Runtime), dvs. all applikationskod baseras på .Net-plattformen. Det betraktas som hanterat på grund av .Net-ramverket som internt använder sopuppsamlaren för att rensa upp det oanvända minnet.
Ohanterad kod är vilken kod som helst som körs av applikationens körtid av något annat ramverk förutom .Net. Programmets körtid tar hand om minne, säkerhet och andra prestandaåtgärder.
F # 4) Vad är ett gränssnitt?
Svar: Gränssnitt är en klass utan implementering. Det enda som den innehåller är deklarationen av metoder, egenskaper och händelser.
F # 5) Vilka är de olika typerna av klasser i C #?
Svar: De olika klasserna i C # är:
- Delklass: Det gör att dess medlemmar kan delas eller delas med flera .cs-filer. Det betecknas med nyckelordet Partiell.
- Förseglad klass: Det är en klass som inte går att ärva. För att komma åt medlemmarna i en förseglad klass måste vi skapa klassens objekt. Det betecknas med nyckelordet Sluten .
- Abstrakt klass : Det är en klass vars objekt inte kan instantieras. Klassen kan bara ärvas. Den bör innehålla minst en metod. Det betecknas med nyckelordet abstrakt .
- Statisk klass : Det är en klass som inte tillåter arv. Klassens medlemmar är också statiska. Det betecknas med nyckelordet statisk . Det här nyckelordet ber kompilatorn att kontrollera om oavsiktliga förekomster av den statiska klassen.
F # 6) Förklara kodkompilering i C #.
Svar: Kodsamling i C # innehåller följande fyra steg:
- Kompilera källkoden till hanterad kod av C # kompilator.
- Kombinera den nyskapade koden i sammansättningar.
- Laddar Common Language Runtime (CLR).
- Utför montering av CLR.
F # 7) Vad är skillnaderna mellan en klass och en struktur?
Svar: Nedan visas skillnaderna mellan en klass och en struktur:
Klass | Struct |
---|---|
Stöder arv | Stöder inte arv |
Klass är godkänd (referens typ) | Struct är Pass by Copy (värdetyp) |
Medlemmar är privata som standard | Medlemmar är offentliga som standard |
Bra för större komplexa föremål | Bra för små isolerade modeller |
Kan använda avfallsuppsamlare för minneshantering | Kan inte använda Garbage collector och därmed ingen minneshantering |
F # 8) Vad är skillnaden mellan den virtuella metoden och den abstrakta metoden?
Svar: Den virtuella metoden måste alltid ha en standardimplementering. Det kan dock åsidosättas i den härledda klassen, även om det inte är obligatoriskt. Det kan åsidosättas med hjälp av åsidosätta nyckelord.
En abstrakt metod har ingen implementering. Det finns i den abstrakta klassen. Det är obligatoriskt att den härledda klassen implementerar den abstrakta metoden. En åsidosätta nyckelordet är inte nödvändigt här men det kan användas.
F # 9) Förklara namnområden i C #.
Svar: De används för att organisera stora kodprojekt. 'System' är det mest använda namnområdet i C #. Vi kan skapa vårt eget namnområde och kan också använda ett namnområde i ett annat, som kallas Nested Namespaces.
De betecknas med nyckelordet 'namespace'.
F # 10) Vad är 'använder' uttalande i C #?
Svar: Nyckelordet 'Användning' anger att det specifika namnområdet används av programmet.
Till exempel, använder System
Här, Systemet är ett namnområde. Klasskonsolen definieras under System. Så vi kan använda console.writeline (“….”) Eller readline i vårt program.
F # 11) Förklara abstraktion.
Svar: Abstraktion är ett av OOP-koncepten. Den används för att endast visa de viktigaste funktionerna i klassen och dölja onödig information.
Låt oss ta ett exempel på en bil:
En förare av bilen bör känna till detaljerna om bilen som färg, namn, spegel, styrning, växel, broms, etc. Vad han inte behöver veta är en intern motor, avgassystem.
Så, abstraktion hjälper till att veta vad som är nödvändigt och dölja interna detaljer från omvärlden. Döljande av den interna informationen kan uppnås genom att deklarera sådana parametrar som Privat med hjälp av privat nyckelord.
F # 12) Förklara polymorfism?
Svar: Programmatiskt betyder polymorfism samma metod men olika implementeringar. Det är av två typer, kompileringstid och körtid.
- Sammanställningstidspolymorfism uppnås genom operatörsöverbelastning.
- Runtime polymorfism uppnås genom åsidosättande. Arv och virtuella funktioner används under polymorfism under körning.
Till exempel ,Om en klass har en metod Void Add () uppnås polymorfism genom att överbelasta metoden, det vill säga void Add (int a, int b), void Add (int add) är alla överbelastade metoder.
F # 13) Hur implementeras undantagshantering i C #?
Svar: Undantagshantering görs med hjälp av fyra nyckelord i C #:
- Prova : Innehåller ett kodblock för vilket ett undantag kommer att kontrolleras.
- fånga : Det är ett program som fångar ett undantag med hjälp av undantagshanteraren.
- till sist : Det är ett kodblock som skrivs för att köra oavsett om ett undantag fångas eller inte.
- Kasta : Kaster ett undantag när ett problem uppstår.
F # 14) Vad är C # I / O-klasser? Vilka är de vanligaste I / O-klasserna?
Svar: C # har System.IO namnområde, bestående av klasser som används för att utföra olika operationer på filer som att skapa, radera, öppna, stänga etc.
Några vanliga I / O-klasser är:
- Fil - Hjälper till att manipulera en fil.
- StreamWriter - Används för att skriva tecken till en ström.
- StreamReader - Används för att läsa karaktärer i en ström.
- StringWriter - Används för att läsa en strängbuffert.
- StringReader - Används för att skriva en strängbuffert.
- Väg - Används för att utföra operationer relaterade till sökinformationen.
F # 15) Vad är StreamReader / StreamWriter-klass?
Svar: StreamReader och StreamWriter är klasser av namespace System.IO. De används när vi vill läsa eller skriva charact90, läsarbaserad data, respektive.
Några av medlemmarna i StreamReader är: Stäng (), Läs (), Läslinje ().
Medlemmar i StreamWriter är: Stäng (), 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-------------------// } }
F # 16) Vad är en Destructor i C #?
Svar: Destructor används för att städa upp minnet och frigöra resurserna. Men i C # gör detta av skräpsamlaren på egen hand. System.GC.Collect () kallas internt för att städa upp. Men ibland kan det vara nödvändigt att implementera förstörare manuellt.
Till exempel:
~Car() { Console.writeline(“….”); }
F # 17) Vad är en abstrakt klass?
Svar: En abstraktklass är en klass som betecknas med abstrakt nyckelord och kan endast användas som en basklass. Denna klass ska alltid ärvas. En instans av själva klassen kan inte skapas. Om vi inte vill att något program ska skapa ett objekt i en klass kan sådana klasser göras abstrakta.
Någon metod i abstraktklassen har inte implementeringar i samma klass. Men de måste implementeras i barnklassen.
Till exempel:
abstract class AB1 { Public void Add(); } Class childClass : AB1 { childClass cs = new childClass (); int Sum = cs.Add(); }
Alla metoder i en abstrakt klass är implicit virtuella metoder. Därför bör det virtuella nyckelordet inte användas med några metoder i abstraktklassen.
F # 18) Vad är boxning och unboxing?
Svar: Att konvertera en värdetyp till referens typ kallas Boxning.
Till exempel:
int Värde1 - = 10;
//----Boxning------//
objekt boxedValue = Value1;
Explicit konvertering av samma referens typ (skapad genom boxning) tillbaka till värdetyp kallas Unboxing .
Till exempel:
// ———— UnBoxing —————— //
int UnBoxing = int (boxedValue);
vilken typ av test används för att verifiera att det nya systemet fungerar med faktiska data?
F # 19) Vad är skillnaden mellan Fortsätt och bryta uttalande?
Svar: Break-uttalande bryter slingan. Det gör att kontrollen av programmet går ut ur slingan. Fortsätt uttalande gör kontrollen av programmet att endast avsluta den aktuella iterationen. Det bryter inte slingan.
F # 20) Vad är skillnaden mellan slutligt och slutför block?
Svar: till sist block kallas efter körningen av try and catch block. Den används för undantagshantering. Oavsett om ett undantag fångas eller inte kommer detta kodblock att köras. Vanligtvis kommer detta block att ha en saneringskod.
finalize-metoden kallas strax före sopuppsamlingen. Den används för att utföra rensningsoperationer av Unmanaged-kod. Det anropas automatiskt när en given instans inte senare anropas.
Arrays And Strings
F # 21) Vad är en matris? Ge syntaxen för en enda och flerdimensionell matris?
Svar: En array används för att lagra flera variabler av samma typ. Det är en samling variabler som lagras på en angränsande minnesplats.
Till exempel:
dubbla siffror = nya dubbla (10);
int () poäng = ny int (4) {25,24,23,25};
En endimensionell matris är en linjär matris där variablerna lagras i en enda rad. Ovan exempel är en endimensionell matris.
Arrayer kan ha mer än en dimension. Flerdimensionella matriser kallas också rektangulära matriser.
Till exempel , int (,) siffror = new int (3,2) {{1,2}, {2,3}, {3,4}};
F # 22) Vad är en Jagged Array?
Svar: En Jagged array är en array vars element är arrays. Det kallas också som arrayen av matriser. Det kan vara antingen enstaka eller flera dimensioner.
int () jaggedArray = new int (4) ();
F # 23) Nämn några egenskaper hos Array.
Svar: Egenskaper hos en matris inkluderar:
- Längd: Hämtar det totala antalet element i en matris.
- IsFixedSize: Berättar om matrisen är fast i storlek eller inte.
- Är det bara att läsa : Berättar om matrisen är skrivskyddad eller inte.
F # 24) Vad är en Array Class?
Svar: En Array-klass är basklassen för alla matriser. Det ger många egenskaper och metoder. Det finns i namnsystemet.
F # 25) Vad är en sträng? Vilka egenskaper har en strängklass?
Svar: En sträng är en samling av rödingobjekt. Vi kan också deklarera strängvariabler i c #.
strängnamn = “C # Frågor”;
En strängklass i C # representerar en sträng. Strängklassens egenskaper är:
- Tecken få Char-objektet i den aktuella strängen.
- Längd får antalet objekt i den aktuella strängen.
F # 26) Vad är en Escape-sekvens? Namnge några String escape-sekvenser i C #.
Svar: En Escape-sekvens betecknas med en backslash (). Backslash indikerar att karaktären som följer den ska tolkas bokstavligt eller att det är ett specialtecken. En escape-sekvens betraktas som en enda karaktär.
Strängflykt sekvenser är som följer:
- n - Newline karaktär
- b - Backsteg
- \ - Backslash
- ’- Enkel offert
- '' - Dubbel offert
F # 27) Vad är reguljära uttryck? Söka i en sträng med hjälp av reguljära uttryck?
Svar: Regular expression är en mall som matchar en uppsättning ingångar. Mönstret kan bestå av operatorer, konstruktioner eller teckenbokstäver. Regex används för att analysera strängar och ersätta teckensträngen.
Till exempel:
* matchar föregående tecken noll eller flera gånger. Så, a * b regex motsvarar b, ab, aab, aaab och så vidare.
Söka efter en sträng med 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'); } } }
Ovanstående exempel söker efter 'Python' mot uppsättningen ingångar från språkmatrisen. Den använder Regex.IsMatch som returnerar true ifall mönstret finns i ingången. Mönstret kan vara vilket reguljärt uttryck som helst som representerar den ingång som vi vill matcha.
F # 28) Vilka är de grundläggande strängoperationerna? Förklara.
Svar: Några av de grundläggande strängåtgärderna är:
- Sammankoppla : Två strängar kan sammanfogas antingen med hjälp av en System.String.Concat eller med + -operatören.
- Ändra : Ersätt (a, b) används för att ersätta en sträng med en annan sträng. Trim () används för att trimma strängen i slutet eller i början.
- Jämföra : System.StringComparison () används för att jämföra två strängar, antingen en skiftlägeskänslig jämförelse eller inte skiftlägeskänslig. Tar huvudsakligen två parametrar, originalsträng och sträng som ska jämföras med.
- Sök : StartWith, EndsWith-metoder används för att söka i en viss sträng.
F # 29) Vad är analysering? Hur analyserar jag en datumsträng?
Svar: Parsing konverterar en sträng till en annan datatyp.
Till exempel:
strängtext = “500”;
int num = int.Parse (text);
500 är ett heltal. Så omvandlar metoden Parse strängen 500 till sin egen bastyp, dvs int.
Följ samma metod för att konvertera en DateTime-sträng.
string dateTime = “1 jan 2018”;
DateTime parsedValue = DateTime.Parse (dateTime);
Avancerade begrepp
F # 30) Vad är en delegat? Förklara.
Svar: En delegat är en variabel som innehåller referensen till en metod. Därför är det en funktionspekare eller referens typ. Alla delegater kommer från System.Delegate namespace. Både delegaten och metoden som den hänvisar till kan ha samma signatur.
- Förklara en delegat: offentlig delegat ogiltigt AddNumbers (int n);
Efter deklarationen från en delegat måste objektet skapas av delegaten med det nya nyckelordet.
AddNumbers an1 = nytt AddNumbers (nummer);
Delegaten tillhandahåller ett slags inkapsling av referensmetoden, som internt kommer att ringas när en delegat anropas.
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 exemplet ovan har vi en delegat myDel som tar ett heltal som parameter. Klassprogrammet har en metod med samma signatur som delegaten, kallad AddNumbers ().
Om det finns en annan metod som heter Start () som skapar ett objekt för delegaten, kan objektet tilldelas AddNumbers eftersom det har samma signatur som delegaten.
F # 31) Vad är händelser?
Svar: Händelser är användaråtgärder som genererar aviseringar till applikationen som den måste svara på. Användarens åtgärder kan vara musrörelser, tangenttryckning och så vidare.
Programmatiskt kallas en klass som ger upp en händelse en utgivare och en klass som svarar / tar emot händelsen kallas en abonnent. Händelsen bör ha minst en annan prenumerant, den händelsen höjs aldrig.
Delegater används för att förklara händelser.
ett exempel på ett funktionskrav är _________
Offentliga delegater ogiltiga PrintNumbers ();
Event PrintNumbers myEvent;
F # 32) Hur använder jag delegater med evenemang?
Svar: Delegater används för att lyfta evenemang och hantera dem. Alltid måste en delegat deklareras först och sedan deklareras händelserna.
Låt oss se ett exempel:
Tänk på en klass som heter Patient. Tänk på två andra klasser, försäkring och bank som kräver patientinformation om patienten från patientklassen. Här är försäkring och bank prenumeranter och patientklassen blir förläggare. Det utlöser dödshändelsen och de andra två klasserna ska ta emot händelsen.
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; } } }
F # 33) Vilka är de olika typerna av delegater?
Svar: Olika typer av delegater är:
- Enstaka delegat : En delegat som kan ringa en enda metod.
- Multicast-delegat : En delegat som kan ringa flera metoder. + och - operatörer används för att prenumerera respektive avsluta prenumerationen.
- Generisk delegat : Det kräver inte att en instans av delegaten ska definieras. Det är av tre typer, Action, Funcs och Predicate.
- Handling - I ovanstående exempel på delegater och händelser kan vi ersätta definitionen av delegat och händelse med hjälp av Action-nyckelordet. Handlingsdelegaten definierar en metod som kan kallas på argument men inte returnerar ett resultat
Offentlig delegat ogiltig deathInfo ();
Offentlig händelse deathInfo deathDate;
// Ersätt med åtgärd //
Offentlig händelse Action deathDate;
Åtgärd avser implicit en delegat.
-
- funktioner - En funk-delegat definierar en metod som kan kallas på argument och returnerar ett resultat.
Funktion myDel är samma som delegera bool myDel (int a, sträng b);
-
- Predikat - Definierar en metod som kan kallas på argument och returnerar alltid bool.
Predikera myDel är samma som delegera bool myDel (strängar);
F # 34) Vad betyder Multicast-delegater?
Svar: En delegat som pekar på mer än en metod kallas en Multicast-delegat. Multicasting uppnås genom att använda + och + = operatör.
Tänk på exemplet från Q # 32.
Det finns två prenumeranter på deathEvent, GetPatInfo och GetDeathDetails . Och därför har vi använt + = operator. Det betyder när myDel kallas, blir båda prenumeranterna uppringda. Delegaterna kommer att kallas i den ordning de läggs till.
F # 35) Förklara förlag och prenumeranter i evenemang.
Svar: Publisher är en klass som ansvarar för att publicera ett meddelande om olika typer av andra klasser. Meddelandet är inget annat än händelse som diskuteras i ovanstående frågor.
Från Exempel i Q # 32 är Class Patient förlagsklassen. Det genererar en händelse deathEvent , som tas emot av de andra klasserna.
Prenumeranter fångar meddelandet av den typ som de är intresserade av. Återigen från Exempel av Q # 32, klassförsäkring och bank är prenumeranter. De är intresserade av evenemang deathEvent av typ tomhet .
F # 36) Vad är synkrona och asynkrona operationer?
Svar: Synkronisering är ett sätt att skapa en trådsäker kod där endast en tråd kan komma åt resursen vid en given tidpunkt. Det asynkrona samtalet väntar på att metoden ska slutföras innan du fortsätter med programflödet.
Synkron programmering påverkar dåligt användargränssnittet när användaren försöker utföra tidskrävande åtgärder eftersom endast en tråd kommer att användas. I asynkron operation kommer metodanropet omedelbart att återvända så att programmet kan utföra andra operationer medan den anropade metoden slutför sitt arbete i vissa situationer.
I C # används nyckelord Async och Await för att uppnå asynkron programmering. Titta på Q # 43 för mer information om synkron programmering.
F # 37) Vad är reflektion i C #?
Svar: Reflektion är förmågan hos en kod att komma åt metadata för församlingen under körning. Ett program reflekterar över sig själv och använder metadata för att informera användaren eller ändra dess beteende. Metadata avser information om objekt, metoder.
Namnområdet System.Reflection innehåller metoder och klasser som hanterar informationen för alla laddade typer och metoder. Den används främst för Windows-applikationer, Till exempel , för att visa egenskaperna för en knapp i Windows-form.
MemberInfo-objektet för klassreflektionen används för att upptäcka attributen som är associerade med en klass.
Reflektion implementeras i två steg, först får vi typen av objektet och sedan använder vi typen för att identifiera medlemmar som metoder och egenskaper.
För att få en typ av klass kan vi helt enkelt använda,
Skriv mytype = myClass.GetType ();
När vi väl har en typ av klass kan den andra informationen om klassen lätt nås.
System.Reflection.MemberInfo Info = mytype.GetMethod (“AddNumbers”);
Ovanstående uttalande försöker hitta en metod med namn AddNumbers i klassen min klass .
F # 38) Vad är en generisk klass?
Svar: Generics eller Generic-klass används för att skapa klasser eller objekt som inte har någon specifik datatyp. Datatypen kan tilldelas under körning, det vill säga när den används i programmet.
Till exempel:
Så från ovanstående kod ser vi två jämförelsemetoder initialt, för att jämföra sträng och int.
I händelse av andra datatypsparameterjämförelser, istället för att skapa många överbelastade metoder, kan vi skapa en generisk klass och skicka en substitutdatatyp, dvs. T. Så, T fungerar som en datatyp tills den används specifikt i Main () -metoden .
F # 39) Förklara Get and Set Accessor-egenskaper?
Svar: Get and Set kallas Accessors. Dessa används av Egenskaper. Egenskapen tillhandahåller en mekanism för att läsa, skriva värdet av ett privat fält. För att komma åt det privata fältet används dessa accessorer.
Get Property används för att returnera värdet på en fastighet
Set Property accessor används för att ställa in värdet.
Användningen av get and set är enligt nedan:
F # 40) Vad är en tråd? Vad är multithreading?
Svar: En tråd är en uppsättning instruktioner som kan köras, vilket gör det möjligt för vårt program att utföra samtidig behandling. Samtidig bearbetning hjälper oss att göra mer än en operation åt gången. Som standard har C # bara en tråd. Men de andra trådarna kan skapas för att köra koden parallellt med den ursprungliga tråden.
Tråden har en livscykel. Det börjar när en trådklass skapas och avslutas efter körningen. System. Gängning är namnområdet som måste inkluderas för att skapa trådar och använda dess medlemmar.
Trådar skapas genom att utvidga trådklassen. Start() metoden används för att starta trådkörning.
//CallThread is the target method// ThreadStart methodThread = new ThreadStart(CallThread); Thread childThread = new Thread(methodThread); childThread.Start();
C # kan utföra mer än en uppgift åt gången. Detta görs genom att hantera olika processer med olika trådar. Detta kallas MultiThreading.
Det finns flera trådmetoder som används för att hantera flertrådade operationer:
Börja, sova, avbryta, avbryta, återuppta och gå med.
De flesta av dessa metoder är självförklarande.
F # 41) Nämn några egenskaper för trådklassen.
Svar: Få egenskaper för trådklassen är:
- Lever - innehåller värdet True när en tråd är aktiv.
- namn - Kan returnera namnet på tråden. Kan också ställa in ett namn för tråden.
- Prioritet - returnerar det prioriterade värdet för den uppgift som ställts in av operativsystemet.
- IsBackground - hämtar eller ställer in ett värde som anger om en tråd ska vara en bakgrundsprocess eller förgrund.
- ThreadState - beskriver trådtillståndet.
F # 42) Vilka är de olika tillstånden hos en tråd?
Svar: Olika tillstånd för en tråd är:
- Ostartad - Tråden skapas.
- Löpning - Tråd startar körning.
- WaitSleepGå med - Trådsamtal sover, samtal väntar på ett annat objekt och samtal går med i en annan tråd.
- Upphängd - Tråden har stängts av.
- Avbruten - Tråden är död men ändras inte till tillstånd stoppad.
- Stannade - Tråden har slutat.
F # 43) Vad är Async och Await?
Svar: Async- och Await-nyckelord används för att skapa asynkrona metoder i C.
Asynkron programmering innebär att processen körs oberoende av huvudprocesser eller andra processer.
Användningen av Async och Await är enligt nedan:
- Async-nyckelord används för metoddeklarationen.
- Räkningen är av en uppgift av typen int som kallar metoden CalculateCount ().
- Calculatecount () startar körningen och beräknar något.
- Självständigt arbete görs på min tråd och sedan väntar på att räkneuttalande nås.
- Om kalkylräkningen inte är klar återgår myMethod till sin anropsmetod, så huvudtråden blockeras inte.
- Om kalkylräkningen redan är klar har vi resultatet tillgängligt när kontrollen når räknaren väntar. Så nästa steg fortsätter i samma tråd. Det är dock inte situationen i ovanstående fall där fördröjningen på 1 sekund är inblandad.
F # 44) Vad är ett dödläge?
Svar: En dödläge är en situation där en process inte kan slutföra sin körning eftersom två eller flera processer väntar på varandra. Detta inträffar vanligtvis i flera trådar.
Här hålls en delad resurs av en process och en annan process väntar på att den första processen ska släppa den och tråden som håller det låsta objektet väntar på att en annan process ska slutföras.
Tänk på följande exempel:
- Utför uppgifter, åtkomst till objB och väntar i 1 sekund.
- Under tiden försöker PerformtaskB komma åt ObjA.
- Efter 1 sekund försöker PeformtaskA komma åt ObjA som är låst av PerformtaskB.
- PerformtaskB försöker komma åt ObjB som är låst av PerformtaskA.
Detta skapar Deadlock.
F # 45) Förklara L ock , Bildskärmar och Mutex Objekt i gängning.
Svar: Lås nyckelord säkerställer att endast en tråd kan komma in i ett visst avsnitt av koden vid varje given tidpunkt. I ovanstående Exempel , lock (ObjA) betyder att låset är placerat på ObjA tills denna process släpper det, ingen annan tråd kan komma åt ObjA.
Mutex är också som ett lås men det kan fungera över flera processer åt gången. WaitOne () används för att låsa och ReleaseMutex () används för att frigöra låset. Men Mutex är långsammare än lås eftersom det tar tid att skaffa och släppa det.
Monitor.Enter och Monitor.Exit redskap låser internt. ett lås är en genväg för bildskärmar. lock (objA) internt samtal.
Monitor.Enter(ObjA); try { } Finally {Monitor.Exit(ObjA));}
F # 46) Vad är ett tävlingsvillkor?
År: Race villkor uppstår när två trådar får åtkomst till samma resurs och försöker ändra den samtidigt. Den tråd som först kommer åt resursen kan inte förutsägas.
Om vi har två trådar, T1 och T2, och de försöker komma åt en delad resurs som heter X. Och om båda trådarna försöker skriva ett värde till X sparas det sista värdet som skrivs till X.
F # 47) Vad är trådpooling?
År: Trådpoolen är en samling trådar. Dessa trådar kan användas för att utföra uppgifter utan att störa primärtråden. När tråden har slutfört uppgiften återgår tråden till poolen.
System.Threading.ThreadPool namnområde har klasser som hanterar trådarna i poolen och dess operationer.
System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(SomeTask));
Ovanstående rad köar en uppgift. SomeTask-metoder bör ha en parameter av typen Object.
F # 48) Vad är serialisering?
Svar: Serialisering är en process för att konvertera kod till dess binära format. När den har konverterats till byte kan den enkelt lagras och skrivas till en disk eller någon annan sådan lagringsenhet. Serialiseringar är främst användbara när vi inte vill förlora kodens ursprungliga form och den kan hämtas när som helst i framtiden.
Alla klasser som är markerade med attributet (Serializable) konverteras till dess binära form.
Den omvända processen för att få tillbaka C # -koden från den binära formen kallas Deserialization.
För att Serialize ett objekt behöver vi att objektet ska serieiseras, en ström som kan innehålla det serialiserade objektet och namnområdet System.Runtime.Serialization kan innehålla klasser för serialisering.
F # 49) Vilka är typerna av serialisering?
Svar: De olika typerna av serialisering är:
- XML-serialisering - Det serialiserar alla offentliga egenskaper till XML-dokumentet. Eftersom data är i XML-format kan de enkelt läsas och manipuleras i olika format. Klasserna finns i System.sml.Serialization.
- TVÅL - Klasser finns i System.Runtime.Serialization. Liknar XML men producerar ett komplett SOAP-kompatibelt kuvert som kan användas av alla system som förstår SOAP.
- Binär serialisering - Tillåter att någon kod konverteras till dess binära form. Kan serieera och återställa offentliga och icke-offentliga fastigheter. Det är snabbare och tar mindre plats.
F # 50) Vad är en XSD-fil?
Svar: En XSD-fil står för XML Schema Definition. Det ger en struktur för XML-filen. Det betyder att det bestämmer de element som XML ska ha och i vilken ordning och vilka egenskaper som ska finnas. Utan en XSD-fil associerad med XML kan XML ha alla taggar, alla attribut och alla element.
Xsd.exe-verktyget konverterar filerna till XSD-format. Under serialisering av C # -kod konverteras klasserna till XSD-kompatibelt format av xsd.exe.
Slutsats
C # växer snabbt dag för dag och det spelar en viktig roll i Software Testing Industry.
Jag är säker på att den här artikeln kommer att göra din förberedelse för intervjun mycket enklare och ge dig en hel del kunskap om de flesta C # -ämnen.
Hoppas att du är redo att möta någon C # -intervju med säkerhet !!
Rekommenderad läsning
- Intervjufrågor och svar
- ETL Testing Intervju Frågor och svar
- Topp 50 mest populära CCNA-intervjufrågor och svar
- Topp 51 Bootstrap intervjufrågor och svar
- Topp 20+ .NET-intervjufrågor och svar
- Topp 50+ frågor och svar om databasintervjuer
- Några knepiga manuella testfrågor och svar
- 25 bästa intervjuer och svar på Agile Testing