1. Compétences Techniques (40 points)
12 pts Frontend - React/Vue.js
❓ Expliquez la différence entre props et state dans React. Quand utiliser l'un ou l'autre ?
✅ Réponse Attendue :
• Props : données passées d'un composant parent → enfant, immutables
• State : données internes au composant, modifiables via setState/useState
• Props pour : configuration, données externes, communication parent-enfant
• State pour : données qui changent (input, toggle, compteur)
• Exemple concret : props pour titre, state pour valeur input
• State : données internes au composant, modifiables via setState/useState
• Props pour : configuration, données externes, communication parent-enfant
• State pour : données qui changent (input, toggle, compteur)
• Exemple concret : props pour titre, state pour valeur input
🚩 Red Flags :
Confond props et state, ne sait pas quand utiliser l'un ou l'autre
❓ Qu'est-ce qu'un hook en React ? Citez 3 hooks et leur usage.
✅ Réponse Attendue :
• Hooks : fonctions permettant d'utiliser state et lifecycle dans functional components
• useState : gérer state local (ex: compteur, toggle)
• useEffect : side effects (API calls, subscriptions, DOM manipulation)
• useContext : accéder au context sans prop drilling
• Règles : appeler au top-level, pas dans conditions/boucles
• useState : gérer state local (ex: compteur, toggle)
• useEffect : side effects (API calls, subscriptions, DOM manipulation)
• useContext : accéder au context sans prop drilling
• Règles : appeler au top-level, pas dans conditions/boucles
🚩 Red Flags :
Ne connaît que useState, ignore useEffect, confond avec class components
10 pts Backend - Node.js/Express
❓ Comment créer une API REST simple avec Express ? Donnez un exemple de route GET.
✅ Réponse Attendue :
• Installation : npm install express
• Setup : const express = require('express'); const app = express();
• Route GET : app.get('/users', (req, res) => { res.json([{id: 1, name: 'Alice'}]); });
• Démarrage : app.listen(3000, () => console.log('Server running'));
• Middleware : app.use(express.json()) pour parser body JSON
• Setup : const express = require('express'); const app = express();
• Route GET : app.get('/users', (req, res) => { res.json([{id: 1, name: 'Alice'}]); });
• Démarrage : app.listen(3000, () => console.log('Server running'));
• Middleware : app.use(express.json()) pour parser body JSON
🚩 Red Flags :
Syntaxe incorrecte, ne sait pas ce qu'est un middleware, confusion req/res
10 pts Database - SQL & NoSQL
❓ Écrivez une requête SQL pour récupérer tous les utilisateurs ayant plus de 18 ans, triés par nom.
✅ Réponse Attendue :
SELECT * FROM users WHERE age > 18 ORDER BY name ASC;
• Explications : WHERE pour filtrer, ORDER BY pour trier
• Variantes : LIMIT 10 pour pagination, COUNT(*) pour total
• Bonus : JOIN si table relations (users + orders)
• Explications : WHERE pour filtrer, ORDER BY pour trier
• Variantes : LIMIT 10 pour pagination, COUNT(*) pour total
• Bonus : JOIN si table relations (users + orders)
🚩 Red Flags :
Syntaxe SQL incorrecte, ne sait pas faire un WHERE ou ORDER BY
❓ Quelle est la différence entre SQL et NoSQL ? Quand utiliser MongoDB vs PostgreSQL ?
✅ Réponse Attendue :
• SQL : relationnel, schéma fixe, ACID, joins (PostgreSQL, MySQL)
• NoSQL : documents/JSON, schéma flexible, scalabilité horizontale (MongoDB)
• Utiliser SQL si : relations complexes, transactions, données structurées
• Utiliser NoSQL si : données non structurées, scalabilité massive, rapidité dev
• Exemple : e-commerce → SQL ; logs/analytics → NoSQL
• NoSQL : documents/JSON, schéma flexible, scalabilité horizontale (MongoDB)
• Utiliser SQL si : relations complexes, transactions, données structurées
• Utiliser NoSQL si : données non structurées, scalabilité massive, rapidité dev
• Exemple : e-commerce → SQL ; logs/analytics → NoSQL
🚩 Red Flags :
Ne comprend pas la différence fondamentale, choix arbitraire sans justification
8 pts Git & Workflow
❓ Expliquez votre workflow Git pour développer une nouvelle feature en équipe.
✅ Réponse Attendue :
1. git checkout main && git pull (sync avec remote)
2. git checkout -b feature/new-feature (créer branche)
3. Développement + commits atomiques (git add, git commit -m "message clair")
4. git push origin feature/new-feature
5. Créer Pull Request (PR) sur GitHub/GitLab
6. Code review par team
7. Merge après validation
• Bonnes pratiques : commits clairs, tests passent, code lisible
2. git checkout -b feature/new-feature (créer branche)
3. Développement + commits atomiques (git add, git commit -m "message clair")
4. git push origin feature/new-feature
5. Créer Pull Request (PR) sur GitHub/GitLab
6. Code review par team
7. Merge après validation
• Bonnes pratiques : commits clairs, tests passent, code lisible
🚩 Red Flags :
Commit directement sur main, messages vagues, ne sait pas créer de branche
2. Soft Skills & Apprentissage (35 points)
12 pts Capacité d'Apprentissage
❓ Racontez une situation où vous avez dû apprendre rapidement une nouvelle technologie. Comment avez-vous procédé ?
✅ Réponse Attendue :
• Contexte clair : projet nécessitant techno X (ex: GraphQL, TypeScript)
• Démarche structurée : documentation officielle, tutoriels, pet project
• Temps d'apprentissage raisonnable : 1-2 semaines
• Application concrète : intégration dans projet réel
• Ressources utilisées : docs, Stack Overflow, YouTube, mentors
• Résultat mesurable : feature livrée, compétence acquise
• Démarche structurée : documentation officielle, tutoriels, pet project
• Temps d'apprentissage raisonnable : 1-2 semaines
• Application concrète : intégration dans projet réel
• Ressources utilisées : docs, Stack Overflow, YouTube, mentors
• Résultat mesurable : feature livrée, compétence acquise
🚩 Red Flags :
Pas d'exemple concret, apprentissage superficiel, résiste au changement
10 pts Debugging & Problem Solving
❓ Comment déboguer une application qui ne fonctionne pas ? Décrivez votre approche méthodique.
✅ Réponse Attendue :
1. Reproduire le bug de manière constante
2. Console logs / DevTools pour identifier l'erreur
3. Lire le message d'erreur attentivement
4. Isoler le problème : quel composant/fonction ?
5. Hypothèses : qu'est-ce qui pourrait causer ça ?
6. Tests : valider/invalider hypothèses
7. Stack Overflow / Google si bloqué
8. Demander aide si >1h bloqué
• Exemple concret : bug résolu récemment
2. Console logs / DevTools pour identifier l'erreur
3. Lire le message d'erreur attentivement
4. Isoler le problème : quel composant/fonction ?
5. Hypothèses : qu'est-ce qui pourrait causer ça ?
6. Tests : valider/invalider hypothèses
7. Stack Overflow / Google si bloqué
8. Demander aide si >1h bloqué
• Exemple concret : bug résolu récemment
🚩 Red Flags :
Trial & error sans méthode, ne lit pas les erreurs, abandonne vite
8 pts Communication & Collaboration
❓ Comment demandez-vous de l'aide quand vous êtes bloqué sur un problème technique ?
✅ Réponse Attendue :
• D'abord : chercher soi-même (docs, Google, Stack Overflow) 30min-1h
• Préparer question : contexte, ce qui a été tenté, erreur précise
• Demander à la bonne personne : senior dev, lead tech
• Communication claire : "J'essaie de faire X, j'ai tenté Y et Z, j'obtiens cette erreur"
• Écoute active : comprendre la réponse, prendre notes
• Remerciement et follow-up : "Ça a fonctionné, merci !"
• Éviter : interrompre sans préparation, questions vagues
• Préparer question : contexte, ce qui a été tenté, erreur précise
• Demander à la bonne personne : senior dev, lead tech
• Communication claire : "J'essaie de faire X, j'ai tenté Y et Z, j'obtiens cette erreur"
• Écoute active : comprendre la réponse, prendre notes
• Remerciement et follow-up : "Ça a fonctionné, merci !"
• Éviter : interrompre sans préparation, questions vagues
🚩 Red Flags :
Demande immédiatement sans chercher, questions vagues, n'écoute pas réponse
5 pts Code Quality & Best Practices
❓ Qu'est-ce qu'un code "propre" (clean code) pour vous ? Donnez 3 principes.
✅ Réponse Attendue :
• Lisible : nommage clair (variables, fonctions), pas de code obscur
• DRY (Don't Repeat Yourself) : éviter duplication, fonctions réutilisables
• Simple : une fonction = une responsabilité, pas de over-engineering
• Commenté intelligemment : expliquer le "pourquoi", pas le "quoi"
• Testé : unit tests pour fonctions critiques
• Formaté : indentation cohérente, Prettier/ESLint
• DRY (Don't Repeat Yourself) : éviter duplication, fonctions réutilisables
• Simple : une fonction = une responsabilité, pas de over-engineering
• Commenté intelligemment : expliquer le "pourquoi", pas le "quoi"
• Testé : unit tests pour fonctions critiques
• Formaté : indentation cohérente, Prettier/ESLint
🚩 Red Flags :
Ne se soucie pas de la qualité du code, "tant que ça marche"
3. Motivation & Fit Culturel (15 points)
8 pts Motivation & Projet de Carrière
❓ Pourquoi voulez-vous rejoindre Pyl.Tech en tant que dev fullstack junior ?
✅ Réponse Attendue :
• Recherche effectuée : connaît nos projets, stack technique, valeurs
• Envie d'apprendre : mentorat senior devs, projets challenges
• Alignement technique : stack moderne (React, Node.js), cloud
• Culture : startup innovante, impact produit, équipe bienveillante
• Objectif 3-5 ans : évoluer vers dev confirmé puis senior
• Motivation intrinsèque : passion pour le code, envie de construire
• Envie d'apprendre : mentorat senior devs, projets challenges
• Alignement technique : stack moderne (React, Node.js), cloud
• Culture : startup innovante, impact produit, équipe bienveillante
• Objectif 3-5 ans : évoluer vers dev confirmé puis senior
• Motivation intrinsèque : passion pour le code, envie de construire
🚩 Red Flags :
Réponse générique, aucune recherche, motivations uniquement financières, pas d'objectif
7 pts Curiosité & Veille Techno
❓ Quelles sont les dernières technos/tendances web qui vous intéressent ? Comment vous tenez-vous à jour ?
✅ Réponse Attendue :
• Tendances : TypeScript, Next.js, serverless, Tailwind CSS, Docker
• Sources : dev.to, Medium, YouTube (Fireship, Web Dev Simplified)
• Communauté : Discord/Slack dev, meetups locaux
• Side projects : teste nouvelles technos sur projets perso
• GitHub : suit repos intéressants, lit release notes
• Exemple concret : dernière techno testée récemment
• Sources : dev.to, Medium, YouTube (Fireship, Web Dev Simplified)
• Communauté : Discord/Slack dev, meetups locaux
• Side projects : teste nouvelles technos sur projets perso
• GitHub : suit repos intéressants, lit release notes
• Exemple concret : dernière techno testée récemment
🚩 Red Flags :
Aucune veille, "j'attends qu'on me dise quoi apprendre", technologies datées
4. Cas Pratiques (10 points)
🧪 Cas 1 : To-Do App Fullstack
Contexte : Créer une application To-Do simple avec React + Node.js + PostgreSQL.
Tâche : Décrire l'architecture et les principales étapes de développement.
Évaluation : Architecture frontend/backend, API REST, database design, déploiement
🧪 Cas 2 : Bug - API ne répond pas
Contexte : Frontend affiche "Error 500" lors d'un appel API GET /users.
Tâche : Comment identifier et résoudre le problème ? Démarche step-by-step.
Évaluation : Méthodologie debugging, outils (DevTools, logs), hypothèses testées
🧪 Cas 3 : Code Review - Pull Request
Contexte : Un collègue a fait une PR avec du code React. Que vérifier avant validation ?
Tâche : Lister 5 points à vérifier lors d'une code review.
Évaluation : Compréhension best practices, qualité code, tests, sécurité
5. Tableau de Scoring
| Catégorie | Critère | Points Max | Score |
|---|---|---|---|
| Compétences Techniques (40) | Frontend React/Vue.js | 12 | |
| Backend Node.js/Express | 10 | ||
| Database SQL/NoSQL | 10 | ||
| Git & Workflow | 8 | ||
| Soft Skills (35) | Capacité d'Apprentissage | 12 | |
| Debugging & Problem Solving | 10 | ||
| Communication & Collaboration | 8 | ||
| Code Quality & Best Practices | 5 | ||
| Motivation & Fit (15) | Motivation & Projet Carrière | 8 | |
| Curiosité & Veille Techno | 7 | ||
| Cas Pratiques | 10 | ||
| SCORE TOTAL | 100 | ||
📊 Interprétation
- 75-100 : ⭐⭐⭐ Excellent junior - Fortement recommandé
- 60-74 : ⭐⭐ Bon junior - À former
- 45-59 : ⭐ Junior avec lacunes - Formation intensive nécessaire
- < 45 : ❌ Insuffisant - Ne pas retenir