top 50 c interview questions with answers
Veelgestelde basisvragen over C # -interview over programmeren en coderen:
C # is een programmeertaal die snel is gegroeid en ook veel wordt gebruikt. Er is veel vraag naar, veelzijdig en ondersteunt ook platformonafhankelijk.
Het wordt niet alleen gebruikt voor Windows, maar voor veel andere besturingssystemen. Daarom is het erg belangrijk om een goed begrip van deze taal te hebben om in een baan in de Software Testing-industrie terecht te komen.
Hieronder worden niet alleen de meest gestelde vragen over C # genoemd, maar ook enkele zeer belangrijke onderwerpen die moeten worden begrepen om zich te onderscheiden van de massa van de C # -populatie.
Omdat C # een enorm onderwerp is, heb ik dit onderwerp in drie delen onderverdeeld, omdat ik alle concepten gemakkelijk kan behandelen:
- Vragen over basisconcepten
- Vragen over arrays en strings
- Geavanceerde concepten
Dit artikel bevat een reeks top 50 C #-interviewvragen en -antwoorden die bijna alle belangrijke onderwerpen in eenvoudige bewoordingen behandelen, om u te helpen bij de voorbereiding op uw interview.
Wat je leert:
Meest populaire C # interviewvragen en antwoorden
Basisconcepten
V # 1) Wat is een object en een klasse?
Antwoord: Klasse is een inkapseling van eigenschappen en methoden die worden gebruikt om een real-time entiteit weer te geven. Het is een datastructuur die alle instanties samenbrengt in een enkele eenheid.
Object wordt gedefinieerd als een instantie van een klasse. Technisch gezien is het slechts een toegewezen geheugenblok dat kan worden opgeslagen in de vorm van variabelen, een array of een verzameling.
V # 2) Wat zijn de fundamentele OOP-concepten?
Antwoord: De vier fundamentele concepten van objectgeoriënteerd programmeren zijn:
- Inkapseling : Hier is de interne weergave van een object buiten de definitie van het object verborgen voor het zicht. Alleen de vereiste informatie is toegankelijk, terwijl de rest van de gegevensimplementatie verborgen is.
- Abstractie: Het is een proces waarbij het kritieke gedrag en de gegevens van een object worden geïdentificeerd en de irrelevante details worden geëlimineerd.
- Erfenis : Het is de mogelijkheid om nieuwe klassen te maken vanuit een andere klas. Het wordt gedaan door het gedrag van objecten in de bovenliggende klasse te openen, te wijzigen en uit te breiden.
- Polymorfisme : De naam betekent, één naam, vele vormen. Het wordt bereikt door meerdere methoden met dezelfde naam maar verschillende implementaties te hebben.
V # 3) Wat is beheerde en onbeheerde code?
Antwoord: Beheerde code is een code die wordt uitgevoerd door CLR (Common Language Runtime), d.w.z. alle applicatiecode is gebaseerd op .Net-platform. Het wordt als beheerd beschouwd vanwege het .Net-framework dat intern de garbagecollector gebruikt om het ongebruikte geheugen op te ruimen.
Onbeheerde code is elke code die wordt uitgevoerd door toepassingsruntime van een ander framework dan .Net. De toepassingsruntime zorgt voor geheugen, beveiliging en andere prestatiebewerkingen.
V # 4) Wat is een interface?
Antwoord: Interface is een klasse zonder implementatie. Het enige dat het bevat, is de declaratie van methoden, eigenschappen en gebeurtenissen.
V # 5) Wat zijn de verschillende soorten lessen in C #?
Antwoord: De verschillende soorten klassen in C # zijn:
- Gedeeltelijke klasse: Hiermee kunnen de leden worden verdeeld of gedeeld met meerdere .cs-bestanden. Het wordt aangeduid met het trefwoord Gedeeltelijk.
- Verzegelde klasse: Het is een klasse die niet kan worden geërfd. Om toegang te krijgen tot de leden van een verzegelde klasse, moeten we het object van de klasse maken. Het wordt aangeduid met het trefwoord Verzegeld
- Abstracte klasse : Het is een klasse waarvan het object niet kan worden geïnstantieerd. De klasse kan alleen worden overgenomen. Het moet ten minste één methode bevatten. Het wordt aangeduid met het trefwoord abstract
- Statische klasse : Het is een klasse die overerving niet toestaat. De leden van de klas zijn ook statisch. Het wordt aangeduid met het trefwoord statisch Dit sleutelwoord vertelt de compiler om te controleren op eventuele onbedoelde instanties van de statische klasse.
V # 6) Leg de compilatie van code uit in C #.
Antwoord: Code-compilatie in C # omvat de volgende vier stappen:
- Compileren van de broncode in beheerde code door C # -compiler.
- Het combineren van de nieuw gemaakte code in assembly's.
- Laden van de Common Language Runtime (CLR).
- Het uitvoeren van de montage door CLR.
Q # 7) Wat zijn de verschillen tussen een klasse en een structuur?
Antwoord: Hieronder staan de verschillen tussen een Class en een Struct:
Klasse | Struct |
---|---|
Ondersteunt erfenis | Ondersteunt geen Inheritance |
Klasse is Pass by reference (referentietype) | Struct is Pass by Copy (waardetype) |
Leden zijn standaard privé | Leden zijn standaard openbaar |
Goed voor grotere complexe objecten | Goed voor kleine geïsoleerde modellen |
Kan afvalverzamelaar gebruiken voor geheugenbeheer | Kan Garbage Collector niet gebruiken en daarom geen geheugenbeheer |
V # 8) Wat is het verschil tussen de virtuele methode en de abstracte methode?
Antwoord: De virtuele methode moet altijd een standaardimplementatie hebben. Het kan echter worden overschreven in de afgeleide klasse, hoewel het niet verplicht is. Het kan worden overschreven met de overschrijven trefwoord.
Een abstracte methode heeft geen implementatie. Het bevindt zich in de abstracte klasse. Het is verplicht dat de afgeleide klasse de abstracte methode implementeert. Een overschrijven trefwoord is hier niet nodig, hoewel het wel kan worden gebruikt.
V # 9) Leg naamruimten uit in C #.
Antwoord: Ze worden gebruikt om grote codeprojecten te organiseren. 'System' is de meest gebruikte naamruimte in C #. We kunnen onze eigen naamruimte maken en kunnen ook de ene naamruimte in een andere gebruiken, die geneste naamruimten wordt genoemd.
Ze worden aangeduid met het trefwoord 'namespace'.
V # 10) Wat is de instructie ‘gebruiken’ in C #?
Antwoord: Het sleutelwoord 'using' geeft aan dat de specifieke naamruimte wordt gebruikt door het programma.
Bijvoorbeeld, met behulp van System
Hier, Systeem is een naamruimte. De klasse Console wordt gedefinieerd onder Systeem. We kunnen dus de console.writeline ('….') Of readline in ons programma gebruiken.
Vraag 11) Leg abstractie uit.
Antwoord: Abstractie is een van de OOP-concepten. Het wordt gebruikt om alleen de essentiële kenmerken van de klas weer te geven en onnodige informatie te verbergen.
Laten we een voorbeeld nemen van een auto:
Een bestuurder van de auto moet de details over de auto kennen, zoals kleur, naam, spiegel, stuurinrichting, versnelling, rem, etc. Wat hij niet hoeft te weten is een interne motor, uitlaatsysteem.
Abstraction helpt dus om te weten wat nodig is en om de interne details voor de buitenwereld te verbergen. Het verbergen van de interne informatie kan worden bereikt door parameters zoals Privé te declareren met behulp van de privaat trefwoord.
Vraag 12) Polymorfisme uitleggen?
Antwoord: Programmatisch betekent polymorfisme dezelfde methode, maar verschillende implementaties. Het is van 2 soorten, compilatietijd en runtime.
- Compilatietijd polymorfisme wordt bereikt door overbelasting van de operator.
- Runtime polymorfisme wordt bereikt door te overschrijven. Overerving en virtuele functies worden gebruikt tijdens Runtime-polymorfisme.
Bijvoorbeeld Als een klasse een methode Void Add () heeft, wordt polymorfisme bereikt door de methode te overbelasten, dat wil zeggen void Add (int a, int b), void Add (int add) zijn allemaal overbelaste methoden.
V # 13) Hoe wordt het afhandelen van uitzonderingen geïmplementeerd in C #?
Antwoord: Afhandeling van uitzonderingen gebeurt met behulp van vier trefwoorden in C #:
- proberen : Bevat een codeblok waarvoor een uitzondering wordt gecontroleerd.
- vangst : Het is een programma dat een exception opvangt met behulp van de exception handler.
- Tenslotte : Het is een codeblok dat is geschreven om uit te voeren, ongeacht of een uitzondering wordt onderschept of niet.
- Werpen : Genereert een uitzondering wanneer zich een probleem voordoet.
V # 14) Wat zijn C # I / O-klassen? Wat zijn de meest gebruikte I / O-klassen?
Antwoord: C # heeft System.IO-naamruimte, bestaande uit klassen die worden gebruikt om verschillende bewerkingen op bestanden uit te voeren, zoals maken, verwijderen, openen, sluiten, enz.
Enkele veelgebruikte I / O-klassen zijn:
- het dossier - Helpt bij het manipuleren van een bestand.
- StreamWriter - Gebruikt om karakters naar een stream te schrijven.
- StreamReader - Wordt gebruikt voor het lezen van karakters naar een stream.
- StringWriter - Gebruikt voor het lezen van een stringbuffer.
- StringReader - Gebruikt voor het schrijven van een stringbuffer.
- Pad - Wordt gebruikt voor het uitvoeren van bewerkingen met betrekking tot de padinformatie.
Q # 15) Wat is de StreamReader / StreamWriter-klasse?
Antwoord: StreamReader en StreamWriter zijn klassen van naamruimte System.IO. Ze worden gebruikt wanneer we respectievelijk charact90, Reader-gebaseerde gegevens willen lezen of schrijven.
Enkele van de leden van StreamReader zijn: Close (), Read (), Readline ().
Leden van StreamWriter zijn: Close (), Write (), Writeline ().
V # 16) Wat is een destructor in C #?
Antwoord: Destructor wordt gebruikt om het geheugen op te schonen en de bronnen vrij te maken. Maar in C # wordt dit door de garbage collector alleen gedaan. System.GC.Collect () wordt intern aangeroepen voor opschonen. Maar soms kan het nodig zijn om destructors handmatig te implementeren.
Bijvoorbeeld:
V # 17) Wat is een abstracte les?
Antwoord: Een abstracte klasse is een klasse die wordt aangeduid met een abstract sleutelwoord en die alleen als een basisklasse kan worden gebruikt. Deze klasse moet altijd worden geërfd. Een instantie van de klasse zelf kan niet worden gemaakt. Als we niet willen dat een programma een object van een klasse maakt, kunnen dergelijke klassen abstract worden gemaakt.
Elke methode in de abstracte klasse heeft geen implementaties in dezelfde klasse. Maar ze moeten worden geïmplementeerd in de kinderklasse.
Bijvoorbeeld:
Alle methoden in een abstracte klasse zijn impliciet virtuele methoden. Daarom mag het virtuele sleutelwoord niet worden gebruikt met methoden in de abstracte klasse.
V # 18) Wat zijn boksen en uitpakken?
Antwoord: Het omzetten van een waardetype naar een referentietype wordt Boxing genoemd.
Bijvoorbeeld:
int Waarde1 - = 10;
// ———— Boksen —————— //
object boxedValue = Waarde1;
Expliciete conversie van hetzelfde referentietype (gecreëerd door boksen) terug naar waardetype wordt aangeroepen Uitpakken
Bijvoorbeeld:
// ———— UnBoxing —————— //
int UnBoxing = int (boxedValue);
wat is de beste gratis firewall
V # 19) Wat is het verschil tussen Continue en Break Statement?
Antwoord: Break-instructie doorbreekt de lus. Het zorgt ervoor dat de besturing van het programma de lus verlaat. Doorgaan-instructie zorgt ervoor dat de besturing van het programma alleen de huidige iteratie afsluit. Het doorbreekt de lus niet.
V # 20) Wat is het verschil tussen een blok beëindigen en een blok voltooien?
Antwoord: Tenslotte block wordt aangeroepen na de uitvoering van het try and catch-blok. Het wordt gebruikt voor het afhandelen van uitzonderingen. Ongeacht of een uitzondering wordt onderschept of niet, dit codeblok wordt uitgevoerd. Meestal heeft dit blok een opschoningscode.
finalize-methode wordt aangeroepen net voor garbage collection. Het wordt gebruikt voor het opschonen van onbeheerde code. Het wordt automatisch aangeroepen wanneer een bepaald exemplaar daarna niet wordt aangeroepen.
Arrays en strings
V # 21) Wat is een array? Geef de syntaxis voor een enkele en multidimensionale array?
Antwoord: Een array wordt gebruikt om meerdere variabelen van hetzelfde type op te slaan. Het is een verzameling variabelen die zijn opgeslagen op een aangrenzende geheugenlocatie.
Bijvoorbeeld:
dubbele cijfers = nieuwe dubbele (10);
int () score = nieuwe int (4) {25,24,23,25};
Een eendimensionale array is een lineaire array waarin de variabelen in een enkele rij worden opgeslagen. Bovenstaand voorbeeld is een eendimensionale array.
Arrays kunnen meer dan één dimensie hebben. Multidimensionale arrays worden ook wel rechthoekige arrays genoemd.
Bijvoorbeeld , int (,) getallen = nieuwe int (3,2) {{1,2}, {2,3}, {3,4}};
V # 22) Wat is een gekartelde array?
Antwoord: Een Jagged-array is een array waarvan de elementen arrays zijn. Het wordt ook wel de array van arrays genoemd. Het kan een enkele of meerdere dimensies hebben.
int () jaggedArray = nieuwe int (4) ();
V # 23) Noem enkele eigenschappen van Array.
Antwoord: Eigenschappen van een array zijn onder meer:
- Lengte: Haalt het totale aantal elementen in een array op.
- Grootte: Geeft aan of de array al dan niet een vaste grootte heeft.
- IsReadOnly : Geeft aan of de array al dan niet alleen-lezen is.
V # 24) Wat is een matrixklasse?
Antwoord: Een Array-klasse is de basisklasse voor alle arrays. Het biedt veel eigenschappen en methoden. Het is aanwezig in het naamruimtesysteem.
Q # 25) Wat is een string? Wat zijn de eigenschappen van een String Class?
Antwoord: Een String is een verzameling char-objecten. We kunnen ook stringvariabelen declareren in c #.
string name = 'C # Vragen';
Een stringklasse in C # vertegenwoordigt een string. De eigenschappen van de stringklasse zijn:
- Tekens verkrijg het Char-object in de huidige String.
- Lengte haalt het aantal objecten in de huidige String op.
V # 26) Wat is een ontsnappingsreeks? Noem enkele String-escape-reeksen in C #.
Antwoord: Een Escape-reeks wordt aangegeven met een backslash (). De backslash geeft aan dat het teken dat erop volgt letterlijk moet worden geïnterpreteerd of dat het een speciaal teken is. Een escape-reeks wordt als een enkel teken beschouwd.
String-escape-reeksen zijn als volgt:
- n - Newline-teken
- b - Backspace
- \ - Backslash
- ' - Alleenstaande citaat
- '' - Dubbele aanhalingstekens
V # 27) Wat zijn reguliere expressies? Zoekt u een string met behulp van reguliere expressies?
Antwoord: Reguliere expressie is een sjabloon die overeenkomt met een set invoer. Het patroon kan bestaan uit operatoren, constructies of letterlijke tekens. Regex wordt gebruikt voor het parseren van tekenreeksen en het vervangen van de tekenreeks.
Bijvoorbeeld:
* komt nul of meer keer overeen met het voorgaande teken. Dus a * b regex is gelijk aan b, ab, aab, aaab enzovoort.
Een string zoeken met Regex:
In het bovenstaande voorbeeld wordt naar 'Python' gezocht tegen de set invoer uit de taalmatrix. Het gebruikt Regex.IsMatch die true retourneert in het geval dat het patroon in de invoer wordt gevonden. Het patroon kan elke reguliere expressie zijn die de invoer vertegenwoordigt die we willen matchen.
V # 28) Wat zijn de basis stringbewerkingen? Leg uit.
Antwoord: Enkele van de basistringbewerkingen zijn:
- Samenvoegen : Twee strings kunnen worden samengevoegd met behulp van een System.String.Concat of met de operator +.
- Aanpassen : Replace (a, b) wordt gebruikt om een string te vervangen door een andere string. Trim () wordt gebruikt om de string aan het einde of aan het begin bij te snijden.
- Vergelijken : System.StringComparison () wordt gebruikt om twee tekenreeksen te vergelijken, ofwel een hoofdlettergevoelige vergelijking of niet hoofdlettergevoelig. Heeft voornamelijk twee parameters nodig, originele string en string om mee te vergelijken.
- Zoeken : StartWith, EndsWith methoden worden gebruikt om een bepaalde string te doorzoeken.
V # 29) Wat is parseren? Hoe een datum / tijd-string te parseren?
Antwoord: Parsing converteert een string naar een ander gegevenstype.
Bijvoorbeeld:
string text = '500';
int num = int.Parse (tekst);
500 is een geheel getal. Dus de Parse-methode converteert de string 500 naar zijn eigen basistype, d.w.z. int.
Volg dezelfde methode om een DateTime-tekenreeks te converteren.
string dateTime = '1 jan. 2018';
DateTime parsedValue = DateTime.Parse (dateTime);
Geavanceerde concepten
V # 30) Wat is een afgevaardigde? Leg uit.
Antwoord: Een Delegate is een variabele die de verwijzing naar een methode bevat. Daarom is het een functieaanwijzer of referentietype. Alle afgevaardigden zijn afgeleid van de naamruimte System.Delegate. Zowel Delegate als de methode waarnaar het verwijst, kunnen dezelfde handtekening hebben.
- Afgevaardigde declareren: openbare afgevaardigde ongeldig AddNumbers (int n);
Na de verklaring van een gedelegeerde, moet het object door de gedelegeerde worden gemaakt met behulp van het nieuwe trefwoord.
AddNumbers an1 = nieuwe AddNumbers (nummer);
De gedelegeerde geeft een soort inkapseling aan de referentiemethode, die intern wordt aangeroepen wanneer een gedelegeerde wordt aangeroepen.
In het bovenstaande voorbeeld hebben we een gedelegeerde myDel die een integerwaarde als parameter heeft. Class Program heeft een methode met dezelfde handtekening als de gedelegeerde, genaamd AddNumbers ().
Als er een andere methode is genaamd Start () die een object van de gedelegeerde maakt, dan kan het object worden toegewezen aan AddNumbers omdat het dezelfde handtekening heeft als die van de gedelegeerde.
V # 31) Wat zijn evenementen?
Antwoord: Gebeurtenissen zijn gebruikersacties die meldingen genereren voor de toepassing waarop deze moet reageren. De gebruikersacties kunnen muisbewegingen, toetsaanslagen enzovoort zijn.
Programmatisch wordt een klasse die een gebeurtenis oproept een publisher genoemd en een klasse die op de gebeurtenis reageert / ontvangt, wordt een abonnee genoemd. Evenement moet ten minste één abonnee hebben, anders wordt dat evenement nooit gegenereerd.
Afgevaardigden worden gebruikt om gebeurtenissen aan te geven.
Openbare afgevaardigde geeft PrintNumbers ();
Gebeurtenis Afdruknummers myEvent;
V # 32) Hoe gebruik je afgevaardigden met evenementen?
Antwoord: Afgevaardigden worden gebruikt om evenementen aan de orde te stellen en af te handelen. Er moet altijd eerst een afgevaardigde worden gedeclareerd en daarna worden de gebeurtenissen gedeclareerd.
Laten we een voorbeeld bekijken:
Overweeg een klas genaamd Patient. Overweeg twee andere klassen, Verzekering en Bank die de overlijdensinformatie van de patiënt uit de patiëntenklasse nodig hebben. Hier zijn de verzekering en de bank de abonnees en wordt de patiëntenklasse de uitgever. Het triggert de overlijdensgebeurtenis en de andere twee klassen zouden de gebeurtenis moeten ontvangen.
Q # 33) Wat zijn de verschillende soorten afgevaardigden?
Antwoord: verschillende soorten afgevaardigden zijn:
- Enkele afgevaardigde : Een afgevaardigde die een enkele methode kan aanroepen.
- Multicast-afgevaardigde : Een afgevaardigde die meerdere methoden kan aanroepen. + en - operators worden gebruikt om respectievelijk in en uit te schrijven.
- Generieke afgevaardigde : Er hoeft geen instantie van de gedelegeerde te worden gedefinieerd. Er zijn drie soorten: actie, functies en predikaat.
- Actie - In het bovenstaande voorbeeld van afgevaardigden en evenementen kunnen we de definitie van afgevaardigde en evenement vervangen door het trefwoord Action. De afgevaardigde van de actie definieert een methode die kan worden aangeroepen voor argumenten, maar geen resultaat retourneert
Openbare afgevaardigde ongeldig deathInfo ();
Openbaar evenement deathInfo deathDate;
// Vervangen door actie //
Publiek evenement Actie deathDate;
Actie verwijst impliciet naar een gedelegeerde.
-
- functies - Een Func-gedelegeerde definieert een methode die kan worden aangeroepen voor argumenten en retourneert een resultaat.
Func myDel is hetzelfde als delegeren bool myDel (int a, string b);
-
- Predikaat - Definieert een methode die kan worden aangeroepen voor argumenten en geeft altijd de bool terug.
Predikaat myDel is hetzelfde als delegeren bool myDel (string s);
Q # 34) Wat betekenen multicast-afgevaardigden?
Antwoord: Een gedelegeerde die naar meer dan één methode verwijst, wordt een multicast-gedelegeerde genoemd. Multicasting wordt bereikt door de + en + = operator te gebruiken.
Beschouw het voorbeeld uit vraag 32.
Er zijn twee abonnees voor deathEvent, GetPatInfo , en GetDeathDetails En daarom hebben we de operator + = gebruikt. Het betekent wanneer de myDel wordt gebeld, worden beide abonnees gebeld. De afgevaardigden worden gebeld in de volgorde waarin ze zijn toegevoegd.
V # 35) Leg uitgevers en abonnees uit in evenementen.
Antwoord: Publisher is een klasse die verantwoordelijk is voor het publiceren van een bericht van verschillende soorten andere klassen. De boodschap is niets anders dan Gebeurtenis zoals besproken in de bovenstaande vragen.
Van de Voorbeeld in Q # 32 is Class Patient de Publisher-klasse. Het genereert een evenement deathEvent , die wordt ontvangen door de andere klassen.
Abonnees vangen het bericht op van het type waarin ze geïnteresseerd zijn. Nogmaals, van de Voorbeeld van Q # 32, Class Insurance en Bank zijn abonnees. Ze zijn geïnteresseerd in evenementen deathEvent van het type leegte
V # 36) Wat zijn synchrone en asynchrone bewerkingen?
Antwoord: Synchronisatie is een manier om een threadveilige code te maken waarbij slechts één thread tegelijk toegang heeft tot de bron. De asynchrone aanroep wacht tot de methode is voltooid voordat het verdergaat met de programmastroom.
Synchroon programmeren heeft een grote invloed op de UI-bewerkingen wanneer de gebruiker probeert om tijdrovende bewerkingen uit te voeren, aangezien er slechts één thread wordt gebruikt. In asynchrone bewerking keert de methodeaanroep onmiddellijk terug, zodat het programma andere bewerkingen kan uitvoeren terwijl de aangeroepen methode in bepaalde situaties zijn werk voltooit.
In C # worden de trefwoorden Async en Await gebruikt om asynchroon te programmeren. Kijk naar vraag 43 voor meer details over synchroon programmeren.
V # 37) Wat is reflectie in C #?
Antwoord: Reflectie is het vermogen van een code om tijdens runtime toegang te krijgen tot de metadata van de assembly. Een programma reflecteert op zichzelf en gebruikt de metadata om de gebruiker te informeren of zijn gedrag aan te passen. Metadata verwijst naar informatie over objecten, methoden.
De naamruimte System.Reflection bevat methoden en klassen die de informatie van alle geladen typen en methoden beheren. Het wordt voornamelijk gebruikt voor Windows-toepassingen, Bijvoorbeeld , om de eigenschappen van een knop in een Windows-formulier te bekijken.
Het MemberInfo-object van de klassenreflectie wordt gebruikt om de attributen te ontdekken die aan een klasse zijn gekoppeld.
Reflectie wordt in twee stappen geïmplementeerd, eerst krijgen we het type van het object en vervolgens gebruiken we het type om leden te identificeren, zoals methoden en eigenschappen.
Om een type klas te krijgen, kunnen we eenvoudig gebruiken,
Typ mytype = myClass.GetType ();
Zodra we een type klas hebben, is de andere informatie over de klas gemakkelijk toegankelijk.
System.Reflection.MemberInfo Info = mytype.GetMethod ('Nummers toevoegen');
Bovenstaande instructie probeert een methode met naam te vinden Voeg nummers toe in de klas mijn klas
V # 38) Wat is een generieke klasse?
Antwoord: Generics of Generic class wordt gebruikt om klassen of objecten te maken die geen specifiek gegevenstype hebben. Het gegevenstype kan tijdens runtime worden toegewezen, d.w.z. wanneer het in het programma wordt gebruikt.
Bijvoorbeeld:
Dus, van de bovenstaande code, zien we aanvankelijk 2 vergelijkingsmethoden om string en int te vergelijken.
In het geval van andere datatypeparametervergelijkingen, in plaats van veel overbelaste methoden te maken, kunnen we een generieke klasse maken en een vervangend gegevenstype doorgeven, dwz T.Dus T fungeert als een datatype totdat het specifiek wordt gebruikt in de Main () - methode .
V # 39) De eigenschappen van de Accessor ophalen en instellen?
Antwoord: Get en Set worden Accessors genoemd. Deze worden gebruikt door Properties. De eigenschap biedt een mechanisme om de waarde van een privéveld te lezen en te schrijven. Voor toegang tot dat privéveld worden deze accessors gebruikt.
Get Property wordt gebruikt om de waarde van een eigenschap te retourneren
Set Property accessor wordt gebruikt om de waarde in te stellen.
Het gebruik van get en set is als volgt:
V # 40) Wat is een discussie? Wat is multithreading?
Antwoord: Een thread is een reeks instructies die kunnen worden uitgevoerd, waardoor ons programma gelijktijdige verwerking kan uitvoeren. Gelijktijdige verwerking helpt ons om meer dan één bewerking tegelijk uit te voeren. Standaard heeft C # slechts één thread. Maar de andere threads kunnen worden gemaakt om de code parallel met de originele thread uit te voeren.
Draad heeft een levenscyclus. Het begint wanneer een threadklasse wordt gemaakt en wordt beëindigd na de uitvoering. System.Threading is de naamruimte die moet worden opgenomen om threads te maken en zijn leden te gebruiken.
Threads worden gemaakt door de Thread Class uit te breiden. Begin() methode wordt gebruikt om de uitvoering van de thread te starten.
C # kan meer dan één taak tegelijk uitvoeren. Dit wordt gedaan door verschillende processen door verschillende threads af te handelen. Dit heet MultiThreading.
Er zijn verschillende threadmethoden die worden gebruikt om bewerkingen met meerdere threads af te handelen:
Starten, slapen, afbreken, onderbreken, hervatten en deelnemen.
De meeste van deze methoden spreken voor zich.
V # 41) Noem enkele eigenschappen van Thread Class.
Antwoord: Er zijn maar weinig eigenschappen van de threadklasse:
- Is levend - bevat waarde True als een thread actief is.
- Naam - Kan de naam van de thread retourneren. Kan ook een naam voor de thread instellen.
- Prioriteit - geeft de prioriteitswaarde van de taak terug die is ingesteld door het besturingssysteem.
- IsBackground - krijgt of stelt een waarde in die aangeeft of een thread een achtergrondproces of voorgrond moet zijn.
- ThreadState - beschrijft de threadstatus.
Q # 42) Wat zijn de verschillende toestanden van een thread?
Antwoord: verschillende statussen van een thread zijn:
- Niet begonnen - Draad is gemaakt.
- Rennen - Thread begint met de uitvoering.
- WaitSleepJoin - Thread roept slaap, oproepen wachten op een ander object en oproepen komen samen op een andere thread.
- Geschorst - Draad is opgeschort.
- Afgebroken - De draad is dood, maar is niet gewijzigd in de status gestopt.
- Gestopt - De draad is gestopt.
Q # 43) Wat zijn Async en Await?
beste software om hdd naar ssd te klonen
Antwoord: De sleutelwoorden Async en Await worden gebruikt om asynchrone methoden in C.
Asynchroon programmeren betekent dat het proces onafhankelijk van hoofd- of andere processen verloopt.
Het gebruik van Async en Await is zoals hieronder weergegeven:
- Het async-sleutelwoord wordt gebruikt voor de methode-declaratie.
- De telling is van een taak van het type int die de methode CalculateCount () aanroept.
- Calculatecount () start de uitvoering en berekent iets.
- Onafhankelijk werk wordt gedaan aan mijn thread en dan wachten tot de telverklaring is bereikt.
- Als de Calculatecount niet is voltooid, keert myMethod terug naar de aanroepmethode, zodat de hoofdthread niet wordt geblokkeerd.
- Als de Calculatecount al klaar is, hebben we het resultaat beschikbaar wanneer de controle de wachttijd bereikt. Dus de volgende stap gaat door in dezelfde thread. Het is echter niet de situatie in het bovenstaande geval waar het om een vertraging van 1 seconde gaat.
V # 44) Wat is een deadlock?
Antwoord: Een deadlock is een situatie waarin een proces zijn uitvoering niet kan voltooien omdat twee of meer processen wachten tot elkaar zijn voltooid. Dit komt meestal voor bij multi-threading.
Hier wordt een gedeelde bron vastgehouden door een proces en een ander proces wacht tot het eerste proces het vrijgeeft en de thread met het vergrendelde item wacht tot een ander proces is voltooid.
Beschouw het onderstaande voorbeeld:
- Voer taken uit, opent objB en wacht 1 seconde.
- Ondertussen probeert PerformtaskB toegang te krijgen tot ObjA.
- Na 1 seconde probeert PeformtaskA toegang te krijgen tot ObjA dat is vergrendeld door PerformtaskB.
- PerformtaskB probeert toegang te krijgen tot ObjB dat is vergrendeld door PerformtaskA.
Dit creëert een deadlock.
Vraag 45) Leg L uit ok Monitoren , en Mutex Object in draadsnijden.
Antwoord: Sleutelwoord vergrendelen zorgt ervoor dat slechts één thread tegelijkertijd een bepaald gedeelte van de code kan invoeren. In bovenstaande Voorbeeld , lock (ObjA) betekent dat het slot op ObjA wordt geplaatst totdat dit proces het vrijgeeft, geen enkele andere thread heeft toegang tot ObjA.
Mutex is ook als een slot, maar het kan in meerdere processen tegelijk werken. WaitOne () wordt gebruikt om te vergrendelen en ReleaseMutex () wordt gebruikt om de vergrendeling op te heffen. Maar Mutex is langzamer dan vergrendelen, omdat het tijd kost om het te verkrijgen en vrij te geven.
Monitor.Enter en Monitor.Exit implementeert interne vergrendeling. een slot is een snelkoppeling voor monitoren. lock (objA) intern oproepen.
V # 46) Wat is een raceconditie?
Jaren: Race-conditie treedt op wanneer twee threads toegang hebben tot dezelfde bron en deze tegelijkertijd proberen te wijzigen. De thread die als eerste toegang kan krijgen tot de bron, kan niet worden voorspeld.
Als we twee threads hebben, T1 en T2, en ze proberen toegang te krijgen tot een gedeelde bron genaamd X. En als beide threads proberen een waarde naar X te schrijven, wordt de laatste waarde die naar X is geschreven, opgeslagen.
Q # 47) Wat is Thread Pooling?
Jaren: Thread pool is een verzameling threads. Deze threads kunnen worden gebruikt om taken uit te voeren zonder de primaire thread te verstoren. Zodra de thread de taak heeft voltooid, keert de thread terug naar de pool.
De naamruimte System.Threading.ThreadPool heeft klassen die de threads in de pool en de bijbehorende bewerkingen beheren.
De bovenstaande regel zet een taak in de wachtrij. SommigeTask-methoden moeten een parameter van het type Object hebben.
V # 48) Wat is serialisering?
Antwoord: Serialisatie is een proces waarbij code naar het binaire formaat wordt geconverteerd. Als het eenmaal is geconverteerd naar bytes, kan het eenvoudig worden opgeslagen en geschreven naar een schijf of dergelijke opslagapparaten. Serialisaties zijn vooral handig als we de originele vorm van de code niet willen verliezen en deze op elk moment in de toekomst kan worden opgehaald.
Elke klasse die is gemarkeerd met het attribuut (Serializable) zal worden geconverteerd naar zijn binaire vorm.
Het omgekeerde proces van het terughalen van de C # -code uit de binaire vorm wordt deserialisatie genoemd.
Om een object te serialiseren, hebben we het te serialiseren object nodig, een stream die het geserialiseerde object kan bevatten en de naamruimte System.Runtime.Serialization kan klassen voor serialisatie bevatten.
V # 49) Wat zijn de soorten serialisering?
Antwoord: De verschillende soorten serialisering zijn:
- XML-serialisering - Het serialiseert alle openbare eigenschappen naar het XML-document. Omdat de gegevens in XML-indeling zijn, kunnen ze gemakkelijk in verschillende indelingen worden gelezen en gemanipuleerd. De klassen bevinden zich in System.sml.Serialization.
- ZEEP - Klassen bevinden zich in System.Runtime.Serialization. Vergelijkbaar met XML maar produceert een complete SOAP-compatibele envelop die kan worden gebruikt door elk systeem dat SOAP begrijpt.
- Binaire serialisatie - Hiermee kan elke code worden geconverteerd naar zijn binaire vorm. Kan openbare en niet-openbare eigendommen serialiseren en herstellen. Het is sneller en neemt minder ruimte in beslag.
V # 50) Wat is een XSD-bestand?
Antwoord: Een XSD-bestand staat voor XML Schema Definition. Het geeft een structuur voor het XML-bestand. Het betekent dat het bepaalt welke elementen de XML moet hebben en in welke volgorde en welke eigenschappen aanwezig moeten zijn. Zonder een XSD-bestand dat aan XML is gekoppeld, kan de XML tags, attributen en elementen bevatten.
Xsd.exe-tool converteert de bestanden naar het XSD-formaat. Tijdens serialisatie van C # -code worden de klassen door xsd.exe geconverteerd naar een XSD-compatibel formaat.
Gevolgtrekking
C # groeit met de dag snel en speelt een grote rol in de Software Testing Industry.
Ik ben er zeker van dat dit artikel je voorbereiding op het interview veel gemakkelijker zal maken en je behoorlijk wat kennis zal geven van de meeste C # -onderwerpen.
Ik hoop dat je klaar bent om elk C # -interview met vertrouwen tegemoet te treden !!
Aanbevolen literatuur
- Interview vragen en antwoorden
- Vragen en antwoorden over ETL-tests
- Top 50 meest populaire CCNA interviewvragen en antwoorden
- Top 51 Bootstrap-interviewvragen en antwoorden
- Top 20+ .NET interviewvragen en antwoorden
- Top 50+ Database Interview Vragen en antwoorden
- Enkele lastige vragen en antwoorden voor handmatig testen
- 25 Beste Agile Testing Interview Vragen en Antwoorden