Le test se décompose en trois parties:
- Questions Théoriques (30 minutes)
- Exercices de Codage Pratiques (1 heure)
- Problèmes de Conception d'API et de Base de Données (30 minutes)
-
Symfony:
- Décrivez le processus de requête/réponse dans Symfony.
- Expliquez ce qu'est un service dans Symfony et comment un service est-il enregistré et utilisé?
- Quelle est la différence entre une Entity et un Model dans Symfony?
-
API Platform:
- Quels sont les avantages d'utiliser API Platform avec Symfony?
- Comment sécurisez-vous une API dans API Platform?
- Expliquez ce que sont les (DataPersister et DataProvider) ou (StateProcessor et StateProvider) et leur utilité.
-
PostgreSQL:
- Quelles sont les différences entre les types de données TEXT et VARCHAR en PostgreSQL?
- Comment implémenteriez-vous des index full-text dans PostgreSQL?
- Quelles sont les propriétés ACID en relation avec PostgreSQL?
-
Création d'une API avec Symfony et API Platform:
- Développez une petite API avec Symfony et API Platform qui permet de gérer des
Utilisateurs
et desArticles
. Les utilisateurs peuvent avoir plusieurs articles et chaque article appartient à un seul utilisateur. - Implémentez une fonctionnalité de création, lecture, et suppression d'articles.
- Assurez-vous que seuls les propriétaires des articles ou un admin peuvent modifier ou supprimer un article.
- Développez une petite API avec Symfony et API Platform qui permet de gérer des
-
Manipulation de données avec PostgreSQL:
-
Écrivez une requête SQL pour trouver tous les articles dont le titre contient un mot spécifique.
-
Transaction SQL pour la gestion de l'inventaire d'articles:
-
En supposant que la table des articles est nommée
articles
et qu'elle contient une colonnequantite
, écrivez une transaction SQL qui accomplit les tâches suivantes :- Met à jour la
quantite
d'un article spécifié par son ID. - Enregistre cette modification dans une table d'audit nommée
audit_articles
qui contient les colonnesarticle_id
,quantite_avant
,quantite_apres
,timestamp
etmodifie_par
.
- Met à jour la
-
Assurez-vous que l'opération est effectuée de manière atomique et que les changements ne seront appliqués que si les deux opérations réussissent.
-
Utilisez des instructions SQL pour démontrer comment vous gérez les erreurs et les transactions.
Consigne pour l'exercice:
-
BEGIN; -- Supposons que l'ID de l'article à mettre à jour est 1 et la nouvelle quantité est 20. -- L'utilisateur effectuant la mise à jour a l'ID 42. -- Trouver la quantité actuelle avant la mise à jour pour l'enregistrer dans l'audit. SELECT quantite INTO current_quantity FROM articles WHERE id = 1; -- Mettre à jour la quantité de l'article. UPDATE articles SET quantite = 20 WHERE id = 1; -- Insérer la modification dans la table d'audit. INSERT INTO audit_articles(article_id, quantite_avant, quantite_apres, timestamp, modifie_par) VALUES (1, current_quantity, 20, NOW(), 42); -- Vérifier que les deux opérations ont réussi avant de valider la transaction. IF FOUND THEN COMMIT; ELSE ROLLBACK; END IF;
Note pour le candidat:
- Remplacez les valeurs de l'ID de l'article, la nouvelle quantité, et l'ID de l'utilisateur par des variables si nécessaire.
- Assurez-vous que vos transactions SQL gèrent correctement les cas d'erreurs pour préserver l'intégrité des données.
- Expliquez vos choix et vos hypothèses dans les commentaires du code.
-
-
Conception d'une API RESTful:
- Concevez des endpoints pour une API qui permet de gérer un magasin en ligne. Vous devez inclure des endpoints pour les produits, les catégories de produits, et les commandes.
- Discutez des méthodes HTTP que vous utiliseriez pour chaque endpoint et pourquoi.
- Expliquez comment vous géreriez l'authentification et l'autorisation dans cette API.
-
Modélisation de Base de Données:
- Fournissez un schéma de base de données pour la gestion d'une bibliothèque qui inclut des tables pour les livres, auteurs, et prêts. (diagramme falcultatif)
- Quelles seraient les clés primaires et les clés étrangères?
- Comment modéliseriez-vous une relation many-to-many entre les livres et les auteurs?
Consignes Supplémentaires pour le Candidat:
- Pour la partie codage, vous pouvez utiliser des outils comme Symfony CLI, PHPStorm, ou d'autres IDEs de votre choix pour écrire et tester votre code.
- Assurez-vous de commenter votre code pour expliquer votre logique.
- Vous pouvez utiliser la documentation officielle de Symfony, API Platform, et PostgreSQL si nécessaire.
Critères d'Évaluation:
- Compréhension des principes de base et avancés de Symfony, API Platform et PostgreSQL.
- Qualité et propreté du code.
- Bonnes pratiques de développement et de sécurité.
- Capacité à suivre les instructions et à répondre aux exigences du problème.
- Justification des choix de conception et d'implémentation.