jeudi 14 mars 2024

43 questions - answers: entretien C#.Net

 

1. Qu'est-Ce Que C# Exactement ?

Microsoft C# est une application contemporaine, polyvalente, programmation orientée objet Langue. C# est destiné à l'infrastructure de langage commun (CLI), qui comprend un code exécutable et un environnement d'exécution qui permet l'utilisation de nombreux langages de haut niveau sur divers systèmes et architectures informatiques.

2. Qu'est-Ce Qui Distingue Le C# Du C ?

C est généralement connu comme le langage procédural, tandis que C # est plus orienté objet. La principale distinction est que C # permet la collecte automatisée des ordures via le Common Language Runtime (CLR), alors que C ne le fait pas. C # nécessite le framework .NET pour s'exécuter, alors que C est un langage indépendant de la plate-forme.

3. Qu'est-Ce Qu'une Classe Exactement ?

Une classe sert de modèle pour créer des objets. Avec les techniques, il a des attributs. A partir d'une même classe, on peut produire plusieurs instances d'un objet.

 

4. Qu'est-Ce Qu'un Objet Exactement ?

Une instance de classe connue sous le nom d'objet est la façon dont nous accédons aux fonctionnalités d'une classe. Pour construire un objet, nous pouvons utiliser le mot-clé "new". Les fonctions, les membres de données et le comportement d'une classe qui produit un objet en mémoire sont stockés.

 

5. Quelle Est La Distinction Entre Les Termes Statique, Public Et Vide ?

N'importe où dans le programme peut accéder à des variables définies publiquement. Les variables statiques sont accessibles globalement sans qu'il soit nécessaire de créer une instance de classe. En C#, un modificateur de type appelé Void est utilisé pour indiquer le type de retour d'une méthode.

6. Définissez Les Constructeurs.

Un constructeur est une fonction membre spécifique à une classe. Lorsqu'un objet est formé, le constructeur est appelé automatiquement. La classe construit toutes les valeurs des données membres lors de son initialisation.

7. Qu'est-Ce Que C# Dans La Récupération De Place ?

Le processus de nettoyage de la mémoire qui a été occupée par des éléments indésirables est connu sous le nom de récupération de place. Une certaine quantité de mémoire est automatiquement affectée à un objet de classe lorsqu'il est créé dans la mémoire de tas. Maintenant que vous avez fini de travailler sur l'élément, l'espace mémoire qu'il occupait auparavant est perdu. La mémoire doit être libérée.

8. Que Signifie Exactement Structure En C# ?

En C#, une structure est un type de données composé de nombreux types de données, tels que des méthodes, des champs, des constructeurs, des constantes, des propriétés, des indexeurs, des opérateurs et même d'autres structures. Une structure facilite la consolidation de nombreux types de données en une seule unité. En ce sens, ils sont analogues à des cours. Les structures sont des types valeur, tandis que les classes sont des types référence.

9. Comment Le Code C# Est-Il Compilé ?

Lorsqu'un projet est créé, le code source C# est compilé en langage intermédiaire (IL). IL est une collection d'instructions qui génère du code machine à exécuter sur un processeur de machine. Le code est envoyé du préprocesseur au compilateur, puis à l'assembleur et enfin à l'éditeur de liens en quatre étapes.

10. Décrivez Clairement Les Différentes Classes C#.

  • Statique : C'est le genre de classe qui ne peut pas être instancié, donc on ne peut pas utiliser le mot clé new pour en faire un objet, mais on peut appeler directement les membres de la classe en utilisant leur nom de classe.
  • Abstract : Pour définir des classes abstraites, utilisez le mot-clé abstract. Aucun objet ne peut être créé pour les classes abstraites. Il doit être hérité dans une sous-classe si vous souhaitez l'utiliser. Des définitions simples de méthodes abstraites et non abstraites sont autorisées dans une classe abstraite. 
  • Partiel : cette classe vous permet de séparer vos propriétés, méthodes et événements dans plusieurs fichiers source, qui sont ensuite combinés en une seule classe au moment de la construction.
  • Scellé : Une classe scellée ne peut pas être héritée d'une autre classe et a des caractéristiques limitées. Les modificateurs d'accès ne peuvent pas être ajoutés à la classe scellée.

11. Que Sont Exactement Les Jagged Arrays ?

Un tableau avec des éléments de tableau est appelé tableau en escalier. Les éléments des Jagged Arrays peuvent être de plusieurs formes et tailles.

12. Quelle Est La Différence Entre Les Paramètres Out Et Ref ?

Lorsque vous donnez un argument en tant que référence, le paramètre doit être initialisé avant d'être passé à la méthode. Un paramètre out, en revanche, n'a pas besoin d'être initialisé avant d'être fourni à une méthode.

13. En C#, Qu'est-Ce Qu'un Destructeur ?

Un destructeur est un type de méthode en C# qui fait partie d'une classe. La fonction principale d'un destructeur est de supprimer les instances d'une classe lorsqu'elles ne sont plus nécessaires afin de libérer de la mémoire. Les destructeurs sont parfois appelés finaliseurs.

14. En C#, Qu'est-Ce Qu'un Indexeur ?

Les indexeurs sont utilisés en C# pour rechercher des instances d'une classe ou d'une structure. Les valeurs indexées sont donc accessibles de la même manière qu'un tableau, mais sans avoir à déclarer explicitement un type ou un membre d'instance.

15. Quelle Est La Différence Entre Le Code Managé Et Non Managé ?

Le code managé vous permet d'exécuter du code dans le framework .NET sur un environnement d'exécution CLR managé.

Le code contrôlé s'exécute sur l'environnement d'exécution géré plutôt que sur le système d'exploitation. Fournit une variété de services tels qu'un collecteur de déchets, la gestion des exceptions, etc.

Le code non managé est un code qui ne s'exécute pas sur le CLR et fonctionne en dehors du framework .NET. Ils ne fournissent pas de services linguistiques de haut niveau et fonctionnent donc sans eux. C++ en est un exemple.

16. Décrire La Sérialisation.

Un flux d'octets doit être créé à partir de l'élément afin de le transférer sur un réseau. La sérialisation est l'acte de transformer un élément en un flux d'octets. L'interface de sérialisation doit être implémentée pour qu'un article soit sérialisable. Le contraire de la construction d'un objet à partir d'un flux d'octets est appelé désérialisation.

17. En C#, Comment Les Champs Et Les Propriétés Varient-Ils Les Uns Des Autres ?

Un champ est un membre de classe ou un objet de toute sorte qui sert d'emplacement pour stocker des données, tandis qu'une propriété est un membre de classe qui offre une méthode pour lire, écrire et calculer la valeur d'un champ privé.

18. Comment Pouvez-Vous Décrire En Détail L'utilisation D'instructions En C# ?

L'instruction using est utilisée pour restreindre l'utilisation d'une ou plusieurs ressources au sein de l'application. Les ressources sont consommées et libérées sur une base constante.

Le travail principal de cette instruction est de gérer les ressources indésirables et de les libérer automatiquement. Une fois que l'objet qui utilise la ressource est formé, assurez-vous que la fonction dispose de l'objet est appelée pour libérer les ressources requises par cet objet ; c'est ici que l'utilisation d'instructions est utile.

19. Comment Implémenteriez-Vous De Nombreuses Interfaces Avec Le Même Nom De Méthode Dans La Même Classe ?

Pour implémenter plusieurs interfaces avec le même nom de méthode, évitez de les implémenter dans le corps de la fonction. Au lieu de cela, vous fourniriez le nom de l'interface directement dans le corps de la méthode. Le compilateur reconnaîtra quelles méthodes d'interface sont référencées, résolvant le problème.

20. En C#, Quelle Est La Distinction Entre Task Et Thread ?

Un thread est un véritable thread du système d'exploitation avec ses propres ressources de pile et de noyau. Thread fournit le plus de contrôle. Le thread vous permet d'abandonner (), de suspendre () ou de reprendre (). Le statut d'un thread peut être observé ou ses attributs, tels que la taille de la pile, l'état de l'appartement et la culture, peuvent être définis. Le CLR conserve un pool de threads encapsulés par ThreadPool.

La bibliothèque parallèle de tâches a une classe appelée Task. Contrairement au ThreadPool, la tâche n'a pas son propre thread de système d'exploitation. Les tâches sont exécutées par le TaskScheduler, bien que le planificateur par défaut soit exécuté par le ThreadPool. Il est possible d'être notifié lorsqu'une Tâche se termine et d'obtenir un résultat.

21. Qu'est-Ce Que La Fonction Finalize En C# ?

La classe d'objets utilisée pour les actions de nettoyage définit la fonction finalize(). Lorsqu'une référence à un objet n'est pas utilisée pendant une période prolongée, le ramasse-miettes appellera souvent cette fonction.

Le ramasse-miettes libère automatiquement les ressources contrôlées, mais si vous souhaitez libérer des ressources inutiles telles que des descripteurs de fichiers, des connexions de données, etc., vous devez explicitement implémenter la fonction finalize.

22. Faites Une Distinction Entre Finaliser Les Blocs Et Finaliser.

Le bloc terminé est appelé une fois les blocs try-and-catch terminés car il est nécessaire pour la gestion des exceptions. Le bloc de code est exécuté, que l'exception ait été interceptée ou non. Le code du bloc est généralement plus propre.

La méthode finalize est invoquée juste avant la récupération de place. Les principales responsabilités de la méthode finalisée sont de nettoyer le code non managé, qui est automatiquement déclenché chaque fois qu'une instance n'est pas rappelée.

23. Décrivez En Détail La Méthode Dispose De C#.

La fonction disposeof() libère les ressources inutilisées d'un objet. Ressources inutilisées, telles que des fichiers, des connexions de données, etc. Cette fonction est spécifiée dans l'interface IDisposable, qui est implémentée par la classe en déclarant le corps de l'interface IDisposable.

La fonction dispose n'est pas appelée automatiquement ; le programmeur doit l'implémenter manuellement pour une utilisation efficace des ressources.

24. Qu'est-Ce Que La Surcharge De Méthode C# ? Élucider.

La surcharge de méthode est une approche typique en C# qui est utilisée pour construire un certain nombre de méthodes avec le même nom et des signatures spécifiées. Cette procédure est répétée avec la même classe.

Lorsque la procédure de surcharge de méthode est terminée, le compilateur commence les opérations pour appeler les actions spécifiées en fonction de la surcharge de méthode.

25. Quelle Est La Différence Entre Lecture Seule Et Constantes ?

Les variables constantes sont déclarées et initialisées lors de la compilation. Après cela, cette valeur ne peut plus être modifiée. D'autre part, la lecture seule est utilisée une fois qu'une valeur a été allouée au moment de l'exécution.

26. Que Sont Le Contrôle Utilisateur Et Le Contrôle Personnalisé ?

Le code compilé est utilisé pour développer des contrôles personnalisés. Ceux-ci peuvent être inclus dans la boîte à outils et sont faciles à utiliser. En faisant glisser et en déposant ces contrôles, les développeurs peuvent les inclure dans leurs formulaires Web.

Les contrôles utilisateur et les fichiers inclus dans ASP sont assez similaires. Ils sont aussi simples à réaliser. Les contrôles utilisateur, en revanche, ne peuvent pas être ajoutés à la boîte à outils. Ils ne peuvent pas non plus être tirés et laissés tomber.

27. En C#, Qu'est-Ce Qu'un Délégué Multicast ?

Un délégué multicast maintient des références ou des adresses à plusieurs fonctions en même temps. Lorsque nous invoquons le délégué multicast, il invoquera également toutes les autres fonctions auxquelles il se réfère. Pour appeler plusieurs méthodes, utilisez toute la signature de la méthode, tout comme le délégué.

28. Qu'est-Ce Que La Mise En Pool D'objets En C# ?

La mise en commun d'objets est une technique de conception de logiciels qui recycle les choses plutôt que de les reconstruire. Pour ce faire, il stocke les éléments choisis dans un pool et les rend disponibles pour une utilisation lorsqu'une application les demande. Cette procédure améliore les performances en réduisant la génération d'objets inutiles.

29. Que Sont Exactement 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'améliorer la sécurité des types et d'améliorer la vitesse. Nous pouvons construire des classes de collection avec des génériques.

Dans le système, un espace de noms générique doit être utilisé à la place de classes comme ArrayList. Espace de noms pour les collections. L'utilisation de types paramétrés est encouragée par les génériques.

30. Est-Il Possible De Remplacer Une Méthode Virtuelle Privée ?

Une méthode virtuelle privée ne peut pas être remplacée car elle est privée pour la classe et n'est pas accessible depuis l'extérieur de celle-ci.

31. Faire La Différence Entre La Surcharge De Méthode Et Le Remplacement De Méthode En C# ?

Le remplacement de méthode est le processus de modification de la définition fondamentale d'une classe dérivée. Les méthodes de la classe dérivée se comportent finalement différemment en raison de cette stratégie.

La surcharge de méthode, d'autre part, peut être décrite comme le fait de générer de nombreuses méthodes avec le même nom mais des signatures distinctes sous la même classe.

32. En C#, Quelle Est La Différence Entre String Et StringBuilder ?

Un objet chaîne est immuable, ce qui signifie qu'il ne peut pas être modifié une fois qu'il a été créé. Toute tentative de modification de l'objet chaîne entraînera la création d'un nouvel objet chaîne.

Un objet générateur de chaînes, en revanche, est malléable et peut être modifié comme le développeur le juge approprié.

33. Que Sont Exactement Les Délégués ?

En C++, les délégués sont fondamentalement les mêmes que les pointeurs de fonction. La seule distinction entre les deux est que les délégués sont de type sécurisé alors que les pointeurs de fonction ne le sont pas. Les délégués sont nécessaires car ils permettent la construction de fonctions génériques de type sécurisé.

34. Quand Devriez-Vous Utiliser Le Multithreading En C# Et Quand Devriez-Vous L'éviter ?

Le multithreading, souvent appelé threading, est une approche efficace pour augmenter la vitesse d'un programme dans lequel de nombreuses activités s'exécutent simultanément. Il permet à divers threads de s'exécuter indépendamment, plutôt que d'attendre que l'étape précédente soit terminée. Cela a la capacité d'augmenter le rythme d'un programme.

Cependant, lorsque plusieurs processus du programme sont interconnectés, le multithreading n'est pas recommandé. Par exemple, si l'étape B dépendait de l'exécution de l'étape A en premier, le multithreading entraînerait des problèmes de performances et des défauts logiciels. Le threading devient de plus en plus sensible à mesure qu'un programme gagne en complexité.

35. En C#, Qu'est-Ce Qu'un Délégué Multicast ?

Un délégué de multidiffusion en C#, par opposition à un délégué de base, fait référence à de nombreuses méthodes cibles. Lorsqu'un délégué multidiffusion est utilisé, toutes les fonctions pointées par le délégué sont appelées. Ils sont implémentés à l'aide de la classe MulticastDelegate du système.

36. En C#, Quelle Est La Distinction Entre La Liaison Tardive Et La Liaison Précoce ?

  • La liaison précoce a lieu au moment de la compilation, tandis que la liaison tardive a lieu pendant l'exécution.
  • La liaison tardive est souvent plus lente que la liaison précoce car elle se produit au moment de l'exécution.
  • Contrairement à la liaison tardive, qui utilise l'objet pour résoudre les appels de méthode, la liaison anticipée résout les appels de méthode à l'aide des informations de classe.

37. Différencier Directcast Et Ctype ?

Le type d'objet qui nécessite que le type d'exécution corresponde au type spécifié dans DirectCast est converti à l'aide de DirectCast.

Lorsqu'une conversion est spécifiée entre une expression et un type, Ctype est utilisé.

38. Comment HashSet Est-Il Utilisé En C# ?

En C#, un HashSet est une collection non ordonnée de valeurs distinctes. En général, il est utilisé pour empêcher l'insertion d'éléments en double dans une collection, et il fonctionne mieux qu'une liste pour cette tâche.

La classe HashSet, qui est issue de System, est utilisée pour l'implémenter.

39. Veuillez Expliquer Le Regroupement De Threads En C#.

En C#, un pool de threads est une collection de threads. Ces threads sont utilisés pour effectuer des tâches sans interférer avec la fonctionnalité du thread principal. Un thread dans un pool de threads retourne au pool de threads lorsqu'il a fini de s'exécuter.

La classe System contient des classes qui gèrent le thread dans le pool de threads et ses actions. Filetage. ThreadPool est un espace de noms.

40. Quelle Est La Différence Entre Les Mots-Clés Const Et ReadOnly En C# ?

  • ReadOnly ne peut pas être déclaré dans la méthode, alors que Const le peut.
  • Const est une constante de compilation, tandis que ReadOnly est une constante d'exécution.
  • Les valeurs ReadOnly peuvent être modifiées, mais pas les valeurs Const.

41. Quels Détails Concernant Le Fichier C# XSD Pouvez-Vous Fournir ?

XSD signifie XML Schema Definition. Si aucun fichier XSD n'est connecté au fichier XML, il peut avoir n'importe quels attributs, éléments et balises. Le fichier XSD fournit un cadre pour le fichier XML, déterminant quels composants et attributs doivent être présents dans le fichier XML ainsi que leur ordre.

42. Que Signifient Pour Vous Les Propriétés Get Et Set Accessor ?

En C #, Get et Set sont appelés accesseurs car ils sont créés à l'aide de propriétés. Une propriété permet de lire et d'écrire dans la valeur d'un champ privé. Ces champs privés sont accessibles via des accesseurs.

Alors que la propriété Get est utilisée pour renvoyer la valeur d'une propriété, la propriété Set est utilisée pour définir la valeur.

43. Qu'est-Ce Que L'injection De Dépendances En C# ?

L'injection de dépendances (DI) est une technique de conception en C # utilisée pour créer une programmation à liens lâches. Cette procédure transfère la création et la liaison des objets dépendants en dehors de la classe sur laquelle ils reposent. L'objectif principal est de rendre les futures modifications de code plus gérables.

 

Aucun commentaire:

Enregistrer un commentaire