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.
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 JavaRéponse : James Gosling
James Gosling a conçu Java chez Sun Microsystems ; le langage a été annoncé en 1995.
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.
Réponse : javac
javac produit des fichiers .class contenant le bytecode ; la commande java lance ensuite ce bytecode dans la JVM.
Réponse : boolean
« boolean » est le type primitif des valeurs logiques ; « bool » n'est pas un mot-clé de 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).
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.
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.
Réponse : 4
Les indices commencent à 0 : un tableau de cinq cases a les indices 0, 1, 2, 3 et 4.
Réponse : extends
extends relie une sous-classe à sa superclasse, dont elle reprend les membres accessibles.
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.
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.
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.
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.
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).
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.
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.
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.
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.
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).
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.
Réponse : volatile
volatile assure la visibilité des écritures entre threads, mais ne rend pas atomique une opération composée comme x++.
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.
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.
Réponse : 2014
Java 8 est sorti en mars 2014 ; il a aussi apporté Optional et les interfaces fonctionnelles du package java.util.function.