Skip to Content

Quiz 5 — Expert & carrière

1. De quelle classe héritent les tests unitaires, et pourquoi rapides ?

Réponse

TestCase (sans kernel Symfony) → pas de bootstrap, on isole avec des doubles.

2. Comment authentifier un utilisateur dans un test fonctionnel ?

Réponse

$client->loginUser($user).

3. Cause des tests « qui passent seuls mais échouent ensemble » ?

Réponse

Défaut d’isolation ; solution : DAMADoctrineTestBundle (rollback par test) + fixtures.

4. Qu’est PHPStan pour un dev TypeScript ?

Réponse

L’équivalent de tsc --strict : analyse statique de types, avant le runtime.

5. Différence CS Fixer / Rector ?

Réponse

CS Fixer = style (mise en forme) ; Rector = sémantique (transformations, migrations).

6. Que faut-il pour qu’une CI soit vraiment bloquante ?

Réponse

La protection de branche GitHub (exiger que les checks passent avant merge).

7. Quel niveau de cache est le plus rentable ?

Réponse

Le cache HTTP (proxy/CDN) : réponse servie sans exécuter PHP.

8. Comment invalide-t-on précisément un cache applicatif ?

Réponse

Par tags (tag() + invalidateTags()), avec un TTL en filet.

9. Règle d’or de la performance ?

Réponse

Mesurer avant d’optimiser (profiler/Blackfire), corriger, re-mesurer.

10. Différence FPM vs FrankenPHP worker mode ?

Réponse

FPM bootstrappe à chaque requête ; worker bootstrappe une fois et réutilise l’app.

11. Piège principal du worker mode ?

Réponse

Les fuites d’état entre requêtes → services sans état / ResetInterface.

12. Pourquoi une migration doit-elle être rétrocompatible en déploiement rolling ?

Réponse

Ancien et nouveau code coexistent un instant ; pattern expand/contract (ajouter puis retirer).

13. Les trois piliers de l’observabilité ?

Réponse

Logs, métriques, traces.

14. Que fait Sentry de plus qu’un log d’erreur ?

Réponse

Capture, regroupe, enrichit (contexte, release) et alerte — avant les utilisateurs.

15. Principe de l’architecture hexagonale ?

Réponse

Domaine au centre (pur), infra aux bords, reliés par des ports (interfaces).

16. Quand NE PAS appliquer DDD/CQRS/hexagonal ?

Réponse

Sur un CRUD simple (sur-ingénierie) ; l’architecture doit correspondre à la complexité du domaine.

17. Comment publie-t-on un bundle ?

Réponse

Tag SemVer + soumission sur Packagist (type: symfony-bundle).

18. Comment garantir l’isolation en multi-tenant (base partagée) ?

Réponse

Un SQLFilter Doctrine automatique (tenant_id = X sur toutes les requêtes) + tests d’isolation.

19. Pourquoi le combo Symfony+Next.js est-il un positionnement premium ?

Réponse

Peu de devs maîtrisent les deux et le pont headless (× Moodle/WordPress/LTI) — rare et bien payé.

20. Statut le plus simple pour démarrer en freelance (France), et une précaution en cumul emploi ?

Réponse

La micro-entreprise ; précaution : vérifier la clause d’exclusivité et l’obligation de loyauté (ce sont des repères, pas un conseil juridique).


Fin des quiz — et fin du cours. Si vous répondez juste à ~80 %, vous êtes prêt à construire (et vendre) des applications Symfony × Next.js professionnelles.

🎉 Félicitations : vous avez parcouru l’intégralité du cours, de la découverte de Symfony au capstone BookLab. À vous de jouer — construisez BookLab, et monétisez votre double compétence.