QCM : Questions techniques projet Compawgnon — 30 questions

Questions et réponses du QCM

1. Dans un diagramme de cas d'utilisation UML, que représente un acteur ?

Un rôle externe qui interagit avec l'application
Une contrainte de qualité imposée au code
Une action obligatoire déclenchée par le système
Un ensemble d'états internes d'un composant

Un rôle externe qui interagit avec l'application

Explication

Un acteur représente un rôle externe qui interagit avec l’application. Les autres choix décrivent plutôt des éléments internes, des contraintes ou des actions système, pas un rôle externe.

2. Quelle proposition correspond correctement à la signification d'un comportement `include` dans un cas d'utilisation ?

Une généralisation entre deux acteurs
Action obligatoire incluse dans un cas d'utilisation
Comportement optionnel exécuté seulement si l'utilisateur le souhaite
Un cas d'utilisation alternatif choisi automatiquement

Action obligatoire incluse dans un cas d'utilisation

Explication

`include` correspond à une action obligatoire incluse dans le cas d’utilisation. À l’inverse, `extend` décrit un comportement optionnel, souvent confondu avec `include`.

3. Que signifie un fragment UML `alt` dans un diagramme de séquence ?

Il représente une alternative, par exemple données valides vs données invalides
Il représente une ramification conditionnelle uniquement pour les retours de données
Il montre une séquence parallèle réalisée en même temps
Il indique qu’une opération est toujours répétée jusqu’au succès

Il représente une alternative, par exemple données valides vs données invalides

Explication

Le fragment `alt` sert à exprimer une alternative (par exemple valides/invalides). Les autres options décrivent d’autres notions (boucles, parallélisme ou retours), pas `alt`.

4. Quelle différence correspond le mieux à l’opposition entre diagramme d’activité et diagramme de séquence ?

L’activité montre une structure statique, tandis que la séquence montre une structure statique aussi
L’activité décrit les échanges entre acteurs, tandis que la séquence décrit uniquement les états
L’activité décrit le déroulement logique, tandis que la séquence décrit les échanges dans le temps
L’activité ne représente que des acteurs, tandis que la séquence ne représente que des composants

L’activité décrit le déroulement logique, tandis que la séquence décrit les échanges dans le temps

Explication

Le diagramme d’activité montre le déroulement logique d’un processus, alors que le diagramme de séquence montre les échanges entre acteurs et composants au fil du temps. Les autres choix inversent ou déforment ces rôles.

5. Quelle relation UML correspond à l’agrégation (lien faible) ?

L’objet parent est toujours détruit lorsque l’objet contenu existe
La relation impose une dépendance forte entre les deux objets
L’objet contenu dépend forcément de l’objet parent
Les objets peuvent exister séparément

Les objets peuvent exister séparément

Explication

L’agrégation est un lien faible : les objets peuvent exister séparément. En composition (lien fort), au contraire, l’objet contenu dépend de l’objet parent, ce qui correspond à un autre choix.

6. Que signifie la notation de visibilité `#` pour un attribut ou une opération dans UML ?

Package
Protégé
Privé
Public

Protégé

Explication

En UML, `#` signifie protégé. `+` correspond à public, `-` à privé et `~` à package, donc ils ne conviennent pas à `#`.

7. En Merise, qu’est-ce qu’une entité représente dans le modèle conceptuel ?

Un objet métier important, modélisé par une classe du domaine
Un type SQL utilisé pour définir les colonnes
Une règle de suppression en cascade entre tables
Un ensemble de jointures physiques de base de données

Un objet métier important, modélisé par une classe du domaine

Explication

En Merise, une entité correspond à un objet métier important ; dans Compawgnon, les entités principales incluent notamment Utilisateur, Vendeur, Animal et Reservation.

8. Que signifie, en Merise, la cardinalité 0,N pour une participation dans une association ?

Participation optionnelle et multiple
Participation obligatoire mais sans multiplicité
Participation obligatoire et unique
Au moins une occurrence et potentiellement plusieurs

Participation optionnelle et multiple

Explication

En Merise, 0,N indique une participation optionnelle et pouvant porter plusieurs occurrences. À l’inverse, 1,1 et 1,N imposent respectivement l’obligation et/ou une multiplicité différente.

9. Comment transforme-t-on en MLD une relation N-N entre deux entités ?

En remplaçant la relation par une contrainte de type SET NULL
En créant une table de jonction dédiée
En ajoutant une clé étrangère du côté d’une seule entité
En dupliquant les colonnes des deux entités dans une même table sans table intermédiaire

En créant une table de jonction dédiée

Explication

Pour passer d’une relation N-N à un MLD, on crée une table de jonction ; dans Compawgnon, la table favorites relie users et animals.

10. Pour modéliser une relation 1,N en MLD, où ajoute-t-on la clé étrangère ?

Uniquement dans la table de jonction
Côté entité en position N
Côté entité en position 1
Dans les deux tables simultanément avec une clé étrangère identique

Côté entité en position N

Explication

Pour une relation 1,N vers un MLD, on ajoute la clé étrangère du côté N. Dans Compawgnon, animals contient seller_id car un vendeur peut publier plusieurs animaux.

11. Quelle différence principale fait-on entre le MLD et le MPD en Merise ?

Le MPD supprime les relations pour ne garder que les tables
Le MLD décrit la structure logique, tandis que le MPD ajoute des détails spécifiques au SGBD
Le MPD décrit la structure logique, tandis que le MLD ajoute des types SQL
Le MLD et le MPD sont identiques, seule la notation change

Le MLD décrit la structure logique, tandis que le MPD ajoute des détails spécifiques au SGBD

Explication

Le MLD donne la structure logique des tables et relations, tandis que le MPD précise les types SQL, index, contraintes et éléments propres au SGBD.

12. À quoi sert un index dans une base de données, comme dans le catalogue ou les réservations de Compawgnon ?

Accélérer les recherches grâce à des structures de consultation
Remplacer une clé étrangère par une contrainte unique
Supprimer automatiquement des lignes lors d’un DELETE
Rendre les relations obligatoires entre deux tables

Accélérer les recherches grâce à des structures de consultation

Explication

Un index accélère les recherches ; dans Compawgnon, les index sur status, seller_id, species_id, city ou created_at améliorent les performances dans plusieurs fonctionnalités.

13. Quelle distinction correspond correctement au couple SQL et NoSQL ?

SQL et NoSQL utilisent tous deux le même format de stockage en documents
NoSQL ne gère jamais des collections structurées par schéma
NoSQL est relationnel, tandis que SQL stocke surtout des documents
SQL est relationnel et structuré, tandis que NoSQL est plus flexible

SQL est relationnel et structuré, tandis que NoSQL est plus flexible

Explication

Le matériau précise que SQL est relationnel et structuré (MySQL pour les données métier), alors que NoSQL est plus flexible (MongoDB stocke des documents).

14. Quelle différence décrit correctement l’effet d’un ON DELETE avec DELETE CASCADE et SET NULL ?

Les deux options suppriment la ligne par défaut sans lien logique
DELETE CASCADE supprime les lignes liées, SET NULL conserve la ligne et vide la clé étrangère
DELETE CASCADE conserve la ligne et vide la clé étrangère, SET NULL supprime les lignes liées
Les deux options conservent toujours la ligne et ne modifient aucune clé étrangère

DELETE CASCADE supprime les lignes liées, SET NULL conserve la ligne et vide la clé étrangère

Explication

DELETE CASCADE supprime les lignes liées, tandis que SET NULL conserve la ligne mais vide la clé étrangère. Les autres propositions inversent ou neutralisent ces comportements.

15. Qu’est-ce qu’une entité Doctrine dans une application Symfony ?

Une requête SQL générée automatiquement sans classe
Une classe PHP mappée vers une table SQL
Un conteneur qui stocke les fichiers uploadés
Un mécanisme d’envoi d’emails vers les utilisateurs

Une classe PHP mappée vers une table SQL

Explication

Une entité Doctrine est une classe PHP mappée vers une table SQL ; dans Compawgnon, User, Animal, Seller, Reservation et Review sont des entités Doctrine ORM.

16. Quel est le rôle d’un Repository dans Symfony/Doctrine ?

Envoyer des emails aux utilisateurs
Centraliser les requêtes d’accès aux données
Stocker physiquement les fichiers dans le système de fichiers
Gérer la logique métier réutilisable de l’application

Centraliser les requêtes d’accès aux données

Explication

Le repository centralise les requêtes pour accéder aux données ; par exemple AnimalRepository contient la recherche filtrée du catalogue via Doctrine QueryBuilder.

17. Dans Doctrine, quelle opération exécute réellement les requêtes SQL pour enregistrer en base ?

persist(), car elle enregistre directement les données dans la base
Une jointure leftJoin, car elle déclenche l’écriture
remove(), car elle synchronise automatiquement la base
flush(), car elle exécute réellement les requêtes SQL

flush(), car elle exécute réellement les requêtes SQL

Explication

persist() prépare l’entité à être enregistrée, tandis que flush() exécute les requêtes SQL. L’option persist() correspond à la confusion indiquée.

18. Quelle attribution correspond correctement à la séparation des responsabilités entre repository et service ?

Les deux font uniquement des écritures en base sans lecture
Le repository exécute les règles métier, le service ne fait que des requêtes SQL brutes
Le repository récupère les données, le service applique les règles métier
Le service récupère les données, le repository applique les règles métier

Le repository récupère les données, le service applique les règles métier

Explication

Le repository sert à récupérer les données, alors que le service applique les règles métier. L’exemple donné oppose AnimalRepository (requêtes) et un service métier (vérifications).

19. Dans Compawgnon, quel choix est utilisé pour gérer l'état d'authentification côté client ?

Zustand
MobX
Apollo Client
Redux

Zustand

Explication

Compawgnon utilise Zustand pour l'état d'authentification. Redux/MobX/Apollo Client sont d'autres solutions possibles mais ne correspondent pas à ce qui est indiqué ici.

20. Quel énoncé décrit le mieux le rôle du Virtual DOM dans React ?

C'est une base de données qui stocke les composants React
C'est une représentation en mémoire de l'interface, puis React met à jour le DOM réel
C'est un navigateur sans interface qui exécute le rendu du DOM
C'est un serveur qui calcule les différences et renvoie du HTML

C'est une représentation en mémoire de l'interface, puis React met à jour le DOM réel

Explication

Le Virtual DOM est une représentation en mémoire de l’interface ; React compare les changements et met à jour efficacement le DOM réel. Les autres propositions confondent Virtual DOM avec un moteur d’affichage externe, un serveur ou un stockage.

21. Quelle différence faut-il faire entre un besoin fonctionnel et un besoin non-fonctionnel ?

Le fonctionnel concerne uniquement l'interface, le non-fonctionnel concerne uniquement l'infrastructure
Le fonctionnel décrit des contraintes techniques, le non-fonctionnel décrit des fonctionnalités
Le fonctionnel décrit ce que l'application fait, le non-fonctionnel décrit la qualité attendue
Le fonctionnel est mesuré par des métriques de performance, le non-fonctionnel par des logs serveur

Le fonctionnel décrit ce que l'application fait, le non-fonctionnel décrit la qualité attendue

Explication

Le besoin fonctionnel décrit l’action attendue (ex. réserver un animal) tandis que le non-fonctionnel décrit une qualité (sécurité, performance, maintenabilité, etc.). Les autres options inversent ou déforment ce découpage.

22. Dans Compawgnon, qu'inclut la version minimale utile appelée MVP ?

Consultation du catalogue, inscription/connexion, réservation, espace vendeur, back-office admin et déploiement
Uniquement l'interface Next.js avec quelques écrans principaux
Le backend complet sans accès vendeur ni back-office
La recherche avancée et des fonctionnalités marketing uniquement

Consultation du catalogue, inscription/connexion, réservation, espace vendeur, back-office admin et déploiement

Explication

Le MVP de Compawgnon inclut ces fonctionnalités clés plus le déploiement. Les distracteurs retirent des éléments explicitement listés ou ajoutent des parties qui ne sont pas mentionnées pour le MVP.

23. Que signifie l'architecture en couches dans le cas de Compawgnon ?

Elle impose que la base de données soit la couche la plus proche du front
Elle regroupe tous les composants dans une seule application sans séparation
Elle sépare présentation, contrôleurs, logique métier et persistance
Elle remplace les contrôleurs par un moteur de rendu unique

Elle sépare présentation, contrôleurs, logique métier et persistance

Explication

L’architecture en couches sépare présentation, contrôleurs, logique métier et persistance, avec des technologies dédiées à chaque partie dans Compawgnon. Les autres choix décrivent une approche monolithique ou une logique de couches incorrecte.

24. Compawgnon expose ses fonctionnalités via une API REST : quel ensemble caractérise une API REST ?

HTTP, URL de ressources, verbes HTTP et échanges en JSON
Fichiers statiques uniquement, sans routes HTTP
WebSocket uniquement, sessions persistantes et formats XML
RPC personnalisé sans notion de ressources ni verbes standard

HTTP, URL de ressources, verbes HTTP et échanges en JSON

Explication

Une API REST s’appuie sur HTTP, des URL de ressources, des verbes HTTP et des réponses/requêtes en JSON. Les autres options ne correspondent pas aux caractéristiques REST décrites.

25. Quelle affirmation correspond à la différence entre test unitaire et test d'intégration ?

Le test unitaire vérifie plusieurs composants ensemble, tandis que le test d'intégration isole une fonction
Le test unitaire remplace les dépendances par des mocks, tandis que le test d'intégration supprime toute base de test
Le test unitaire isole une classe ou fonction, tandis que le test d'intégration vérifie plusieurs composants ensemble
Le test unitaire teste uniquement l’UI, tandis que le test d'intégration teste uniquement le backend SQL

Le test unitaire isole une classe ou fonction, tandis que le test d'intégration vérifie plusieurs composants ensemble

Explication

Le test unitaire isole une classe ou une fonction, alors que le test d'intégration vérifie plusieurs composants ensemble. La seconde option inverse la définition, et les autres confondent le type de test avec des outils ou techniques.

26. Pourquoi utilise-t-on des mocks dans les tests (par exemple dans Compawgnon) ?

Pour compiler le projet TypeScript avant chaque assertion
Pour automatiser le déploiement sur Hetzner pendant l’exécution du test
Pour remplacer une dépendance réelle par une fausse dépendance afin de tester la logique sans effet réel
Pour rendre le test plus long en collectant des logs système

Pour remplacer une dépendance réelle par une fausse dépendance afin de tester la logique sans effet réel

Explication

Un mock est une fausse dépendance utilisée pour tester une logique sans utiliser une dépendance réelle ; dans Compawgnon, un service d’email peut être mocké. Les autres propositions mélangent les mocks avec le déploiement, la compilation ou l’observabilité.

27. Une injection SQL consiste à quoi, et comment peut-elle être prévenue dans une application utilisant Doctrine ORM et QueryBuilder ?

Changer le type HTTP d’une requête, prévenu par le choix correct entre 401 et 403
Remplacer une ressource serveur complète par une nouvelle valeur, prévenu par l’usage de PUT
Injecter du JavaScript dans une page, prévenu par l’échappement des templates et des tests sur les formulaires
Injecter du SQL malveillant dans une entrée utilisateur, prévenu par des requêtes paramétrées (setParameter), des validations DTO et des tests dédiés

Injecter du SQL malveillant dans une entrée utilisateur, prévenu par des requêtes paramétrées (setParameter), des validations DTO et des tests dédiés

Explication

Une injection SQL injecte du SQL malveillant via une entrée utilisateur. Doctrine ORM/QueryBuilder avec setParameter, des validations DTO et des tests ciblés servent à la prévenir.

28. Dans l’authentification par JWT d’une application, quel élément le token contient-il typiquement ?

Un token signé contenant des informations d’authentification, comme l’identité, les rôles, le statut utilisateur et éventuellement le statut vendeur
Une liste de cookies de session stockés côté navigateur pour maintenir l’état
Un mot de passe chiffré permettant l’accès direct aux ressources sans contrôle de rôles
Un identifiant utilisateur non signé permettant de vérifier l’authentification sans rôle

Un token signé contenant des informations d’authentification, comme l’identité, les rôles, le statut utilisateur et éventuellement le statut vendeur

Explication

Le JWT est un token signé qui porte des informations d’authentification telles que l’identité, les rôles et les statuts (utilisateur/vendeur). Les autres propositions décrivent plutôt des mécanismes de session ou des données non conformes au rôle du JWT.

29. Quelle phrase distingue correctement l’authentification de l’autorisation ?

L’authentification vérifie qui est l’utilisateur, tandis que l’autorisation vérifie ce qu’il a le droit de faire
L’authentification gère les codes HTTP, tandis que l’autorisation gère les requêtes SQL
L’authentification vérifie ce qu’il a le droit de faire, tandis que l’autorisation vérifie qui est l’utilisateur
L’authentification modifie les ressources, tandis que l’autorisation valide les formulaires

L’authentification vérifie qui est l’utilisateur, tandis que l’autorisation vérifie ce qu’il a le droit de faire

Explication

Le cours précise que l’authentification consiste à vérifier l’identité, et l’autorisation à déterminer les actions permises via les rôles. La confusion entre rôles et identité correspond à un piège classique.

30. Dans une API, quelle différence entre PUT et PATCH correspond à l’usage attendu dans l’application ?

PUT remplace une ressource complète, alors que PATCH modifie partiellement ; les actions comme accepter une réservation ou modifier un profil utilisent plutôt PATCH
PUT et PATCH ont le même comportement dans l’API, seule la route change
PUT modifie partiellement, alors que PATCH remplace une ressource complète ; les actions comme accepter une réservation utilisent plutôt PUT
PUT sert uniquement à créer une ressource, alors que PATCH sert uniquement à supprimer une ressource

PUT remplace une ressource complète, alors que PATCH modifie partiellement ; les actions comme accepter une réservation ou modifier un profil utilisent plutôt PATCH

Explication

PUT correspond au remplacement complet, tandis que PATCH modifie seulement une partie. Dans Compawgnon, des actions comme accepter une réservation ou modifier un profil utilisent plutôt PATCH.

Révisez avec les flashcards

Mémorisez les réponses avec 78 flashcards sur Questions techniques projet Compawgnon.

Qu'est-ce qu'un acteur en diagramme de cas d'utilisation ?

Un rôle externe qui interagit avec l'application.

Quels sont les acteurs principaux de Compawgnon ?

Le visiteur, l'utilisateur connecté, le vendeur et l'administrateur.

Que signifie « include » dans un cas d'utilisation ?

Une action obligatoire intégrée au cas d'utilisation.

Voir les flashcards →

Approfondir avec la fiche

Consultez la fiche de révision complète sur Questions techniques projet Compawgnon.

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