Maison  >  Article  >  Java  >  Questions d'entretien Java résumées à partir de nombreuses années d'expérience en développement - (1)

Questions d'entretien Java résumées à partir de nombreuses années d'expérience en développement - (1)

王林
王林avant
2020-07-21 17:28:152077parcourir

Questions d'entretien Java résumées à partir de nombreuses années d'expérience en développement - (1)

1. Quelle est la différence entre les types de données de base et les classes encapsulées

(Plus de questions d'entretien recommandées : questions d'entretien Java ? )

Les types primitifs sont des classes et les types référence sont des objets.

Utilisez "==" pour comparer la taille des types primitifs et "equals" pour comparer la taille des types de référence.

Les types de référence peuvent être sérialisés, mais pas les types primitifs.

Seuls les types référence peuvent être utilisés dans les classes de collection, pas les types primitifs.

New n'est pas requis pour les types de données de base, mais new est requis pour les classes encapsulées.

Les paramètres de données de base sont transmis par valeur et les types encapsulés sont transmis par adresse.

2. La différence entre String, StringBuffer et StringBuilder

String est une constante de chaîne, et StringBuffer et StringBuilder sont des variables de chaîne.

Le contenu de caractères créé par String est immuable (le tableau de caractères sous-jacent de String est final) et le contenu de caractères de StringBuffer et StringBuilder peut être allongé.

StringBuffer est thread-safe, StringBuilder est thread-unsafe, mais rapide (car il ne consomme pas de performances pour la sécurité des threads).

3. Pourquoi String est-il immuable ?

Bien que String, StringBuffer et StringBuilder soient toutes des classes finales, les objets qu'ils génèrent sont tous immuables et ils sont tous implémentés en interne par des tableaux de caractères.

Mais la différence est que le tableau char défini dans la classe String est final, et StringBuffer et StringBuilder héritent tous deux de la classe AbstractStringBuilder, et leur implémentation interne est complétée par cette classe parent, et cette classe parent Le char Le tableau défini dans la classe n'est qu'une variable privée ordinaire et peut être ajouté à l'aide de append.

(Recommandations de didacticiel associées : Tutoriel d'introduction à Java)

Parce que AbstractStringBuilder implémente l'interface Appendable.

4. La différence entre les exceptions d'exécution et les exceptions non-exécutables

Les exceptions d'exécution sont des erreurs d'exécution : telles que ClassCastException (exception de conversion de classe), IndexOutOfBoundsException (tableau hors de limites) ), NullPointerException (pointeur nul), ArrayStoreException (exception de stockage de données, type incohérent lors de l'utilisation du tableau), exception BufferOverflowException de l'opération IO.

(Tutoriel vidéo recommandé : Tutoriel vidéo Java )

Les exceptions non-exécutables sont des erreurs qui ne sont pas visibles avant l'exécution. Vous pouvez utiliser try and catch pour intercepter les exceptions.

5. Décrivez brièvement les caractéristiques de l'orienté objet et donnez des exemples pour illustrer votre compréhension de l'orienté objet

Les caractéristiques de l'orienté objet sont résumées sous forme d'encapsulation, héritage, polymorphisme et réalité. Les attributs et les caractéristiques comportementales des choses dans le monde sont abstraits et placés dans un conteneur (classe), comme les actions humaines telles que marcher, écouter, manger, parler, etc. aux méthodes de la classe, mais elles sont le dénominateur commun des êtres humains. La taille et le poids sont des attributs de la classe.

Encapsulation : c'est-à-dire que la partie du code que le concepteur ne veut pas divulguer à l'utilisateur est encapsulée, via les modificateurs private (la moindre autorisation), public (la permission maximale), protected, default (la permission par défaut avant que l'attribut ne soit type), ceux-ci peuvent jouer un rôle dans la limitation des autorisations des objets de classe.

Héritage : processus dans lequel une sous-classe hérite d'une classe parent. L'héritier peut posséder tous les attributs de méthode de la classe parent. L'avantage est d'améliorer la réutilisabilité du code. La sous-classe n'a besoin que d'écrire des fonctions ou des champs uniques et peut extraire le code commun dans la classe parent.

Polymorphisme : unifiez les attributs de la méthode de sous-classe via la classe parent, puis en appelant, vous pouvez utiliser la méthode de sous-classe de manière arbitraire pour optimiser la quantité de code. Le principe est que la sous-classe réécrit la méthode de la classe parent.

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer