QCM : Programmation Java et persistance (10 questions)

Questions et réponses du QCM

1. Concernant la conception de CompteBancaire :

Le polymorphisme impose à CompteCourant et CompteEpargne un retrait identique.
CompteBancaire implémente retirer(double montant) avec un comportement identique pour chaque compte.
CompteBancaire déclare numero comme String et solde comme double.
La méthode deposer(double montant) est abstraite dans CompteBancaire.
La collection bancaire peut référencer ses comptes par leur type commun CompteBancaire.

CompteBancaire déclare numero comme String et solde comme double. · La collection bancaire peut référencer ses comptes par leur type commun CompteBancaire.

Explication

La classe déclare bien numero de type String et solde de type double. Le retrait est abstrait et son comportement varie selon le compte concret; deposer et afficherSolde sont définies dans la classe. Une collection peut manipuler les comptes via des références CompteBancaire.

2. Un compte courant dispose d’un solde de 20 000 FCFA et un compte d’épargne de 40 000 FCFA. Concernant leurs retraits :

Le compte d’épargne autorise un découvert maximal de 50 000 FCFA.
Le compte d’épargne peut accepter un retrait laissant un solde négatif de 5 000 FCFA.
Le compte d’épargne refuse un retrait qui ferait passer son solde sous zéro.
Le compte courant peut autoriser un retrait laissant un découvert de 30 000 FCFA.
Le compte courant dispose d’un découvert maximal de 40 000 FCFA.

Le compte d’épargne refuse un retrait qui ferait passer son solde sous zéro. · Le compte courant peut autoriser un retrait laissant un découvert de 30 000 FCFA.

Explication

Le compte courant peut autoriser un découvert de 30 000 FCFA, car celui-ci reste dans la limite de 50 000 FCFA. Le compte d’épargne refuse un retrait qui ferait passer son solde sous zéro. Le compte courant n’autorise pas un découvert de 60 000 FCFA, le compte d’épargne n’accepte pas un retrait laissant un solde négatif de 5 000 FCFA, et le découvert maximal du compte courant est de 50 000 FCFA, non de 40 000 FCFA.

3. Lors d’un transfert JDBC de 5 000 FCFA, le crédit du compte destinataire échoue après le débit. Quelles propositions décrivent une mise en œuvre atomique ?

Chaque requête est validée séparément avec auto-commit activé.
Le transfert valide le débit avant d’exécuter le crédit.
En cas d’échec du crédit, le débit est conservé sans annulation.
La connexion désactive l’auto-commit avant les deux mises à jour.
Le transfert valide ensemble les deux mises à jour si elles réussissent.

La connexion désactive l’auto-commit avant les deux mises à jour. · Le transfert valide ensemble les deux mises à jour si elles réussissent.

Explication

Il faut désactiver l’auto-commit et valider les deux mises à jour ensemble par commit si tout réussit. Si le crédit échoue, rollback annule l’opération; une validation séparée ou la conservation du débit compromet l’atomicité.

4. À quoi sert le mot-clé `transient` dans une classe Java sérialisable ?

À exclure un champ de la sérialisation de l’objet.
À rendre un champ accessible depuis toutes les classes.
À empêcher la modification d’un champ après sa création.
À inclure un champ uniquement dans les données sérialisées.

À exclure un champ de la sérialisation de l’objet.

Explication

Le mot-clé `transient` indique qu’un champ ne doit pas être pris en compte lors de la sérialisation. À l’inverse, un champ non marqué ainsi peut être sérialisé avec l’objet.

5. Quel niveau d’isolation JDBC empêche normalement une transaction d’obtenir des valeurs différentes lors de lectures répétées ?

TRANSACTION_READ_COMMITTED
TRANSACTION_READ_UNCOMMITTED
TRANSACTION_NONE
TRANSACTION_REPEATABLE_READ

TRANSACTION_REPEATABLE_READ

Explication

TRANSACTION_REPEATABLE_READ stabilise normalement les résultats des lectures répétées au sein d’une transaction. TRANSACTION_READ_COMMITTED permet plutôt de voir les données validées par une autre transaction entre deux lectures.

6. Quel est l’effet possible d’une association JPA configurée avec `@OneToMany(fetch = FetchType.LAZY)` lorsqu’on parcourt les employés de nombreux départements ?

Elle charge tous les employés en une seule requête avant le parcours des départements.
Elle empêche l’accès aux employés tant que l’association n’est pas convertie en relation eager.
Elle peut déclencher des requêtes supplémentaires pour charger les employés de chaque département.
Elle fusionne les employés des départements en une collection partagée en mémoire.

Elle peut déclencher des requêtes supplémentaires pour charger les employés de chaque département.

Explication

Le chargement différé peut entraîner une requête initiale, puis des requêtes additionnelles pour récupérer les associations, ce qui correspond au problème N+1. Le chargement eager n’est pas garanti par cette configuration, car `LAZY` demande précisément un chargement différé.

7. Quelle comparaison distingue correctement `start()` de l’appel direct de `run()` pour un thread Java ?

`start()` exécute la tâche dans le thread courant, tandis qu’un appel direct à `run()` lance un nouveau thread.
`start()` synchronise plusieurs threads, tandis qu’un appel direct à `run()` définit leur tâche commune.
`start()` définit la tâche du thread, tandis qu’un appel direct à `run()` synchronise plusieurs threads.
`start()` lance un nouveau thread, tandis qu’un appel direct à `run()` exécute la tâche dans le thread courant.

`start()` lance un nouveau thread, tandis qu’un appel direct à `run()` exécute la tâche dans le thread courant.

Explication

`start()` démarre un thread et lui permet d’exécuter sa tâche, alors que l’appel direct de `run()` ne démarre pas un nouveau thread. `run()` correspond à la tâche exécutée, mais son appel direct ne crée pas lui-même un thread.

8. Dans une interface JavaFX, quelle conséquence découle du fait qu’un fichier `.fxml` définit généralement l’interface utilisateur ?

Les composants graphiques sont créés uniquement au moment de la compilation.
Les événements de l’interface sont automatiquement traités sans contrôleur.
La structure de l’interface peut être décrite séparément du code Java qui la contrôle.
La scène JavaFX est remplacée par une classe chargée de lire les fichiers XML.

La structure de l’interface peut être décrite séparément du code Java qui la contrôle.

Explication

Le fichier `.fxml` sert généralement à décrire la structure de l’interface, ce qui la sépare du code Java qui gère son comportement. Il ne supprime pas pour autant le besoin de traiter les événements, contrairement à l’idée qu’aucun contrôleur ne serait nécessaire.

9. Vous souhaitez traiter chaque élément d’un flux Java sans produire de valeur de retour. Quelle méthode convient ?

filter(), en fournissant un prédicat qui sélectionne les éléments
map(), en fournissant une fonction qui transforme chaque élément
forEach(), en fournissant une action à appliquer aux éléments
reduce(), en fournissant une opération qui combine les éléments

forEach(), en fournissant une action à appliquer aux éléments

Explication

forEach() applique une action aux éléments d’un Stream sans retourner de résultat. À l’inverse, map() transforme les éléments et produit un flux de résultats.

10. Quelle caractéristique distingue le patron Singleton des autres modes de création d’objets ?

Il déclare les exceptions qu’une méthode peut lancer.
Il permet à une sous-classe de remplacer une méthode héritée.
Il garantit qu’une classe ne possède qu’une seule instance.
Il crée une nouvelle instance à chaque appel de méthode.

Il garantit qu’une classe ne possède qu’une seule instance.

Explication

Le patron Singleton vise à limiter une classe à une seule instance. La redéfinition d’une méthode relève plutôt de l’héritage et n’impose pas de limite au nombre d’objets.

Révisez avec les flashcards

Mémorisez les réponses avec 10 flashcards sur Programmation Java et persistance.

Quelles propriétés définissent la classe CompteBancaire ?

C’est une classe abstraite qui déclare les attributs numero et solde, ainsi que retirer(), deposer() et afficherSolde().

Quel découvert maximal un CompteCourant autorise-t-il ?

50 000 FCFA.

Que doit restaurer un transfert bancaire si le retrait ou le dépôt échoue ?

Les soldes initiaux.

Voir les flashcards →

Approfondir avec la fiche

Consultez la fiche de révision complète sur Programmation Java et persistance.

Voir la fiche →

Cours similaires

Crée tes propres QCM

Importe ton cours et l'IA génère des QCM avec corrections en 30 secondes.

Générateur de QCM