Chapitre 22
22 — Interviews
> **Objectif** : Se préparer aux entretiens techniques de type FAANG — 30 questions comportementales (méthode STAR), 30 questions techniques (algorithmes, structures de données, system design) et des coding challenges guidés. ---
22 — Interviews : guide complet d'entretien technique
Ce chapitre prépare aux entretiens techniques style FAANG : comprendre le processus, maîtriser les questions comportementales (STAR), répondre aux questions techniques, et s'exercer sur des coding challenges chronométrés.
Sommaire
- Le processus d'entretien FAANG
- Ce que les recruteurs évaluent
- 30 questions comportementales
- 30 questions techniques
- Coding challenges type FAANG
- Méthode de réponse en entretien
- Simulation complète d'entretien
- Préparation par entreprise
- Erreurs fréquentes et correctifs
- Le jour J : logistique
1. Le processus d'entretien FAANG
Les étapes types
| Étape | Durée | Contenu |
|---|---|---|
| Phone screen (recruteur) | 30 min | Parcours, motivation, questions comportementales |
| Phone screen technique | 45–60 min | 1-2 problèmes d'algo faciles/moyens |
| Onsite / Zoom (4-5 rounds) | 4-6 h | 2-3 rounds coding, 1 round system design, 1 round comportemental |
| Bar raiser / Cross-functional | 45 min | Évaluation globale, questions comportementales |
| Offer / Reject | — | Retour sous 1 à 2 semaines |
Particularités par entreprise (tendances)
- Google : fort accent sur les algorithmes et les questions pièges de communication.
- Amazon : questions comportementales très présentes (Leadership Principles), orientation système.
- Meta : coding pur, 2 problèmes par round, questions sur vos projets.
- Microsoft : équilibre comportemental + système + algo.
- Apple : questions sur les détails d'implémentation et le hardware.
Ces tendances évoluent ; vérifier les témoignages récents avant l'entretien.
2. Ce que les recruteurs évaluent
Une grille d'évaluation typique (sur 4 points chacun) :
- Compétence algorithmique : complexité, optimalité, cas limites.
- Qualité du code : clarté, nommage, absence de bugs, testabilité.
- Communication : explication à voix haute, questionnement des ambiguïtés.
- Collaboration : réception des indices, remise en question constructive.
- Pensée système (rounds dédiés) : scalabilité, compromis, monitoring.
Réalité : la communication pèse autant que le code. Un problème parfait mais sans explication est souvent refusé ; un problème moyen mais bien expliqué passe.
3. 30 questions comportementales
Méthode : pour chaque question, préparez une histoire réelle structurée en STAR — Situation (contexte), Task (votre mission), Action (vos décisions concrètes), Result (mesures chiffrées + leçon). Restez factuel : « J'ai réduit la latence de 40 % » vaut mieux que « J'ai travaillé dur ».
Questions sur votre parcours
- « Parlez-moi de vous » — STAR attendu : résumé en 2 min — formation, expériences marquantes, compétences clés, projet actuel.
- « Pourquoi voulez-vous travailler ici ? » — Reliez vos compétences aux besoins de l'entreprise et son secteur.
- « Pourquoi quitter votre poste actuel ? » — Restez positif : « je cherche plus d'impact », jamais « je fuis X ».
- « Qu'est-ce qui vous motive dans l'ingénierie ? » — Exemple concret de curiosité technique.
- « Décrivez votre plus grande réussite professionnelle » — STAR avec chiffres (temps, % gain, utilisateurs impactés).
- « Décrivez votre plus grand échec » — Montrez responsabilité, analyse, et correctif (finir sur une leçon).
- « Quel est votre plus grand défaut ? » — Un vrai défaut + le plan concret pour le compenser.
- « Où vous voyez-vous dans 5 ans ? » — Montrez progression et alignement avec le poste.
- « Pourquoi devrions-nous vous embaucher ? » — 3 arguments différenciants, factuels.
- « Quel est votre niveau de compétence sur [langage/techno] ? » — Honnêteté + preuve (projets, PR, open source).
Questions de travail d'équipe
- « Racontez un conflit avec un collègue » — STAR centré sur l'écoute et le compromis constructif.
- « Comment gérez-vous un désaccord technique ? » — Données > ego : « nous avons benchmarké les deux approches ».
- « Décrivez une fois où vous avez aidé un collègue en difficulté » — Mentorat, revue de code, documentation.
- « Comment avez-vous reçu une critique difficile ? » — Réceptivité, action, résultat.
- « Une fois où vous avez dû dire non » — Priorisation, clarté, alternative proposée.
- « Comment travaillez-vous sous pression ? » — Exemple de deadline serrée, organisation, calme.
- « Une décision où vous avez suivi votre intuition contre l'avis du groupe » — Preuve de jugement + validation.
- « Comment gérez-vous les membres d'équipe sous-performants ? » — Feedback direct et bienveillant, support.
- « Racontez une victoire d'équipe » — Votre rôle spécifique + résultat collectif.
- « Comment intégrez-vous un nouveau membre ? » — Processus d'onboarding, documentation, pairings.
Questions de leadership et d'initiative
- « Une fois où vous avez pris une initiative sans y être invité » — Problème identifié, solution apportée, impact mesuré.
- « Une fois où vous avez dû convaincre des parties prenantes » — Préparation, données, présentation, résultat.
- « Comment priorisez-vous quand tout est urgent ? » — Critères (impact, coût, risque), outil de suivi.
- « Une fois où vous avez fait face à l'ambiguïté » — Reformulation, hypothèses explicites, expérimentation.
- « Comment apprenez-vous de nouvelles technologies ? » — Processus concret (projets, docs, side-projects).
- « Décrivez un projet dont vous êtes fier techniquement » — Architecture, choix de design, difficultés, chiffres.
- « Une fois où vous avez simplifié un système complexe » — Complexité réduite, maintenabilité gagnée.
- « Comment gérez-vous le feedback de votre manager ? » — Écoute active, action, suivi.
- « Une fois où vous avez refusé une solution "quick fix" » — Raisonnement long terme, coût de la dette.
- « Quelles questions avez-vous pour nous ? » — Toujours préparer 3 questions intelligentes (équipe, roadmap, culture).
Grille d'auto-évaluation comportementale
| Critère | Oui | Non |
|---|---|---|
| Histoire réelle (pas un scénario hypothétique) | ||
| Chiffres / mesure d'impact | ||
| Échec assumé + leçon (si pertinent) | ||
| Durée ≤ 2 minutes | ||
| Structure STAR identifiable |
4. 30 questions techniques
Algorithmes et structures de données
- « Expliquez la différence entre stack et queue » — LIFO vs FIFO, avec exemples d'usages.
- « Quand utiliser une hash table plutôt qu'un arbre ? » — O(1) moyen vs ordre maintenu ; cas des requêtes ordonnées.
- « Quel tri choisir et pourquoi ? » — Quicksort (rapide), mergesort (stable, O(n log n) garanti), heapsort (in-place).
- « Quelle est la complexité de la recherche binaire ? Pourquoi ? » — O(log n), diviser par 2 à chaque étape.
- « Expliquez BFS vs DFS, avec des cas d'usage » — Plus court chemin (poids 1) vs exploration/profondeur.
- « Qu'est-ce que la programmation dynamique ? Donnez un exemple » — Sous-structure optimale + recouvrement (Fibonacci, knapsack).
- « Qu'est-ce que la mémorisation ? » — Cache des résultats de sous-problèmes, top-down.
- « Expliquez le greedy et donnez un exemple où il échoue » — Coin change non canonique (ex. {1,3,4}, somme 6).
- « Qu'est-ce qu'un tas ? À quoi sert-il ? » — Structure d'ordre partiel, priority queue, Dijkstra.
- « Comment détecter un cycle dans une liste chaînée ? » — Tortue et lièvre (Floyd), O(n) temps O(1) espace.
- « Qu'est-ce qu'un arbre équilibré ? Pourquoi est-ce important ? » — Hauteur O(log n) garantie (AVL, rouge-noir).
- « Expliquez la différence entre arbre et graphe » — Graphe acyclique connexe vs général, cycles, poids.
- « Qu'est-ce qu'un tri topologique ? » — Ordre linéaire sur un DAG, dépendances de build.
- « Comment fonctionne Dijkstra ? Limitations ? » — File prioritaire, relaxation ; pas de poids négatifs.
- « Quelle est la complexité du tri fusion ? Stable ? » — O(n log n) garanti, stable, O(n) mémoire.
- « Expliquez l'analyse amortie avec un exemple » — Dynamic array : insertions amorties O(1) malgré des copies périodiques.
- « Qu'est-ce qu'une fonction de hachage ? Collisions ? » — Distribution uniforme, chaînage/open addressing.
- « Comment implémenteriez-vous un LRU cache ? » — Hash map + liste doublement chaînée, O(1) get/put.
- « Quelle structure pour des requêtes de plage fréquentes ? » — Segment tree ou Fenwick (BIT) pour somme/minimum.
- « Backtracking vs récursion simple : différence ? » — Exploration avec annulation (undo), élagage.
System design (niveau entretien junior/mid)
- « Concevez un service d'URL shortener » — Génération d'IDs, stockage, redirection 301/302, analytics.
- « Concevez un rate limiter (token bucket) » — Algorithme du seau à jetons, stockage distribué, Redis.
- « Concevez le feed d'un réseau social » — Fan-out on write vs on read, caching, pagination.
- « Concevez un système de recherche (texte) » — Inverted index, scoring TF-IDF, autocomplétion (Trie).
- « Concevez une file de messages (pub/sub) » — Topics, partitions, at-least-once vs at-most-once, consumer groups.
- « Comment scaler une base relationnelle ? » — Index, réplication, sharding, cache (Redis), read replicas.
- « Concevez un système de cache distribué » — Consistent hashing, éviction (LRU/LFU), invalidation.
- « Comment assurer la cohérence dans un système distribué ? » — CAP, éventuelle cohérence, quorum, versioning.
- « Concevez une API pour un système de commande » — Modèle de données, endpoints, idempotence, transactions.
- « Concevez un compteur de vues en temps réel » — In-memory aggregation + flush batch, sharding par ID.
Réponses types (2 exemples détaillés)
Question : LRU cache (Q18). — Approche : hash map clé → nœud + liste doublement chaînée. get : si présent, déplacer le nœud en tête, renvoyer. put : si présent, mettre à jour et déplacer en tête ; sinon insérer en tête et si capacité dépassée, retirer la queue. Complexité O(1) pour les deux opérations. Piège : ne pas oublier la synchronisation en multi-thread (ou utiliser LinkedHashMap en Java comme alternative).
Question : URL shortener (Q21). — Approche : base62 sur un ID séquentiel ou haché ; stockage clé → URL dans une base + cache Redis ; redirection 301 ; suivi des analytics en asynchrone (file + batch). Piège : penser à la génération d'IDs en environnement distribué (snowflake ID).
5. Coding challenges type FAANG
Format : 45 minutes, 1 problème. Évaluez-vous avec la grille du §2. Résolvez dans l'ordre de difficulté.
Challenge 1 — « Group Anagrams » (medium)
- Énoncé : grouper les anagrammes d'une liste de chaînes.
- Indice : signature = tuple des 26 comptes, ou chaîne triée.
- Solution attendue : hash map signature → liste ; O(n·k) temps (k = longueur max).
Challenge 2 — « Merge Intervals » (medium)
- Énoncé : fusionner les intervalles qui se chevauchent.
- Indice : trier par début, étendre la fin courante.
- Solution attendue : O(n log n), un parcours.
Challenge 3 — « Longest Substring Without Repeating Characters » (medium)
- Énoncé : longueur de la plus longue sous-chaîne sans caractère répété.
- Indice : sliding window + derniers indices vus.
- Solution attendue : O(n) temps, O(min(n, alphabet)) espace.
Challenge 4 — « Number of Islands » (medium)
- Énoncé : compter les composantes connexes de
1. - Indice : BFS/DFS en modifiant la grille.
- Solution attendue : O(R×C).
Challenge 5 — « Coin Change » (medium)
- Énoncé : nombre minimal de pièces.
- Indice : DP bottom-up.
- Solution attendue : O(amount × coins).
Challenge 6 — « Word Break » (medium)
- Énoncé : peut-on découper une chaîne en mots d'un dictionnaire ?
- Indice : DP booléenne sur les préfixes.
- Solution attendue : O(n²) avec hash set du dictionnaire.
Challenge 7 — « Trapping Rain Water » (hard)
- Énoncé : eau totale entre les barres.
- Indice : deux pointeurs avec maxima gauche/droite.
- Solution attendue : O(n) temps, O(1) espace.
Challenge 8 — « Sliding Window Maximum » (hard)
- Énoncé : maximum de chaque fenêtre de taille k.
- Indice : deque monotone.
- Solution attendue : O(n) amorti.
Challenge 9 — « Serialize and Deserialize Binary Tree » (hard)
- Énoncé : convertir un arbre en chaîne et inversement.
- Indice : préordre avec marqueurs
null. - Solution attendue : O(n) pour les deux opérations.
Challenge 10 — « Median of Two Sorted Arrays » (hard)
- Énoncé : médiane en O(log(min(n,m))).
- Indice : recherche binaire sur la partition.
- Solution attendue : O(log(min(n,m))) — cf. E17-46.
6. Méthode de réponse en entretien
Les 6 minutes qui font la différence
| Temps | Action |
|---|---|
| 0–2 min | Clarifier le problème, demander les contraintes, donner un exemple |
| 2–4 min | Proposer une approche brute force, estimer sa complexité |
| 4–6 min | Énoncer l'approche optimale et la justifier (bornes, structures) |
| 6–35 min | Coder proprement, en commentant la logique à voix haute |
| 35–40 min | Tester manuellement sur un exemple et des cas limites |
| 40–45 min | Discuter complexité, optimisations possibles, variantes |
Erreurs fatales à éviter
- Coder avant d'avoir compris le problème.
- Ignorer les cas limites (tableaux vides,
n=1). - Refuser poliment un indice — c'est un test de collaboration.
- Ne pas annoncer sa complexité à la fin.
- Rester silencieux : « je réfléchis » à voix haute est attendu.
7. Simulation complète d'entretien
Rounds type (à reproduire seul ou à 2)
| Round | Durée | Contenu |
|---|---|---|
| 1. Coding — arrays/strings | 45 min | 2 problèmes medium (ex. Two Sum, Group Anagrams) |
| 2. Coding — structures | 45 min | 1 hard (ex. LRU Cache) |
| 3. Coding — DP/graphes | 45 min | 1 medium + 1 hard (ex. Word Break, Number of Islands) |
| 4. System design | 45 min | 1 question (ex. URL shortener) |
| 5. Comportemental | 45 min | 6-8 questions STAR (parcours, conflit, échec) |
Débriefing
- Notez chaque round sur 4 critères (§2) — un score global ≥ 3,5/4 est prêt pour le réel.
- Reprenez les problèmes ratés dans le chapitre 17.
- Rejouez la simulation une semaine plus tard avec des problèmes différents.
8. Préparation par entreprise
- Spécificités : forte culture d'algorithmes, questions de logique pures, un problème par round (parfois très dur).
- Préparation : maîtriser parfaitement les structures de base et la DP ; s'entraîner à formuler les complexités à voix haute.
- Piège : les questions « de conception de Google » (System Design) arrivent souvent en dernier round.
Amazon
- Spécificités : 14 Leadership Principles évalués à chaque round (Customer Obsession, Ownership, Deliver Results…).
- Préparation : préparer 1-2 histoires STAR par principe (vous en avez 30 en réserve — voir §3).
- Piège : les recruteurs interrompent souvent pour creuser — soyez concis et chiffré.
Meta
- Spécificités : 2 problèmes par round de 45 min, langage au choix, éditeur minimaliste.
- Préparation : entraînement à la vitesse (10 min de réflexion, 25 min de code, 10 min de tests).
- Piège : les problèmes sont souvent des variantes de problèmes célèbres — connaissez les patterns du chapitre 17.
Microsoft
- Spécificités : équilibre entre comportemental, système et algo ; culture « growth mindset ».
- Préparation : revoir les questions système (bases de données, API, stockage).
- Piège : les questions « pourquoi Microsoft » sont prises au sérieux.
Apple
- Spécificités : accent sur les détails d'implémentation et l'impact produit ; questions sur votre projet le plus récent.
- Préparation : maîtriser la gestion de la mémoire (stack/heap, GC) et les structures bas niveau.
- Piège : ne pas connaître les particularités d'Objective-C/Swift si vous postulez iOS.
Checklist avant le round final
- 30 histoires STAR rédigées et chronométrées.
- Complexités récitées de mémoire (chapitre 23).
- 10 coding challenges réussis chronométrés (§5).
- 3 questions à poser aux recruteurs préparées.
- Environnement technique testé (éditeur, caméra, connexion).
9. Erreurs fréquentes et correctifs
| Erreur | Correctif |
|---|---|
| Répondre sans reformuler le problème | Toujours répéter l'énoncé avec un exemple (2 min). |
| Coder avant de planifier | Annoncer approche brute force puis optimale avant tout code. |
| Ignorer les cas limites | Tester tableau vide, taille 1, valeurs extrêmes avant de conclure. |
| Rester silencieux | Commenter à voix haute : « je vais essayer un sliding window ici ». |
| Refuser l'aide de l'examinateur | Un indice accepté n'est pas un échec — c'est une interaction testée. |
| Ne pas mentionner la complexité | Toujours conclure par « temps : O(...), espace : O(...) ». |
| Se bloquer sur une solution | Demander à changer d'approche après 15 min de blocage. |
| Négliger le code propre | Nommage clair, pas de duplication, fonctions courtes. |
| Pas de questions à la fin | Préparer 3 questions : équipe, tech, roadmap. |
10. Le jour J : logistique
La veille
- Préparer l'environnement : éditeur, terminal, caméra, casque, connexion filaire de secours.
- Relire la checklist du §8 et les flashcards (chapitre 23).
- Pas de nouvelle matière — seulement de la révision et du repos.
Le matin
- Petit-déjeuner, hydratation, vérifier la salle (lumière, bruit, batteries).
- Arriver 10 minutes en avance à l'appel vidéo.
Pendant les rounds
- Premières 3 minutes : saluer, reformuler le problème, poser les questions de contraintes.
- Gestion du stress : respiration, posture, ne pas se comparer à l'examinateur.
- Entre deux rounds : 5 minutes de pause, étirements, ne pas ressasser le round précédent.
Après l'entretien
- Noter les questions posées et vos réponses (pour réutiliser dans les prochains entretiens).
- Envoyer un message de remerciement au recruteur.
- Quelle que soit l'issue, planifier la prochaine simulation.
Prochaine étape : révisez en dernière minute avec les cheat sheets du chapitre 23, puis explorez les tendances du chapitre 24.