Top 50 des questions et réponses d'entretien C# (2025)
Questions et réponses d'entretien C# pour les débutants et 2/3/5/10 ans d'expérience
Voici les questions et réponses d'entretien en C# pour les candidats les plus récents et les candidats expérimentés de 5 ou 10 ans pour obtenir l'emploi de leurs rêves.
1) Qu’est-ce que C# ?
C# est un langage géré, orienté objet, de type sécurisé, compilé par le framework .Net pour générer Microsoft Langue intermédiaire.
👉 Téléchargement PDF gratuit : Questions et réponses d'entretien d'entretien C#
2) Expliquez les types de commentaires dans C# avec des exemples
Une seule ligne
Mise en situation :
//This is a single line comment
ii. Plusieurs lignes (/* */)
Mise en situation :
/*This is a multiple line comment We are in line 2 Last line of comment*/
iii. Commentaires XML (///).
Mise en situation :
/// summary; /// Set error message for multilingual language. /// summary
3) Plusieurs blocs catch peuvent-ils être exécutés ?
Non, plusieurs blocs catch de type similaire ne peuvent pas être exécutés. Une fois le code catch approprié exécuté, le contrôle est transféré au bloc final, puis le code qui suit le bloc final est exécuté.
4) Quelle est la différence entre public, statique et vide ?
Les variables ou méthodes déclarées publiques sont accessibles n’importe où dans l’application. Les variables ou méthodes déclarées statiques sont globalement accessibles sans créer d’instance de la classe. Les membres statiques ne sont par défaut pas accessibles globalement, cela dépend du type d'accès modifié utilisé. Le compilateur stocke l'adresse de la méthode comme point d'entrée et utilise ces informations pour commencer l'exécution avant la création d'objets. Et Void est un modificateur de type qui indique que la méthode ou la variable ne renvoie aucune valeur.
Questions d'entretien C#
5) Qu'est-ce qu'un objet ?
Un objet est une instance d'une classe par laquelle nous accédons aux méthodes de cette classe. Le mot-clé « Nouveau » est utilisé pour créer un objet. Une classe qui crée un objet en mémoire contiendra les informations sur les méthodes, les variables et le comportement de cette classe.
6) Définir les constructeurs
Un constructeur est une fonction membre d’une classe qui porte le même nom que sa classe. Le constructeur est automatiquement invoqué à chaque fois qu'une classe d'objets est créée. Il construit les valeurs des données membres lors de l'initialisation de la classe.
7) Qu'est-ce que les tableaux Jagged ?
Le tableau qui comporte des éléments de type tableau est appelé tableau jagged. Les éléments peuvent être de différentes dimensions et tailles. Nous pouvons également appeler Jagged Array comme un tableau de tableaux.
8) Quelle est la différence entre les paramètres ref et out ?
Un argument passé en tant que ref doit être initialisé avant de passer à la méthode alors que le paramètre out n'a pas besoin d'être initialisé avant de passer à une méthode.
9) À quoi sert l’instruction « using » en C# ?
Le bloc « utilisant » est utilisé pour obtenir une ressource et la traiter, puis s'en débarrasser automatiquement une fois l'exécution du bloc terminée.
10) Qu'est-ce que la sérialisation ?
Lorsque nous voulons transporter un objet via un réseau, nous devons alors convertir l'objet en un flux d'octets. Le processus de conversion d'un objet en flux d'octets est appelé sérialisation. Pour qu’un objet soit sérialisable, il doit implémenter l’interface ISerialize. La désérialisation est le processus inverse de création d'un objet à partir d'un flux d'octets.
11) Pouvons-nous utiliser la commande « this » dans une méthode statique ?
Nous ne pouvons pas utiliser « This » dans une méthode statique car nous ne pouvons utiliser que des variables/méthodes statiques dans une méthode statique.
12) Quelle est la différence entre les constantes et la lecture seule ?
Les variables constantes sont déclarées et initialisées au moment de la compilation. La valeur ne peut plus être modifiée par la suite. La lecture seule est utilisée uniquement lorsque nous souhaitons attribuer la valeur au moment de l'exécution.
13) Qu'est-ce qu'une classe d'interface ? Donnez-en un exemple
Une interface est une classe abstraite qui n'a que des méthodes abstraites publiques, et les méthodes n'ont que la déclaration et non la définition. Ces méthodes abstraites doivent être implémentées dans les classes héritées.
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) Que sont les types valeur et les types référence ?
Un type valeur contient une valeur de données dans son propre espace mémoire. Exemple
int a = 30;
Le type de référence stocke l'adresse de l'objet où la valeur est stockée. C'est un pointeur vers un autre emplacement mémoire.
string b = "Hello Guru99!!";
15) Que sont le contrôle personnalisé et le contrôle utilisateur ?
Les contrôles personnalisés sont des contrôles générés sous forme de code compilé (Dll), ceux-ci sont plus faciles à utiliser et peuvent être ajoutés à la boîte à outils. Les développeurs peuvent glisser-déposer des contrôles sur leurs formulaires Web. Les attributs peuvent, au moment de la conception. Nous pouvons facilement ajouter des contrôles personnalisés à plusieurs applications (si DLL partagées). Ainsi, s'ils sont privés, nous pouvons alors les copier dans le répertoire dll dans le répertoire bin de l'application Web, puis ajouter une référence et les utiliser.
Les contrôles utilisateur sont très similaires aux fichiers d'inclusion ASP et sont faciles à créer. Les contrôles utilisateur ne peuvent pas être placés dans la boîte à outils et glissés-déposés depuis celle-ci. Ils ont leur conception et leur code-behind. L'extension de fichier des contrôles utilisateur est ascx.
16) Que sont les classes scellées en C# ?
Nous créons des classes scellées lorsque nous voulons restreindre l'héritage de la classe. Modificateur scellé utilisé pour empêcher la dérivation d'une classe. Si nous spécifions de force une classe scellée comme classe de base, une erreur de compilation se produit.
17) Qu’est-ce que la surcharge de méthode ?
La surcharge de méthodes consiste à créer plusieurs méthodes portant le même nom avec des signatures uniques dans la même classe. Lorsque nous compilons, le compilateur utilise la résolution de surcharge pour déterminer la méthode spécifique à appeler.
18) Quelle est la différence entre Array et Arraylist ?
Dans un tableau, nous ne pouvons avoir que des éléments du même type. La taille du tableau est fixe lors de la comparaison. Une liste de tableaux est similaire à un tableau, mais elle n'a pas de taille fixe.
19) Une méthode virtuelle privée peut-elle être remplacée ?
Non, car ils ne sont pas accessibles en dehors du cours.
20) Décrivez le modificateur d'accessibilité « interne protégé ».
Les variables/méthodes internes protégées sont accessibles au sein du même assembly ainsi qu’à partir des classes dérivées de cette classe parent.
21) Quelles sont les différences entre les classes System.String et System.Text.StringBuilder ?
System.String est immuable. Lorsque nous modifions la valeur d'une variable chaîne, alors une nouvelle mémoire est allouée à la nouvelle valeur et l'allocation de mémoire précédente est libérée. System.StringBuilder a été conçu pour avoir un concept de chaîne mutable dans lequel diverses opérations peuvent être effectuées sans attribuer d'emplacement mémoire séparé pour la chaîne modifiée.
22) Quelle est la différence entre System.Array.CopyTo() et System.Array.Clone() ?
En utilisant Clone()
méthode, nous créons un nouvel objet tableau contenant tous les éléments du tableau d'origine et en utilisant CopyTo()
méthode. Tous les éléments du tableau existant sont copiés dans un autre tableau existant. Les deux méthodes effectuent une copie superficielle.
23) Comment trier les éléments du Array par ordre décroissant ?
En utilisant Sort()
méthodes suivies par Reverse()
méthode.
24) Notez la syntaxe C# pour intercepter une exception
Pour intercepter une exception, nous utilisons des blocs try-catch. Le bloc Catch peut avoir un paramètre de type system.Exception.
Par exemple:
try { GetAllData(); } catch (Exception ex) { }
Dans l'exemple ci-dessus, nous pouvons omettre le paramètre de l'instruction catch.
25) Quelle est la différence entre une interface et une classe abstraite ?
Les interfaces ont toutes les méthodes ayant uniquement une déclaration mais pas de définition. Dans une classe abstraite, nous pouvons avoir des méthodes concrètes. Dans une classe d'interface, toutes les méthodes sont publiques. Une classe abstraite peut avoir des méthodes privées.
26) Quelle est la différence entre les méthodes Finalize() et Dispose() ?
Dispose()
est appelé lorsque nous souhaitons qu'un objet libère des ressources non gérées avec lui. D'autre part, Finalize()
est utilisé dans le même but, mais il n'assure pas le garbage collection d'un objet.
27) Que sont les références circulaires ?
La référence circulaire est une situation dans laquelle deux ressources ou plus sont interdépendantes les unes des autres, provoquant la condition de verrouillage et rendant les ressources inutilisables.
28) Que sont les génériques en C#.NET ?
Les génériques sont utilisés pour créer des classes de code réutilisables afin de réduire la redondance du code, d'augmenter la sécurité des types et les performances. En utilisant des génériques, nous pouvons créer des classes de collection. Pour créer une collection générique, l'espace de noms System.Collections.Generic doit être utilisé à la place de classes telles que ArrayList dans l'espace de noms System.Collections. Les génériques favorisent l'utilisation de types paramétrés.
29) Qu'est-ce qu'un pool d'objets dans .NET ?
Un pool d'objets est un conteneur contenant des objets prêts à être utilisés. Il suit l'objet actuellement utilisé, le nombre total d'objets dans le pool. Cela réduit les frais liés à la création et à la recréation d’objets.
30) Répertoriez les types d'exceptions couramment utilisés dans .net
ArgumentException, ArgumentNullException, ArgumentOutOfRangeException, ArithmeticException, DivideByZeroException, OverflowException, IndexOutOfRangeException, InvalidCastException, InvalideOperationException, IOEndOfStreamException, NullReferenceException, OutOfMemoryException, StackOverflowException etc.
31) Que sont les exceptions personnalisées ?
Parfois, certaines erreurs doivent être traitées selon les besoins de l'utilisateur. Des exceptions personnalisées sont utilisées pour eux et sont utilisées comme exceptions définies.
32) Que sont les délégués ?
Les délégués sont les mêmes que les pointeurs de fonction dans C++, mais la seule différence est qu'ils sont de type sécurisé, contrairement aux pointeurs de fonction. Les délégués sont nécessaires car ils peuvent être utilisés pour écrire des fonctions de type sécurisé beaucoup plus génériques.
33) Comment hériter d’une classe dans une autre classe en C# ?
Deux points est utilisé comme opérateur d'héritage en C#. Placez simplement deux points puis le nom de la classe.
public class DerivedClass : BaseClass
34) Quelle est la classe de base dans .net dont toutes les classes sont dérivées ?
System.Object
35) Quelle est la différence entre le remplacement de méthode et la surcharge de méthode ?
Lors du remplacement de méthode, nous modifions la définition de la méthode dans la classe dérivée qui modifie le comportement de la méthode. La surcharge de méthode consiste à créer une méthode portant le même nom au sein de la même classe et ayant des signatures différentes.
36) Quelles sont les différentes manières de surcharger une méthode ?
Les méthodes peuvent être surchargées en utilisant différents types de données pour un paramètre, un ordre différent des paramètres et un nombre différent de paramètres.
37) Pourquoi ne pouvez-vous pas spécifier le modificateur d'accessibilité pour les méthodes à l'intérieur de l'interface ?
Dans une interface, nous avons des méthodes virtuelles qui n'ont pas de définition de méthode. Toutes les méthodes sont là pour être remplacées dans la classe dérivée. C'est pourquoi ils sont tous publics.
38) Comment pouvons-nous définir la classe pour qu'elle soit héritée, mais empêcher que la méthode soit remplacée ?
Déclarez la classe comme publique et rendez la méthode scellée pour éviter qu'elle ne soit remplacée.
39) Que se passe-t-il si les interfaces héritées ont des noms de méthodes contradictoires ?
L'implémentation dépend de vous car la méthode se trouve dans votre propre classe. Il peut y avoir un problème lorsque les méthodes de différentes interfaces attendent des données différentes, mais pour autant que le compilateur s'en soucie, tout va bien.
40) Quelle est la différence entre une Struct et une Classe ?
Les structures sont des variables de type valeur et les classes sont des types référence. Les structures stockées sur la pile entraînent une surcharge supplémentaire mais une récupération plus rapide. Les structures ne peuvent pas être héritées.
41) Comment utiliser les types nullables dans .Net ?
Les types valeur peuvent prendre soit leurs valeurs normales, soit une valeur nulle. Ces types sont appelés types nullables.
Int? someID = null; If(someID.HasVAlue) { }
42) Comment pouvons-nous créer un tableau avec des valeurs autres que celles par défaut ?
Nous pouvons créer un tableau avec des valeurs autres que celles par défaut en utilisant Enumerable.Repeat.
43) Quelle est la différence entre les opérateurs « is » et « as » en c# ?
L'opérateur « is » est utilisé pour vérifier la compatibilité d'un objet avec un type donné et renvoie le résultat sous forme booléenne.
L’opérateur « as » est utilisé pour convertir un objet en un type ou une classe.
44) Qu'est-ce qu'un délégué multicast ?
Un délégué auquel sont attribués plusieurs gestionnaires est appelé délégué de multidiffusion. Chaque gestionnaire est affecté à une méthode.
45) Que sont les indexeurs en C# .NET ?
Les indexeurs sont connus comme intelligents tableaux en C#. Il permet d'indexer les instances d'une classe de la même manière qu'un tableau.
Par exemple:
public int this[int index] // Indexer declaration
46) Quelle est la différence entre « throw » et « throw ex » dans .NET ?
L'instruction « Throw » préserve la pile d'erreurs d'origine tandis que « throw ex » a la trace de la pile à partir de son point de lancement. Il est toujours conseillé d'utiliser « throw » car il fournit des informations d'erreur plus précises.
47) Que sont les attributs C# et leur signification ?
C# fournit aux développeurs un moyen de définir des balises déclaratives sur certaines entités, par exemple. La classe, la méthode, etc. sont appelées attributs. Les informations de l'attribut peuvent être récupérées au moment de l'exécution à l'aide de Reflection.
48) Comment implémenter un modèle de conception singleton en C# ?
Dans un modèle singleton, une classe ne peut avoir qu’une seule instance et lui fournit un point d’accès global.
Par exemple:
Public sealed class Singleton { Private static readonly Singleton _instance = new Singleton(); }
49) Quelle est la différence entre directcast et ctype ?
DirectCast est utilisé pour convertir le type d'objet qui nécessite que le type d'exécution soit identique au type spécifié dans DirectCast.
Ctype est utilisé pour la conversion où la conversion est définie entre l'expression et le type.
50) Le code C# est-il du code géré ou non ?
C# est du code managé car Common Language Runtime peut compiler du code C# en langage intermédiaire.
51) Qu'est-ce que l'application Console ?
Une application console est une application qui peut être exécutée dans l'invite de commande dans Windows. Pour toute débutant sur .Net, la création d’une application console est idéalement la première étape, pour commencer.
52) Donnez un exemple de suppression d'un élément de la file d'attente
La méthode dequeue est utilisée pour supprimer un élément de la file d'attente.
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(); } } }
Ces questions d'entretien vous aideront également dans votre soutenance