Maison  >  Article  >  Java  >  10 questions d'entretien Java fréquemment posées

10 questions d'entretien Java fréquemment posées

王林
王林avant
2021-02-04 10:20:133098parcourir

10 questions d'entretien Java fréquemment posées

Voici 10 questions qui sont souvent posées lors des entretiens récents. Elles sont maintenant compilées et partagées à titre de référence.

1. Évaluez-vous sur une échelle de 10 points - Dans quelle mesure êtes-vous bon en Java ?

Si vous n'êtes pas sûr de vous ou de vos compétences en Java, alors c'est une question très difficile. . Si vous êtes un expert Java, vous devez le maintenir à un niveau bas. Après cela, vous pourrez recevoir des questions en fonction du niveau auquel vous admettez. Ainsi, par exemple, si vous avez répondu 10 mais que vous ne pouviez pas répondre à une question assez difficile, ce serait un désavantage.

2. Expliquez la différence entre Java 7 et Java 8.

Honnêtement, il y a beaucoup de différences. Ici, si vous pouvez lister les plus importants, cela suffira. Vous devez expliquer les nouvelles fonctionnalités de Java 8. Pour une liste complète, visitez le site Web d'origine : Java 8 JDK.

La chose la plus importante que vous devez savoir est :

Les expressions Lambda, une nouvelle fonctionnalité du langage, ont été introduites dans cette version. Les expressions Lambda vous permettent de traiter les fonctions comme des paramètres de méthode ou le code comme des données. Les expressions Lambda vous permettent d'exprimer de manière plus compacte des instances d'interfaces à méthode unique (appelées interfaces fonctionnelles).

Les références de méthodes fournissent des expressions lambda faciles à lire pour les méthodes qui ont déjà des noms.

Les méthodes par défaut permettent d'ajouter de nouvelles fonctionnalités aux interfaces d'une bibliothèque et assurent la compatibilité binaire avec le code écrit pour les anciennes versions de ces interfaces.

Répéter les annotations

offre la possibilité d'appliquer le même type d'annotation plusieurs fois à la même déclaration ou à la même utilisation de type.

Annotations de type

Les annotations de type offrent la possibilité d'appliquer des annotations partout où un type est utilisé, pas seulement dans les déclarations. Cette fonctionnalité prend en charge une vérification améliorée du type de code lorsqu’elle est utilisée avec un système de type enfichable. 3. Savez-vous quels sont les types de collections ?

Ici, vous devriez connaître le point le plus important :

ArrayList

LinkedList

HashMap

HashSet

Après cela, vous pourriez être confronté à des questions telles que quand devriez-vous utiliser ce type d'ensemble particulier, quels sont les avantages par rapport aux autres types, comment les données sont-elles stockées et comment les structures de données fonctionnent en coulisses.

Ici, la meilleure approche est d'en apprendre le plus possible sur ces types de collections, car la variété des questions est presque inépuisable.

4. De quelles méthodes dispose la classe Object ?

C'est une question très courante pour déterminer votre familiarité avec les connaissances de base. Voici les méthodes dont dispose chaque objet :

La classe Object, qui appartient au package java.lang, se trouve en haut de l'arborescence des classes. Chaque classe est un descendant direct ou indirect de la classe d'objet. Chaque classe que vous utilisez ou écrivez hérite des méthodes d'instance d'un objet. Vous n'êtes pas obligé d'utiliser l'une de ces méthodes. Toutefois, si vous choisissez de le faire, vous devrez peut-être les remplacer par du code spécifique à la classe.

Les méthodes héritées de Object abordées dans cette section sont :

    Créer et renvoyer une copie de cet objet.
  • protected Object clone() throws CloneNotSupportedException
  • Identifie si d'autres objets sont "égaux" à cet objet.
  • public boolean equals(Object obj)
  • Le garbage collector est appelé sur un objet lorsqu'il détermine qu'il n'y a aucune référence à l'objet.
  • protected void finalize() throws Throwable
  • Renvoie la classe d'exécution de l'objet.
  • public final Class getClass()
  • Renvoie le hashcode de l'objet
  • public int hashCode()
  • Renvoie la représentation sous forme de chaîne de l'objet.
  • public String toString()
  • Les méthodes notify, notifyAll et wait de l'objet jouent toutes un rôle dans les activités des threads exécutés indépendamment dans le programme de synchronisation, qui seront abordés plus tard et ne seront pas abordés ici.

Il existe cinq méthodes :

  • public final void notify()
  • public final void notifyAll()
  • public final void wait()
  • public final void wait(long timeout)
  • public final void wait(long timeout, int nanos)
  • 5. Pourquoi les objets String sont-ils immuables en Java

1 Parce que les chaînes sont immuables en Java, ce n'est qu'alors que nous pouvons avoir un pool de chaînes ? . De cette façon, le moteur d'exécution Java économise beaucoup d'espace sur le segment Java, car différentes variables de chaîne peuvent référencer la même variable de chaîne dans le pool. Si String n'est pas immuable, alors l'internement de String n'est pas possible car si une variable change de valeur, cela sera reflété dans d'autres variables.

(Recommandations pour des questions d'entretien plus connexes :

questions et réponses d'entretien Java

) 2. Si la chaîne n'est pas immuable, elle posera de sérieux problèmes à l'application. .menaces pour la sécurité. Par exemple, le nom d'utilisateur et le mot de passe de la base de données sont transmis sous forme de chaînes pour obtenir la connexion à la base de données, l'hôte de programmation du socket et les détails du port transmis sous forme de chaînes. Étant donné que String est immuable, sa valeur ne peut pas être modifiée. Sinon, tout pirate informatique pourrait modifier la valeur de référence, provoquant des problèmes de sécurité dans l'application.

3. Puisque String est immuable, il est sans danger pour le multithreading et une seule instance de chaîne peut être partagée entre différents threads. Pour la sécurité des threads, évitez d’utiliser la synchronisation ; les chaînes sont implicitement thread-safe.

4. Les chaînes sont utilisées dans les chargeurs de classes Java, et l'immuabilité garantit que la classe correcte est chargée par le chargeur de classes. Par exemple, considérons une instance dans laquelle vous essayez de charger java.sql. La classe de connexion est connectée, mais la valeur référencée est remplacée par myhacking. Classe de connexion, qui peut effectuer des opérations inutiles sur la base de données.

5. Étant donné que String est immuable, son hashcode sera mis en cache lors de sa création et n'aura pas besoin d'être calculé à nouveau. Cela en fait un bon candidat pour les clés dans une carte, et il est traité plus rapidement que les autres objets clés HashMap. C'est pourquoi String est l'objet le plus couramment utilisé pour les clés HashMap.

6. Quelle est la différence entre Final, Enfin et Finaliser

Cette question est ma préférée.

final Le mot-clé est utilisé dans plusieurs contextes pour définir une entité qui ne peut être allouée qu'une seule fois.

Java enfin le bloc est un bloc utilisé pour exécuter du code important, comme la fermeture de connexions, de flux, etc. Que l'exception soit gérée ou non, le bloc Java final est toujours exécuté. Le bloc Java suit enfin le bloc try ou catch.

Finalize est une méthode appelée par le GarbageCollector (garbage collector) avant de supprimer/détruire un objet éligible au garbage collection pour effectuer des activités de nettoyage.

7. Quel est le problème avec le diamant ?

Le problème du diamant reflète pourquoi l'héritage multiple n'est pas autorisé en Java. S'il existe deux classes qui ont une super classe partagée avec une méthode spécifique, elle sera remplacée dans les deux sous-classes. Ensuite, si vous décidez d'hériter de ces deux sous-classes, le langage n'a aucun moyen de décider quelle méthode vous souhaitez appeler si vous souhaitez l'appeler

Nous appelons ce problème Diamond question. Son nom vient de l’image ci-dessus, qui représente l’avertissement.

8. Comment rendre une classe immuable

Je pense que c'est un problème assez difficile. Vous devez apporter quelques modifications à votre classe pour obtenir l'immuabilité :

1. Déclarez la classe comme finale afin qu'elle ne puisse pas être étendue.

2. Rendre tous les champs privés afin que l'accès direct ne soit pas autorisé.

3. Ne fournissez pas de méthodes de définition pour les variables

4. Rendre tous les champs de variables définitifs afin que leurs valeurs ne puissent être attribuées qu'une seule fois.

5. Initialisez tous les champs via le constructeur qui effectue une copie approfondie.

6. Effectuez le clonage d'objet dans la méthode getter pour renvoyer une copie au lieu de la référence réelle de l'objet.

9. Que signifie Singleton ?

Singleton est une classe qui ne permet de créer qu'une seule instance d'elle-même et donne accès à l'instance créée. Il contient des variables statiques qui peuvent contenir des instances uniques et privées d'elles-mêmes. Il peut être utilisé lorsque l'utilisateur souhaite limiter l'instanciation d'une classe à un seul objet. Ceci est souvent utile lorsqu'un seul objet est nécessaire pour coordonner les opérations entre les systèmes.

10. Qu'est-ce que l'injection de dépendances ?

C'est la première question que vous devez savoir lorsque vous travaillez dans Java EE ou Spring. L'inversion de contrôle (IoC) est un principe de conception en programmation orientée objet qui peut être utilisé pour réduire le couplage entre les codes informatiques. La méthode la plus courante est appelée Dependency Injection (DI), et l'autre méthode est appelée "Dependency Lookup". Par inversion de contrôle, lorsqu'un objet est créé, une entité externe qui contrôle tous les objets du système lui transmet la référence de l'objet dont elle dépend. On peut aussi dire que des dépendances sont injectées dans l'objet.

Le composant n'effectue pas de requêtes de positionnement et fournit uniquement des méthodes Java ordinaires permettant au conteneur de déterminer les dépendances. Le conteneur est seul responsable de l'assemblage des composants. Il transmettra les objets qui répondent aux dépendances aux objets requis via les propriétés ou les constructeurs JavaBean. La pratique consistant à injecter des dépendances via les propriétés JavaBean est appelée Setter Injection ; la pratique consistant à transmettre des dépendances en tant que paramètres de constructeur est appelée Constructor Injection

Résumé

Dans cet article, nous avons discuté du top 10 des interviews Java. questions qui, à mon avis, d'après mon expérience, sont les plus importantes aujourd'hui. Si vous savez cela, je pense que vous aurez un énorme avantage dans le processus de recrutement.

Si vous avez vécu des expériences similaires sur ce sujet, ou si vous avez des réussites, veuillez les partager dans les commentaires ci-dessous.

Recommandations associées : Tutoriel vidéo Java

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