50 parasta C#-haastattelun kysymystä ja vastausta (2025)

C#-haastattelun kysymyksiä ja vastauksia fuksilaisille ja 2/3/5/10 vuoden kokemukselle

Tässä on C#-haastattelukysymyksiä ja vastauksia tuoreemmille sekä 5 tai 10 vuotta kokeneille hakijoille unelmatyönsä saamiseksi.

1) Mikä on C#?

C# on oliosuuntautunut, tyyppiturvallinen ja hallittu kieli, jonka .Net-kehys on käännetty luomaan Microsoft Keskitason kieli.

👉 Ilmainen PDF-lataus: C#-haastattelun haastattelukysymykset ja vastaukset


2) Selitä kommenttityypit C# esimerkkien kanssa

Yhden rivin

Esimerkiksi:

//This is a single line comment

ii. Useita rivejä (/* */)

Esimerkiksi:

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

iii. XML-kommentit (///).

Esimerkiksi:

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

3) Voidaanko useita kiinnityslohkoja suorittaa?

Ei, useita samantyyppisiä catch-lohkoja ei voida suorittaa. Kun oikea catch-koodi on suoritettu, ohjaus siirretään viimeiseen lohkoon, ja sitten viimeistä lohkoa seuraava koodi suoritetaan.


4) Mitä eroa on julkisella, staattisella ja mitättömällä?

Julkisesti ilmoitetut muuttujat tai menetelmät ovat käytettävissä missä tahansa sovelluksessa. Staattiset ilmoitetut muuttujat tai menetelmät ovat maailmanlaajuisesti käytettävissä luomatta luokan esiintymää. Staattiset jäsenet eivät ole oletuksena maailmanlaajuisesti saatavilla, se riippuu käytetyn muokatun pääsyn tyypistä. Kääntäjä tallentaa menetelmän osoitteen aloituspisteeksi ja käyttää näitä tietoja käynnistääkseen suorituksen ennen objektien luomista. Ja Void on tyyppimuunnos, joka ilmoittaa, että menetelmä tai muuttuja ei palauta mitään arvoa.

Objekti C#:ssa

C# haastattelukysymykset


5) Mikä on esine?

Objekti on luokan esiintymä, jonka kautta pääsemme kyseisen luokan menetelmiin. "Uusi" avainsanaa käytetään objektin luomiseen. Luokka, joka luo objektin muistiin, sisältää tiedot kyseisen luokan menetelmistä, muuttujista ja käyttäytymisestä.


6) Määritä rakentajat

Konstruktori on luokan jäsenfunktio, jolla on sama nimi kuin sen luokassa. Konstruktori kutsutaan automaattisesti aina, kun objektiluokka luodaan. Se muodostaa datajäsenten arvot samalla kun alustetaan luokka.


7) Mikä on Jagged Arrays?

Taulukkoa, jossa on taulukon tyyppisiä elementtejä, kutsutaan rosoiseksi taulukoksi. Elementit voivat olla erikokoisia ja -kokoisia. Voimme kutsua rosoista taulukkoa myös taulukoiden taulukoksi.


8) Mitä eroa ref & out -parametreilla on?

Viitteenä välitetty argumentti on alustettava ennen siirtymistä menetelmälle, kun taas out-parametria ei tarvitse alustaa ennen siirtymistä menetelmälle.


9) Mitä hyötyä 'using'-lauseesta on C#:ssa?

"Käyttäjä" -lohkoa käytetään resurssin hankkimiseen ja sen käsittelemiseen ja sen jälkeen automaattisesti hävittämiseen, kun lohkon suoritus on valmis.


10) Mitä serialisointi on?

Kun haluamme siirtää objektin verkon kautta, meidän on muutettava objekti tavuvirraksi. Prosessia, jossa objekti muunnetaan tavuvirraksi, kutsutaan serialisoinniksi. Jotta objekti olisi serialoitavissa, sen tulee ottaa käyttöön ISerialize Interface. Sarjan poistaminen on käänteinen prosessi, jossa objekti luodaan tavuvirrasta.


11) Voimmeko käyttää "tätä" komentoa staattisen menetelmän sisällä?

Emme voi käyttää "tätä" staattisessa menetelmässä, koska voimme käyttää vain staattisia muuttujia/menetelmiä staattisessa menetelmässä.


12) Mitä eroa on vakioilla ja vain luku -tilassa?

Vakiomuuttujat ilmoitetaan ja alustetaan käännöshetkellä. Arvoa ei voi muuttaa jälkikäteen. Vain luku -tilaa käytetään vain, kun haluamme määrittää arvon ajon aikana.


13) Mikä on rajapintaluokka? Anna siitä yksi esimerkki

Käyttöliittymä on abstrakti luokka, jossa on vain julkisia abstrakteja menetelmiä, ja menetelmillä on vain ilmoitus, ei määritelmää. Nämä abstraktit menetelmät on toteutettava perityissä luokissa.

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) Mitä ovat arvotyypit ja viitetyypit?

Arvotyyppi pitää tietoarvon omassa muistitilassaan. Esimerkki

int a = 30;

Viitetyyppi tallentaa sen objektin osoitteen, johon arvo tallennetaan. Se on osoitin toiseen muistipaikkaan.

string b = "Hello Guru99!!";

15) Mitä mukautettu ohjaus ja käyttäjähallinta ovat?

Mukautetut ohjausobjektit ovat ohjaimia, jotka on luotu käännettynä koodina (DLL), joita on helpompi käyttää ja ne voidaan lisätä työkalupakkiin. Kehittäjät voivat vetää ja pudottaa ohjaimia verkkolomakkeisiinsa. Attribuutit voivat suunnittelun aikana. Voimme helposti lisätä mukautettuja ohjaimia useisiin sovelluksiin (jos jaetut dll-tiedostot). Joten, jos ne ovat yksityisiä, voimme kopioida dll-tiedostoon verkkosovelluksen bin-hakemistoon ja lisätä sitten viitteen ja käyttää niitä.

Käyttäjän ohjaimet ovat hyvin samankaltaisia ​​kuin ASP-tiedostot, ja ne on helppo luoda. Käyttäjän ohjaimia ei voi sijoittaa työkalulaatikkoon ja vetää – pudottaa sieltä. Heillä on suunnittelunsa ja koodinsa takana. Käyttäjäohjaimien tiedostopääte on ascx.


16) Mitä ovat sinetöidyt luokat C#:ssa?

Luomme sinetöityjä luokkia, kun haluamme rajoittaa luokan periytymistä. Sinetöity modifikaattori, jota käytetään estämään johtaminen luokasta. Jos määritämme väkisin suljetun luokan perusluokaksi, tapahtuu käännösaikavirhe.


17) Mitä menetelmän ylikuormitus tarkoittaa?

Menetelmän ylikuormitus tarkoittaa useiden menetelmien luomista samalla nimellä ja ainutlaatuisilla allekirjoituksilla samassa luokassa. Kun käännämme, kääntäjä käyttää ylikuormitusresoluutiota määrittääkseen tietyn kutsuttavan menetelmän.


18) Mitä eroa on Arraylla ja Arraylistilla?

Taulukossa meillä voi olla vain samantyyppisiä kohteita. Matriisin koko on vertailussa kiinteä. Taulukkoluettelo on samanlainen kuin taulukko, mutta sillä ei ole kiinteää kokoa.


19) Voidaanko yksityinen virtuaalinen menetelmä ohittaa?

Ei, koska ne eivät ole käytettävissä luokan ulkopuolella.


20) Kuvaile saavutettavuuden muokkaajaa "suojattu sisäinen".

Suojatut sisäiset muuttujat/menetelmät ovat käytettävissä samassa kokoonpanossa ja myös luokista, jotka on johdettu tästä pääluokasta.


21) Mitä eroja on System.String- ja System.Text.StringBuilder-luokkien välillä?

System.String on muuttumaton. Kun muokkaamme merkkijonomuuttujan arvoa, uudelle arvolle varataan uusi muisti ja edellinen muistivaraus vapautetaan. System.StringBuilder suunniteltiin muunnettavan merkkijonon konseptiksi, jossa voidaan suorittaa erilaisia ​​toimintoja ilman erillistä muistipaikkaa muokatulle merkkijonolle.


22) Mitä eroa System.Array.CopyTo() ja System.Array.Clone() on?

Käyttäminen Clone() -menetelmällä luomme uuden taulukkoobjektin, joka sisältää kaikki alkuperäisen taulukon elementit ja käyttämällä CopyTo() menetelmä. Kaikki olemassa olevan taulukon elementit kopioidaan toiseen olemassa olevaan taulukkoon. Molemmat menetelmät suorittavat matalan kopion.


23) Kuinka voimme lajitella taulukon elementit laskevaan järjestykseen?

Käyttäminen Sort() seuraavat menetelmät Reverse() menetelmällä.


24) Kirjoita C#-syntaksi muistiin poikkeuksen saamiseksi kiinni

Käytämme try-catch-lohkoja saadaksemme poikkeuksen kiinni. Catch-lohkolla voi olla system.Exception type -parametri.

Esim:

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

Yllä olevassa esimerkissä voimme jättää parametrin pois catch-lauseesta.


25) Mitä eroa on rajapinnalla ja abstraktilla luokalla?

Liitännöissä on kaikki menetelmät, joilla on vain ilmoitus, mutta ei määritelmää. Abstraktissa luokassa meillä voi olla joitain konkreettisia menetelmiä. Käyttöliittymäluokassa kaikki menetelmät ovat julkisia. Abstraktilla luokalla voi olla yksityisiä menetelmiä.


26) Mitä eroa on Finalize()- ja Dispose()-menetelmillä?

Dispose() kutsutaan, kun haluamme objektin vapauttavan kaikki hallitsemattomat resurssit. Toisaalta, Finalize() käytetään samaan tarkoitukseen, mutta se ei takaa esineen roskien keräämistä.


27) Mitä ovat kiertoviittaukset?

Kiertoviittaus on tilanne, jossa kaksi tai useampi resurssi ovat toisistaan ​​riippuvaisia, aiheuttaa lukitustilan ja tekee resursseista käyttökelvottomia.


28) Mitä ovat yleiset C#.NET:ssä?

Yleisiä tuotteita käytetään uudelleenkäytettävien koodiluokkien tekemiseen koodin redundanssin vähentämiseksi, tyyppiturvallisuuden ja suorituskyvyn lisäämiseksi. Geneeristen tuotteiden avulla voimme luoda kokoelmaluokkia. Yleisen kokoelman luomiseksi tulee käyttää System.Collections.Generic-nimiavaruutta luokkien, kuten ArrayList, sijasta System.Collections-nimiavaruudessa. Generics edistää parametroitujen tyyppien käyttöä.


29) Mikä on objektipooli .NET:ssä?

Objektivarasto on kontti, jossa on kohteita valmiina käytettäväksi. Se seuraa parhaillaan käytössä olevaa kohdetta, altaan kokonaismäärää. Tämä vähentää objektien luomisen ja uudelleenluomisen kustannuksia.


30) Listaa yleisesti käytetyt poikkeustyypit .net-tiedostossa

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


31) Mitä ovat mukautetut poikkeukset?

Joskus on joitain virheitä, jotka on käsiteltävä käyttäjän vaatimusten mukaisesti. Niille käytetään mukautettuja poikkeuksia ja niitä käytetään määriteltyinä poikkeuksina.


32) Mitä ovat edustajat?

Edustajat ovat samat kuin toimintoosoittimet C++, mutta ainoa ero on, että ne ovat tyyppiturvallisia, toisin kuin toimintoosoittimet. Delegaatteja tarvitaan, koska niitä voidaan käyttää paljon yleisempien tyyppiturvallisten funktioiden kirjoittamiseen.


33) Kuinka perit luokan toiseen luokkaan C#:ssa?

Kaksoispistettä käytetään perintöoperaattorina C#:ssa. Kirjoita vain kaksoispiste ja sitten luokan nimi.

public class DerivedClass : BaseClass

34) Mikä on .net:n perusluokka, josta kaikki luokat on johdettu?

System.Object

35) Mitä eroa on menetelmän ohituksen ja menetelmän ylikuormituksen välillä?

Metodin ohituksessa muutamme menetelmän määritelmää johdetussa luokassa, joka muuttaa menetelmän käyttäytymistä. Metodin ylikuormitus tarkoittaa samannimisen menetelmän luomista samaan luokkaan, jolla on erilaiset allekirjoitukset.


36) Millä eri tavoilla menetelmä voidaan ylikuormittaa?

Menetelmät voidaan ylikuormittaa käyttämällä parametrin eri tietotyyppejä, erilaista parametrien järjestystä ja erilaista parametrien määrää.


37) Miksi et voi määrittää käyttöliittymän menetelmien saavutettavuuden muokkaajaa?

Käyttöliittymässä meillä on virtuaalisia menetelmiä, joilla ei ole menetelmän määritelmää. Kaikki menetelmät on ohitettava johdetussa luokassa. Siksi ne kaikki ovat julkisia.


38) Kuinka voimme asettaa luokan perittäväksi, mutta estää menetelmää ohittamasta?

Ilmoita luokka julkiseksi ja sinetöi menetelmä estääksesi sen ohittamisen.


39) Mitä tapahtuu, jos perityillä liitännöillä on ristiriitaiset menetelmänimet?

Toteutus on sinun päätettävissäsi, koska menetelmä on omassa luokassasi. Ongelma saattaa ilmetä, kun menetelmät eri liitännöistä odottavat erilaista dataa, mutta kääntäjän kannalta kaikki on kunnossa.


40) Mitä eroa on rakenteen ja luokan välillä?

Rakenteet ovat arvotyyppisiä muuttujia ja luokat ovat viitetyyppejä. Pinoon tallennetut rakenteet aiheuttavat lisäkustannuksia, mutta nopeamman haun. Rakenteita ei voi periä.


41) Kuinka käyttää nullable-tyyppejä .Netissä?

Arvotyypit voivat ottaa joko normaaliarvonsa tai nolla-arvon. Tällaisia ​​tyyppejä kutsutaan nollataviksi.

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

42) Kuinka voimme luoda taulukon ei-oletusarvoilla?

Voimme luoda taulukon, jossa on muita kuin oletusarvoja käyttämällä Enumerable.Repeat.


43) Mitä eroa on "is"- ja "as"-operaattoreiden välillä c#:ssa?

"is"-operaattoria käytetään tarkistamaan objektin yhteensopivuus tietyn tyypin kanssa, ja se palauttaa tuloksen Boolen.

"as"-operaattoria käytetään objektin heittämiseen tyyppiin tai luokkaan.


44) Mikä on monilähetyksen edustaja?

Edustajaa, jolle on määrätty useita käsittelijöitä, kutsutaan monilähetysedustajaksi. Jokaiselle käsittelijälle on määritetty menetelmä.


45) Mitä indeksoijat ovat C# .NET:ssä?

Indeksoijat tunnetaan älykkäinä taulukot C#:ssa. Sen avulla luokan esiintymät voidaan indeksoida samalla tavalla kuin taulukko.

Esim:

public int this[int index]    // Indexer declaration

46) Mitä eroa on "heittää" ja "heittää ex" .NET:ssä?

"Throw" -lause säilyttää alkuperäisen virhepinon, kun taas "heittä ex" -lauseessa on pinojälki heittopisteestään. On aina suositeltavaa käyttää "heittoa", koska se antaa tarkempaa virhetietoa.


47) Mitä ovat C#-attribuutit ja niiden merkitys?

C# tarjoaa kehittäjille tavan määritellä deklaratiivisia tunnisteita tietyille entiteeteille, esim. Luokkaa, menetelmää jne. kutsutaan attribuutteiksi. Attribuutin tiedot voidaan hakea suorituksen aikana käyttämällä Reflectionia.


48) Kuinka toteuttaa singleton-suunnittelukuvio C#:ssa?

Yksittäisessä mallissa luokalla voi olla vain yksi ilmentymä ja se tarjoaa siihen maailmanlaajuisen tukiaseman.

Esim:

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

49) Mitä eroa on suoralähetyksellä ja ctypellä?

DirectCastia käytetään muuntamaan objektityyppi, joka edellyttää ajonaikaisen tyypin olevan sama kuin DirectCastissa määritetty tyyppi.

Ctypeä käytetään muuntamiseen, jossa muunnos määritellään lausekkeen ja tyypin välillä.


50) Onko C#-koodi hallittua vai hallitsematonta koodia?

C# on hallittua koodia, koska Common Language Runtime voi kääntää C#-koodin keskitason kieleksi.


51) Mikä on konsolisovellus?

Konsolisovellus on sovellus, joka voidaan suorittaa komentokehotteessa Windows. Mille tahansa aloittelija .Netissä, konsolisovelluksen rakentaminen on ihanteellisesti ensimmäinen askel aluksi.


52) Anna esimerkki elementin poistamisesta jonosta

Dequeue-menetelmää käytetään elementin poistamiseen jonosta.

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();
   }
 }
}

Nämä haastattelukysymykset auttavat myös vivassasi (suullinen)