Articles

15 Questions techniques d’entrevue Java de base Réponses pour les Développeurs expérimentés

Lorsque l’expérience d’un Programmeur Java augmente au fil des ans, par exemple lorsqu’elle passe des années de débutant (2 à 4) à plus d’expérience ou de niveau supérieur (5 à 7 ans), les questions d’entrevue Java de base changent également un peu. Bien sûr, les bases comme la structure des données, les algorithmes et la programmation orientée objet restent les mêmes, mais les types de questions deviendront plus avancés et leurs réponses devront certainement être plus détaillées et précises. Je reçois souvent des questions sur les questions Java de base posées à un développeur senior de 5 à 6 ans d’expérience, ou, parfois, je vais pour une interview de développeur Java senior, à quel genre de questions je devrais m’attendre. Cela me déroute parfois, qu’une fois que vous devenez senior, vous commencez automatiquement à participer à l’entretien, et vous devriez avoir une idée de ce à quoi vous attendre lors des entretiens, mais en même temps, je peux comprendre qu’avoir une idée des questions avant de passer l’Entretien aide à la préparation. Bien sûr, vous n’allez pas avoir une question comme celle que vous avez rencontrée lors d’entretiens Java de niveau 2 à 3 ans, mais Cela dépend aussi de différentes séries d’entretiens.
Je n’ai pas vu beaucoup de changements dans les questions posées lors de la ronde téléphonique, qui restent presque les mêmes. Vous trouverez des questions factuelles, des questions de codage et quelques questions délicates. D’un autre côté, les entretiens en face à face sont devenus plus détaillés et plus délicats, surtout avec des suivis désagréables.
Dans cet article, je vais partager quelques 15 questions d’entrevue de base technique Java, que j’ai vues poser à des développeurs seniors et expérimentés de 4 à 6 ans d’expérience dans différents entretiens, principalement par téléphone. Je ne poste pas de réponses pour le moment, mais vous pouvez trouver des réponses à la plupart des questions ici ou sur le blog Javarevisited.
Si vous êtes pressé et que vous cherchez activement un emploi de développeur Java, vous pouvez également vous aider de quelques bons livres écrits pour vous préparer aux entretiens Java J2EE. Des livres comme, Java Programming Interview Exposed couvre tous les sujets importants pour les entretiens de base Java et Java EE, qui comprennent des questions Java de base, la structure des données et les algorithmes, les internes de la JVM et le réglage GC, les questions d’entretien Hibernate et Spring, les questions de test unitaire JUnit ant et quelques trucs Java 8.
Il couvre également la connaissance d’autres langages JVM comme Scala, Groovy et d’autres plates-formes comme Android. Un compagnon idéal pour bien faire dans les interviews Java.
Si vous souhaitez en préparer davantage sur le côté codage, vous pouvez également consulter l’interview de codage, qui contient près de 150 questions et solutions de programmation issues d’entretiens techniques de grandes entreprises technologiques comme Amazon, Facebook, Google, Twitter et Microsoft.

15 Questions Java de base Pour 5 à 6 Ans d’expérience

Toutes ces questions ont été collectées auprès de développeurs assez expérimentés, qui ont au moins 5 ans d’expérience. Ils ont vu ces questions lors de différentes séries de leurs entretiens Java de base, y compris des rondes téléphoniques et en face à face sur différentes sociétés, principalement sur des banques d’investissement comme Barclays, Morgan, RBS et d’autres.

Qu’est-ce qui est occupé à tourner? Pourquoi Devriez-Vous L’Utiliser en Java?

L’une des questions multithreading intéressantes pour les programmeurs Java seniors, busy spinning est une stratégie d’attente, dans laquelle un thread attend simplement en boucle, sans libérer le processeur pour s’endormir. Il s’agit d’une stratégie d’attente très avancée et spécialisée utilisée dans l’application de trading à haute fréquence lorsque le temps d’attente entre deux messages est très minime.
En ne libérant pas le CPU ou en suspendant le thread, votre thread conserve toutes les données et instructions mises en cache, qui peuvent être perdues si le thread a été suspendu et repris dans un autre cœur de CPU.
Cette question est très populaire dans le domaine de la programmation à faible latence à haute fréquence, où les programmeurs essaient d’obtenir une latence extrêmement faible de l’ordre de la micro à la milliseconde. Voir ici plus de 50 questions d’entrevue de fil avancées pour les programmeurs expérimentés.

questions d'entrevue java de base pour les développeurs seniors

Qu’est-ce que le verrouillage en lecture-écriture? ConcurrentHashMap en Java Utilise-T-Il Le Verrou ReadWrite ?

Le verrou ReadWrite est une implémentation d’une technique de décapage de verrouillage, où deux verrous séparés sont utilisés pour la lecture et l’écriture. Étant donné que l’opération de lecture ne modifie pas l’état de l’objet, il est sûr d’autoriser l’accès à plusieurs threads à un objet partagé pour la lecture sans verrouillage, et en divisant un verrou dans le verrou de lecture et d’écriture, vous pouvez facilement le faire.
Java fournit une implémentation d’un verrou en lecture-écriture sous la forme de la classe ReentrantReadWritLock dans java.util.simultané.paquet de verrouillage. Cela vaut la peine d’être examiné avant de décider d’écrire votre propre implémentation de verrouillage en lecture-écriture.
Aussi, l’implémentation actuelle de java.util.ConcurrentHashMap n’utilise pas ReadWriteLock, à la place, il divise la Carte en plusieurs segments et les verrouille séparément en utilisant différents verrous. Cela signifie qu’à un moment donné, seule une partie de la carte ConcurrentHashMap est verrouillée, au lieu de la carte entière. Voyez comment ConcurrentHashMap fonctionne en interne en Java pour plus de détails.

Cette question Java de base est également très populaire sur les entretiens Java de niveau senior et plus expérimentés, par exemple 4 à 6 ans, où vous vous attendez à ce que l’Intervieweur entre plus en détail, comme en vous demandant de fournir une implémentation du verrou lecture-écriture avec différentes stratégies. Si vous êtes un programmeur Java expérimenté, envisagez de lire la concurrence Java dans la pratique pour gagner en confiance sur le multithreading et la concurrence en Java.

Comment rendre un objet Immuable en Java ? Pourquoi Devriez-Vous Rendre un Objet Immuable?

Eh bien, l’immuabilité offre plusieurs avantages, notamment la sécurité des threads, la possibilité de mettre en cache et d’obtenir un code multithreading plus lisible. Voir ici pour apprendre à rendre les objets Immuables. Encore une fois, cette question peut également entrer plus en détail et, en fonction de votre réponse, peut apporter plusieurs autres questions, par ex. lorsque vous mentionnez que Spring est immuable, soyez prêt avec quelques raisons pour lesquelles String est Immuable en Java.

Quels Modèles De Conception avez-Vous Utilisés dans Votre Projet Java?

Attendez-vous toujours à une question liée aux modèles de conception pour l’interview de base Java du poste de développeur senior. Il est préférable de mentionner n’importe quel modèle de conception GOF plutôt que Singleton ou MVC, que presque tous les autres développeurs Java utilisent.
Votre meilleur pari peut être un modèle de décorateur ou peut-être un modèle d’injection de dépendance, ce qui est très populaire dans le cadre Spring. Il est également bon de ne mentionner que les modèles de conception que vous avez réellement utilisés dans votre projet et que vous savez que ce sont des compromis.
Il est courant qu’une fois que vous mentionnez un modèle de conception particulier, dites Usine ou Usine abstraite, la prochaine question de l’intervieweur serait: avez-vous utilisé ce modèle dans votre projet? Alors soyez prêt avec des exemples appropriés et pourquoi vous choisissez un modèle particulier. Vous pouvez également consulter cet article pour des questions de modèle de conception plus avancées issues d’entretiens Java.

Connaissez-vous le Principe de Conception Ouverte et Fermée ou le Principe de Substitution de Liskov?

Les modèles de conception sont basés sur des principes de conception orientés objet, que j’ai fortement senti que chaque développeur orienté objet et le programmeur devraient connaître, ou, au moins, avoir une idée de base de quels sont ces principes et comment ils vous aident à écrire un meilleur code orienté objet. Si vous ne connaissez pas la réponse à cette question, vous pouvez poliment dire Non, car on ne s’attend pas à ce que vous connaissiez la réponse à chaque question, mais en répondant à cette question, vous pouvez renforcer votre affirmation car de nombreux développeurs expérimentés ne répondent pas à des questions de base comme celle-ci. Voir Code propre en savoir plus sur les principes de conception orientés objet et SOLIDES.

Quel Modèle de Conception Utiliserez-Vous pour Protéger Votre Code D’une bibliothèque Tierce Qui Sera Probablement Remplacée par une Autre dans quelques Mois?

Ceci n’est qu’un exemple de la question d’entrevue de modèle de conception basée sur un scénario. Afin de tester l’expérience pratique des développeurs Java avec plus de 5 ans d’expérience, les entreprises se posent ce genre de question. Vous pouvez vous attendre à des problèmes de conception plus réels dans différents formats, certains avec une explication plus détaillée avec le contexte, ou d’autres avec une seule intention.
Une façon de protéger votre code d’une bibliothèque tierce consiste à coder contre une interface plutôt qu’une implémentation, puis à utiliser l’injection de dépendances pour fournir une implémentation particulière. Ce genre de question est également posé assez fréquemment aux développeurs Java expérimentés et seniors avec 5 à 7 ans d’expérience.

Question 7) Comment empêchez-vous l’injection SQL dans le code Java?

Cette question est plus posée aux développeurs J2EE et Java EE qu’aux développeurs Java de base, mais c’est toujours une bonne question de vérifier les compétences JDBC et de sécurité des programmeurs Java expérimentés.
Vous pouvez utiliser PreparedStatement pour éviter l’injection SQL dans le code Java. L’utilisation de PreparedStatement pour l’exécution de requêtes SQL offre non seulement de meilleures performances, mais protège également votre application Java et J2EE contre les attaques par injection SQL.
Sur une note similaire, Si vous travaillez davantage du côté de Java EE ou J2EE, vous devez également vous familiariser avec d’autres problèmes de sécurité, y compris les attaques de fixation de session ou les attaques de script intersite et comment les résoudre. Voici quelques champs et questions où une bonne réponse peut faire beaucoup de différence dans votre sélection.

Question 8) Parlez-moi des différents types de référence disponibles en Java, par exemple WeakReference, SoftReference ou PhantomReference? et pourquoi les utiliser?

Eh bien, ce sont des types de référence différents provenant de java.lang.paquet ref et fourni pour aider Java Garbage Collector en cas de problèmes de mémoire faible. Si vous enveloppez un objet avec WeakReference, il sera éligible à la collecte de déchets s’il y a des références fortes. Ils peuvent ensuite être récupérés par le Garbage collector si la JVM manque de mémoire.
Le java.util.WeakHashMap est une implémentation de carte spéciale, dont les clés sont l’objet de WeakReference, donc si seule Map contient la référence d’un objet et aucun autre, ces objets peuvent être collectés si GC a besoin de mémoire. Consultez le guide définitif sur les performances Java pour en savoir plus sur la façon de gérer les problèmes de performances en Java.

questions et réponses d'entrevue technique java de base pour les expérimentés

Question 9) Comment la méthode get de HashMap fonctionne-t-elle en Java?

Oui, c’est toujours l’une des questions Java de base les plus populaires pour les interviews de développeurs seniors. Vous pouvez également vous attendre à cette question sur le tour téléphonique, suivie de nombreuses questions de suivi comme discuté dans mon post comment fonctionne HashMap en Java.
La réponse courte à cette question est que HashMap est basé sur la structure de données de la table de hachage et utilise la méthode hashCode() pour calculer le code de hachage pour trouver l’emplacement du compartiment sur le tableau sous-jacent et la méthode equals() pour rechercher l’objet dans le même compartiment en cas de collision. Voir ici pour en savoir plus sur le fonctionnement de la méthode get() de HashMap en Java.

Question 10) Quelles Sont Les Deux Méthodes Que L’Objet clé HashMap Doit Implémenter ?

C’est l’une des questions de suivi dont je parlais dans les questions précédentes. Étant donné que le travail de HashMap est basé sur la structure de données de table de hachage, tout objet que vous souhaitez utiliser comme clé pour HashMap ou toute autre collection basée sur le hachage, par exemple Hashtable, ou ConcurrentHashMap doit implémenter la méthode equals() et hashCode().
Le hashCode() est utilisé pour trouver l’emplacement du compartiment, c’est-à-dire l’index du tableau sous-jacent et la méthode equals() est utilisée pour trouver le bon objet dans une liste chaînée stockée dans le compartiment en cas de collision. À propos, à partir de Java 8, HashMap a également commencé à utiliser une structure de données arborescente pour stocker l’objet en cas de collision afin de réduire les performances les plus défavorables de HashMap de O(n) à O(logN). Voir l’article pour en savoir plus sur la façon dont les collisions sans mains HashMap en Java.

Question 11) Pourquoi un Objet Utilisé Comme Clé devrait-il être Immuable?

Ceci est un autre suivi des questions d’entrevue Java de base précédentes. Il est bon de tester la profondeur des connaissances techniques des candidats en posant de plus en plus de questions sur le même sujet. Si vous connaissez l’immuabilité, vous pouvez répondre à cette question par vous-même. La réponse courte à cette question est key doit être immuable afin que la méthode hashCode() renvoie toujours la même valeur.

Puisque le code de hachage renvoyé par la méthode hashCode() dépend du contenu de l’objet, c’est-à-dire des valeurs des variables membres. Si un objet est mutable, ces valeurs peuvent changer, tout comme le code de hachage. Si le même objet renvoie un code de hachage différent une fois que vous avez inséré la valeur dans HashMap, vous finirez par rechercher dans différents emplacements de compartiment et ne pourrez pas récupérer l’objet. C’est pourquoi un objet clé doit être immuable. Ce n’est pas une règle appliquée par le compilateur, mais vous devriez en prendre soin en tant que programmeur expérimenté. Voir l’article pour des questions d’entrevue de collection Java plus avancées.

Question 12) Comment ConcurrentHashMap atteint-elle son évolutivité?

Parfois, cette question d’interview multithreading + collection est également posée comme, la différence entre ConcurrentHashMap et Hashtable en Java. Le problème avec HashMap synchronisé ou Hashtable était que la carte entière était verrouillée lorsqu’un thread effectuait une opération avec Map.
Le java.util.La classe ConcurrentHashMap résout ce problème en utilisant une technique de suppression de verrouillage, où la carte entière est verrouillée à différents segments et seul un segment particulier est verrouillé pendant l’opération d’écriture, pas la carte entière. ConcurrentHashMap atteint également son évolutivité en permettant des lectures sans verrouillage car la lecture est une opération sûre pour les threads. Voir ici pour des questions plus avancées sur le multi-threading et la concurrence en Java.

Question 13) Comment partagez-vous un objet entre les threads ? ou comment passer un objet d’un thread à un autre ?

Il y a plusieurs façons de le faire, par exemple Files d’attente, Échangeur, etc., mais bloquer la file d’attente à l’aide du modèle Producteur-consommateur est le moyen le plus simple de passer un objet d’un thread à un autre.

Question 14) Comment trouver si votre programme a une impasse?

En prenant un vidage de thread en utilisant kill-3, en utilisant JConsole ou VisualVM), je suggère de préparer cette question d’interview java de base plus en détail, car l’Intervieweur aime certainement aller avec plus de détails, par exemple, ils vont appuyer sur des questions comme, avez-vous vraiment fait cela dans votre projet ou non?

Question 15) Comment éviter l’impasse lors du codage?

En s’assurant que les verrous sont acquis et libérés de manière ordonnée, voir ici pour une réponse détaillée à cette question.
C’est tout sur cette liste de questions d’entrevue Java de base pour les développeurs seniors et les programmeurs expérimentés. Je n’ai pas inclus beaucoup de questions d’autres sujets importants comme la gestion des exceptions, le réglage de la collecte des ordures et les internes de la JVM, qui sont également très populaires parmi les programmeurs Java avec 5 à 6 ans d’expérience, peut-être que je les inclurai dans la prochaine partie.
Au fait, si vous ne trouvez pas la réponse à l’une de ces questions fondamentales de Java, faites-le moi savoir. Je peux mettre à jour le message avec une option plus détaillée, en fonction de la demande de mon lecteur.
Apprentissage continu
La Masterclass complète de Java
Java Fundamentals: Le Langage Java
Questions d’Entrevue Java Connexes sur d’autres sujets

  • Questions Java pour les Entretiens sur Écran de Téléphone (liste)
  • Questions de Discussion et de Concurrence des Entretiens Java (liste)
  • Questions et Réponses d’Entrevue Java Enum (liste)
  • Questions d’Entrevue Java OOP avec Réponses (liste)
  • Questions et Réponses d’Entrevue Spring MVC (liste)
  • Questions d’entrevue Hibernate avec Réponses (liste)
  • Questions et Réponses d’Entrevue JDBC (liste)
  • Questions d’entrevue de Concept de Tableau en Java (liste)
  • Questions d’entrevue de Service Web RESTful (liste)
  • Questions et Réponses d’Entrevue de Servlet et de JSP (liste)
  • Questions et Réponses d’Entrevue de Service Web Java (liste)