Java Flashcards

(51 cards)

1
Q

Java est un langage compilé ou interprété ?

A

Les deux, il est compilé en byte code (.class) par un compilateur puis interprété par la jvm (java virtual marchin) pour tourner sur tous les OS.

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

Quelle est la différence entre le JDK, le JRE et la JVM ?

A

Le JDK (Java Development Kit) contient les outils pour développer (comme le compilateur javac). Le JRE (Java Runtime Environment) permet d’exécuter le code. La JVM (Java Virtual Machine) interprète le bytecode compilé pour le faire tourner sur n’importe quel OS.

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

Quelle est la philosophie de Java ?

A

Write once, run anywhere.

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

Comment déclare-t-on une variable en Java ?

A

int entier = 5;

ATTENTION : au nom réservé par Java. On ne peux pas les utiliser.

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

Qu’est ce qu’une variable final en Java et comment la déclare-t-on ?

A

final int entier = 15;

Une variable final ne peut plus être modifiée après sa déclaration.
Elle diverge d’une constante parce que chaque instance d’un objet peut avoir une valeur de finale différente.

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

Quelles sont les conventions de nommage en Java ?

A
  • camel case pour les variables / méthodes
  • pascale case pour les classes et nom de fichiers
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Quels sont les types primitifs en Java ?

A

Les types primitifs de Java sont passés par valeur et ont une valeur par défaut.

byte : entier entre -128 et 127 // valeur par défaut = 0
short : entier entre -32 768 et 32 767 // 0
int : entier sur 32 bites // 0
long : entier sur 64 bits // 0
float : décimal à virgule flottante sur 32 bits // 0.0
double : décimal à virgule flottante sur 64 bits // 0.0
boolean : true ou false // false
char : caractère unique // \u0000’

ATTENTION : les float et double ne doivent pas être utilisé pour des calculs précis.

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

Quels sont les types primitifs en Java ?

A

Les types primitifs sont passés par référence, peuvent être null (valeur par défaut), peuvent être comparé avec .equals() et sont des classes.

String : chaîne de caractère
type primitif “boxés” : Integer, Long, …
tableau
classe
objet

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

Qu’est-ce que l’inférence de type ?

A

Si le type d’une variable n’est pas ambigu, il peut être inféré.

var texte = “”;

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

Comment récupère-t-on et affichons des valeurs dans le terminal ?

A

IO.readln(“entrer une valeur: “);
IO.println(“Votre nombre = 5”);

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

Qu’est ce que le transtypage (cast) en Java ?

A

Le transtypage permet de changer le type d’une variable.

String foo = (String) 10;

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

Comment déclare-t-on un tableau en Java ?

A

Les tableaux permettent de stocker un nombre fixe de données. Ils sont indexés à partir de 0.

String[] tableOfString = {“foo”, “bar”};

int[] array = new int[10]; -> initialisation d’un tableau vide de 10 cases

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

Comment boucle-t-on sur un tableau en Java ?

A

for (int number : numbers) {
System.out.println(number);
}

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

Quelles sont les trois collections principales pour manipuler des groupes d’objets en Java ?

A

List : Une collection ordonnée qui accepte les doublons (ex: ArrayList).

Set : Une collection non ordonnée qui refuse les doublons (ex: HashSet).

Map : Une structure qui stocke des associations Clé-Valeur (ex: HashMap).

IMPORTANT : Les collections ont des tailles dynamiques.

List.of() / Set.of() / Map.of() permettent de faire des collections non modifiables.

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

Quelle est la différence entre un LinkedHashSet et un TreeSet ?

A

Un LinkedHashSet permet trier par ordre d’apparition alors qu’un TreeSet tri par ordre naturel (compareTo()).

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

Comment parcourir les clés et les valeurs d’une Map ?

A

On utilise une boucle foreach.

Pour les clés :
for (Type cle : map.keySet())

Pour les valeurs :
for (Type valeur : map.values())

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

Qu’est-ce qu’une classe en Java ?

A

Une classe est un type qui regroupe des données (attributs) et des fonctions (méthodes) qui peuvent agir sur ces données.

IMPORTANT : Tout le code Java doit être contenu dans des classes.

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

Qu’est-ce qu’un attribut en Java ?

A

Les attributs sont des données encapsulées à l’intérieur d’un objet ou classe.
Les attributs sont accessibles depuis les méthodes de la classe à l’aide de this.

public void recharge {
this.nbBalles += 2;
}

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

Comment instancie-t-on une classe ?

A

Il s’agit de créer un objet à partir du modèle que constitue la classe.
Lorsque l’on instancie une classe, on appelle un constructeur de celle-ci.

Date date = new Date();

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

Qu’est ce qu’une méthode en Java ?

A

Les méthodes sont des blocs de code qui réalisent une tâche spécifique.

public static void methodName (int x, int y) {}

Une méthode d’instance (pas static) opère sur une instance d’une classe.
Elle peut accéder / modifier l’état de sa propre instance.

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

Qu’est-ce qu’un constructeur en Java ?

A

Le constructeur est une méthode particulière d’une classe qui permet d’en instancier un objet.
C’est la méthode invoquée par le new.

class Point {
int x;
int y;

Point() {
    this.x = 0;
    this.y = 0;
} }

IMPORTANT : elle porte le même nom que la classe et n’a pas de valeur de retour.

Il est possible d’avoir plusieurs constructeur pour des paramétrage différents -> surcharge

Le constructeur peut être invoqué dans un autre constructeur avec this().

22
Q

Quelles sont les méthodes particulières d’un classe ?

A

toString() : permet de faire un affichage de l’état d’un objet lisible par un humain, sinon l’emplacement mémoire est affiché.
Si elle est présente, son appel est automatique.

equals(Object o) : permet de définir les conditions d’égalité de deux objets (sinon toujours false car comparaison des emplacements mémoire)

hashCode() : permet de faire un hash de l’objet, utile pour les collections

compareTo() : permet de comparer deux objets. Pour l’utiliser, la classe doit “implements Comparable<object>”</object>

23
Q

Qu’est-ce qu’un Record en Java ?

A

Un record est une syntaxe compacte pour une classe qui n’est pas modifiables.

record Personne (Address address, String name) {}

= attributs + constructeur + getter + equals() + hashCode() + toString()

24
Q

Qu’est-ce qu’une composition en Java ?

A

On appelle la composition le fait qu’une classe utilise des instances d’autres classes comme attributs.

25
Quels sont les 4 piliers de la programmation orientée objet ?
Abstraction, encapsulation, polymorphisme et héritage.
26
En quoi consiste l'abstraction en POO ?
L'abstraction est le fait de dissimuler des détails de l'implémentation interne et ne présenter que des fonctionnalités essentielles. Exemples : classes abstraites, interface
27
En quoi consiste l'encapsulation en POO ?
L'encapsulation consiste à présenter une interface publique cohérente indépendante de ses détails d'implémentation interne (privé). Exemples : mécanisme de groupement d'information, visibilité
28
En quoi consiste le polymorphisme en POO ?
Le polymorphisme veut dire que le même service (opération ou méthode) peut avoir un comportement différent selon la situation. Exemples : héritage d'interface, d'implémentation
29
En quoi consiste d'héritage en POO ?
L'héritage définit des relations hiérarchiques entre les classes, de sorte que les attributs et méthodes communs peuvent être réutilisés.
30
Quels sont les mécanismes de groupement d'informations ?
- variables : encapsule le résultat ou valeur en lui donnant un nom - routine : méthode / fonction - objets : class, record, enum, interface - package : espace de nommage qui permet de regrouper des fichiers - module : permet de grouper et déterminer les règles d'accès à des package - jar : bibliothèque pouvant être intégrée dans le programme
31
Qu'elles sont les modificateurs de visibilité ?
- private : accessible que dans l'instance de la classe - protected : accessible dans l'instance de la classe et ses descendants - (par défaut : package private) : accessible aux entités situées dans le même package - public : accessible aux entités qui peuvent accéder à la classe IMPORTANT : les constantes déclarées dans les interfaces sont toujours public, tout comme les méthodes.
32
Quels sont les deux type d'héritage ?
- héritage de type : relation entre un type et un ensemble de sous-type public interface Pokemon {} public class PsyPokemon implements Pokemon {} IMPORTANT : On peut instancier PsyPokemon avec le type PsyPokemon ou Pokemon. - héritage d'implémentation : définit des relations hiérarchiques entre les classes , de sorte que les attributs et méthodes peuvent être réutilisés (super. / super()). class Pokemon {} class PsyPokemon extends Pokemon {} IMPORTANT : une classe ne peut extends qu'une seule autre classe.
33
Qu'est-ce qu'une interface en Java ?
Une interface est un type abstrait. Elle définit un contrat de comportement à implémenter. Les interfaces ne peuvent pas être implémentées ! public interface Phone { final int MODELE = 2; void doSomething (int i); }
34
Quand utiliser le mot clé "implements" ou le mot clé "extends" ?
classe IMPLEMENTS interface interface EXTENDS interface classe IMPLEMENTS classe MOYEN MNEMOTECHNIQUE : même nom = IMPLEMENTS / nom diff = EXTENDS
35
Quels sont les deux types de polymorphisme ?
- polymorphisme ad hoc (surcharge) : cela permet l'implémentation de fonctions avec le même nom pouvant prendre des paramètres de type différents. Le type, nombre ou ordre des paramètres doivent être différents. Les constructeurs peuvent être surchargés. - polymorphisme de sous-typage : permet de transmettre la signature de type à des sous-types. On peut ainsi invoquer une méthode avec des paramètres dont les types sont des sous-types des types attendus.
36
Comment déclare-t-on un paramètre variable dans une méthode ?
public static String greet (String... names); = String[] avec nb de paramètres variables
37
Qu'est-ce qu'une classe abstraite ?
Une classe abstraite est partiellement implémentée et ne peut être instanciée. Mais son type peut être utilisé pour une variable. Les méthodes abstraites doivent être concrétisées par le mécanisme de redéfinition (override). public abstract class Form {}
38
Quels sont les gestionnaires de dépendances de Java ?
- Maven - Graven Les gestionnaires de dépendances permettent de récupérer et assembler des dépendances tout en compilant facilement les projets d'importance. Le dépôt de dépendances le plus utilisé est Maven Central.
39
Quel est le descripteur de projet de maven ?
pom.xml (projet object model), c'est le fichier qui décrit les dépendances d'un projet maven.
40
Qu'elles sont les commandes usuelles de maven ?
- mvn compile : compile le code, transforme les fichiers .java en fichiers .class (bytecode) - mvn test : execute tous les tests unitaires du projet - mvn install : compile, teste, crée un fichier .jar (l'executable) et le place dans le dépot local pour petre utilisé par d'autres projets - mvn clean : supprime le dossier /target (où se trouvent les fichiers .class compilés).
41
Qu'elles sont les 3 familles d'exceptions ?
- errors : erreurs externes à l'application qu'on ne peut pas anticiper. - exceptions (checked exceptions) : cas exceptionnels qui sont documentés et doivent être anticipés et gérés. - runtime exception (unchecked exception) : peuvent arriver à l'intérieur de l'application, indiquent généralement une erreur de programmation ou une mauvaise utilisation d'une API.
42
Quelle est la syntaxe pour déléguer une exception ?
On utilise le mot-clé throws. Cela remonte la gestion de l'exception à la méthode appelante. void deleguerALappelant() throws FileNotFoundException {}
43
Quel bloc utilise-t-on pour attraper une exception ?
On utilise un bloc try/catch. try { // code risqué } catch (Exception e) { // traiter le problème } finally { // sera exécuté quoi qu'il arrive, optionnel } si plusieurs exceptions : catch (IOException | URIException e) {}
44
Qu'est-ce qu'un bloc try-with-resources ?
C'est une syntaxe qui garantit que les ressources ouvertes (fichiers, connexions) qui implémentent AutoCloseable seront automatiquement fermées, même si une exception survient. (try (Ressource r = new Ressource()) { ... }) IMPORTANT : On ne peut y déclarer que des ressources autocloseable.
45
Quel mot-clé utiliser pour lever une exception ?
throw new IllegalArgumentException("Arg no ok");
46
Que signifie JDBC ?
Java Database Connectivity
47
Qu'est ce que la JDBC ?
Il s'agit d'une bibliothèque du JDK pour interagir avec une base de données relationnelle. Elle permet de faire des requêtes SQL quel que soit la DB utilisée.
48
A quoi ressemble la chaine de connexion JDBC ?
jdbc:mysql://mysql.db.server:3306/my-database mysql : sdbc mysql.db.server : url du serveur 3306 : port my-database : base de données
49
Comment se connecter à la base de données ?
String databaseURL = "url"; try (Connection connection = DriverManager.getConnection(databaseURL)) {}
50
Quand utiliser statement.executeQuery() / statement.execute() / statement.executeUpdate() ?
On utilise : - statement.executeQuery() : lorsque la requête permet de récupérer des données (SELECT) - statement.execute() : lorsque l'on créer une table (CREATE) - statement.executeUpdate() : lorsque l'on modifie la db (INSERT / UPDATE / DELETE)
51
Comment se protéger des injections SQL ?
On utilise des requêtes préparées. String query = " DELETE " + " FROM rpg_character " + " WHERE id = ? " try (PreparedStatement statement = connexion.prepareStatement(query)) { statement.setInt(1, 25); ResultSet rs = statement.executeQuery(); }