Questions et réponses : Java

Révisez le thème Java : voici une sélection de questions de tous niveaux, avec la réponse et une explication. Pour vous tester sans voir les réponses, jouez aux quiz.

Jouer aux quiz Java

Facile

Quel informaticien a conçu le langage Java chez Sun Microsystems ?

Réponse : James Gosling

James Gosling a conçu Java chez Sun Microsystems ; le langage a été annoncé en 1995.

Quel composant charge et exécute le bytecode Java sur une machine ?

Réponse : La machine virtuelle Java (JVM)

La JVM lit le bytecode et l'exécute, ce qui permet au même programme de tourner sur plusieurs systèmes d'exploitation.

Quelle commande du JDK compile un fichier source .java en bytecode ?

Réponse : javac

javac produit des fichiers .class contenant le bytecode ; la commande java lance ensuite ce bytecode dans la JVM.

Quel type primitif Java ne peut prendre que les valeurs true et false ?

Réponse : boolean

« boolean » est le type primitif des valeurs logiques ; « bool » n'est pas un mot-clé de Java.

Quel est le type de la valeur 'A', écrite entre apostrophes simples, en Java ?

Réponse : char

Entre apostrophes simples, une valeur est un caractère : le type char code un caractère sur 16 bits (UTF-16).

Quelle affirmation sur le JDK et le JRE est exacte ?

Réponse : Le JDK contient les outils de développement, le JRE sert seulement à exécuter

Le JDK regroupe les outils pour développer (dont javac) ; le JRE ne contient que ce qu'il faut pour exécuter un programme Java.

Quelle méthode de la classe String renvoie son nombre de caractères ?

Réponse : length()

La méthode length() renvoie le nombre de caractères d'une String ; size() est la méthode des collections, comme List.

Avec le code int[] t = new int[5]; quel est le dernier indice valide du tableau t ?

Réponse : 4

Les indices commencent à 0 : un tableau de cinq cases a les indices 0, 1, 2, 3 et 4.

Moyen

Quel mot-clé déclare qu'une classe hérite d'une autre classe en Java ?

Réponse : extends

extends relie une sous-classe à sa superclasse, dont elle reprend les membres accessibles.

Quel modificateur rend un attribut accessible uniquement depuis le code de sa propre classe ?

Réponse : private

private restreint l'accès à la classe qui déclare l'attribut ; c'est un pilier de l'encapsulation, avec des accesseurs si besoin.

Quelle est la particularité syntaxique d'un constructeur Java ?

Réponse : Il porte le nom exact de la classe et n'a pas de type de retour

Un constructeur porte le nom de sa classe et n'a pas de type de retour ; new l'appelle pour initialiser l'objet à sa création.

À qui appartient un attribut déclaré avec le mot-clé static ?

Réponse : À la classe elle-même, partagé par tous ses objets

Un attribut static existe une seule fois pour la classe : il est partagé par tous les objets et s'utilise sans créer d'objet.

Comment une classe déclare-t-elle qu'elle fournit le code des méthodes d'une interface ?

Réponse : Avec le mot-clé implements

Une classe qui implémente une interface l'indique avec implements et doit fournir le code de chaque méthode abstraite de l'interface.

Quel bloc associé à try s'exécute après le try, qu'une exception ait été levée ou non ?

Réponse : finally

finally s'exécute après le try et après un éventuel catch, que l'exception soit levée ou non (sauf arrêt brutal de la JVM).

Quelle interface de collection n'accepte jamais deux éléments égaux au sens de equals ?

Réponse : Set

Un Set ne garde pas les doublons : add renvoie false si l'élément est déjà présent. HashSet en est une implémentation courante.

Dans Map<String, Integer>, à quoi correspond le type String ?

Réponse : Au type des clés

Le premier paramètre de Map désigne le type des clés, le second celui des valeurs associées.

Difficile

Dans quelle zone mémoire la JVM place-t-elle les objets créés avec new ?

Réponse : Le tas (heap)

Les objets vivent sur le tas, partagé entre les threads ; la pile de chaque thread stocke les variables locales et les références vers ces objets.

Que fait le ramasse-miettes (garbage collector) de la JVM ?

Réponse : Il libère la mémoire des objets devenus inaccessibles

Le ramasse-miettes récupère la mémoire des objets qui ne sont plus atteignables depuis le programme ; il ne gère ni les fichiers ni le bytecode.

Que fait la méthode concat sur une String en Java ?

Réponse : Elle ne modifie pas l'originale et renvoie le résultat dans une String

Une String est immuable : aucune méthode ne modifie son contenu, elles renvoient le résultat sous forme de String (ici la concaténation).

Quel est l'effet principal du mot-clé synchronized sur une méthode d'instance ?

Réponse : Un seul thread à la fois peut exécuter les méthodes synchronisées de cet objet

Chaque objet possède un verrou : un thread doit l'obtenir pour entrer dans une méthode synchronisée, ce qui évite les accès concurrents.

Quel modificateur garantit qu'un thread lit la dernière valeur écrite d'un champ par un autre thread ?

Réponse : volatile

volatile assure la visibilité des écritures entre threads, mais ne rend pas atomique une opération composée comme x++.

Quel est le rôle principal d'un ExecutorService ?

Réponse : Gérer un pool de threads et y soumettre des tâches

Un ExecutorService sépare la soumission des tâches de la création des threads, et réutilise les threads d'un pool.

Qu'est-ce qu'une interface fonctionnelle en Java ?

Réponse : Une interface qui déclare exactement une méthode abstraite

Une lambda peut implémenter une interface fonctionnelle ; l'annotation @FunctionalInterface est facultative, mais le compilateur vérifie la règle si elle est présente.

En quelle année est sortie la version Java 8, qui introduit les lambdas et l'API Stream ?

Réponse : 2014

Java 8 est sorti en mars 2014 ; il a aussi apporté Optional et les interfaces fonctionnelles du package java.util.function.

Thèmes proches

Jouer aux quiz Java