30 top java collections interview questions with answers
Ce didacticiel comprend une liste des questions d'entretien les plus fréquemment posées sur les collections Java ainsi que des réponses et des exemples pour vous :
L'API principale de Java est le Java Collections Framework. Il prend en charge le concept fondamental de ce langage de programmation. Si vous souhaitez devenir développeur Java, vous devez bien connaître ces concepts de base.
Le domaine des collections Java est extrêmement vaste et de nombreuses questions peuvent être posées lors d'une interview. Ici, nous avons rassemblé une liste d'autant de questions pertinentes que vous pourriez être posées lors de votre entretien.
=> Vérifiez ici pour voir de A à Z des didacticiels de formation Java ici
Ce que vous apprendrez:
Questions d'entretiens chez Java Collections
Q # 1) Expliquez le Java Collections Framework.
Répondre: Le Java Collections Framework est une architecture qui permet de gérer et de stocker un groupe d'objets. Avec lui, les développeurs peuvent accéder à des structures de données pré-emballées et manipuler des données à l'aide d'algorithmes.
La collection Java comprend l'interface et les classes qui prennent en charge des opérations telles que la recherche, la suppression, l'insertion, le tri, etc. Outre l'interface et les classes, les collections Java incluent également des algorithmes qui facilitent les manipulations.
Q # 2) Quels sont les avantages des collections Java?
Répondre:
Les avantages des collections Java sont:
- Au lieu d'implémenter nos classes de collection, il utilise les classes de collection de base, réduisant ainsi l'effort requis pour son développement.
- Il utilise les classes du framework de collection qui sont bien testées. Par conséquent, la qualité de son code est améliorée.
- Cela réduit l'effort de maintenance du code.
- Java Collection Framework est interopérable et réutilisable.
Q # 3) Que savez-vous de la hiérarchie des collections en Java?
Répondre:
(image la source )
Q # 4) Parlez-nous des interfaces de base de la collection Java.
Répondre:
Vous trouverez ci-dessous les interfaces de base de Java Collection Framework.
Collection: Il constitue la base de la hiérarchie de la collection et représente ses éléments. Cependant, Java ne fournit aucune application directe de Collection. De plus, la plupart des collections Java proviennent de cette interface.
Ensemble: Il ne peut pas contenir d'éléments dupliqués car il modélise l'abstraction de l'ensemble mathématique. Comme son nom l'indique, il représente des ensembles, par exemple, un jeu de cartes.
Lister: Il peut contenir des éléments en double et est une collection ordonnée. Vous pouvez utiliser son index pour accéder à n'importe quel élément qu'il contient. La liste est comme un arrangement, un tableau, avec une longueur dynamique.
Ce sont quelques interfaces de Java Collection. Cependant, il existe quelques interfaces supplémentaires ainsi que celles illustrées ci-dessous.
- File d'attente
- Retirer la file d'attente
- Itérateur
- Itérable
- SortedSet
- ListIterator.
Q # 5) Pourquoi les interfaces sérialisables et clonables ne sont pas étendues par la collection Interface?
Répondre: La tâche de l'interface de collecte est de spécifier un groupe d'objets appelés éléments. La mise en œuvre des collections décide de la manière dont les éléments seront maintenus. Par exemple, les implémentations List autorisent les éléments en double, mais pas les implémentations Set.
De nombreuses implémentations ont une méthode de clonage public. Mais il n'est pas pratique de l'inclure dans toutes les implémentations de Collection car la Collection est abstraite et la mise en œuvre est tout ce qui compte.
La signification et les ramifications de la sérialisation et du clonage ont un sens tout en travaillant avec les implémentations de fond. Par conséquent, il appartient à l'implémentation réelle de décider si elle peut être sérialisée ou clonée et comment.
En savoir plus = >> Interface de marqueur en Java: sérialisable et clonable
C’est pourquoi l’introduction de la sérialisation et du clonage dans chaque implémentation n’est pas très flexible et est restrictive.
Q # 6) Que comprenez-vous par Iterator dans Java Collection Framework?
Répondre: Dans les tableaux simples, nous pouvons utiliser des boucles pour accéder à chaque élément. Lorsqu'une approche similaire est nécessaire pour accéder aux éléments d'une collection, nous optons pour des itérateurs. Iterator est une construction utilisée pour accéder aux éléments des objets Collection.
En Java, les itérateurs sont les objets qui implémentent l'interface «Iterator» de Collection Framework. Cette interface fait partie du package java.util.
Certaines des caractéristiques des itérateurs sont:
- Les itérateurs sont utilisés pour parcourir les objets Collection.
- Les itérateurs sont connus sous le nom de «curseur Java universel» car nous pouvons utiliser le même itérateur pour toutes les collections.
- Les itérateurs fournissent des opérations de «lecture» et de «suppression» en plus de parcourir les collections.
- Comme ils sont universels et fonctionnent avec toutes les collections, les itérateurs sont plus faciles à implémenter.
Répertorier les questions de la collection Java
Q # 7) Connaissez-vous les utilisations de l'interface de liste?
(image la source )
Répondre: Le but de l'interface de liste est de maintenir l'ordre d'insertion. Il permet également le stockage de valeurs en double.
Il aide à la manipulation fluide des éléments en fonction de son index avec les différentes méthodes qu'il contient. ArrayList, Vector, Stack et LinkedList sont les différentes classes qui implémentent l'interface de liste.
Q # 8) Que comprenez-vous à propos d'ArrayList en Java?
Répondre: L'implémentation de l'interface de liste est ArrayList. Il ajoute ou supprime dynamiquement des éléments de la liste et il fournit également l'insertion d'éléments avec l'accès positionnel. ArrayList autorise les valeurs dupliquées et sa taille peut augmenter de manière dynamique si le nombre d'éléments dépasse la taille initiale.
Q # 9) Comment allez-vous convertir un tableau de chaînes en ArrayList?
Répondre: Il s’agit d’une question de programmation de niveau débutant qu’un intervieweur vous demande pour vérifier votre compréhension de l’utilitaire de collecte. La collection et les tableaux sont les deux classes d'utilité du cadre de collecte qui intéressent souvent les enquêteurs.
Les collections offrent certaines fonctions statiques pour effectuer des tâches spécifiques sur les types de collection. Alors que Array a des fonctions utilitaires qu'il exécute sur les types de tableaux.
//String array String() num_words = {'one', 'two', 'three', 'four', 'five'}; //Use java.util.Arrays class to convert to list List wordList = Arrays.asList(num_words);
Notez qu'en dehors du type String, vous pouvez également utiliser d'autres types de tableaux pour convertir en ArrayList.
Par exemple,
//Integer array Integer() numArray = {10,20,30,40}; //Convert to list using Arrays class asList method List num_List = Arrays.asList(numArray);
Q # 10) Convertissez Array en ArrayList et ArrayList en Array.
Répondre: Pour convertir ArrayList en Array, la méthode toArray () est utilisée - List_object.toArray (nouvelle chaîne (List_object.size ()))
Alors que la méthode asList () est utilisée pour convertir Array en ArrayList- Arrays.asList (élément). L'asList () est une méthode statique où les objets List sont les paramètres.
Q # 11) Qu'est-ce qu'une LinkedList et combien de types sont pris en charge en Java?
(image la source )
Répondre: LinkedList est une structure de données avec une séquence de liens où chaque lien est connecté au lien suivant.
Deux types de LinkedList sont utilisés en Java pour stocker les éléments:
- Single LinkedList: Ici, chaque nœud stocke les données du nœud avec une référence ou le pointeur vers le nœud suivant.
- Double LinkedList: Une double LinkedList est livrée avec des références doubles, une référence au nœud suivant et une autre pour le nœud précédent.
Q # 12) Que comprenez-vous par BlockingQueue?
Répondre: Dans une simple file d'attente, nous savons que chaque fois que la file d'attente est pleine, nous ne pouvons plus insérer d'éléments. Dans ce cas, la file d'attente fournit simplement un message indiquant que la file d'attente est pleine et se termine. Un cas similaire se produit lorsque la file d'attente est vide et qu'il n'y a aucun élément à supprimer dans la file d'attente.
Au lieu de simplement quitter lorsque l'insertion / suppression ne peut pas être effectuée, que diriez-vous d'attendre de pouvoir insérer ou supprimer l'élément?
Ceci est répondu par une variante de file d'attente appelée 'File d'attente bloquante' . Dans la file d'attente de blocage, le blocage est activé pendant les opérations de mise en file d'attente et de retrait de la file d'attente chaque fois que la file d'attente tente de mettre en file d'attente pleine ou de retirer une file d'attente vide.
Le blocage est illustré dans la figure suivante.
BlockingQueue
Ainsi, pendant l'opération de mise en file d'attente, la file d'attente de blocage attendra qu'un espace devienne disponible pour qu'un élément puisse être inséré avec succès. De même, dans l'opération de retrait de la file d'attente, la file d'attente de blocage attendra qu'un élément devienne disponible pour l'opération.
création d'un tableau d'objets en java
La file d'attente de blocage implémente l'interface «BlockingQueue» qui appartient au package «java.util.concurrent». Nous devons nous rappeler que l'interface BlockingQueue n'autorise pas la valeur nulle. S'il rencontre null, il lève NullPointerException.
Q # 13) Qu'est-ce qu'une file d'attente prioritaire en Java?
Répondre: Une file d'attente prioritaire en Java est similaire aux structures de données de pile ou de file d'attente. Il s'agit d'un type de données abstrait en Java et implémenté en tant que classe PriorityQueue dans le package java.util. La file d'attente prioritaire a une fonction spéciale selon laquelle chaque élément de la file d'attente prioritaire a une priorité.
Dans une file d'attente prioritaire, un élément avec une priorité plus élevée est le serveur avant l'élément avec une priorité inférieure.
Tous les articles de la file d'attente prioritaire sont classés selon l'ordre naturel. On peut également ordonner les éléments selon un ordre personnalisé en fournissant un comparateur au moment de la création d'un objet file prioritaire.
Définir les questions d'entrevue d'interface
Q # 14) Quelle est l'utilisation de Set Interface? Parlez-nous des classes implémentant cela Interface.
Répondre: L'interface d'ensemble est utilisée dans la théorie des ensembles pour façonner l'ensemble mathématique. Elle est similaire à l'interface de liste et en est pourtant un peu différente. Set Interface n'est pas une collection ordonnée, par conséquent, aucun ordre n'est conservé lorsque vous supprimez ou ajoutez des éléments.
Surtout, il ne prend pas en charge les éléments en double, donc chaque élément de l'interface d'ensemble est unique.
Il permet également des comparaisons significatives d'instances Set même lorsqu'il existe différentes implémentations. En outre, il met dans un contrat plus substantiel sur les actions des opérations d'equals et hashCode. Si deux exemples ont les mêmes éléments, ils sont égaux.
Pour toutes ces raisons, Set Interface n'a pas d'opérations basées sur l'index d'élément comme List. Il utilise uniquement les méthodes héritées de l'interface de collection. TreeSet, EnumSet, LinkedHashSet et HashSet implémentent Set Interface.
Q # 15) Je veux ajouter un élément nul à HashSet et TreeSet. Puis-je?
Répondre: Vous ne pouvez pas ajouter d'élément nul dans TreeSet car il utilise NavigableMap pour le stockage des éléments. Mais vous pouvez en ajouter un seul à HashSet. SortedMap n'autorise pas les clés nulles et NavigableMap est son sous-ensemble.
C’est pourquoi vous ne pouvez pas ajouter d’élément nul à TreeSet, il affichera l’exception NullPointerException à chaque fois que vous essayez de le faire.
Q # 16) Que savez-vous sur LinkedHashSet?
Répondre: LinkedHashSet est la sous-classe de HashSet et applique l'interface Set. En tant que forme ordonnée de HashSet, il gère une liste à double lien dans tous les éléments qu'il contient. Il conserve l'ordre d'insertion et tout comme sa classe parente, il ne porte que des éléments uniques.
Q # 17) Parlez de la façon dont HashSet stocke les éléments.
Répondre: HashMap stocke les paires de valeurs-clés mais les clés doivent être uniques. Cette fonctionnalité de Map est utilisée par HashSet pour s'assurer que chaque élément est unique.
La déclaration de carte dans HashSet apparaît comme indiqué ci-dessous:
private transient HashMapmap; //This is added as value for each key private static final Object PRESENT = new Object();
Les éléments stockés dans HashSet sont stockés comme une clé dans la carte et l'objet est présenté comme une valeur.
Q # 18) Expliquez la méthode EmptySet ().
Répondre: La méthode Emptyset () supprime les éléments nuls et retourne l'ensemble vide non modifiable. Cet ensemble immuable est sérialisable. La déclaration de méthode de Emptyset () est- public static final Set emptySet ().
Questions d'entretiens avec Map Interface
Q # 19) Parlez-nous de l'interface cartographique.
Répondre: Map Interface est conçue pour des recherches plus rapides et stocke les éléments sous la forme de paires de valeurs-clés. Comme chaque clé est unique ici, elle se connecte ou ne correspond qu'à une seule valeur. Ces paires de valeurs-clés sont appelées entrées de carte.
Dans cette interface, il existe des signatures de méthode pour la récupération, l'insertion et la suppression d'éléments en fonction de la clé unique. Cela en fait un outil parfait pour mapper des associations clé-valeur, comme un dictionnaire.
Q # 20) La carte n’étend pas l’interface de collecte. Pourquoi?
Répondre: L'interface de collection est l'accumulation d'objets et ces objets sont stockés structurellement avec le mécanisme d'accès spécifié. Alors que l'interface Map suit la structure des paires clé-valeur. La méthode add de l'interface de collecte ne prend pas en charge la méthode put de Map Interface.
C’est la raison pour laquelle Map n’étend pas l’interface de collecte, mais constitue néanmoins une partie importante de Java Collection Framework.
Q # 21) Comment fonctionne HashMap en Java?
Répondre: HashMap est une collection basée sur Map et ses éléments sont constitués de paires clé-valeur. Un HashMap est généralement désigné par, ou. Chaque élément hashmap est accessible à l'aide de sa clé.
Un HashMap fonctionne sur le principe du «Hashing». Dans la technique de hachage, une chaîne plus longue est transformée en une chaîne plus petite par une «fonction de hachage» qui n’est rien d’autre qu’un algorithme. La chaîne plus petite permet une recherche plus rapide et une indexation efficace.
Q # 22) Expliquez IdentityHashMap, WeakHashMap et ConcurrentHashMap.
Répondre:
IdentityHashMap ressemble beaucoup à HashMap. La différence est que lors de la comparaison des éléments, IdentityHashMap utilise l'égalité de référence. Ce n'est pas une implémentation de carte préférée et bien qu'elle exécute l'interface de carte, elle ne respecte pas intentionnellement le contrat général de la carte.
Ainsi, lors de la comparaison d'objets, cela autorise l'utilisation de la méthode equals. Il est conçu pour être utilisé dans de rares cas où l'on a besoin d'une sémantique d'égalité des références.
WeakHashMap L'implémentation ne stocke que des références faibles à ses clés. Cela permet le garbage collection d'une paire clé-valeur lorsqu'il n'y a plus de référence de ses clés en dehors de WeakHashMap.
Il est principalement utilisé avec les objets clés où le test d'identité d'objet est effectué par ses méthodes égales à l'aide de l'opérateur ==.
ConcurrentHashMap implémente les interfaces ConcurrentMap et Serializable. Il s'agit de la version améliorée et améliorée de HashMap car elle ne fonctionne pas bien avec l'environnement multithread. Par rapport au HashMap, il a un taux de performance plus élevé.
Q # 23) Quelle est la qualité d'une bonne clé pour HashMap?
Répondre: Comprenant le fonctionnement de HashMap, il est facile de savoir qu'ils dépendent principalement des méthodes equals et hashCode des objets clés. Ainsi, une bonne clé doit fournir le même hashCode encore et encore, quelle que soit l'heure à laquelle elle est récupérée.
De la même manière, par rapport à la méthode equals, les mêmes clés doivent renvoyer true et des clés différentes doivent renvoyer false. C’est pourquoi le meilleur candidat pour les clés HashMap serait des classes immuables.
Q # 24) Quand pouvez-vous utiliser TreeMap?
(image la source )
Répondre: TreeMap, en tant que forme spéciale de HashMap, maintient l'ordre des clés par défaut «ordre naturel», comme quelque chose qui manque dans HashMap. Vous pouvez l'utiliser pour trier les objets avec une clé.
Par exemple, si vous souhaitez implémenter et imprimer un dictionnaire par ordre alphabétique, vous pouvez utiliser TreeMap avec TreeSet. Il triera automatiquement. Bien sûr, vous auriez pu le faire manuellement, mais le travail sera effectué plus efficacement avec l'utilisation de TreeMap. Vous pouvez également l'utiliser si l'accès aléatoire est vital pour vous.
Différence entre les questions
Q # 25) Quelle est la différence entre Collection et collections?
Répondre:
Collection | Les collections |
---|---|
Nous ne pouvons pas utiliser ListIterator pour parcourir un ensemble. | ListIterator peut parcourir List dans n'importe quelle direction. |
C'est une interface. | C'est classe. |
La collection représente un groupe d'objets en une seule entité. | Les collections définissent différentes méthodes d'utilité pour les objets de collection. |
Il s’agit de l’interface racine de Collection Framework. | Les collections sont une classe utilitaire. |
Il dérive les structures de données de Collection Framework. | Les collections contiennent de nombreuses méthodes statiques différentes pour aider à manipuler la structure de données. |
Q # 26) En quoi Array est-il différent d'une ArrayList?
Répondre:
Les différences entre Array et ArrayList sont indiquées ci-dessous:
Déployer | Liste des tableaux |
---|---|
Le tableau est une classe fortement typée. | ArrayList est une classe faiblement typée. |
Le tableau ne peut pas être redimensionné dynamiquement, sa dimension est statique. | ArrayList peut être redimensionné dynamiquement. |
Un tableau n'a pas besoin de boxer ni de déballer des éléments. | ArrayList a besoin de boxer et de déballer des éléments. |
Q # 27) Faites la différence entre ArrayList et LinkedList.
Répondre:
Liste des tableaux | LinkedList |
---|---|
ArrayList utilise le tableau dynamique en interne pour stocker des éléments. | LinkedList implémente la liste doublement liée. |
La manipulation des éléments par ArrayList est plutôt lente. | LinkedList manipule ses éléments beaucoup plus rapidement. |
ArrayList peut agir uniquement comme une liste. | LinkedList peut agir à la fois comme liste et comme file d'attente. |
Utile pour stocker et accéder aux données. | Utile pour manipuler les données. |
Q # 28) En quoi Iterable est-il différent d'Iterator?
Répondre:
Itérable | Itérateur |
---|---|
C'est l'interface du package Java.lang. | Il s'agit de l'interface du package Java.util. |
Donne une seule méthode abstraite connue sous le nom d'itérateur. | Il est livré avec deux méthodes abstraites: hasNext et next. |
Représente une série d'éléments qui peuvent être traversés. | Représente des objets avec un état d'itération. |
Q # 29) Énoncez les différences entre Set et List.
Répondre:
Ensemble | liste |
---|---|
Définir les outils Définir l'interface. | La liste implémente l'interface List. |
L'ensemble est un ensemble d'éléments non ordonnés. | La liste est un ensemble ordonné d'éléments. |
L'ensemble ne conserve pas l'ordre des éléments lors de l'insertion. | La liste conserve l'ordre des éléments lors de l'insertion. |
L'ensemble n'autorise pas les valeurs en double. | La liste autorise les valeurs en double. |
L'ensemble ne contient aucune classe héritée. | La liste contient Vector, une classe héritée. |
L'ensemble n'autorise qu'une seule valeur nulle. | Aucune restriction sur le nombre de valeurs nulles dans List. |
Q # 30) Quelle est la différence entre Queue et Stack?
Répondre:
File d'attente | Empiler |
---|---|
Queue fonctionne sur le principe de l'approche premier entré, premier sorti (FIFO). | Stack fonctionne sur la base du dernier entré, premier sorti (LIFO). |
L'insertion et la suppression dans la file d'attente ont lieu à des extrémités différentes. | L'insertion et la suppression sont effectuées à partir de la même extrémité appelée le haut de la pile. |
Enqueue est le nom de Insertion et dequeue est la suppression d'éléments. | Push est une insertion et Pop est la suppression d'éléments dans Stack. |
Il a deux pointeurs - un vers le premier élément de la liste (avant) et un vers le dernier (arrière). | Il n'a qu'un seul pointeur pointant vers l'élément supérieur. |
Q # 31) En quoi SinglyLinkedList et DoublyLinkedList sont-ils différents l'un de l'autre?
Répondre:
Liste liée individuellement | Liste doublement liée |
---|---|
Chaque nœud de la liste liée individuellement se compose d'une donnée et d'un pointeur vers le nœud suivant. | Une liste doublement liée se compose de données, d'un pointeur vers le nœud suivant et d'un pointeur vers le nœud précédent. |
La liste à un seul lien peut être parcourue à l'aide du pointeur suivant. | Une liste doublement liée peut être parcourue en utilisant à la fois le pointeur précédent et suivant. |
La liste à lien unique prend moins de place qu'une liste à double lien. | La liste doublement chaînée occupe beaucoup d'espace mémoire. |
L'accès aux éléments n'est pas très efficace. | L'accès aux éléments est efficace. |
Q # 32) En quoi HashMap est-il différent de HashTable?
Répondre:
HashMap | HashTable |
---|---|
HashMap hérite de la classe AbstractMap | HashTable hérite de la classe Dictionary. |
HashMap n'est pas synchronisé. | HashTable est synchronisé. |
HashMap autorise plusieurs valeurs nulles mais une seule clé nulle. | HashTable n'autorise pas de valeur ou de clé NULL. |
HashMap est plus rapide. | HashTable est plus lent que HashMap. |
HashMap peut être parcouru par Iterator. | HashTable ne peut pas être parcouru en utilisant un itérateur ou un énumérateur. |
Q # 33) Énumérez la différence entre ArrayList et Vector.
Répondre:
Liste des tableaux | Vecteur |
---|---|
ArrayList n'est pas synchronisé. | Le vecteur est synchronisé. |
ArrayList n'est pas une classe héritée. | Vector est une classe héritée. |
ArrayList augmente la taille de moitié de ArrayList lorsqu'un élément est inséré au-delà de sa taille. | Vector augmente sa taille du double lorsqu'un élément est inséré au-delà de sa taille. |
ArrayList n'est pas thread-safe | Vector est un thread-safe. |
Q # 34) En quoi FailFast est-il différent de Failsafe?
Répondre:
FailFast | FailSafe |
---|---|
Lors de l'itération, aucune modification d'une collection n'est autorisée. | Permet la modification lors de l'itération. |
Utilise la collection originale pour parcourir. | Utilise une copie de la collection originale. |
Aucune mémoire supplémentaire requise. | Besoin de mémoire supplémentaire. |
Lance une exception ConcurrentModificationException. | Aucune exception n'est lancée. |
Conclusion
Ces questions d'entretien Java Collections vous aideront à vous préparer à l'entrevue. Votre préparation à l'entretien Java Collections doit être approfondie et approfondie, alors étudiez ces questions et comprenez bien le concept.
Ces questions testent non seulement vos connaissances, mais aussi votre présence d'esprit.
=> Regardez la série de formation Java simple ici
lecture recommandée
- Tutoriel JAVA pour les débutants: plus de 100 tutoriels vidéo Java pratiques
- Principes de base de Java: syntaxe Java, classe Java et principaux concepts Java
- Questions et réponses d'entrevue
- Questions et réponses d'entrevue de test ETL
- 30 principales questions et réponses d'entrevue HTML (LISTE 2021)
- Top 30+ Questions et réponses populaires d'entrevue de concombre
- Top 40 des questions et réponses d'entretien sur Java 8 (le plus important)
- Top 30 des questions et réponses d'entrevue SAS