Architecture / Design Patterns / Clean Code Flashcards

(100 cards)

1
Q

Qu’est-ce que l’architecture logicielle ?

A

Ensemble de structures et décisions qui définissent l’organisation d’un logiciel et ses interactions.

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

Différence entre architecture monolithique et microservices

A

Monolithe : une seule application;
Microservices : application découpée en services indépendants.

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

Qu’est-ce qu’une architecture en couches (Layered Architecture) ?

A

Séparation du code en couches : présentation - service - domaine - persistance.

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

Qu’est-ce que l’architecture hexagonale ?

A

Découpage en ports et adapters pour isoler domaine et interfaces externes.

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

Qu’est-ce que l’architecture orientée services (SOA) ?

A

Organisation autour de services réutilisables exposés via API.

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

Différence entre SOA et microservices

A

Dans le modèle SOA, les services ou modules sont partagés et réutilisés à l’échelle de l’entreprise, tandis que l’architecture en microservices est conçue sur la base de services individuels fonctionnant de manière indépendante.

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

Qu’est-ce que l’architecture événementielle ?

A

Communication basée sur événements asynchrones entre composants.

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

Qu’est-ce qu’un Event Bus ?

A

Canal central pour diffuser et recevoir des événements dans une architecture événementielle.

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

Qu’est-ce que CQRS ?

A

Command Query Responsibility Segregation : séparation lecture/écriture pour optimiser performance.

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

Qu’est-ce que le Domain-Driven Design (DDD) ?

A

Méthodologie pour modéliser un logiciel autour du domaine métier.

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

Différence entre Layered Architecture et Hexagonal Architecture

A

Layered : dépendances linéaires;
Hexagonal : indépendance du domaine vis-à-vis des infrastructures.

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

Qu’est-ce qu’un Microkernel Architecture ?

A

Noyau minimal extensible via plugins pour ajouter fonctionnalités.

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

Qu’est-ce qu’une architecture serverless ?

A

Déploiement de fonctions sans gérer serveur

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

Qu’est-ce que le CAP theorem ?

A

Un système distribué ne peut garantir simultanément Consistency, Availability et Partition tolerance.

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

Différence entre scaling horizontal et vertical

A

Horizontal : ajouter des instances;
Vertical : augmenter ressources d’une instance.

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

Qu’est-ce que le load balancing ?

A

Répartition du trafic entre plusieurs serveurs ou instances.

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

Qu’est-ce qu’un monolithe modulaire ?

A

Monolithe organisé en modules internes, facilite transition vers microservices.

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

Qu’est-ce que le service discovery ?

A

Mécanisme permettant aux services de se localiser dynamiquement dans un cluster.

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

Différence entre synchronous et asynchronous communication

A

Synchronous : attente de réponse immédiate;
Asynchronous : pas d’attente, message queue.

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

Qu’est-ce que le pattern API Gateway ?

A

Point d’entrée unique pour exposer plusieurs microservices aux clients.

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

Qu’est-ce qu’un circuit breaker ?

A

Pattern pour isoler un service défaillant et éviter propagation des erreurs.

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

Qu’est-ce que le pattern Saga ?

A

Gestion de transactions distribuées via orchestration ou choreography.

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

Qu’est-ce que le pattern Strangler Fig

A

Migration progressive d’un monolithe vers microservices en remplaçant modules progressivement.

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

Différence entre REST et GraphQL

A

REST : endpoints fixes;
GraphQL : query flexible et unifiée.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Qu’est-ce qu’une architecture event sourcing ?
Stocke chaque changement d’état comme événement pour reconstruire l’état actuel.
26
Qu’est-ce que le pattern Observer dans architecture événementielle ?
Permet à des objets de s’abonner à des événements et d’être notifiés des changements.
27
Qu’est-ce qu’une API contract-first ?
Définition de l’API avant le développement des services.
28
Qu’est-ce que l’immutabilité en architecture ?
État des objets qui ne change jamais après création, facilite scaling et tests.
29
Différence entre Stateful et Stateless service
Stateful : conserve état; Stateless : aucune dépendance à l’état, scalable.
30
Qu’est-ce que le pattern Adapter ?
Permet d’adapter une interface existante à une autre attendue.
31
Qu’est-ce que le pattern Façade ?
Fournit interface simplifiée pour un sous-système complexe.
32
Différence entre layered monolith et microservices
Layered monolith : déploiement unique; microservices : déploiement multiple services.
33
Qu’est-ce que le pattern Broker ?
Utilisé dans architectures distribuées pour gérer communication entre clients et serveurs via messages.
34
Qu’est-ce que le Domain Event ?
Événement représentant un changement important dans le domaine métier.
35
Qu’est-ce que le pattern Dependency Injection ?
Permet d’injecter des dépendances plutôt que de les instancier directement pour découplage.
36
Qu’est-ce qu’un Design Pattern ?
Solution réutilisable à un problème récurrent dans le développement logiciel.
37
Différence entre Creational | Structural et Behavioral patterns
Creational : création d’objets; Structural : organisation des classes/objets; Behavioral : communication et algorithmes.
38
Exemple de pattern Creational
Singleton - Factory - Builder - Prototype.
39
Exemple de pattern Structural
Adapter - Decorator - Facade - Proxy.
40
Exemple de pattern Behavioral
Observer - Strategy - Command - Chain of Responsibility.
41
Qu’est-ce que le pattern Singleton ?
Garantit une seule instance d’une classe avec point d’accès global.
42
Différence entre Factory Method et Abstract Factory
Factory Method : fabrique un type concret; Abstract Factory : fabrique familles de produits.
43
Qu’est-ce que le pattern Builder ?
Crée des objets complexes étape par étape avec chainage de méthodes.
44
Qu’est-ce que le pattern Prototype ?
Crée un nouvel objet en copiant un objet existant.
45
Qu’est-ce que le pattern Adapter ?
Convertit interface d’une classe en interface attendue par le client.
46
Qu’est-ce que le pattern Decorator ?
Ajoute dynamiquement des responsabilités à un objet sans modifier sa classe.
47
Qu’est-ce que le pattern Facade ?
Fournit une interface simplifiée pour un ensemble complexe de classes.
48
Qu’est-ce que le pattern Proxy ?
Intercepte appels à un objet pour ajouter comportement (lazy loading, sécurité…).
49
Qu’est-ce que le pattern Observer ?
Permet à un objet de notifier automatiquement des changements aux abonnés.
50
Qu’est-ce que le pattern Strategy ?
Permet de définir une famille d’algorithmes interchangeables.
51
Qu’est-ce que le pattern Command ?
Encapsule une requête ou action sous forme d’objet pour exécution ultérieure.
52
Qu’est-ce que le pattern Chain of Responsibility ?
Permet de passer une requête le long d’une chaîne d’objets jusqu’à traitement.
53
Qu’est-ce que le pattern State ?
Permet de changer le comportement d’un objet lorsque son état change.
54
Qu’est-ce que le pattern Template Method ?
Définit squelette d’algorithme avec certaines étapes laissées aux sous-classes.
55
Qu’est-ce que le pattern Mediator ?
Centralise communication entre objets pour réduire couplage.
56
Qu’est-ce que le pattern Visitor ?
Permet d’ajouter des opérations sur objets d’une structure sans modifier leurs classes.
57
Différence entre Adapter et Facade
Adapter : interface incompatible devient compatible; Facade : simplifie interface complexe.
58
Différence entre Decorator et Proxy
Decorator : ajoute comportement; Proxy : contrôle accès ou retard exécution.
59
Différence entre Observer et Mediator
Observer : notification d’événements; Mediator : centralisation de communication.
60
Qu’est-ce qu’un pattern Composite ?
Traite objets simples et composites de la même manière pour structures arborescentes.
61
Qu’est-ce que le pattern Flyweight ?
Réduit consommation mémoire en partageant objets immuables.
62
Qu’est-ce que le pattern Bridge ?
Sépare abstraction et implémentation pour indépendance et extensibilité.
63
Qu’est-ce que le pattern Builder vs Factory
Builder : construit objets complexes étape par étape; Factory : instancie objet directement.
64
Quand utiliser Singleton ?
Pour ressources partagées uniques (config, log, cache).
65
Quand utiliser Observer ?
Pour déconnexion entre producteurs et consommateurs d’événements.
66
Quand utiliser Strategy ?
Lorsque plusieurs algorithmes interchangeables existent pour un même problème.
67
Quand utiliser Template Method ?
Pour définir algorithme invariant et déléguer étapes variables aux sous-classes.
68
Quand utiliser Decorator ?
Pour ajouter dynamiquement fonctionnalité à un objet sans toucher sa classe.
69
Quand utiliser Facade ?
Pour simplifier interface d’un sous-système complexe.
70
Quand utiliser Command ?
Pour encapsuler actions, permettre undo, queue ou logging des commandes.
71
Qu’est-ce que Clean Code ?
Code lisible, maintenable, compréhensible et facile à modifier.
72
Différence entre code propre et code fonctionnel
Code propre : lisible et structuré; Code fonctionnel : correct mais pas forcément lisible.
73
Principes SOLID
S – Single Responsibility : une classe, une seule raison de changer ; O – Open/Closed : ouvert à l’extension, fermé à la modification ; L – Liskov Substitution : les sous-classes remplacent les super-classes sans casser le code ; I – Interface Segregation : préférer plusieurs interfaces spécifiques à une générale ; D – Dependency Inversion : dépendre d’abstractions, pas de classes concrètes.
74
Single Responsibility Principle
Une classe doit avoir une seule raison de changer.
75
Open/Closed Principle
Logiciel ouvert à extension, fermé à modification.
76
Liskov Substitution Principle
Objets dérivés doivent pouvoir remplacer objets parent sans briser comportement.
77
Interface Segregation Principle
Préférer plusieurs interfaces spécifiques à une interface générale.
78
Dependency Inversion Principle
Dépendre d’abstractions plutôt que d’implémentations concrètes.
79
Nomenclature en Clean Code
Nom clair, descriptif, sans abréviation ambigüe.
80
Méthode courte vs longue
Méthodes courtes, font une seule chose, faciles à tester.
81
Eviter les effets de bord
Les méthodes ne doivent pas modifier état global ou non attendu.
82
Eviter code dupliqué (DRY)
Ne pas répéter le code, factoriser et réutiliser.
83
Qu’est-ce que KISS
Keep It Simple Stupid : code simple et direct.
84
Qu’est-ce que YAGNI
You Ain’t Gonna Need It : ne pas implémenter ce qui n’est pas nécessaire.
85
Comment commenter le code
Commentez pourquoi, pas quoi, code doit être explicite.
86
Pourquoi écrire des tests unitaires
Vérifie comportement du code, facilite refactoring, documentation vivante.
87
Différence entre test unitaire et test d’intégration
Unitaire : teste une unité isolée; Intégration : teste interaction entre composants.
88
Pourquoi éviter code spaghetti
Difficile à maintenir, comprendre et tester.
89
Principes pour refactoring
Garder code fonctionnel, renommer, extraire méthode, réduire duplication.
90
Importance des conventions de codage
Facilite lecture, uniformité
91
Eviter les variables globales
Pour réduire couplage et effets de bord.
92
Encapsulation en Clean Code
Cacher données internes et exposer interface publique contrôlée.
93
Cohésion vs Couplage
Cohésion : composant concentré sur une responsabilité; Couplage : interdépendance faible.
94
Comment gérer exceptions
Ne pas ignorer, fournir messages clairs, ne pas utiliser exceptions pour contrôle normal.
95
Eviter magie dans le code
Pas de nombres magiques, pas de chaînes codées en dur.
96
Principe de responsabilité unique appliqué aux packages
Un package doit regrouper classes liées à une responsabilité.
97
Importance de la lisibilité du code
Code est lu plus souvent qu’écrit, doit être compréhensible rapidement.
98
Eviter code mort
Supprimer méthodes, classes, variables inutilisées.
99
Importance des tests automatisés
Garantit stabilité, facilite changement et intégration continue.
100
Bonnes pratiques Clean Code
Noms clairs, méthodes courtes, tests, DRY, KISS, SOLID, cohésion élevée, couplage faible.