QCM sur Java avec des réponses pour la préparation des entretiens d’embauche, des tests en ligne, aux examens et aux certifications. Ces questions et réponses sur Java comprennent divers sujets. Et sont tirés d’un vrai entretien écrit et certaines parties sont en direct. Cette méthode d’apprentissage systématique préparera facilement toute personne pour réussir son test sur Java .
1. Lequel des éléments suivants n’est pas un concept POO en Java?
A Héritage
B Encapsulation
C Polymorphisme
D Compilation
D
Il existe 4 concepts POO en Java. Héritage, encapsulation, polymorphisme et abstraction.
2. Quand la surcharge de méthode est-elle déterminée?
A Au moment de l’exécution
B Au moment de la compilation
C Au moment du codage
D Au moment de l’exécution
B
La surcharge est déterminée au moment de la compilation.
Les méthodes surchargées ne sont en fait que des méthodes différentes qui portent le même nom. Ce sont alors les types de paramètres qui permettent de les distinguer. Tout comme le compilateur décide toujours au moment de la compilation de la méthode à appeler, c’est le cas pour les méthodes surchargées. Exemple:
public class Addition {
public static int add(int a, int b) {
return a + b;
}
public static double add(double a, double b) {
return a + b;
}
public static void main(String args[]) {
System.out.println(add(1, 2));
System.out.println(add(1.0, 2.0));
}
}
Sortie:
3
3.0
3. Quand la surcharge ne se produit pas?
A Quand il y a plusieurs méthodes avec le même nom mais avec une signature de méthode différente et un nombre ou un type de paramètres différent
B Quand il y a plusieurs méthodes avec le même nom, le même nombre de paramètres et le type mais une signature différente
C Quand il y a plusieurs méthodes avec le même nom, la même signature, le même nombre de paramètres mais un type différent
D Quand il y a plusieurs méthodes avec le même nom, la même signature mais avec différente signature
B
La surcharge se produit lorsque deux méthodes portent le même nom mais ont des signatures (ou des arguments) différents.
Différence entre Héritage et PolymorphismeQ uelle est la différence entre Héritage et Polymorphisme ? – L’héritage permet, la ré-utilisabilité du code et le polymorphisme permet à une fonction d’avoir…Lire plus
4. Quel concept de Java est un moyen de convertir des objets du monde réel en termes de classe?
A Polymorphisme
B Encapsulation
C Abstraction
D Héritage
C
L’abstraction est un concept de définition des objets du monde réel en termes de classes ou d’interfaces.
5. Quel concept de Java est utilisé en combinant des méthodes et des attributs dans une classe?
A Polymorphisme
B Encapsulation
C Abstraction
D Héritage
B
L’encapsulation est implémentée en combinant des méthodes et des attributs dans une classe. La classe agit comme un conteneur de propriétés d’encapsulation.
6. Comment ça s’appelle si un objet a son propre cycle de vie?
A Agrégation
B Composition
C Encapsulation
D Association
D
Association est une relation où tous les objets ont leur propre cycle de vie et où il n’y a pas de maître. L’agrégation est une forme spécialisée d’association dans laquelle tous les objets ont leur propre cycle de vie, mais il y a un maître et les objets enfants ne peuvent pas appartenir à un autre objet parent.
7. Comment s’appelle-t-on dans le cas où l’objet d’une classe mère est détruit donc l’objet d’une classe fille sera détruit également?
A Agrégation
B Composition
C Encapsulation
D Association
B
Dans la composition, l’objet de la classe mère est indépendant de l’objet de la classe fille tandis que l’objet de la classe fille dépend de l’objet de la classe mère. Le parent peut créer et détruire des enfants et l’enfant créé ne peut exister sans le parent. Par exemple, un bâtiment a des appartements. Si le bâtiment est détruit, les appartements vont disparaître, mais si vous détruisez un appartement dans le bâtiment, le bâtiment restera. Même si vous détruisez tous les appartements, le bâtiment restera un bâtiment sans appartements.
8. Comment s’appelle-t-on l’objet a son propre cycle de vie et l’objet d’une classe fille ne dépend pas à un autre objet d’une classe mère?
A Agrégation
B Composition
C Encapsulation
D Association
A
Au contraire de la composition, L’agrégation implique une relation où l’enfant peut exister indépendamment du parent. Exemple : Une école (classe mère) et un étudiant (classe fille). Supprimez l’école et les étudiants existent toujours.
L’agrégation se produit lorsque les objets ont leur propre cycle de vie et que l’objet d’une classe fille peut être associé à un seul objet d’une classe mère.
9. La surcharge d’une méthode peut remplacer l’héritage et le polymorphisme?
A Vrai
B Faux
B
Le polymorphisme est la capacité d’une instance de classe à se comporter comme si elle était une instance d’une autre classe dans son arbre d’héritage. Par exemple, en Java, toutes les classes héritent de la classe Object. Donc, vous pouvez créer une variable de type Object et lui affecter une instance de n’importe quelle classe.
Exemple 1:
class A{}
class B extends A{}
A a = new B();
Object o = new B();
Exemple 2:
class A {
void afficher() {
System.out.println("A");
}
}
class B extends A {
void afficher() {
System.out.println("B");
}
public static void main(String args[]) {
A a = new B();
a.afficher();
}
}
Sortie:
B
La surcharge est le fait de définir plusieurs méthodes portant le même nom, mais avec des paramètres différents. Elle n’est pas liée au polymorphisme. Exemple:
public class Addition {
public static int add(int a, int b) {
return a + b;
}
public static double add(double a, double b) {
return a + b;
}
public static void main(String args[]) {
System.out.println(add(1, 2));
System.out.println(add(1.0, 2.0));
}
}
Sortie:
3
3.0
Différence entre Héritage et CompositionBien que l’héritage et la composition permettent la réutilisation du code, la principale différence entre la composition et l’héritage réside dans le fait que la…Lire plus
10. Quels keywords sont utilisés pour spécifier la visibilité des propriétés et des méthodes ?
A final
B private
C abstract
D protected
E public
B, D, E
les mots clés utilisés pour spécifier la visibilité des propriétés et des méthodes sont :
11. Quelle est la principale caractéristique de l’encapsulation en Java ?
A Les classes sont toutes publiques.
B Les variables et les méthodes sont protégées des autres classes.
C Les classes doivent être abstraites.
D Les objets peuvent hériter d’autres objets.
B
L’encapsulation est un principe de la POO qui consiste à cacher les détails d’implémentation d’une classe et à fournir un accès contrôlé via des méthodes publiques (getters et setters). Cela permet de protéger les données internes de la classe et d’assurer leur intégrité.
12. Que permet l’héritage en Java ?
A Une classe peut accéder aux membres privés d’une autre classe.
B Une classe peut hériter des méthodes et attributs d’une autre classe.
C Une classe peut hériter des méthodes statiques d’une autre classe.
D Une classe peut implémenter plusieurs interfaces mais ne peut pas hériter de classes.
B
L’héritage permet à une classe (sous-classe) d’hériter des méthodes et des attributs d’une autre classe (super-classe), facilitant la réutilisation du code. Cela permet aussi à la sous-classe d’ajouter ou de modifier certaines fonctionnalités.
13. Quelle est la différence principale entre une classe abstraite et une interface en Java ?
A Une classe abstraite peut implémenter des méthodes, une interface ne peut pas.
B Une interface peut avoir des constructeurs, une classe abstraite ne peut pas.
C Une classe abstraite ne peut pas avoir de méthodes abstraites.
D Une classe abstraite peut avoir des méthodes avec une implémentation, une interface ne peut pas.
D
Une classe abstraite peut contenir des méthodes avec une implémentation, mais elle peut aussi avoir des méthodes abstraites (sans implémentation). Une interface, par contre, ne contient que des déclarations de méthodes (avant Java 8), sans implémentation. Depuis Java 8, une interface peut contenir des méthodes avec des implémentations par défaut, mais ce n’est pas son objectif principal.
14. Qu’est-ce qu’une méthode static en Java ?
A Elle est utilisée pour manipuler les instances d’un objet.
B Elle peut être appelée sans créer une instance de la classe.
C Elle ne peut pas accéder aux variables d’instance de la classe.
D Les deux B et C sont vrais.
D
Une méthode static appartient à la classe elle-même, et non à une instance spécifique de la classe. Cela permet de l’appeler sans créer un objet. Cependant, une méthode static ne peut pas accéder aux variables d’instance (non statiques) de la classe, car elles sont spécifiques à chaque objet.
15. Quelle est la sortie du code suivant ?
class Animal {
public void sound() {
System.out.println("Animal makes a sound");
}
}
class Dog extends Animal {
public void sound() {
System.out.println("Dog barks");
}
}
public class Test {
public static void main(String[] args) {
Animal obj = new Dog();
obj.sound();
}
}
A Animal makes a sound
B Dog barks
C Erreur de compilation
D Rien ne s’affiche
B
Ce code démontre le polymorphisme en Java. La variable obj est de type Animal, mais elle fait référence à un objet de type Dog. Grâce au mécanisme de liaison dynamique (ou liaison tardive), la méthode sound() de la classe Dog est appelée, même si le type de la variable est Animal.
16. Que se passe-t-il si une classe mère implémente une interface et que la classe fille ne redéfinit pas une méthode de cette interface ?
A Le programme échoue à la compilation.
B La classe fille doit redéfinir toutes les méthodes de l’interface.
C Le programme compiles et la classe fille hérite de l’implémentation de la méthode de l’interface.
D La classe fille peut hériter de la méthode de l’interface, mais elle doit fournir sa propre implémentation.
C
En Java, si une classe mère implémente une interface et fournit une implémentation pour ses méthodes, la classe fille hérite de cette implémentation. La classe fille n’est pas obligée de redéfinir ces méthodes, sauf si elle veut apporter une modification ou une spécialisation.
17. Qu’est-ce que le polymorphisme en Java ?
A Une classe qui implémente plusieurs interfaces.
B Une méthode ayant plusieurs signatures différentes.
C La capacité d’une méthode à accepter différents types d’objets.
D Une classe qui peut hériter de plusieurs classes.
C
Le polymorphisme permet à une méthode d’accepter différentes formes d’objets, ce qui signifie qu’une même méthode peut être utilisée pour des objets de types différents. En Java, cela est souvent réalisé par l’héritage et l’implémentation d’interfaces, permettant à une méthode de se comporter de manière différente selon l’objet passé.
18. Quel est l’effet de la déclaration suivante en Java ?
final class Dog {
// code
}
A La classe Dog ne peut pas contenir des méthodes abstraites.
B La classe Dog peut être modifiée, mais ses méthodes ne peuvent pas l’être.
C La classe Dog ne peut pas être instanciée.
D La classe Dog ne peut pas être étendue.
D
Le mot-clé final appliqué à une classe signifie que cette classe ne peut pas être étendue (héritée). En d’autres termes, il est interdit de créer une sous-classe de Dog. Les autres fonctionnalités comme l’instanciation, la modification des méthodes, ou l’abstraction ne sont pas affectées par le mot-clé final.
19. Que fait la méthode super() en Java ?
A Elle est utilisée pour appeler une méthode dans la classe actuelle.
B Elle appelle un constructeur de la classe parente.
C Elle est utilisée pour surcharger une méthode dans une classe parente.
D Elle retourne un objet de la classe parente.
B
La méthode super() est utilisée dans le constructeur d’une sous-classe pour appeler le constructeur de la classe parente. Cela permet d’initialiser les variables d’instance de la classe parente avant d’initialiser celles de la sous-classe.
20. Qu’est-ce qu’une classe abstraite en Java ?
A Une classe qui peut être instanciée, mais avec des méthodes partielles.
B Une classe qui ne peut pas être instanciée directement, mais qui peut être héritée.
C Une classe qui contient uniquement des méthodes statiques.
D Une classe qui ne peut pas avoir de constructeurs.
B
Une classe abstraite en Java ne peut pas être instanciée directement. Elle sert de base pour d’autres classes qui l’étendent. Une classe abstraite peut contenir des méthodes abstraites (sans corps), que les sous-classes doivent implémenter. Elle peut aussi contenir des méthodes concrètes (avec une implémentation).
21. Quel est l’objectif de la méthode clone() en Java ?
A Copier un objet en créant une nouvelle instance de la classe.
B Cloner une classe sans la réinitialiser.
C Effectuer une copie superficielle ou profonde de l’objet.
D Supprimer un objet de la mémoire.
A
La méthode clone() permet de créer une copie superficielle d’un objet. La classe de l’objet doit implémenter l’interface Cloneable, sinon une exception CloneNotSupportedException sera lancée. Une copie superficielle signifie que les objets contenus dans l’objet cloné ne sont pas eux-mêmes clonés.
22. Qu’est-ce qu’une interface fonctionnelle en Java ?
A Une interface qui contient au moins une méthode abstraite.
B Une interface qui contient uniquement des méthodes statiques.
C Une interface qui ne peut pas être implémentée par des classes.
D Une interface avec exactement une méthode abstraite, utilisée principalement avec les expressions lambda.
D
Une interface fonctionnelle est une interface qui contient exactement une méthode abstraite. Elle peut contenir plusieurs méthodes par défaut ou statiques, mais une seule méthode abstraite. Ces interfaces sont particulièrement utilisées avec les expressions lambda et les références de méthode, comme dans les opérations de traitement fonctionnel.
23. Qu’est-ce qu’un constructeur par défaut en Java ?
A Un constructeur sans arguments, fourni par défaut si aucun constructeur n’est défini dans la classe.
B Un constructeur qui initialise tous les membres de la classe à zéro.
C Un constructeur qui est appelé automatiquement lors de la création d’une instance de la classe.
D Un constructeur qui retourne un objet de type void.
A
En Java, si une classe ne définit pas explicitement de constructeur, le compilateur fournit un constructeur par défaut sans arguments qui initialise les variables d’instance à leurs valeurs par défaut (comme null pour les objets et 0 pour les types primitifs). Si un constructeur est défini, le constructeur par défaut n’est pas fourni.
24. Quel est l’objectif principal du mot-clé transient en Java ?
A Il empêche une variable d’être sérialisée.
B Il permet à une variable d’être sérialisée en dehors de la classe.
C Il déclare une variable qui ne peut être modifiée.
D Il permet d’initialiser une variable à sa valeur par défaut pendant la sérialisation.
A
Le mot-clé transient est utilisé pour marquer une variable d’instance d’une classe afin qu’elle ne soit pas sérialisée. Cela est utile lorsque vous ne voulez pas inclure certaines données dans le processus de sérialisation.
25. Quelle est la principale raison d’utiliser les interfaces en Java ?
A Pour fournir une implémentation de méthodes communes.
B Pour hériter des fonctionnalités d’une autre classe.
C Pour définir une hiérarchie de classes abstraites.
D Pour définir un contrat que les classes doivent suivre, sans fournir d’implémentation.
D
Les interfaces en Java définissent un contrat que les classes doivent respecter, en obligeant les classes qui les implémentent à fournir des implémentations concrètes des méthodes de l’interface. Elles ne contiennent pas d’implémentation, mais uniquement des signatures de méthodes.
26. Que fait le mot-clé this en Java ?
A Il fait référence à l’instance actuelle de la classe.
B Il fait référence à la classe elle-même.
C Il permet de créer une nouvelle instance de la classe.
D Il est utilisé pour appeler un constructeur.
A
Le mot-clé this fait référence à l’instance actuelle de la classe, c’est-à-dire l’objet en cours. Il est souvent utilisé pour désambiguïser les noms de variables ou pour appeler un autre constructeur de la même classe.
27. Quelle est la sortie du code suivant ?
class Test {
String name;
Test(String name) {
this.name = name;
}
public static void main(String[] args) {
Test obj1 = new Test("Alice");
Test obj2 = new Test("Bob");
System.out.println(obj1.name == obj2.name);
}
}
A true
B false
C Compilation error
D Runtime error
B
Les deux objets obj1 et obj2 ont des variables name avec des valeurs différentes (« Alice » et « Bob »). L’opérateur == compare les références mémoire des chaînes, pas leurs contenus. Comme ce sont des références différentes, la sortie sera false.
28. Quel mot-clé est utilisé pour empêcher une méthode d’être redéfinie dans une sous-classe ?
Astatic
Bfinal
Cabstract
Dprivate
B
Le mot-clé final empêche la redéfinition d’une méthode dans une sous-classe. Cela garantit que la méthode reste telle qu’elle est définie dans la classe d’origine.
29. Quelle est la sortie de ce code ?
class Test {
public static void main(String[] args) {
int a = 10;
Integer b = 10;
System.out.println(a == b);
}
}
A true
B false
C Compilation error
D Runtime error
A
En Java, l’auto-unboxing permet de comparer un type primitif (a) à un objet enveloppé dans une classe wrapper (b). L’objet b est converti automatiquement en int, ce qui permet la comparaison des valeurs a et b, et le résultat sera true.
30. Qu’est-ce qu’une classe interne en Java ?
A Une classe qui est définie à l’extérieur de la classe principale.
B Une classe qui est définie à l’intérieur d’une autre classe.
C Une classe qui ne peut être utilisée que dans le package où elle est définie.
D Une classe qui peut être utilisée comme une classe anonyme.
B
Une classe interne est une classe définie à l’intérieur d’une autre classe. Elle peut accéder aux membres de la classe externe et est souvent utilisée pour des raisons de modularité et d’encapsulation.
31. Quel est le rôle de l’interface Serializable en Java ?
A Elle permet à une classe d’être exécutée sur différentes plateformes.
B Elle permet à une classe de gérer les entrées et sorties de fichiers.
C Elle permet à une classe d’être convertie en un flux d’octets pour être stockée ou transmise.
D Elle permet à une classe d’implémenter des méthodes de gestion d’erreurs.
C
L’interface Serializable permet à une classe de sérialiser ses objets, c’est-à-dire de les convertir en un flux d’octets. Ces objets peuvent ensuite être stockés dans un fichier, envoyés sur un réseau, ou restaurés ultérieurement.
32. Quelle est la sortie de ce code ?
class Test {
public static void main(String[] args) {
String str = "Java";
String str2 = "java";
System.out.println(str.equals(str2));
}
}
A true
B false
C Compilation error
D Runtime error
B
La méthode equals() compare les valeurs des chaînes de caractères. Comme les valeurs de str ("Java") et str2 ("java") sont différentes (en termes de casse), la méthode retourne false.
33. Qu’est-ce qu’une classe interne anonyme en Java ?
A Une classe définie à l’extérieur d’une classe.
B Une classe sans nom, souvent utilisée pour implémenter une interface ou une classe abstraite de manière concise.
C Une classe qui ne peut être instanciée.
D Une classe dont l’objet est immédiatement créé dans la méthode.
B
Une classe interne anonyme est une classe qui n’a pas de nom. Elle est souvent utilisée pour implémenter rapidement une interface ou une classe abstraite sans créer une classe séparée. Exemple :
Runnable r = new Runnable() {
public void run() {
System.out.println("Running");
}
};
34. Quelle est la sortie de ce code ?
class Test {
static int a = 10;
public static void main(String[] args) {
a = 20;
System.out.println(a);
}
}
A 10
B 20
C Compilation error
D Runtime error
B
La variable a est une variable statique. Elle est modifiée dans la méthode main() pour prendre la valeur 20. La sortie sera donc 20.
35. Quelle est la sortie de ce code ?
class Test {
public static void main(String[] args) {
String str1 = new String("Java");
String str2 = new String("Java");
System.out.println(str1 == str2);
}
}
A true
B false
C Compilation error
D Runtime error
B
Ici, str1 et str2 sont deux objets différents (créés avec le mot-clé new). L’opérateur == compare les références mémoire et, bien que les deux chaînes aient le même contenu, leurs références sont différentes. Par conséquent, le résultat sera false.
36. Quelle est la sortie de ce code ?
class Test {
public static void main(String[] args) {
int x = 5;
System.out.println(x++ + ++x);
}
}
A 10
B 11
C 12
D 13
B
x++ (post-incrément) renvoie la valeur actuelle de x (qui est 5) avant l’incrémentation. ++x (pré-incrément) incrémente d’abord x à 7, puis renvoie cette nouvelle valeur. Donc, l’expression devient 5 + 7 = 11.
37. Quel est le rôle de la méthode finalize() en Java ?
A Elle est utilisée pour fermer les fichiers.
B Elle est appelée avant qu’un objet soit détruit par le garbage collector.
C Elle est utilisée pour vérifier l’égalité de deux objets.
D Elle empêche la destruction d’un objet par le garbage collector.
B
La méthode finalize() est appelée avant qu’un objet soit récupéré par le garbage collector. Elle permet de libérer des ressources ou d’effectuer des actions de nettoyage avant la destruction de l’objet.
38. Quel est le principal principe de la Programmation Orientée Objet ?
A La gestion de mémoire
B La gestion des exceptions
C La gestion de la concurrence
D L’encapsulation
D
L’encapsulation est un des principes fondamentaux de la POO. Elle consiste à cacher l’état interne d’un objet et à ne permettre l’accès à cet état que par des méthodes spécifiques (getters et setters), afin de protéger l’intégrité des données et de simplifier l’interaction avec les objets.
39. Quelle est la différence principale entre une classe et un objet en Java ?
A Une classe est une instance d’un objet
B Un objet est une instance d’une classe
C Une classe est une méthode d’un objet
D Un objet est une variable d’une classe
B
Une classe est un modèle ou un plan qui définit les propriétés et les comportements d’un type d’objet. Un objet, en revanche, est une instance concrète de cette classe, créée à partir de ce modèle.
40. Quelle est la fonctionnalité d’un constructeur en Java ?
A Initialiser un objet
B Détruire un objet
C Modifier l’état d’un objet
D Appeler une méthode d’une classe
A
Un constructeur est une méthode spéciale dans une classe qui est utilisée pour initialiser un objet lors de sa création. Il a le même nom que la classe et ne retourne aucune valeur. Il est souvent utilisé pour affecter des valeurs initiales aux attributs de l’objet.
41. Que fait la méthode toString() en Java ?
A Elle convertit une variable en chaîne de caractères
B Elle convertit un objet en une chaîne de caractères représentant son nom de classe
C Elle est utilisée pour sérialiser un objet
D Elle retourne l’adresse mémoire de l’objet
B
La méthode toString() est définie dans la classe Object (la classe parente de toutes les classes en Java). Elle retourne une chaîne de caractères qui représente l’objet. Par défaut, elle retourne le nom de la classe de l’objet, mais il est souvent recommandé de la redéfinir pour retourner des informations plus utiles sur l’objet.
Ce sont vraiment des questions de base de programmation orientée objet, toute personne ayant juste quelques années d'expérience et même un diplômé en informatique peut répondre à ces questions. Je suis à la recherche de questions de conception orientées objet plus difficiles, difficiles et vraiment difficiles qui mettront à l'épreuve vos connaissances et vos compétences et non les définitions. Par exemple, comment allez-vous concevoir …? – un site de commerce électronique comme Amazon ou FlipKart – Comment fonctionne Google? Pouvez-vous mettre en œuvre une solution comme ça – Concevoir un système de négociation électronique – Concevoir une machine à laver etc
Ce sont vraiment des questions de base de programmation orientée objet, toute personne ayant juste quelques années d'expérience et même un diplômé en informatique peut répondre à ces questions. Je suis à la recherche de questions de conception orientées objet plus difficiles, difficiles et vraiment difficiles qui mettront à l'épreuve vos connaissances et vos compétences et non les définitions. Par exemple, comment allez-vous concevoir …?
– un site de commerce électronique comme Amazon ou FlipKart
– Comment fonctionne Google? Pouvez-vous mettre en œuvre une solution comme ça
– Concevoir un système de négociation électronique
– Concevoir une machine à laver etc
J’arrive pas à télécharger le pdf