Questions et réponses d'entrevue sur Java Collections [Pour les débutants et les expérimentés]
Publié: 2020-12-16Si vous avez traité Java dans votre diplôme de premier cycle ou travaillé avec Java, vous devez bien connaître le framework Java Collection. Quant aux débutants qui viennent de commencer leur parcours Java, le framework Collection est une architecture unifiée conçue pour stocker et manipuler un groupe (collection) d'objets.
Essentiellement, une « collection » représente un seul groupe d'objets. Une collection Java comprend des interfaces, des classes (ArrayList, Vector, Stack et Hashtable, etc.) et des algorithmes avec une architecture prête à l'emploi pour le stockage et la gestion des données.
Dans cet article, nous examinerons les questions d'entretien les plus fréquemment posées sur Java Collections. Nous avons créé une liste des questions fondamentales que les entretiens posent couramment lors des entretiens avec les candidats pour les profils Java. Cela devrait vous aider à comprendre le type de questions auxquelles vous attendre lors de votre prochain entretien.
Questions et réponses de l'entretien sur les collections Java
1. Quel est l'avantage d'utiliser le framework Collections ?
Les collections Java incluent à la fois les classes de collection Generics et Concurrent pour les opérations thread-safe. En outre, il est équipé d'interfaces de blocage ainsi que de leurs implémentations dans des packages Java simultanés. Voici quelques avantages du framework Java Collections :
Il facilite la réutilisation et l'interopérabilité du code.

L'utilisation de classes de collection de base réduit considérablement l'effort et le temps de développement.
Les classes de collection livrées avec JDK réduisent les efforts requis pour la maintenance du code.
2. Faites la distinction entre tableau et collection.
Bien que les tableaux et les collections soient utilisés pour stocker des objets et manipuler des données, ils présentent quelques différences innées :
- Vous ne pouvez pas augmenter ou diminuer la longueur d'un tableau en fonction de vos besoins d'exécution - les tableaux sont de taille fixe. Cependant, vous pouvez modifier la taille d'une collection en fonction de vos besoins de mise à l'échelle.
- Un tableau ne peut stocker que des objets homogènes (similaires ou identiques), alors qu'une collection peut stocker un groupe hétérogène d'objets.
- Alors que les tableaux n'offrent pas de méthodes prêtes à l'emploi (recherche, tri, insertion, etc.) pour les besoins des utilisateurs, les collections incluent toujours des méthodes prêtes à l'emploi.
3. Quel est le rôle des Génériques dans le cadre des Collections ?
Les génériques vous permettent de spécifier ou de définir le type d'objets qu'une collection peut stocker. Si vous essayez d'ajouter un élément d'un type différent, Generics affichera une erreur de compilation. Ainsi, en affichant une erreur lors de la compilation, cela aide à empêcher ClassCastException lors de l'exécution. De plus, puisque Generics élimine le besoin d'utiliser la fonction casting et instanceof, cela rend le code propre et précis.
4. Nommez les interfaces du framework Collections.
Voici les cinq interfaces principales du framework Collections :
Interface de collection - C'est le fondement de la hiérarchie de la collection Java. La plupart des collections en Java sont héritées de l'interface Collections.
Interface de liste - Il s'agit d'un tableau étendu contenant des éléments ordonnés, ainsi que leurs doublons. Cette interface prend en charge la recherche basée sur l'index. Ainsi, vous pouvez accéder à n'importe quel élément à partir de son index. Il est implémenté en utilisant différentes classes comme ArrayList, LinkedList, etc.
Interface Set - Il s'agit d'une classe de collection qui ne peut pas contenir d'éléments en double. Contrairement à List, il ne prend pas en charge la recherche basée sur l'index et ne définit aucun ordre pour les éléments. Set modélise l'abstraction de l'ensemble mathématique et est implémenté par des classes telles que HashSet, TreeSet, LinkedHashSet, etc.
Interface de carte - Il s'agit d'une structure de données bidimensionnelle qui stocke les données dans des paires clé-valeur. Alors que la clé est un hashcode unique, la valeur désigne l'élément. Une carte ne peut pas avoir de clés/éléments en double.
Interface de file d'attente - Cette interface organise l'élément dans l'approche premier entré, premier sorti (FIFO). Ainsi, les éléments de l'interface de file d'attente sont supprimés de l'avant et ajoutés de l'extrémité arrière.
A lire également : Comment coder, compiler et exécuter des projets Java
5. Quand devez-vous remplacer la méthode equals() en Java ?
Alors que l'implémentation initiale de la méthode equals() vérifie si deux objets sont similaires, il est nécessaire de remplacer la méthode equals() si vous souhaitez comparer les objets en fonction de leurs propriétés.
6. Est-il avantageux d'utiliser le fichier Propriétés ?
Oui, l'utilisation du fichier Properties en Java offre un avantage majeur - si vous modifiez les valeurs dans ce fichier, cela sera automatiquement reflété, sans nécessiter de recompiler la classe Java. De ce fait, le fichier Properties est principalement utilisé pour stocker des informations susceptibles d'évoluer (par exemple, nom d'utilisateur et mots de passe). Il permet une gestion aisée d'une application Java.
7. Quelle est la fonction de l'Iterator dans le framework Collection ?
L'itérateur est une interface fournie dans le package java.util. Également connu sous le nom de curseur Java universel, l'itérateur permet d'itérer une collection d'objets. L'itérateur vous permet de passer une collection d'objets un par un et prend en charge les opérations READ et REMOVE. Il est largement utilisé car les noms de méthode Iterator peuvent être facilement implémentés.
8. Comment trier les objets Collection ?
Dans le framework Collections, le tri est généralement implémenté à l'aide des interfaces Comparable et Comparator . Si vous utilisez la méthode Collections.sort(), elle triera les éléments en fonction de l'ordre naturel spécifié dans la méthode compareTo(). Cependant, lorsque vous utilisez la méthode Collections.sort(Comparator), elle trie les éléments en fonction de la méthode compare() de l'interface Comparator.

Lire : Projet Java Swing
9. Est-il possible de convertir une ArrayList en Array et une Array en ArrayList ?
Oui, il est possible de le faire. Vous pouvez convertir un Array en ArrayList en utilisant la fonction asList() de la classe Array. La syntaxe pour cela est la suivante :
Tableaux.asList(item)
Vous pouvez convertir une ArrayList en Array en utilisant la fonction toArray() de la classe ArrayList, comme ceci :
List_object.toArray(nouvelle chaîne[List_object.size()])
10. Comment inverser une liste ?
Comment allez-vous inverser une ArrayList ?
Vous pouvez inverser une ArrayList en utilisant la fonction reverse() de la classe Collections. La syntaxe pour cela est la suivante :
public static void reverse(Collection c)
11. Qu'est-ce que "BlockingQueue ?"
L'interface BlockingQueue est présente dans le package java.util.concurrent . Son objectif principal est d'améliorer le contrôle de flux en activant le blocage chaque fois qu'un thread essaie de retirer une file d'attente vide ou de mettre en file d'attente une file d'attente complète existante. L'interface BlockingQueue n'accepte pas les valeurs nulles, et si vous essayez d'insérer une valeur nulle, elle affichera une NullPointerException.
12. Expliquez « file d'attente prioritaire ».
Une file d'attente prioritaire est un type de données abstrait tel qu'une file d'attente standard ou une structure de données de pile. Cependant, dans cette file d'attente, chaque élément a une caractéristique unique appelée "priorité". Puisqu'elle est basée sur un tas prioritaire, la file d'attente prioritaire sert l'élément de haute priorité avant un élément de faible priorité, quel que soit leur ordre d'insertion. Dans une file d'attente prioritaire, les éléments sont soit classés selon l'ordre naturel, soit par un comparateur utilisé au moment de la construction de la file d'attente (selon le constructeur que vous utilisez).
13. Comment la classe HashSet stocke-t-elle les éléments ?
La classe HashSet est membre du framework Java Collections qui hérite de la classe AbstractSet et implémente l'interface Set.
HashSet implémente une table de hachage à la fois pour créer et stocker une collection d'éléments. Une Hashtable est une instance de la classe HashMap qui utilise un mécanisme de hachage pour stocker des données dans un HashSet. Le hachage fait référence à la technique de conversion des informations en une valeur unique connue sous le nom de code de hachage. Le code de hachage indexe les données associées à la clé unique.
14. Est-il possible d'ajouter un élément nul dans un TreeSet ou HashSet ?
Bien que vous ne puissiez ajouter qu'un seul élément nul dans un HashSet, vous ne pouvez pas le faire dans un TreeSet car il utilise un NavigableMap pour stocker les éléments. Le NavigableMap est un sous-type de SortedMap qui n'accepte/ne prend pas en charge les valeurs nulles. Si vous insérez un élément null dans un TreeSet, cela déclenchera une NullPointerException.
15. Que fait la fonction emptySet() ?
En Java, le Collections.emptySet() est utilisé pour retourner l'ensemble immuable vide en éliminant tous les éléments nuls. Voici la syntaxe pour déclarer un emptySet() :
public statique final <T> Set<T> emptySet()
16. Pourquoi l'interface Map n'étend-elle pas l'interface Collection ?
Alors que l'interface Map suit une structure de paires clé-valeur, l'interface Collection stocke une collection d'objets de manière structurée avec un mécanisme d'accès défini. Map n'étend pas l'interface Collection car la fonction add(E e) de l'interface Collection ne prend pas en charge le modèle de paire clé-valeur de la fonction put(K key, V value) de Map.
17. Nommez les différentes vues Collection étendues par l'interface Carte.
L'interface Map propose trois vues de paires clé-valeur, à savoir :
- Vue du jeu de clés
- Vue de l'ensemble de valeurs
- Vue du jeu d'entrées
18. Énumérez les principales fonctionnalités de Java Hashmap.
Les fonctionnalités fondamentales de Hashmap sont :
- Vous pouvez stocker les éléments en formant des paires clé-valeur et récupérer la valeur en transmettant la clé à la bonne méthode.
- Il affiche NoSuchElementException si aucun élément n'existe dans la carte.
- Il ne stocke que des références d'objet, ce qui rend impossible l'utilisation de types de données primitifs comme double ou int. Au lieu de cela, vous pouvez utiliser une classe wrapper comme Integer ou Double.
Doit lire: Questions et réponses d'entrevue Java
19. Définissez "Empiler".

En Java, une pile désigne une zone désignée de la mémoire d'un ordinateur qui contient des variables temporaires créées par une fonction. Les variables sont déclarées, stockées et initialisées pendant l'exécution dans une pile.
20. Définissez la "notation Big-O".
La notation Big-O définit les performances d'un algorithme par rapport au nombre d'éléments dans une structure de données. Les classes de collection sont des structures de données, et par conséquent, vous devez utiliser la notation Big-O pour décider quelle implémentation de collection utiliser en fonction de la mémoire, du temps et des performances.
Inscrivez-vous à des cours de génie logiciel dans les meilleures universités du monde. Gagnez des programmes Executive PG, des programmes de certificat avancés ou des programmes de maîtrise pour accélérer votre carrière.
Conclusion
Si vous souhaitez en savoir plus sur Java, le développement de logiciels à pile complète, consultez le programme Executive PG de upGrad & IIIT-B en développement de logiciels à pile complète, conçu pour les professionnels en activité et offrant plus de 500 heures de formation rigoureuse, 9+ projets et affectations, statut d'ancien de l'IIIT-B, projets de synthèse pratiques et aide à l'emploi avec les meilleures entreprises.

