java Flashcards

(67 cards)

1
Q

Qu’est-ce que le JDK et le JRE ?

A

JDK = Java Development Kit (outil pour coder et compiler) JRE = Java Runtime Environment (exécute les programmes Java).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Quelle est la structure minimale d’un programme Java ?

A

Une classe avec une méthode public static void main(String[] args) { }.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Différence entre int, Integer, double, Double

A

int et double : types primitifs.
Integer et Double : objets encapsulant les types primitifs.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Qu’est-ce qu’une variable locale, d’instance et statique ?

A

Local : déclarée dans méthode.
Instance : liée à l’objet.
Statique = liée à la classe (static).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Différence entre == et .equals()

A

== compare références (objets) ou valeurs primitives.
.equals() compare le contenu d’objets.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Que fait final sur une variable ?

A

La variable est une valeur constante.
static final int MAX_WIDTH = 999;
La variable ne peut pas être réaffecté, mais on peut changer ses propriétés.
final Cat cat = new Cat(); cat.setWeight(5).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Que fait final sur une méthode ?

A

La méthode est non surclassable.
public final void sound(), d’une classe (Dog) ne peut pas être override dans une autre classe.
public class BlackDog extends Dog { public void sound() {} // ERROR }

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Que fait final sur une classe ?

A

La classe est non héritable et immuable.
public final class Cat, ne peut pas être extends dans une autre classe.
public class BlackCat extends Cat => ERROR, mais les objets de cette classe ne sont pas immuables.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Que fait final dans un paramètre ?
method(final f) {}

A

Un paramètre final ne peut pas être changé à l’intérieur d’une méthode
public void methodWithFinalArguments(final int x) { x=1; // ERROR }

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Qu’est-ce qu’un objet mutable et un objet immuable ?

A

Objet mutable : Les états et les champs sont modifiables après la création de l’objet. Exemple : StringBuilder, java.util.Date, etc.

Objet immuable : Objet non modifiable après la création de l’objet. Exemple: String, objets primitifs en boîte comme Integer, Long, etc.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Différence entre String, StringBuilder et StringBuffer

A

String : immuable.
StringBuilder : mutable, non thread-safe.
StringBuffer : mutable et thread-safe.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Qu’est-ce qu’une exception et différence avec erreur ?

A

Une exception est un événement imprévu pendant l’exécution d’un programme, gérable via des blocs try-catch, tandis qu’une erreur est un problème grave, souvent non contrôlable, indiquant un dysfonctionnement sérieux.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Différence entre checked et unchecked exceptions

A

Checked : doivent être déclarées ou catchées, héritent de IOException.
ex : FileNotFoundException
Unchecked : exception non vérifiée en Java qui survient pendant l’exécution du programme, héritent de RuntimeException.
ex : NullPointerException.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Que fait try-with-resources ? (Java 7)

A

try (PrintWriter writer = new PrintWriter(new File("test.txt"))) { writer.println("Hello World"); }.
Permet de faire un try avec une ressource implémentant AutoCloseable et ainsi automatiquement fermé, la ressource déclarée à l’intérieur du try.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Comment écrire le code suivant avec un try-with-resources ?
Scanner scanner = null;
try {
scanner = new Scanner(new File(“test.txt”));
while (scanner.hasNext()) { System.out.println(scanner.nextLine()) }
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (scanner != null) { scanner.close(); }
}

A

try (Scanner scanner = new Scanner(new File(“test.txt”))) {
while (scanner.hasNext()) { System.out.println(scanner.nextLine()); }
} catch (FileNotFoundException fnfe) {
fnfe.printStackTrace();
}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Différence entre break et continue

A

break : quitte la boucle.
continue : passe à l’itération suivante.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Différence entre for, while et do-while

A

for : boucle avec compteur.
for(initialization; condition; iteration) {}
while : teste avant exécution.
while (expression-boolean) {}
do-while : teste après exécution, le bloc do est toujours exécuté au moins une fois.
do {} while (expression-boolean);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Différence entre == et instanceof

A

== : compare références (ex : a == b)
instanceof : teste si objet est d’un type. (ex : ring instanceof Round)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Différence entre public, protected, default, private

A

Public : accessible partout
Protected : accessible dans le package et sous-classes
Default : accessible dans le package
Private : accessible dans la classe uniquement.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Qu’est-ce qu’un package et pourquoi l’utiliser ?

A

Organisation logique de classes, évite les conflits de noms et facilite la maintenance.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Qu’est-ce que l’encapsulation ?

A

Cacher les détails internes en les déclarant privées et exposer uniquement ce qui est nécessaire via getters/setters.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Qu’est-ce que l’héritage ?

A

Une classe peut réutiliser champs et méthodes d’une autre classe avec extends.
(class Car extends Vehicle {})

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Qu’est-ce que le polymorphisme ?

A

Une même méthode peut se comporter différemment selon l’objet avec un override (surcharge et redéfinition).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Différence entre overloading et overriding

A

Overloading : même nom, paramètres différents.
public int multiply(int a, int b) { return a * b; }
public double multiply(double a, double b) { return a * b; }
Overriding : même signature, réécriture dans sous-classe.
public class Car extends Vehicle { @Override public String accelerate(long mph) { return "The car is at : " + mph + " MPH."; }}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Qu’est-ce qu’un enum en Java ?
Type spécial représentant un ensemble de constantes. `enum Level { LOW, MEDIUM, HIGH }` `Level myVar = Level.MEDIUM; `
26
Qu’est-ce qu’une interface et différence avec classe abstraite ?
Interface : contrat sans implémentation/contrat de méthodes (Java 8+ peut avoir default methods). Seulement des méthodes abstraites sont autorisés Classe abstraite : peut avoir état et méthodes implémentées. (contrat + implémentation partielle + état) tu ne peux pas créer une instance d'une classe abstraite. `Car car = new Car(); // Error! The Car class is abstract!`
27
Exemple d'interface
interface Bell { String sound = "ting"; // only abstract methods allowed in interface public void ring(); public void increaseVolume(); public void decreaseVolume(); } class SchoolBell implements Bell { public void ring() { System.out.println("Ringing the School bell: " + sound); } @Override public void increaseVolume() { System.out.println("Increasing Volume of School Bell"); } @Override public void decreaseVolume() { System.out.println("Decreasing Volume of School Bell"); } } class ChruchBell implements Bell { public void ring() { System.out.println("Ringing the Chruch Bell: " + sound); } @Override public void increaseVolume() { System.out.println("Increasing Volume of Chruch Bell"); } @Override public void decreaseVolume() { System.out.println("Decreasing Volume of Chruch Bell"); } }
28
Exemple de classe abstraite ?
abstract class Bell { protected String sound; Bell() { this.sound = "ting"; } // Abstract Method abstract public void ring(); // Non-Abstract Methods public void increaseVolume() { System.out.println("Increasing Volume"); } public void decreaseVolume() { System.out.println("Decreasing Volume"); } } class SchoolBell extends Bell { @Override public void ring() { System.out.println("Ringing the School bell: " + sound); } } class ChruchBell extends Bell { @Override public void ring() { System.out.println("Ringing the Chruch Bell: " + sound); } }
29
Différence entre composition et héritage
Composition : un objet contient un autre objet (HAS-A) Héritage : une classe dérive d’une autre (IS-A).
30
Qu’est-ce que le mot-clé `this` ?
Référence à l’objet courant. `this.objet = objet`
31
Qu’est-ce que `super` en Java ?
Accéder à la classe parente (constructeur, méthodes). `super.animalSound(); // Call the superclass method`
32
Différence entre shallow copy et deep copy
Shallow copy : référence copiée Deep copy : copie complète des objets internes.
33
Qu’est-ce que le garbage collector ?
Mécanisme JVM qui libère automatiquement la mémoire non utilisée.
34
Différence entre stack et heap
Stack : mémoire pour variables locales et appels de méthode Heap : mémoire pour objets et instances.
35
Différence entre `synchronized` et `volatile`
`synchronized` : bloc/méthode thread-safe. `volatile` : garantit que les lectures/écritures vont directement à la mémoire principale.
36
Qu’est-ce qu’une lambda expression ?
Fonction anonyme qui permet un code plus concis (Java 8+). `parameter -> expression` `(parameter1, parameter2) -> expression` `(parameter1, parameter2) -> { // code block; return result; }`
37
Qu’est-ce qu’une fonction de référence (method reference) ?
Référence à une méthode existante, plus concise qu’une lambda.
38
Différence entre Array et ArrayList
Array : taille fixe ArrayList : taille dynamique, méthodes utilitaires.
39
Différence entre List, Set et Map
List : ordonnée, doublons autorisés Set : non ordonnée, doublons interdits Map : clé-valeur, clé unique.
40
Qu’est-ce que HashMap et TreeMap
HashMap : non trié, rapide TreeMap : trié par clé, un peu plus lent.
41
Différence entre Iterator et ListIterator
Iterator : parcours simple ListIterator : parcours bidirectionnel + modification.
42
Différence entre intermediate et terminal operations sur un Stream
Intermediate : lazy (ex : map, filter) Terminal : déclenche le traitement (ex : collect, forEach).
43
Qu’est-ce que Optional et pourquoi l’utiliser ?
Wrapper pour éviter NullPointerException et gérer l’absence de valeur.
44
Différence entre parallelStream() et stream()
parallelStream() : exécution en parallèle sur plusieurs threads stream() : séquentiel.
45
Différence entre Predicate, Function et Consumer
Predicate : test conditionnel Function : transforme un objet Consumer : consomme un objet sans retourner.
46
Qu’est-ce qu’un Collector ?
Permet de transformer un Stream en collection, map ou autre résultat.
47
Différence entre Comparable et Comparator
Comparable : tri naturel (implémenté dans la classe) Comparator : tri externe, défini par une classe ou lambda.
48
Qu’est-ce que le pattern Builder
Créer des objets complexes de manière fluide et lisible.
49
Qu’est-ce que le pattern Singleton
Classe qui ne peut avoir qu’une seule instance.
50
Qu’est-ce que le pattern Factory
Crée des objets sans exposer le code d’instanciation.
51
Différence entre fail-fast et fail-safe dans les collections
Fail-fast : lève exception si collection modifiée pendant itération Fail-safe : copie interne, pas d’exception.
52
Différence entre JDK 8 et JDK 11
JDK 8 : lambdas, Stream API, date/time API JDK 11 : LTS (Long-Term Support, support prolongé et stabilité d'environnement), `var`, String methods (`isBlank`), `HttpClient` standard, fin du support pour applets.
53
Différence entre JDK 11 et JDK 17
JDK 17 : LTS, `sealed classes`, `records`, pattern matching, améliorations garbage collector.
54
Différence entre JDK 17 et JDK 21
JDK 21 : virtual threads (Project Loom), structured concurrency, record patterns, string templates.
55
Qu’est-ce qu’une record en Java ?
Classe immutable simplifiée pour stocker des données, avec equals, hashCode et toString générés automatiquement.
56
Qu’est-ce qu’une sealed class en Java ?
Classe qui limite quelles classes peuvent l’étendre, apporte plus de contrôle sur l’héritage.
57
Différence Java 8 / 11 / 17 / 21 en 1 phrase ?
8 : lambdas/streams 11 : plus moderne, HTTP client, LTS 17 : sealed classes, switch patterns 21 : virtual threads, LTS super stable
58
Différence map() vs flatMap() ?
map : transforme un élément en un autre. flatMap : transforme + aplati des sous-listes.
59
À quoi servent les Streams ?
Manipuler des collections de manière déclarative et fonctionnelle (map, filter, reduce).
60
Qu'est-ce qu'un constructeur ?
Méthode appelée lors de la création d’un objet pour initialiser son état.
61
Qu'est-ce qu'un `int` ?
Contient une large gamme de valeurs de nombres non fractionnés. Java le stocke en utilisant 32 bits de mémoire.
62
Qu'est-ce qu'un `byte` ?
Le byte est un octet, il ne peut contenir que les valeurs de -128 (-2 7) à 127 (2 7 – 1). Java le stocke en utilisant 8 bits de mémoire.
63
Qu'est-ce qu'un `short` ?
Java convertit souvent les short en int pour les calculs, ce qui complique le code. Java le stocke en utilisant 16 bits de mémoire.
64
Qu'est-ce qu'un `long` ?
Il est stocké dans 64 bits de mémoire, de sorte qu'il peut contenir un ensemble de valeurs possibles significativement plus grand.
65
Qu'est-ce qu'un `float` ?
Il s'agit d'un nombre de décimale à une seule précision, six points décimaux. Ce type est stocké dans 32 bits de mémoire. float f = 3.145`f`;
66
Qu'est-ce qu'un `double` ?
Son nom vient du fait qu’il s’agit d’un nombre décimal à double précision. Il est stocké dans 64 bits de mémoire. double d = 3.13457599923384753929348`D`;
67
Qu'est-ce que l'`Autoboxing` ?
conversion du type primitif à son emballage d'objet. `Character c = 'c';` `Integer i = 1;`