Maison  >  Article  >  développement back-end  >  Exemples de didacticiels C# pour certaines questions d'entretien

Exemples de didacticiels C# pour certaines questions d'entretien

零下一度
零下一度original
2017-06-23 14:30:291641parcourir

Récemment, un ami qui était engagé dans le développement de NET a démissionné et voulait que je lui trouve des questions d'entretien liées à NET, afin qu'il puisse se préparer à de nouveaux défis.

J'ai rapidement trouvé divers guides et questions de test que j'avais recherchés auparavant, et aujourd'hui je vais trier les points de connaissances de base sur NET.

1. Les trois caractéristiques majeures des langages orientés objet : l'encapsulation, l'héritage et le polymorphisme ;

2. Quelles sont les similitudes et les différences entre les interfaces et les classes :

Différences :

 ①L'interface ne peut pas être instanciée directement.

 ②L'interface contient uniquement la déclaration des méthodes ou des attributs, mais n'inclut pas l'implémentation de la méthode.

 ③Les interfaces peuvent avoir plusieurs héritages, mais les classes ne peuvent avoir qu'un seul héritage.

 ④Les expressions ont des significations différentes. L'interface définit principalement une spécification et appelle les méthodes de manière uniforme, c'est-à-dire que les classes de spécification et les classes de contraintes sont l'implémentation et la collection de fonctions de méthode

Points similaires :

 ①Les interfaces, classes et structures peuvent toutes hériter de plusieurs interfaces.

 ②Une interface est similaire à une classe de base abstraite : tout type non abstrait qui hérite d'une interface doit implémenter tous les membres de l'interface.

 ③Les interfaces et les classes peuvent contenir des événements, des indexeurs, des méthodes et des propriétés.

3. Quelles sont les similitudes et les différences entre les classes abstraites et les interfaces ?

 ①Héritage : les interfaces prennent en charge l'héritage multiple ;

②Concept exprimé : l'interface est utilisée pour la spécification, avec davantage d'accent sur le contrat, la classe abstraite est utilisée pour les points communs, en mettant l'accent sur le parent et l'enfant. La classe abstraite est un degré élevé d'agrégation d'une classe de choses, donc pour les sous-classes qui héritent de classes abstraites, pour les classes abstraites, elle appartient à la relation « Est A » tandis que les interfaces définissent des normes comportementales et mettent l'accent sur la relation « Peut faire » ; " , donc pour les sous-classes qui implémentent des interfaces, par rapport aux interfaces, "le comportement doit être complété en fonction de l'interface".

③Implémentation de la méthode : pour les méthodes dans les classes abstraites, la partie implémentation peut être donnée ou non ; tandis que la partie implémentation ne peut pas être donnée pour les méthodes d'interface (règles abstraites), et les méthodes dans les interfaces ne peuvent pas être ajoutées avec un modificateur.

④ Réécriture de sous-classe : la classe d'héritage a différentes implémentations des méthodes impliquées dans les deux. La classe héritée n'a pas besoin de réécrire les méthodes abstraites définies par la classe abstraite, c'est-à-dire que les méthodes de la classe abstraite peuvent être étendues tandis que pour les méthodes ou attributs définis par la classe interface, ils doivent être réécrits dans le classe héritée. Les méthodes et propriétés correspondantes sont implémentées.

⑤L'impact des nouvelles méthodes : Dans une classe abstraite, si une nouvelle méthode est ajoutée, la classe héritée n'a pas besoin d'être utilisée pour aucun traitement pour les interfaces, la classe héritée doit être modifiée pour fournir un ; méthode nouvellement définie.

 ⑥Les interfaces peuvent agir sur les types valeur (les énumérations peuvent implémenter des interfaces) et les types référence ne peuvent agir que sur les types référence ;

 ⑦Les interfaces ne peuvent pas contenir de champs et de méthodes implémentées. Les interfaces contiennent uniquement des signatures de méthodes, de propriétés, d'indexeurs et d'événements ; les classes abstraites peuvent définir des champs, des propriétés et des méthodes implémentées.

4. La différence entre virtual, scellé, override et abstract

 ①virtual déclare le mot-clé de la méthode virtuelle, indiquant que la méthode peut être remplacée

 ②sealed indique que le la classe ne peut pas être héritée

 ③override remplace la méthode de la classe de base

 ④abstract déclare les mots-clés des classes abstraites et des méthodes abstraites. Les méthodes abstraites ne fournissent pas d'implémentation et sont implémentées par les sous-classes. être instancié.

5. Quelle est la différence entre le remplacement et la surcharge ?

Surcharge : lorsqu'une classe contient deux classes avec le même nom mais des signatures différentes (le nom de la méthode est le même mais la liste des paramètres est la même). différent) ) se produit en cas de surcharge de méthode. Utilisez la surcharge de méthodes pour fournir des méthodes qui exécutent la même sémantique mais ont des fonctions différentes. (Plusieurs méthodes dans une classe)

Réécriture : Utilisée dans l'héritage de classe, l'implémentation de la méthode virtuelle de la classe parent peut être modifiée en remplaçant la méthode de la sous-classe. (Plus de deux classes)

6. La différence entre les structures et les classes

① Les structures sont des types valeur et les classes sont des types référence
② Les structures ne prennent pas en charge les constructeurs gratuits. non pris en charge et ne peut pas être modifié avec protected ;
③ Les structures sont souvent utilisées pour le stockage de données, et les classes sont principalement utilisées pour le comportement
④ Les classes doivent utiliser le mot-clé new pour instancier les objets, et struct n'a pas besoin de le faire ; utilisez le nouveau mot clé ;
⑤ la classe peut être une classe abstraite, struct ne prend pas en charge l'abstraction

7. Similitudes et différences entre out et ref

①ref nécessite que les paramètres soient explicitement initialisé avant utilisation, out À initialiser à l'intérieur de la méthode ;

②out convient à une utilisation lorsque plusieurs valeurs de retour doivent être renvoyées, tandis que ref est utilisé lorsque la méthode appelée doit modifier la référence de l'appelant.

 ③ref signifie entrée et sortie, out signifie seulement sortir mais pas entrer (ref peut transmettre la valeur du paramètre dans la fonction, mais out doit effacer le paramètre, ce qui signifie que vous ne pouvez pas transmettre de valeur from out. Oui, après l'entrée de out, la valeur du paramètre est vide)

8. La différence entre le type valeur et le type référence

 ① Type de valeur : C'est une quantité contenant des données réelles. . Autrement dit, lors de la définition d'une variable de type valeur, C# allouera une zone de stockage de taille appropriée à la variable de manière empilée en fonction du type déclaré, et les opérations de lecture ou d'écriture ultérieures sur la variable seront directement effectuées dans ce zone mémoire. continuez ;

 ②Type de référence : une variable de type référence ne stocke pas les données réelles qu'elle représente, mais stocke une référence aux données réelles.
Le type référence est créé en deux étapes : créer d'abord une variable de référence sur la pile, puis créer l'objet lui-même sur le tas, puis attribuer le handle de cette mémoire (également la première adresse de la mémoire) à la référence variable;

9. Qu'est-ce que le déballage et la boxe

Boxing → convertir le type de valeur en type de référence, unboxing → convertir le type de référence au type de valeur .

10. Quel est l'impact sur les performances du boxing et du unboxing ? Comment le résoudre ?

 ①Impact : les deux impliquent l'allocation de mémoire et la création d'objets, qui ont un impact important sur les performances ;

 ②Solution : utiliser des génériques

11. L'événement est-il une commission ?

 ①Delegate : similaire à un pointeur de fonction en C ou C++, permettant de passer des méthodes en tant que paramètres ; (vous pouvez remplacer une méthode en tant que paramètre dans une autre méthode)

 ②Les événements sont des délégations spéciales, les événements sont implémentés en interne sur la base d'une délégation

12. Le constructeur Constructeur peut-il être hérité ? Peut-il être annulé ?

Le constructeur ne peut pas être hérité, il ne peut donc pas être remplacé, mais il peut être surchargé

13.

La classe String est une classe finale elle ne peut donc pas hériter de la classe string.

14. Lorsqu'un thread entre dans une méthode d'un objet, d'autres threads peuvent-ils entrer dans la méthode ?

Non, les méthodes d'un objet ne sont accessibles que par un seul thread.

15. Utiliser la méthode la plus efficace pour calculer ce qui fait 2 fois 8 ?

 2<<3 (multiplication à gauche, division à droite)

16. Quelle est la différence entre erreur et exception ?

Erreur signifie que la récupération n'est pas impossible, mais très difficile. Exception signifie un problème pratique ou de mise en œuvre, ce qui signifie que le programme ne peut pas fonctionner normalement.

17. Quelles sont les similitudes et les différences entre les connexions UDP et TCP ?

 ①TCP est un protocole de contrôle de transmission. Il fournit des services de flux d'octets fiables et orientés connexion. TCP fournit des fonctions de recomposition de délai d'attente et de vérification des données.

 ②UDP est le protocole de datagramme utilisateur. Il s'agit d'un simple protocole de transmission orienté datagramme et d'une connexion peu fiable.

18. Utilisation du nouveau mot-clé

 ①new l'opérateur est utilisé pour créer des objets et appeler des constructeurs.

②le nouveau modificateur est utilisé pour masquer les membres hérités des membres de la classe de base.

③une nouvelle contrainte est utilisée pour contraindre les types de paramètres pouvant être utilisés comme paramètres de type dans une déclaration générique.

19. Utilisation du mot-clé Using

 ①Espace de noms de référence

 ②Créer un alias pour l'espace de noms ou le type (en utilisant + alias = inclure des informations détaillées sur l'espace de noms Type spécifique)

 ③ Libérer les ressources (fermer le flux de fichiers) ;

20. Les niveaux d'accessibilité sont quels types

 ①Accès public n’est pas restreint.

 ②l'accès protégé est limité à la classe conteneur ou aux types dérivés de la classe conteneur.

 ③l'accès interne est limité à l'assembly actuel.

 ④l'accès interne protégé est limité à l'assembly actuel ou au type dérivé de la classe conteneur.

 ⑤l'accès privé est limité au type contenant.

21. Les règles pour une colonne de nombres sont les suivantes : 1, 1, 2, 3, 5, 8, 13, 21, 34... Trouvez le 30ème chiffre et utilisez un algorithme récursif pour y parvenir. .

22. Tri à bulles

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn