MFormations
Modern Algorithms Engineering

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

  1. Le processus d'entretien FAANG
  2. Ce que les recruteurs évaluent
  3. 30 questions comportementales
  4. 30 questions techniques
  5. Coding challenges type FAANG
  6. Méthode de réponse en entretien
  7. Simulation complète d'entretien
  8. Préparation par entreprise
  9. Erreurs fréquentes et correctifs
  10. Le jour J : logistique

1. Le processus d'entretien FAANG

Les étapes types

ÉtapeDuréeContenu
Phone screen (recruteur)30 minParcours, motivation, questions comportementales
Phone screen technique45–60 min1-2 problèmes d'algo faciles/moyens
Onsite / Zoom (4-5 rounds)4-6 h2-3 rounds coding, 1 round system design, 1 round comportemental
Bar raiser / Cross-functional45 minÉvaluation globale, questions comportementales
Offer / RejectRetour 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) :

  1. Compétence algorithmique : complexité, optimalité, cas limites.
  2. Qualité du code : clarté, nommage, absence de bugs, testabilité.
  3. Communication : explication à voix haute, questionnement des ambiguïtés.
  4. Collaboration : réception des indices, remise en question constructive.
  5. 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

  1. « Parlez-moi de vous »STAR attendu : résumé en 2 min — formation, expériences marquantes, compétences clés, projet actuel.
  2. « Pourquoi voulez-vous travailler ici ? » — Reliez vos compétences aux besoins de l'entreprise et son secteur.
  3. « Pourquoi quitter votre poste actuel ? » — Restez positif : « je cherche plus d'impact », jamais « je fuis X ».
  4. « Qu'est-ce qui vous motive dans l'ingénierie ? » — Exemple concret de curiosité technique.
  5. « Décrivez votre plus grande réussite professionnelle » — STAR avec chiffres (temps, % gain, utilisateurs impactés).
  6. « Décrivez votre plus grand échec » — Montrez responsabilité, analyse, et correctif (finir sur une leçon).
  7. « Quel est votre plus grand défaut ? » — Un vrai défaut + le plan concret pour le compenser.
  8. « Où vous voyez-vous dans 5 ans ? » — Montrez progression et alignement avec le poste.
  9. « Pourquoi devrions-nous vous embaucher ? » — 3 arguments différenciants, factuels.
  10. « Quel est votre niveau de compétence sur [langage/techno] ? » — Honnêteté + preuve (projets, PR, open source).

Questions de travail d'équipe

  1. « Racontez un conflit avec un collègue » — STAR centré sur l'écoute et le compromis constructif.
  2. « Comment gérez-vous un désaccord technique ? » — Données > ego : « nous avons benchmarké les deux approches ».
  3. « Décrivez une fois où vous avez aidé un collègue en difficulté » — Mentorat, revue de code, documentation.
  4. « Comment avez-vous reçu une critique difficile ? » — Réceptivité, action, résultat.
  5. « Une fois où vous avez dû dire non » — Priorisation, clarté, alternative proposée.
  6. « Comment travaillez-vous sous pression ? » — Exemple de deadline serrée, organisation, calme.
  7. « Une décision où vous avez suivi votre intuition contre l'avis du groupe » — Preuve de jugement + validation.
  8. « Comment gérez-vous les membres d'équipe sous-performants ? » — Feedback direct et bienveillant, support.
  9. « Racontez une victoire d'équipe » — Votre rôle spécifique + résultat collectif.
  10. « Comment intégrez-vous un nouveau membre ? » — Processus d'onboarding, documentation, pairings.

Questions de leadership et d'initiative

  1. « Une fois où vous avez pris une initiative sans y être invité » — Problème identifié, solution apportée, impact mesuré.
  2. « Une fois où vous avez dû convaincre des parties prenantes » — Préparation, données, présentation, résultat.
  3. « Comment priorisez-vous quand tout est urgent ? » — Critères (impact, coût, risque), outil de suivi.
  4. « Une fois où vous avez fait face à l'ambiguïté » — Reformulation, hypothèses explicites, expérimentation.
  5. « Comment apprenez-vous de nouvelles technologies ? » — Processus concret (projets, docs, side-projects).
  6. « Décrivez un projet dont vous êtes fier techniquement » — Architecture, choix de design, difficultés, chiffres.
  7. « Une fois où vous avez simplifié un système complexe » — Complexité réduite, maintenabilité gagnée.
  8. « Comment gérez-vous le feedback de votre manager ? » — Écoute active, action, suivi.
  9. « Une fois où vous avez refusé une solution "quick fix" » — Raisonnement long terme, coût de la dette.
  10. « Quelles questions avez-vous pour nous ? » — Toujours préparer 3 questions intelligentes (équipe, roadmap, culture).

Grille d'auto-évaluation comportementale

CritèreOuiNon
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

  1. « Expliquez la différence entre stack et queue » — LIFO vs FIFO, avec exemples d'usages.
  2. « Quand utiliser une hash table plutôt qu'un arbre ? » — O(1) moyen vs ordre maintenu ; cas des requêtes ordonnées.
  3. « Quel tri choisir et pourquoi ? » — Quicksort (rapide), mergesort (stable, O(n log n) garanti), heapsort (in-place).
  4. « Quelle est la complexité de la recherche binaire ? Pourquoi ? » — O(log n), diviser par 2 à chaque étape.
  5. « Expliquez BFS vs DFS, avec des cas d'usage » — Plus court chemin (poids 1) vs exploration/profondeur.
  6. « Qu'est-ce que la programmation dynamique ? Donnez un exemple » — Sous-structure optimale + recouvrement (Fibonacci, knapsack).
  7. « Qu'est-ce que la mémorisation ? » — Cache des résultats de sous-problèmes, top-down.
  8. « Expliquez le greedy et donnez un exemple où il échoue » — Coin change non canonique (ex. {1,3,4}, somme 6).
  9. « Qu'est-ce qu'un tas ? À quoi sert-il ? » — Structure d'ordre partiel, priority queue, Dijkstra.
  10. « Comment détecter un cycle dans une liste chaînée ? » — Tortue et lièvre (Floyd), O(n) temps O(1) espace.
  11. « Qu'est-ce qu'un arbre équilibré ? Pourquoi est-ce important ? » — Hauteur O(log n) garantie (AVL, rouge-noir).
  12. « Expliquez la différence entre arbre et graphe » — Graphe acyclique connexe vs général, cycles, poids.
  13. « Qu'est-ce qu'un tri topologique ? » — Ordre linéaire sur un DAG, dépendances de build.
  14. « Comment fonctionne Dijkstra ? Limitations ? » — File prioritaire, relaxation ; pas de poids négatifs.
  15. « Quelle est la complexité du tri fusion ? Stable ? » — O(n log n) garanti, stable, O(n) mémoire.
  16. « Expliquez l'analyse amortie avec un exemple » — Dynamic array : insertions amorties O(1) malgré des copies périodiques.
  17. « Qu'est-ce qu'une fonction de hachage ? Collisions ? » — Distribution uniforme, chaînage/open addressing.
  18. « Comment implémenteriez-vous un LRU cache ? » — Hash map + liste doublement chaînée, O(1) get/put.
  19. « Quelle structure pour des requêtes de plage fréquentes ? » — Segment tree ou Fenwick (BIT) pour somme/minimum.
  20. « Backtracking vs récursion simple : différence ? » — Exploration avec annulation (undo), élagage.

System design (niveau entretien junior/mid)

  1. « Concevez un service d'URL shortener » — Génération d'IDs, stockage, redirection 301/302, analytics.
  2. « Concevez un rate limiter (token bucket) » — Algorithme du seau à jetons, stockage distribué, Redis.
  3. « Concevez le feed d'un réseau social » — Fan-out on write vs on read, caching, pagination.
  4. « Concevez un système de recherche (texte) » — Inverted index, scoring TF-IDF, autocomplétion (Trie).
  5. « Concevez une file de messages (pub/sub) » — Topics, partitions, at-least-once vs at-most-once, consumer groups.
  6. « Comment scaler une base relationnelle ? » — Index, réplication, sharding, cache (Redis), read replicas.
  7. « Concevez un système de cache distribué » — Consistent hashing, éviction (LRU/LFU), invalidation.
  8. « Comment assurer la cohérence dans un système distribué ? » — CAP, éventuelle cohérence, quorum, versioning.
  9. « Concevez une API pour un système de commande » — Modèle de données, endpoints, idempotence, transactions.
  10. « 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

TempsAction
0–2 minClarifier le problème, demander les contraintes, donner un exemple
2–4 minProposer une approche brute force, estimer sa complexité
4–6 minÉnoncer l'approche optimale et la justifier (bornes, structures)
6–35 minCoder proprement, en commentant la logique à voix haute
35–40 minTester manuellement sur un exemple et des cas limites
40–45 minDiscuter 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)

RoundDuréeContenu
1. Coding — arrays/strings45 min2 problèmes medium (ex. Two Sum, Group Anagrams)
2. Coding — structures45 min1 hard (ex. LRU Cache)
3. Coding — DP/graphes45 min1 medium + 1 hard (ex. Word Break, Number of Islands)
4. System design45 min1 question (ex. URL shortener)
5. Comportemental45 min6-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

Google

  • 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

ErreurCorrectif
Répondre sans reformuler le problèmeToujours répéter l'énoncé avec un exemple (2 min).
Coder avant de planifierAnnoncer approche brute force puis optimale avant tout code.
Ignorer les cas limitesTester tableau vide, taille 1, valeurs extrêmes avant de conclure.
Rester silencieuxCommenter à voix haute : « je vais essayer un sliding window ici ».
Refuser l'aide de l'examinateurUn 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 solutionDemander à changer d'approche après 15 min de blocage.
Négliger le code propreNommage clair, pas de duplication, fonctions courtes.
Pas de questions à la finPré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.