Top 50 de întrebări și răspunsuri la interviu C# (2025)

Întrebări și răspunsuri la interviu C# pentru cei proaspăt și 2/3/5/10 ani de experiență

Iată întrebări și răspunsuri la interviu C# pentru candidați mai proaspeți, precum și cu 5 sau 10 ani de experiență, pentru a obține jobul visat.

1) Ce este C#?

C# este un limbaj orientat pe obiecte, sigur de tip și gestionat, care este compilat de .Net framework pentru a genera Microsoft Limba intermediară.

👉 Descărcare PDF gratuită: C# Interviu Interviu Întrebări și Răspunsuri


2) Explicați tipurile de comentarii în C# cu exemple

O singura linie

Exemplu:

//This is a single line comment

ii. Linie multiplă (/* */)

Exemplu:

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

iii. Comentarii XML (///).

Exemplu:

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

3) Pot fi executate mai multe blocuri catch?

Nu, mai multe blocuri catch de tip similar nu pot fi executate. Odată executat codul catch corespunzător, controlul este transferat în blocul final, iar apoi codul care urmează blocului final este executat.


4) Care este diferența dintre public, static și void?

Variabilele sau metodele declarate publice sunt accesibile oriunde în aplicație. Variabilele sau metodele declarate statice sunt accesibile la nivel global fără a crea o instanță a clasei. Membrii statici nu sunt în mod implicit accesibili la nivel global, depinde de tipul de acces modificat utilizat. Compilatorul stochează adresa metodei ca punct de intrare și folosește aceste informații pentru a începe execuția înainte ca orice obiect să fie creat. Și Void este un modificator de tip care afirmă că metoda sau variabila nu returnează nicio valoare.

Obiect în C#

Întrebări de interviu C#


5) Ce este un obiect?

Un obiect este o instanță a unei clase prin care accesăm metodele acelei clase. Cuvântul cheie „Nou” este folosit pentru a crea un obiect. O clasă care creează un obiect în memorie va conține informații despre metodele, variabilele și comportamentul acelei clase.


6) Definiți constructori

Un constructor este o funcție membru într-o clasă care are același nume ca și clasa sa. Constructorul este invocat automat ori de câte ori este creată o clasă de obiecte. Construiește valorile membrilor datelor în timp ce inițializează clasa.


7) Ce este Jagged Arrays?

Array-ul care are elemente de tip array se numește jagged Array. Elementele pot fi de diferite dimensiuni și dimensiuni. De asemenea, putem numi jagged Array ca un Array de matrice.


8) Care este diferența dintre parametrii ref și out?

Un argument transmis ca ref trebuie inițializat înainte de a trece la metodă, în timp ce parametrul out nu trebuie să fie inițializat înainte de a trece la o metodă.


9) La ce folosește declarația „utilizare” în C#?

Blocul „utilizare” este folosit pentru a obține o resursă și pentru a o procesa și apoi eliminată automat când execuția blocului sa încheiat.


10) Ce este serializarea?

Când dorim să transportăm un obiect printr-o rețea, atunci trebuie să convertim obiectul într-un flux de octeți. Procesul de conversie a unui obiect într-un flux de octeți se numește Serializare. Pentru ca un obiect să fie serializabil, ar trebui să implementeze ISerialize Interface. Deserializarea este procesul invers de creare a unui obiect dintr-un flux de octeți.


11) Putem folosi comanda „aceasta” într-o metodă statică?

Nu putem folosi „Acest” într-o metodă statică, deoarece putem folosi doar variabile/metode statice într-o metodă statică.


12) Care este diferența dintre constante și numai citire?

Variabilele constante sunt declarate și inițializate în timpul compilării. Valoarea nu poate fi schimbată ulterior. Numai citire este folosit doar atunci când dorim să atribuim valoarea în timpul execuției.


13) Ce este o clasă de interfață? Dați un exemplu în acest sens

O interfață este o clasă abstractă care are doar metode abstracte publice, iar metodele au doar declarația și nu definiția. Aceste metode abstracte trebuie implementate în clasele moștenite.

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) Ce sunt tipurile de valori și tipurile de referință?

Un tip de valoare deține o valoare de date în propriul spațiu de memorie. Exemplu

int a = 30;

Tipul de referință stochează adresa obiectului în care este stocată valoarea. Este un indicator către o altă locație de memorie.

string b = "Hello Guru99!!";

15) Ce sunt controlul personalizat și controlul utilizatorului?

Controalele personalizate sunt controale generate ca cod compilat (Dlls), acestea sunt mai ușor de utilizat și pot fi adăugate în caseta de instrumente. Dezvoltatorii pot trage și plasa controale în formularele lor web. Atributele pot, la momentul proiectării. Putem adăuga cu ușurință controale personalizate la aplicații multiple (dacă Dll-uri partajate). Deci, dacă sunt private, atunci putem copia în dll în directorul bin al aplicației web și apoi putem adăuga referințe și le putem folosi.

Controalele utilizatorului sunt foarte asemănătoare cu fișierele ASP includ și sunt ușor de creat. Comenzile utilizatorului nu pot fi plasate în caseta de instrumente și trase – aruncate din aceasta. Ei au designul și codul lor. Extensia de fișier pentru controalele utilizatorului este ascx.


16) Ce sunt clasele sigilate în C#?

Creăm clase sigilate atunci când dorim să restricționăm clasa care urmează să fie moștenită. Modificator sigilat folosit pentru a preveni derivarea dintr-o clasă. Dacă specificăm cu forță o clasă sigilată ca clasă de bază, atunci apare o eroare la timp de compilare.


17) Ce este supraîncărcarea metodei?

Supraîncărcarea metodelor înseamnă crearea mai multor metode cu același nume cu semnături unice în aceeași clasă. Când compilăm, compilatorul folosește rezoluția de supraîncărcare pentru a determina metoda specifică care trebuie invocată.


18) Care este diferența dintre Array și Arraylist?

Într-o matrice, putem avea doar articole de același tip. Mărimea matricei este fixă ​​în comparație. Pentru o listă de matrice este similar cu o matrice, dar nu are o dimensiune fixă.


19) Poate fi suprascrisă o metodă virtuală privată?

Nu, pentru că nu sunt accesibile în afara clasei.


20) Descrieți modificatorul de accesibilitate „protejat intern”.

Variabilele/metodele interne protejate sunt accesibile în cadrul aceluiași ansamblu și, de asemenea, din clasele care sunt derivate din această clasă părinte.


21) Care sunt diferențele dintre clasele System.String și System.Text.StringBuilder?

System.String este imuabil. Când modificăm valoarea unei variabile șir, atunci o nouă memorie este alocată noii valori și alocarea anterioară de memorie este eliberată. System.StringBuilder a fost conceput pentru a avea un concept de șir mutabil în care pot fi efectuate o varietate de operațiuni fără alocarea unei locații de memorie separate pentru șirul modificat.


22) Care este diferența dintre System.Array.CopyTo() și System.Array.Clone()?

Utilizarea Clone() metoda, creăm un nou obiect matrice care conține toate elementele din tabloul original și folosind CopyTo() metodă. Toate elementele matricei existente sunt copiate într-o altă matrice existentă. Ambele metode efectuează o copie superficială.


23) Cum putem sorta elementele Array în ordine descrescătoare?

Utilizarea Sort() metode urmate de Reverse() metodă.


24) Notați sintaxa C# pentru a identifica o excepție

Pentru a prinde o excepție, folosim blocuri try-catch. Blocul Catch poate avea un parametru de tip system.Exception.

De exemplu:

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

În exemplul de mai sus, putem omite parametrul din instrucțiunea catch.


25) Care este diferența dintre o interfață și o clasă abstractă?

Interfețele au toate metodele având doar declarație, dar fără definiție. Într-o clasă abstractă, putem avea câteva metode concrete. Într-o clasă de interfață, toate metodele sunt publice. O clasă abstractă poate avea metode private.


26) Care este diferența dintre metodele Finalize() și Dispose()?

Dispose() este apelat atunci când dorim ca un obiect să elibereze orice resurse negestionate cu ele. Pe de altă parte, Finalize() este folosit în același scop, dar nu asigură colectarea gunoiului unui obiect.


27) Ce sunt referințele circulare?

Referința circulară este situația în care două sau mai multe resurse sunt interdependente una de cealaltă provoacă starea de blocare și face resursele inutilizabile.


28) Ce sunt genericele în C#.NET?

Genericurile sunt folosite pentru a face clase de cod reutilizabile pentru a reduce redundanța codului, a crește siguranța tipului și a performanței. Folosind generice, putem crea clase de colecție. Pentru a crea o colecție generică, ar trebui folosit spațiul de nume System.Collections.Generic în loc de clase precum ArrayList din spațiul de nume System.Collections. Genericurile promovează utilizarea tipurilor parametrizate.


29) Ce este un pool de obiecte în .NET?

Un pool de obiecte este un container care are obiecte gata de a fi utilizate. Acesta urmărește obiectul care este în uz curent, numărul total de obiecte din bazin. Acest lucru reduce costul general al creării și recreării obiectelor.


30) Enumerați tipurile de excepții utilizate în mod obișnuit în .net

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


31) Ce sunt excepțiile personalizate?

Uneori, există unele erori care trebuie tratate conform cerințelor utilizatorului. Excepțiile personalizate sunt folosite pentru ele și sunt utilizate excepții definite.


32) Ce sunt delegații?

Delegații sunt aceleași în care indicatorii de funcție C++, dar singura diferență este că sunt de tip sigur, spre deosebire de pointerii de funcție. Delegații sunt necesari deoarece pot fi utilizați pentru a scrie funcții mult mai generice de tip sigur.


33) Cum moștenești o clasă în altă clasă în C#?

Colonul este folosit ca operator de moștenire în C#. Puneți doar două puncte și apoi numele clasei.

public class DerivedClass : BaseClass

34) Care este clasa de bază din .net din care sunt derivate toate clasele?

System.Object

35) Care este diferența dintre suprasolicitarea metodei și supraîncărcarea metodei?

În anularea metodei, schimbăm definiția metodei în clasa derivată care modifică comportamentul metodei. Supraîncărcarea metodei este crearea unei metode cu același nume în cadrul aceleiași clase, având semnături diferite.


36) Care sunt diferitele moduri în care o metodă poate fi supraîncărcată?

Metodele pot fi supraîncărcate folosind diferite tipuri de date pentru un parametru, ordine diferită a parametrilor și număr diferit de parametri.


37) De ce nu puteți specifica modificatorul de accesibilitate pentru metodele din interiorul interfeței?

Într-o interfață, avem metode virtuale care nu au definiție de metodă. Toate metodele sunt acolo pentru a fi suprascrise în clasa derivată. De aceea toate sunt publice.


38) Cum putem seta clasa să fie moștenită, dar prevenim suprasolicitarea metodei?

Declarați clasa ca publică și faceți metoda sigilată pentru a preveni înlocuirea acesteia.


39) Ce se întâmplă dacă interfețele moștenite au nume de metode conflictuale?

Implementarea depinde de tine, deoarece metoda se află în propria ta clasă. S-ar putea să existe o problemă când metodele de la diferite interfețe așteaptă date diferite, dar în ceea ce privește compilatorul, ești în regulă.


40) Care este diferența dintre un Struct și o clasă?

Structurile sunt variabile de tip valoare, iar clasele sunt tipuri de referință. Structurile stocate pe stivă provoacă supraîncărcare suplimentară, dar o recuperare mai rapidă. Structurile nu pot fi moștenite.


41) Cum se utilizează tipurile nullabile în .Net?

Tipurile de valori pot lua fie valorile lor normale, fie o valoare nulă. Astfel de tipuri sunt numite tipuri nullabile.

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

42) Cum putem crea o matrice cu valori non-implicite?

Putem crea o matrice cu valori non-implicite folosind Enumerable.Repeat.


43) Care este diferența dintre operatorii „este” și „ca” în c#?

Operatorul „este” este folosit pentru a verifica compatibilitatea unui obiect cu un anumit tip și returnează rezultatul ca boolean.

Operatorul „ca” este folosit pentru transformarea unui obiect într-un tip sau o clasă.


44) Ce este un delegat multicast?

Un delegat care are mai mulți handler alocați se numește delegat multicast. Fiecare handler este alocat unei metode.


45) Ce sunt indexatorii în C# .NET?

Indexatorii sunt cunoscuți ca inteligenți matrice in C#. Permite ca instanțe ale unei clase să fie indexate în același mod ca o matrice.

De exemplu:

public int this[int index]    // Indexer declaration

46) Care este diferența dintre „aruncare” și „aruncare ex” în .NET?

Declarația „Throw” păstrează stiva originală de eroare, în timp ce „throw ex” are urma stivei din punctul lor de aruncare. Este întotdeauna recomandat să utilizați „aruncare” deoarece oferă informații mai precise despre erori.


47) Care sunt atributele C# și semnificația lor?

C# oferă dezvoltatorilor o modalitate de a defini etichete declarative pe anumite entități, de ex. Clasa, metoda etc. se numesc atribute. Informațiile atributului pot fi preluate în timpul execuției folosind Reflection.


48) Cum se implementează un model de design singleton în C#?

Într-un model singleton, o clasă poate avea o singură instanță și oferă un punct de acces la aceasta la nivel global.

De exemplu:

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

49) Care este diferența dintre directcast și ctype?

DirectCast este utilizat pentru a converti tipul de obiect care necesită ca tipul de rulare să fie același cu tipul specificat în DirectCast.

Ctype este folosit pentru conversie, unde conversia este definită între expresie și tip.


50) Codul C# este gestionat sau cod negestionat?

C# este cod gestionat, deoarece Common Language Runtime poate compila codul C# în limbajul intermediar.


51) Ce este aplicația Console?

O aplicație consolă este o aplicație care poate fi rulată în promptul de comandă în Windows. Pentru orice începător pe .Net, construirea unei aplicații de consolă este, în mod ideal, primul pas, pentru început.


52) Dați un exemplu de eliminare a unui element din coadă

Metoda scoatere din coadă este utilizată pentru a elimina un element din coadă.

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

Aceste întrebări de interviu vă vor ajuta, de asemenea, în viva (orale)