Le 50 migliori domande e risposte dell'intervista su C# (2025)

Domande e risposte sull'intervista C# per matricole e 2/3/5/10 anni di esperienza

Ecco le domande e le risposte al colloquio in C# per candidati più freschi e con esperienza di 5 o 10 anni per ottenere il lavoro dei loro sogni.

1) Cos'è C#?

C# è un linguaggio gestito e orientato agli oggetti, indipendente dai tipi, compilato da .Net Framework per generare Microsoft Lingua intermedia.

👉 Download gratuito del PDF: domande e risposte sull'intervista su C#


2) Spiegare i tipi di commento C# con esempi

Linea singola

Esempio:

//This is a single line comment

ii. Riga multipla (/* */)

Esempio:

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

iii. Commenti XML (///).

Esempio:

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

3) È possibile eseguire più blocchi catch?

No, non è possibile eseguire più blocchi catch di tipo simile. Una volta eseguito il codice catch corretto, il controllo viene trasferito al blocco last, quindi viene eseguito il codice che segue il blocco last.


4) Qual è la differenza tra pubblico, statico e vuoto?

Le variabili o i metodi dichiarati pubblici sono accessibili ovunque nell'applicazione. Le variabili o i metodi statici dichiarati sono accessibili a livello globale senza creare un'istanza della classe. Per impostazione predefinita, i membri statici non sono accessibili a livello globale, dipende dal tipo di accesso modificato utilizzato. Il compilatore memorizza l'indirizzo del metodo come punto di ingresso e utilizza queste informazioni per iniziare l'esecuzione prima della creazione degli oggetti. E Void è un modificatore di tipo che afferma che il metodo o la variabile non restituisce alcun valore.

Oggetto in C#

Domande dell'intervista in C#


5) Cos'è un oggetto?

Un oggetto è un'istanza di una classe attraverso la quale accediamo ai metodi di quella classe. La parola chiave "New" viene utilizzata per creare un oggetto. Una classe che crea un oggetto in memoria conterrà le informazioni sui metodi, sulle variabili e sul comportamento di quella classe.


6) Definire i costruttori

Un costruttore è una funzione membro di una classe che ha lo stesso nome della sua classe. Il costruttore viene richiamato automaticamente ogni volta che viene creata una classe di oggetti. Costruisce i valori dei membri dati durante l'inizializzazione della classe.


7) Che cosa sono gli array frastagliati?

L'Array che ha elementi di tipo array è chiamato jagged Array. Gli elementi possono essere di diverse dimensioni e dimensioni. Possiamo anche chiamare jagged Array come un array di array.


8) Qual è la differenza tra i parametri ref e out?

Un argomento passato come ref deve essere inizializzato prima di passare al metodo mentre il parametro out non deve essere inizializzato prima di passare a un metodo.


9) Qual è l'uso dell'istruzione 'using' in C#?

Il blocco 'using' viene utilizzato per ottenere una risorsa ed elaborarla per poi eliminarla automaticamente una volta completata l'esecuzione del blocco.


10) Cos'è la serializzazione?

Quando vogliamo trasportare un oggetto attraverso una rete, dobbiamo convertire l'oggetto in un flusso di byte. Il processo di conversione di un oggetto in un flusso di byte è chiamato Serializzazione. Affinché un oggetto sia serializzabile, deve implementare l'interfaccia ISerialize. La deserializzazione è il processo inverso di creazione di un oggetto da un flusso di byte.


11) Possiamo usare il comando “questo” all'interno di un metodo statico?

Non possiamo utilizzare "This" in un metodo statico perché possiamo utilizzare solo variabili/metodi statici in un metodo statico.


12) Qual è la differenza tra costanti e sola lettura?

Le variabili costanti vengono dichiarate e inizializzate in fase di compilazione. Il valore non può essere modificato successivamente. La sola lettura viene utilizzata solo quando vogliamo assegnare il valore in fase di esecuzione.


13) Cos'è una classe di interfaccia? Fatene un esempio

Un'interfaccia è una classe astratta che ha solo metodi astratti pubblici e i metodi hanno solo la dichiarazione e non la definizione. Questi metodi astratti devono essere implementati nelle classi ereditate.

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) Cosa sono i tipi valore e i tipi riferimento?

Un tipo di valore contiene un valore di dati nel proprio spazio di memoria. Esempio

int a = 30;

Il tipo di riferimento memorizza l'indirizzo dell'oggetto in cui viene archiviato il valore. È un puntatore a un'altra posizione di memoria.

string b = "Hello Guru99!!";

15) Cosa sono il controllo personalizzato e il controllo utente?

I controlli personalizzati sono controlli generati come codice compilato (Dll), sono più facili da usare e possono essere aggiunti alla casella degli strumenti. Gli sviluppatori possono trascinare e rilasciare i controlli nei loro moduli Web. Gli attributi possono, in fase di progettazione. Possiamo facilmente aggiungere controlli personalizzati a più applicazioni (se sono Dll condivise). Quindi, se sono privati, possiamo copiare nella directory dll nella directory bin dell'applicazione Web e quindi aggiungere un riferimento e possiamo usarli.

I controlli utente sono molto simili ai file ASP include e sono facili da creare. I controlli utente non possono essere posizionati nella casella degli strumenti e trascinati/rilasciati da essa. Hanno il loro design e il loro codice sottostante. L'estensione file per i controlli utente è ascx.


16) Cosa sono le classi sigillate in C#?

Creiamo classi sigillate quando vogliamo limitare la classe da ereditare. Modificatore sigillato utilizzato per impedire la derivazione da una classe. Se specifichiamo forzatamente una classe sigillata come classe base, si verifica un errore in fase di compilazione.


17) Cos'è l'overloading del metodo?

L'overload dei metodi consiste nella creazione di più metodi con lo stesso nome con firme univoche nella stessa classe. Quando compiliamo, il compilatore utilizza la risoluzione dell'overload per determinare il metodo specifico da invocare.


18) Qual è la differenza tra Array e Arraylist?

In un array possiamo avere solo elementi dello stesso tipo. La dimensione dell'array è fissa quando confrontata. Un arraylist è simile a un array, ma non ha una dimensione fissa.


19) È possibile sovrascrivere un metodo virtuale privato?

No, perché non sono accessibili al di fuori della classe.


20) Descrivere il modificatore di accessibilità “interno protetto”.

Le variabili/metodi interni protetti sono accessibili all'interno dello stesso assembly e anche dalle classi derivate da questa classe genitore.


21) Quali sono le differenze tra le classi System.String e System.Text.StringBuilder?

System.String è immutabile. Quando modifichiamo il valore di una variabile stringa, una nuova memoria viene allocata al nuovo valore e la precedente allocazione di memoria viene rilasciata. System.StringBuilder è stato progettato per avere il concetto di stringa modificabile in cui è possibile eseguire una varietà di operazioni senza allocare una posizione di memoria separata per la stringa modificata.


22) Qual è la differenza tra System.Array.CopyTo() e System.Array.Clone() ?

utilizzando Clone() metodo, creiamo un nuovo oggetto array contenente tutti gli elementi nell'Array originale e utilizzando CopyTo() metodo. Tutti gli elementi dell'array esistente vengono copiati in un altro array esistente. Entrambi i metodi eseguono una copia superficiale.


23) Come possiamo ordinare gli elementi dell'Array in ordine decrescente?

utilizzando Sort() metodi seguiti da Reverse() metodo.


24) Annotare la sintassi C# per rilevare un'eccezione

Per catturare un'eccezione, utilizziamo i blocchi try-catch. Il blocco Catch può avere un parametro di tipo system.Exception.

Per esempio:

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

Nell'esempio precedente, possiamo omettere il parametro dall'istruzione catch.


25) Qual è la differenza tra un'interfaccia e una classe astratta?

Le interfacce hanno tutti i metodi che hanno solo dichiarazione ma nessuna definizione. In una classe astratta, possiamo avere alcuni metodi concreti. In una classe di interfaccia, tutti i metodi sono pubblici. Una classe astratta può avere metodi privati.


26) Qual è la differenza tra i metodi Finalize() e Dispose()?

Dispose() viene chiamato quando vogliamo che un oggetto rilasci con sé eventuali risorse non gestite. D'altra parte, Finalize() viene utilizzato per lo stesso scopo, ma non garantisce la garbage collection di un oggetto.


27) Cosa sono i riferimenti circolari?

Il riferimento circolare è una situazione in cui due o più risorse sono interdipendenti l'una dall'altra causa la condizione di blocco e rende le risorse inutilizzabili.


28) Cosa sono i generici in C#.NET?

I generici vengono utilizzati per creare classi di codice riutilizzabili per ridurre la ridondanza del codice, aumentare la sicurezza dei tipi e le prestazioni. Utilizzando i generici, possiamo creare classi di raccolta. Per creare una raccolta generica, si dovrebbe usare lo spazio dei nomi System.Collections.Generic al posto di classi come ArrayList nello spazio dei nomi System.Collections. I generici promuovono l'utilizzo di tipi parametrizzati.


29) Cos'è un pool di oggetti in .NET?

Un pool di oggetti è un contenitore contenente oggetti pronti per essere utilizzati. Tiene traccia dell'oggetto attualmente in uso e del numero totale di oggetti nel pool. Ciò riduce il sovraccarico della creazione e della ricreazione degli oggetti.


30) Elencare i tipi di eccezioni comunemente utilizzati in .net

ArgumentException, ArgumentNullException, ArgumentOutOfRangeException, ArithmeticException, DivideByZeroException, OverflowException, IndexOutOfRangeException, InvalidCastException, Non validoOperationException, IOEndOfStreamException , NullReferenceException, OutOfMemoryException, StackOverflowException ecc.


31) Cosa sono le eccezioni personalizzate?

A volte ci sono alcuni errori che devono essere gestiti in base ai requisiti dell'utente. Per essi vengono utilizzate eccezioni personalizzate e vengono utilizzate eccezioni definite.


32) Cosa sono i delegati?

I delegati sono gli stessi puntatori a funzioni C++, ma l'unica differenza è che sono indipendenti dai tipi, a differenza dei puntatori a funzione. I delegati sono necessari perché possono essere usati per scrivere funzioni indipendenti dai tipi molto più generiche.


33) Come si eredita una classe in un'altra classe in C#?

I due punti vengono utilizzati come operatore di ereditarietà in C#. Basta inserire i due punti e poi il nome della classe.

public class DerivedClass : BaseClass

34) Qual è la classe base in .net da cui derivano tutte le classi?

System.Object

35) Qual è la differenza tra l'override del metodo e l'overload del metodo?

Nell'override del metodo, modifichiamo la definizione del metodo nella classe derivata che modifica il comportamento del metodo. L'overload del metodo consiste nel creare un metodo con lo stesso nome all'interno della stessa classe con firme diverse.


36) Quali sono i diversi modi in cui un metodo può essere sovraccaricato?

È possibile eseguire l'overload dei metodi utilizzando tipi di dati diversi per un parametro, ordine diverso dei parametri e numero diverso di parametri.


37) Perché non è possibile specificare il modificatore di accessibilità per i metodi all'interno dell'interfaccia?

In un'interfaccia abbiamo metodi virtuali che non hanno una definizione del metodo. Tutti i metodi sono lì per essere sovrascritti nella classe derivata. Ecco perché sono tutti pubblici.


38) Come possiamo impostare la classe in modo che venga ereditata, ma evitare che il metodo venga sovrascritto?

Dichiara la classe pubblica e rendi il metodo sigillato per evitare che venga sovrascritto.


39) Cosa succede se le interfacce ereditate hanno nomi di metodi in conflitto?

L'implementazione dipende da te, dato che il metodo è all'interno della tua classe. Potrebbe esserci un problema quando i metodi di interfacce diverse si aspettano dati diversi, ma per quanto riguarda il compilatore, sei a posto.


40) Qual è la differenza tra una Struct e una Class?

Le strutture sono variabili di tipo valore e le classi sono tipi di riferimento. Le strutture archiviate nello Stack causano un sovraccarico aggiuntivo ma un recupero più rapido. Le strutture non possono essere ereditate.


41) Come utilizzare i tipi nullable in .Net?

I tipi di valore possono assumere i valori normali o un valore null. Tali tipi sono chiamati tipi nullable.

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

42) Come possiamo creare un array con valori non predefiniti?

Possiamo creare un array con valori non predefiniti utilizzando Enumerable.Repeat.


43) Qual è la differenza tra gli operatori “is” e “as” in c#?

L'operatore "is" viene utilizzato per verificare la compatibilità di un oggetto con un determinato tipo e restituisce il risultato come booleano.

L'operatore "as" viene utilizzato per convertire un oggetto in un tipo o in una classe.


44) Cos'è un delegato multicast?

Un delegato a cui sono assegnati più gestori è denominato delegato multicast. Ogni gestore è assegnato a un metodo.


45) Cosa sono gli indicizzatori in C# .NET?

Gli indicizzatori sono conosciuti come intelligenti matrici in C#. Consente di indicizzare le istanze di una classe allo stesso modo di un array.

Per esempio:

public int this[int index]    // Indexer declaration

46) Qual è la differenza tra il “lancio” e il “lancio ex” in .NET?

L'istruzione "Throw" preserva lo stack di errori originale mentre "throw ex" ha la traccia dello stack dal punto di lancio. Si consiglia sempre di utilizzare "lancia" perché fornisce informazioni sull'errore più precise.


47) Quali sono gli attributi C# e il loro significato?

C# fornisce agli sviluppatori un modo per definire tag dichiarativi su determinate entità, ad es. Classe, metodo, ecc. sono chiamati attributi. Le informazioni sull'attributo possono essere recuperate in fase di runtime utilizzando Reflection.


48) Come implementare un modello di progettazione singleton in C#?

In un modello singleton, una classe può avere solo un'istanza e fornisce un punto di accesso ad essa a livello globale.

Per esempio:

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

49) Qual è la differenza tra directcast e ctype?

DirectCast viene utilizzato per convertire il tipo di oggetto che richiede che il tipo di runtime sia uguale al tipo specificato in DirectCast.

Ctype viene utilizzato per la conversione in cui la conversione è definita tra l'espressione e il tipo.


50) Il codice C# è gestito o non gestito?

C# è un codice gestito perché Common Language Runtime può compilare codice C# nel linguaggio intermedio.


51) Cos'è l'applicazione Console?

Un'applicazione console è un'applicazione che può essere eseguita nel prompt dei comandi in Windows. Per ogni principiante su .Net, creare un'applicazione console è idealmente il primo passo da cui iniziare.


52) Fornisci un esempio di rimozione di un elemento dalla coda

Il metodo di rimozione dalla coda viene utilizzato per rimuovere un elemento dalla coda.

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

Queste domande del colloquio ti aiuteranno anche nel tuo viva(orale)

Newsletter quotidiana di Guru99

Inizia la giornata con le ultime e più importanti notizie sull'intelligenza artificiale, pubblicate in questo momento.