De 50 bästa C#-intervjufrågorna och -svaren (2024)

C#-intervjufrågor och svar för nybörjare och 2/3/5/10 års erfarenhet

Här är C#-intervjufrågor och svar för fräschare såväl som 5 eller 10 års erfarna kandidater för att få sitt drömjobb.

1) Vad är C#?

C# är ett objektorienterat, typsäkert och hanterat språk som kompileras av .Net framework för att generera Microsoft Mellanspråk.

👉 Gratis PDF-nedladdning: C# Intervju Intervjufrågor och svar


2) Förklara typer av kommentarer i C# med exempel

Enkel linje

Exempelvis:

//This is a single line comment

ii. Flera rader (/* */)

Exempelvis:

/*This is a multiple line comment
We are in line 2
Last line of comment*/

iii. XML-kommentarer (///).

Exempelvis:

/// summary;
/// Set error message for multilingual language.
/// summary

3) Kan flera fångstblock exekveras?

Nej, flera fångstblock av liknande typ kan inte köras. När den korrekta fångstkoden exekveras överförs kontrollen till finalblocket och sedan exekveras koden som följer efter finalblocket.


4) Vad är skillnaden mellan offentlig, statisk och void?

Offentligt deklarerade variabler eller metoder är tillgängliga var som helst i applikationen. Statiska deklarerade variabler eller metoder är globalt tillgängliga utan att skapa en instans av klassen. Statiska medlemmar är som standard inte globalt tillgängliga, det beror på vilken typ av åtkomst som används. Kompilatorn lagrar adressen till metoden som ingångspunkt och använder denna information för att börja köra innan några objekt skapas. Och Void är en typmodifierare som säger att metoden eller variabeln inte returnerar något värde.

Objekt i C#

C# intervjufrågor


5) Vad är ett föremål?

Ett objekt är en instans av en klass genom vilken vi kommer åt metoderna för den klassen. Nyckelordet "Nytt" används för att skapa ett objekt. En klass som skapar ett objekt i minnet kommer att innehålla information om klassens metoder, variabler och beteende.


6) Definiera konstruktörer

En konstruktor är en medlemsfunktion i en klass som har samma namn som sin klass. Konstruktorn anropas automatiskt när en objektklass skapas. Den konstruerar värdena för datamedlemmar samtidigt som klassen initieras.


7) Vad är Jagged Arrays?

Arrayen som har element av typen array kallas taggig Array. Elementen kan ha olika dimensioner och storlekar. Vi kan också kalla taggad Array som en Array av arrayer.


8) Vad är skillnaden mellan ref & ut parametrar?

Ett argument som skickas som ref måste initieras innan det överförs till metoden medan utparametern inte behöver initieras innan det överförs till en metod.


9) Vad är användningen av "using"-satsen i C#?

Blocket "använder" används för att erhålla en resurs och bearbeta den och sedan automatiskt kassera när exekveringen av blocket slutförts.


10) Vad är serialisering?

När vi vill transportera ett objekt genom ett nätverk måste vi konvertera objektet till en ström av bytes. Processen att konvertera ett objekt till en ström av byte kallas serialisering. För att ett objekt ska kunna serialiseras bör det implementera ISerialize Interface. Avserialisering är den omvända processen att skapa ett objekt från en ström av byte.


11) Kan vi använda "detta" kommando inom en statisk metod?

Vi kan inte använda 'Detta' i en statisk metod eftersom vi bara kan använda statiska variabler/metoder i en statisk metod.


12) Vad är skillnaden mellan konstanter och skrivskyddad?

Konstanta variabler deklareras och initieras vid kompilering. Värdet kan inte ändras i efterhand. Read-only används endast när vi vill tilldela värdet vid körning.


13) Vad är en gränssnittsklass? Ge ett exempel på det

Ett gränssnitt är en abstrakt klass som endast har offentliga abstrakta metoder, och metoderna har bara deklarationen och inte definitionen. Dessa abstrakta metoder måste implementeras i de ärvda klasserna.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 interface Guru99Interface
 {
  void SetTutorial(int pID, string pName);
  String GetTutorial();
 }

 class Guru99Tutorial : Guru99Interface
 {
  protected int TutorialID;
  protected string TutorialName;

  public void SetTutorial(int pID, string pName)
  {
   TutorialID = pID;
   TutorialName = pName;
  }

  public String GetTutorial()
  {
   return TutorialName;
  }

  static void Main(string[] args)
  {
   Guru99Tutorial pTutor = new Guru99Tutorial();

   pTutor.SetTutorial(1,".Net by Guru99");

   Console.WriteLine(pTutor.GetTutorial());

   Console.ReadKey();
  }
 }
}

14) Vad är värdetyper och referenstyper?

En värdetyp har ett datavärde inom sitt eget minnesutrymme. Exempel

int a = 30;

Referenstyp lagrar adressen till objektet där värdet lagras. Det är en pekare till en annan minnesplats.

string b = "Hello Guru99!!";

15) Vad är anpassad kontroll och användarkontroll?

Anpassade kontroller är kontroller genererade som kompilerad kod (Dlls), de är enklare att använda och kan läggas till i verktygslådan. Utvecklare kan dra och släppa kontroller till sina webbformulär. Attribut kan, vid designtid. Vi kan enkelt lägga till anpassade kontroller till flera applikationer (om delade Dlls). Så, om de är privata, kan vi kopiera till dll till bin-katalogen för webbapplikationen och sedan lägga till referens och använda dem.

Användarkontroller påminner mycket om ASP-innehållsfiler och är lätta att skapa. Användarkontroller kan inte placeras i verktygslådan och dras – släppas från den. De har sin design och kod bakom. Filtillägget för användarkontroller är ascx.


16) Vad är förseglade klasser i C#?

Vi skapar förseglade klasser när vi vill begränsa klassen som ska ärvas. Förseglad modifierare som används för att förhindra härledning från en klass. Om vi ​​med kraft specificerar en förseglad klass som basklass, uppstår ett kompileringsfel.


17) Vad är metodöverbelastning?

Metodöverbelastning skapar flera metoder med samma namn med unika signaturer i samma klass. När vi kompilerar använder kompilatorn överbelastningsupplösning för att bestämma den specifika metoden som ska anropas.


18) Vad är skillnaden mellan Array och Arraylist?

I en array kan vi bara ha objekt av samma typ. Storleken på arrayen är fast vid jämförelse. En arraylist liknar en array, men den har ingen fast storlek.


19) Kan en privat virtuell metod åsidosättas?

Nej, eftersom de inte är tillgängliga utanför klassen.


20) Beskriv tillgänglighetsmodifieraren "skyddad intern".

Skyddade interna variabler/metoder är tillgängliga inom samma assembly och även från de klasser som härrör från denna överordnade klass.


21) Vilka är skillnaderna mellan klasserna System.String och System.Text.StringBuilder?

System.String är oföränderlig. När vi modifierar värdet på en strängvariabel, allokeras ett nytt minne till det nya värdet och den tidigare minnesallokeringen frigörs. System.StringBuilder designades för att ha ett koncept med en föränderlig sträng där en mängd olika operationer kan utföras utan tilldelning av separat minnesplats för den modifierade strängen.


22) Vad är skillnaden mellan System.Array.CopyTo() och System.Array.Clone() ?

Använda Clone() metoden skapar vi ett nytt arrayobjekt som innehåller alla element i den ursprungliga Arrayen och använder CopyTo() metod. Alla element i befintlig array kopieras till en annan befintlig array. Båda metoderna utför en ytlig kopia.


23) Hur kan vi sortera elementen i Arrayen i fallande ordning?

Använda Sort() metoder följt av Reverse() metod.


24) Skriv ner C#-syntaxen för att fånga ett undantag

För att fånga ett undantag använder vi try-catch-block. Catch block kan ha en parameter av system.Exception typ.

T.ex:

try {
    GetAllData();
} 
catch (Exception ex) {
}

I exemplet ovan kan vi utelämna parametern från catch-satsen.


25) Vad är skillnaden mellan ett gränssnitt och en abstrakt klass?

Gränssnitt har alla metoder som endast har deklaration men ingen definition. I en abstrakt klass kan vi ha några konkreta metoder. I en gränssnittsklass är alla metoder offentliga. En abstrakt klass kan ha privata metoder.


26) Vad är skillnaden mellan metoderna Finalize() och Dispose()?

Dispose() anropas när vi vill att ett objekt ska släppa ohanterade resurser med dem. Å andra sidan, Finalize() används för samma ändamål, men det garanterar inte sophämtning av ett föremål.


27) Vad är cirkulära referenser?

Cirkulär referens är en situation där två eller flera resurser är beroende av varandra vilket orsakar låstillståndet och gör resurserna oanvändbara.


28) Vad är generika i C#.NET?

Generika används för att göra återanvändbara kodklasser för att minska kodredundansen, öka typsäkerheten och prestanda. Med hjälp av generika kan vi skapa samlingsklasser. För att skapa en generisk samling bör System.Collections.Generic-namnrymden användas istället för klasser som ArrayList i System.Collections-namnrymden. Generics främjar användningen av parametriserade typer.


29) Vad är en objektpool i .NET?

En objektpool är en behållare med objekt redo att användas. Den spårar objektet som för närvarande används, totalt antal objekt i poolen. Detta minskar omkostnaderna för att skapa och återskapa objekt.


30) Lista ner de vanligaste typerna av undantag i .net

ArgumentException, ArgumentNullException, ArgumentOutOfRangeException, ArithmeticException, DivideByZeroException ,OverflowException, IndexOutOfRangeException, InvalidCastException, InvalidOperationException, IOEndOfStreamException , NullReferenceException, OutOfMemoryException, StackOverflowException etc.


31) Vad är anpassade undantag?

Ibland finns det några fel som måste hanteras enligt användarens krav. Anpassade undantag används för dem och används definierade undantag.


32) Vad är delegater?

Delegater är samma är funktionspekare i C++, men den enda skillnaden är att de är typsäkra, till skillnad från funktionspekare. Delegater krävs eftersom de kan användas för att skriva mycket mer allmänna typsäkra funktioner.


33) Hur ärver man en klass till en annan klass i C#?

Kolon används som arvsoperator i C#. Placera bara ett kolon och sedan klassnamnet.

public class DerivedClass : BaseClass

34) Vilken är basklassen i .net som alla klasser härrör från?

System.Object

35) Vad är skillnaden mellan metodöverstyrning och metodöverbelastning?

Vid metodöverstyrning ändrar vi metoddefinitionen i den härledda klassen som ändrar metodbeteendet. Metodöverbelastning är att skapa en metod med samma namn inom samma klass med olika signaturer.


36) Vilka olika sätt kan en metod överbelastas?

Metoder kan överbelastas med olika datatyper för en parameter, olika ordning på parametrar och olika antal parametrar.


37) Varför kan du inte ange tillgänglighetsmodifieraren för metoder i gränssnittet?

I ett gränssnitt har vi virtuella metoder som inte har metoddefinition. Alla metoder är till för att åsidosättas i den härledda klassen. Det är därför de alla är offentliga.


38) Hur kan vi ställa in klassen så att den ärvs, men förhindra att metoden åsidosätts?

Deklarera klassen som offentlig och gör metoden förseglad för att förhindra att den åsidosätts.


39) Vad händer om de ärvda gränssnitten har motstridiga metodnamn?

Implementering är upp till dig eftersom metoden är i din egen klass. Det kan finnas ett problem när metoderna från olika gränssnitt förväntar sig olika data, men när det gäller kompilatorn är du okej.


40) Vad är skillnaden mellan en struktur och en klass?

Strukturer är värdevariabler och klasser är referenstyper. Strukturer som lagras på Stacken orsakar ytterligare overhead men snabbare hämtning. Strukturer kan inte ärvas.


41) Hur använder man nullbara typer i .Net?

Värdetyper kan ta antingen sina normala värden eller ett nollvärde. Sådana typer kallas nullbara typer.

Int? someID = null;
If(someID.HasVAlue)
{
}

42) Hur kan vi skapa en array med icke-standardvärden?

Vi kan skapa en array med icke-standardvärden med hjälp av Enumerable.Repeat.


43) Vad är skillnaden mellan "is" och "as" operatorer i c#?

"is"-operatorn används för att kontrollera ett objekts kompatibilitet med en given typ, och den returnerar resultatet som booleskt.

Operatorn "som" används för att gjuta ett objekt till en typ eller en klass.


44) Vad är en multicast-delegat?

En delegat som har flera hanterare tilldelade kallas multicast-delegat. Varje hanterare tilldelas en metod.


45) Vad är indexerare i C# .NET?

Indexerare är kända som smarta arrayer i C#. Det gör att instanserna av en klass kan indexeras på samma sätt som en array.

T.ex:

public int this[int index]    // Indexer declaration

46) Vad är skillnaden mellan "kasta" och "kasta ex" i .NET?

"Throw"-satsen bevarar den ursprungliga felstacken medan "throw ex" har stackspåret från sin kastpunkt. Det rekommenderas alltid att använda "kast" eftersom det ger mer exakt felinformation.


47) Vad är C#-attribut och dess betydelse?

C# ger utvecklare ett sätt att definiera deklarativa taggar på vissa enheter, t.ex. Klass, metod etc kallas attribut. Attributets information kan hämtas under körning med hjälp av Reflection.


48) Hur implementerar man ett singleton designmönster i C#?

I ett singletonmönster kan en klass bara ha en instans och tillhandahåller en åtkomstpunkt till den globalt.

T.ex:

Public sealed class Singleton
{
Private static readonly Singleton _instance = new Singleton();
}

49) Vad är skillnaden mellan directcast och ctype?

DirectCast används för att konvertera den typ av objekt som kräver att körtidstypen är densamma som den angivna typen i DirectCast.

Ctype används för konvertering där konverteringen definieras mellan uttrycket och typen.


50) Är C#-koden hanterad eller ohanterad kod?

C# är hanterad kod eftersom Common Language runtime kan kompilera C#-kod till Intermediate language.


51) Vad är konsolapplikation?

En konsolapplikation är en applikation som kan köras i kommandotolken i Windows. För alla nybörjare på .Net, att bygga en konsolapplikation är idealiskt det första steget till att börja med.


52) Ge ett exempel på att ta bort ett element från kön

Dequeue-metoden används för att ta bort ett element från kön.

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   Queue qt = new Queue();
   qt.Enqueue(1);
   qt.Enqueue(2);
   qt.Enqueue(3);

   foreach (Object obj in qt)
   {
    Console.WriteLine(obj);
   }
    Console.WriteLine(); Console.WriteLine();
    Console.WriteLine("The number of elements in the Queue " + qt.Count);
    Console.WriteLine("Does the Queue contain " + qt.Contains(3));
    Console.ReadKey();
   }
 }
}

Dessa intervjufrågor kommer också att hjälpa dig i din viva (orals)