Maîtrisez le backtracking en entretien avec une définition simple, des exemples N-Reines et Sudoku, et une réponse orale prête à l’emploi pour convaincre.
La plupart des candidats qui peinent à expliquer le backtracking n’ont pas un problème de connaissances. Ils ont un problème de traduction. Ils savent reconnaître le schéma dans un problème LeetCode, esquisser une solution dans leur tête, et même écrire un code fonctionnel — mais dès que l’intervieweur dit « guidez-moi à travers votre approche », l’explication s’affaiblit. Le backtracking n’est votre arme secrète en entretien que si vous pouvez réellement dire ce qu’il fait, pas seulement l’appliquer.
La solution n’est pas de faire plus d’exercices. C’est d’avoir un script — une façon de décrire l’algorithme qui nomme ce qu’il fait réellement à chaque étape, et non à quoi ressemble le code. Ce guide est ce script. À la fin, vous aurez une définition en une phrase, une réponse orale de 30 secondes, deux exemples que vous pourrez raconter en direct, et suffisamment de compréhension structurelle pour gérer les questions de suivi sans vous figer.
Dites le en une phrase avant toute autre chose
La définition en une ligne qui sonne humain
Avant d’expliquer quoi que ce soit d’autre, vous avez besoin d’une phrase qui fait mouche. Pas d’un paragraphe. Pas d’une définition avec trois propositions subordonnées. Une phrase que l’intervieweur peut suivre sans la relire.
La voici : « Le backtracking est une stratégie de recherche où l’on fait un choix, on l’explore récursivement, puis on l’annule s’il viole une contrainte — afin de pouvoir essayer l’option suivante sans conserver un état cassé. »
Cette phrase fait quatre choses : elle nomme ce que vous faites (la recherche), comment vous avancez (récursivement), ce qui déclenche le repli (la violation d’une contrainte) et pourquoi l’annulation est importante (un état propre pour la branche suivante). C’est tout le schéma. Tout le reste de ce que vous direz en entretien ne sera qu’un développement d’une de ces quatre idées.
Pourquoi la définition du manuel paraît intelligente mais passe mal
Le cadrage académique du backtracking est en réalité précis et juste. Il décrit une recherche en profondeur sur un espace de solutions, avec exploration systématique des candidats et abandon des solutions partielles qui ne peuvent pas mener à une solution complète valide. Rien à redire à cette définition — elle est simplement optimisée pour un lecteur qui la comprend déjà.
En entretien, elle échoue parce qu’elle décrit la forme de l’algorithme sans expliquer sa fonction. Quand vous dites « exploration systématique des candidats », l’intervieweur entend récursion. Quand vous dites « abandon des solutions partielles », il entend un retour conditionnel. Aucune de ces expressions ne montre que vous comprenez l’étape d’annulation — la partie qui rend le backtracking structurellement différent d’une simple recherche récursive naïve.
La définition donne l’impression que vous l’avez apprise par cœur. La version en une phrase donne l’impression que vous la comprenez.
À quoi cela ressemble en pratique
Voici comment un candidat pourrait ouvrir son explication des N-Reines dans une vraie simulation d’entretien :
« Mon approche ici est du backtracking. L’idée est la suivante : je place une reine sur une ligne, je vérifie si cette position est sûre compte tenu de ce qui est déjà sur l’échiquier, et si c’est le cas, je récuse sur la ligne suivante. Si j’atteins un état où aucune colonne n’est sûre, j’annule le dernier placement — je remets l’échiquier dans l’état précédent — et j’essaie la colonne suivante. Le pruning se fait au moment de la vérification de sécurité : si une colonne est déjà attaquée en diagonale ou verticalement, je la saute entièrement au lieu d’explorer une branche condamnée. »
Cela fait 75 mots. Cela couvre la définition, la vérification de contrainte, l’étape d’annulation et le pruning. Selon le tutoriel sur le backtracking de GeeksforGeeks, cette structure choisir–explorer–annuler est le cadrage canonique — et c’est précisément celui que les intervieweurs reconnaissent comme la preuve d’une réelle compréhension.
Repérez les problèmes qui appellent du backtracking
Le signal caché dans la formulation
L’énoncé vous indique généralement quelle technique il attend — si vous savez l’écouter. En entretien, le backtracking apparaît souvent lorsque le problème demande l’une de ces quatre choses : toutes les combinaisons valides, toutes les permutations, tous les chemins satisfaisant une contrainte, ou une quelconque configuration valide sous des règles strictes.
Les indices de formulation sont : générer tous, trouver tous les valides, énumérer, combinaisons de, ordonner, placer, remplir. Quand vous voyez ces expressions associées à une contrainte — « aucun élément ne peut se répéter », « la somme doit être égale à une cible », « aucune des deux reines ne peut partager une ligne » — c’est le schéma. Le problème vous demande d’explorer un espace de choix et d’éliminer ceux qui violent les règles.
Pourquoi on se tourne trop tôt vers DFS ou la programmation dynamique
DFS est un réflexe raisonnable, car le backtracking utilise DFS comme mode de traversée. L’erreur consiste à les traiter comme des synonymes. Un DFS classique parcourt un graphe fixe — il ne modifie pas d’état, n’a pas besoin d’annuler quoi que ce soit, et ne fait pas de pruning fondé sur une validité partielle. Quand le problème repose sur un graphe fixe et qu’il suffit de visiter les nœuds, DFS est exactement le bon choix.
La programmation dynamique est l’autre confusion fréquente. La DP est puissante quand le problème présente des sous-problèmes qui se recoupent — lorsque la réponse à une version plus petite du problème alimente directement une version plus grande. Mais la DP n’énumère pas les solutions. Elle en trouve une optimale. Quand le problème vous demande de lister chaque arrangement valide, la DP n’a aucun mécanisme pour cela. Vous avez besoin d’essais contrôlés, de retour en arrière et de pruning — c’est le rôle du backtracking.
À quoi cela ressemble en pratique
Prenez « générer toutes les parenthèses valides » (un classique de difficulté moyenne sur LeetCode). L’indice est générer toutes les valides — signal de backtracking immédiat. À chaque étape, vous choisissez d’ajouter une parenthèse ouvrante ou fermante, vous vérifiez si la chaîne partielle reste valide (plus d’ouvrantes que de fermantes à tout moment, nombre total dans la limite de n), puis vous récusez. Si ajouter une parenthèse fermante rend la chaîne invalide, vous ne le faites pas — c’est le pruning. Si vous atteignez une chaîne complète, vous l’enregistrez.
Un bon candidat dira : « C’est du backtracking. Je dois énumérer toutes les chaînes valides, et je peux vérifier la validité à chaque étape plutôt que d’attendre d’avoir construit la chaîne entière. Cela me permet de couper tôt les branches impossibles. » Selon le système de tags de problèmes de LeetCode, « generate parentheses », « combination sum » et « permutations » sont tous tagués backtracking — et partagent exactement cette structure.
Choisir, explorer, annuler, pruner — et donner à chaque mot son sens
Pourquoi ce n’est pas juste de la récursion avec un costume plus élégant
La question d’entretien sur l’algorithme de backtracking s’accompagne presque toujours d’un suivi : « En quoi est-ce différent d’une récursion classique ? » La réponse tient en un mot : l’état. Une fonction récursive pure transmet des arguments vers le bas et lit des valeurs de retour vers le haut. Le backtracking modifie un état partagé — un échiquier, un chemin, un total courant — puis restaure cet état avant d’essayer la branche suivante. C’est cela, la différence structurelle. L’étape d’annulation n’est pas un détail de nettoyage. C’est ce qui rend l’algorithme correct.
Si vous oubliez l’annulation, vous ne faites pas du backtracking — vous construisez un état corrompu qui se propage à toutes les branches suivantes. Le bug est subtil : votre code s’exécute, produit quelques résultats, mais ils sont faux parce que des choix précédents restent inscrits dans l’état alors qu’ils ne devraient pas l’être.
Comment le pruning vous évite l’embarras du brute force
Le pruning n’est pas une optimisation qu’on ajoute une fois l’algorithme fonctionnel. C’est ce qui empêche l’algorithme d’être du brute force. Sans pruning, le backtracking génère toutes les séquences possibles puis vérifie leur validité à la fin. C’est exponentiel dans le pire cas et totalement inutile. Avec pruning, vous vérifiez la validité partielle à chaque étape — et si un choix partiel viole déjà une contrainte, vous arrêtez immédiatement d’explorer cette branche.
Pour les N-Reines, la version brute force place des reines dans toutes les positions possibles puis vérifie la validité à la fin. La version backtracking vérifie la sécurité de la colonne et des diagonales avant de placer la reine. Cette vérification est le pruning. Elle réduit considérablement l’espace de recherche — de O(n^n) vers quelque chose de bien plus gérable.
À quoi cela ressemble en pratique
Supposons que vous construisiez toutes les permutations de [1, 2, 3]. L’état est un chemin courant et un ensemble d’éléments déjà utilisés.
- Choisir : prendre un élément non utilisé — par exemple 1. L’ajouter au chemin.
- Explorer : récuser avec path=[1], used={1}.
- Dans cet appel, choisir 2. Path=[1,2], used={1,2}.
- Récuser à nouveau. Choisir 3. Path=[1,2,3] — cas de base, enregistrer cette permutation.
- Annuler : retirer 3 du chemin et de used. Retour à path=[1,2].
- Plus aucun choix (3 était la seule option). Annuler 2. Retour à path=[1].
- Choisir 3 ensuite. Path=[1,3]. Récuser. Choisir 2. Enregistrer [1,3,2].
- Continuer jusqu’à ce que toutes les permutations soient générées.
Chaque annulation restaure l’état exactement. Chaque pruning se déclencherait si, par exemple, vous ajoutiez une règle selon laquelle deux éléments adjacents ne peuvent pas être égaux — vous sauteriez l’appel récursif au lieu d’y entrer. Les supports de cours d’algorithmes de MIT OpenCourseWare présentent ce schéma de restauration d’état comme la caractéristique définissante de la recherche par backtracking.
Expliquez votre arbre récursif sans vous réfugier dans des généralités
La partie qui compte le plus pour les intervieweurs
La faiblesse la plus fréquente dans les explications de backtracking n’est pas le code — c’est la discussion sur la complexité. Les candidats disent « ça se ramifie beaucoup » puis s’arrêtent. Ce n’est pas une réponse. L’intervieweur veut savoir ce que représente chaque nœud de l’arbre récursif, combien d’enfants chaque nœud a, et à quelle profondeur l’arbre se termine. Ces trois éléments, ensemble, donnent la complexité.
Si vous ne pouvez pas décrire l’arbre, vous ne pouvez pas défendre la complexité. Et si vous ne pouvez pas défendre la complexité, l’intervieweur ne sait pas si vous comprenez vraiment ce que fait votre algorithme.
La bonne façon de décrire les branches, la profondeur et les impasses
Voici le cadrage qui fonctionne : « Chaque nœud de l’arbre représente une solution partielle — un état d’échiquier, un chemin partiel, un total courant. Chaque arête représente un choix. Le facteur de branchement correspond au nombre d’options valides à chaque étape, et la profondeur correspond à la longueur d’une solution complète. Une impasse est un nœud où aucun choix ne passe la vérification de contrainte — c’est là qu’on prunes. »
C’est tout. Vous n’avez pas besoin de notation. Vous avez besoin de ces trois notions nommées clairement : l’état partiel à chaque nœud, le facteur de branchement et la profondeur. Une fois cela dit, la complexité découle naturellement : O(facteur_de_branchement^profondeur) dans le pire cas, réduite en pratique par le pruning.
À quoi cela ressemble en pratique
Pour un échiquier de N-Reines en 4x4 :
- Nœud racine : échiquier vide.
- Niveau 1 : quatre enfants, un par colonne de la ligne 1. (Placer une reine en colonne 0, 1, 2 ou 3.)
- Niveau 2 : depuis chaque nœud du niveau 1, essayer chaque colonne de la ligne 2 — mais pruner toute colonne qui partage une colonne ou une diagonale avec la reine de la ligne 1. Certains nœuds ont 2 enfants valides, d’autres moins.
- Une impasse au niveau 2 signifie qu’aucune colonne de la ligne 2 n’est sûre compte tenu du placement de la ligne 1. On annule alors le placement de la ligne 1 et on essaie la colonne suivante.
- Une feuille valide au niveau 4 est une solution complète.
Un chemin valide : reine en colonne 1 (ligne 1), colonne 3 (ligne 2), colonne 0 (ligne 3), colonne 2 (ligne 4). Un chemin pruné : reine en colonne 0 (ligne 1), colonne 0 (ligne 2) — immédiatement pruné, même colonne. Selon les supports de cours CS106B de Stanford, ce type de parcours d’arbre annoté est l’outil pédagogique standard pour rendre la complexité de la recherche intuitive.
Les N Reines sont l’exemple qui ancre le schéma
Pourquoi les N Reines sont la démonstration idéale en entretien
Les N-Reines vous obligent à utiliser tout le schéma du backtracking d’un coup. Vous ne pouvez pas ignorer la vérification de contrainte — sinon les reines s’attaquent entre elles. Vous ne pouvez pas ignorer l’annulation — sinon, si vous ne restaurez pas l’échiquier, la branche suivante hérite d’un état corrompu. Vous ne pouvez pas ignorer le pruning — sans lui, vous essaieriez chaque colonne de chaque ligne sans tenir compte des attaques. Le problème est conçu de manière à rendre chaque étape nécessaire, ce qui en fait un excellent exemple d’apprentissage.
Il a aussi une histoire familière. La plupart des intervieweurs l’ont déjà vu. Quand vous utilisez les N-Reines comme exemple, ils savent immédiatement si votre explication est correcte.
À quoi cela ressemble en pratique
Pour un échiquier 4x4, voici un chemin tracé :
Étape 1 : Placer la reine en ligne 0, colonne 1. Échiquier : Q en (0,1). Sûr. Étape 2 : Essayer la ligne 1. Colonne 0 : conflit diagonal avec (0,1). Prune. Colonne 1 : même colonne. Prune. Colonne 2 : sûr ? Vérifions — aucune colonne partagée (col 2 ≠ 1), aucune diagonale (|2-1| ≠ |1-0|, donc |1| ≠ |1|… en fait, C’EST un conflit diagonal). Prune. Colonne 3 : vérification — pas de conflit de colonne, vérification diagonale : |3-1| = 2, |1-0| = 1. Pas égaux. Sûr. Placer en (1,3). Étape 3 : Essayer la ligne 2. Colonne 0 : vérifier les colonnes (0≠1, 0≠3), diagonales : |0-1|=1, |2-0|=2 — sûr ; |0-3|=3, |2-1|=1 — sûr. Placer en (2,0). Étape 4 : Essayer la ligne 3. Colonne 0 : même colonne que (2,0). Prune. Colonne 1 : même colonne que (0,1). Prune. Colonne 2 : vérifier le tout — aucun conflit de colonne ; diagonales : |2-1|=1, |3-0|=3 — sûr ; |2-3|=1, |3-1|=2 — sûr ; |2-0|=2, |3-2|=1 — sûr. Placer en (3,2). Solution valide trouvée : (0,1), (1,3), (2,0), (3,2).
L’erreur qui fait sonner les réponses sur les N Reines comme artificielles
L’échec le plus courant consiste à décrire le code final sans narrer la décision à chaque étape. Les candidats disent « je vérifie si la position est sûre et si oui je récuse » — mais quand l’intervieweur demande « qu’est-ce qui rend une position sûre ? », ils ne savent pas répondre précisément. Sûre signifie : aucune reine dans la même colonne, aucune reine sur l’une ou l’autre diagonale. La vérification diagonale est |ligne1 - ligne2| == |colonne1 - colonne2|. Si vous ne pouvez pas dire cela, vous n’avez pas réellement compris la contrainte — vous avez seulement décrit la structure de la solution. Selon CLRS (Introduction to Algorithms), les N-Reines sont l’exemple canonique du backtracking précisément parce que la vérification de contrainte est non triviale et doit être explicite.
Le Sudoku prouve que vous comprenez la recherche guidée par les contraintes
Pourquoi le Sudoku n’est pas juste une version plus grande du même mécanisme
Le Sudoku ajoute quelque chose que les N-Reines n’ont pas : trois dimensions de contrainte simultanées. L’affectation d’un chiffre doit être valide sur sa ligne, sa colonne et dans son bloc 3x3. Cette triple contrainte rend le pruning plus concret — et clarifie davantage la distinction entre backtracking et DFS. Un DFS classique parcourrait les cases sans vérifier ces contraintes à chaque étape. Le backtracking vérifie les trois avant de valider une affectation. Si une contrainte échoue, vous ne récusez pas — vous essayez le chiffre suivant.
À quoi cela ressemble en pratique
Supposons que vous remplissiez la case (2,4) et que vous vouliez essayer le chiffre 5. Avant de le placer :
- Vérifiez la ligne 2 : le 5 apparaît-il quelque part dans la ligne 2 ? Si oui, sautez.
- Vérifiez la colonne 4 : le 5 apparaît-il quelque part dans la colonne 4 ? Si oui, sautez.
- Vérifiez le bloc 3x3 contenant (2,4) : le 5 y apparaît-il ? Si oui, sautez.
Si les trois vérifications passent, placez 5, puis récusez sur la prochaine case vide. Si la récursion échoue finalement (aucun chiffre valide pour une case ultérieure), annulez le placement en (2,4) — remettez la case à vide — et essayez le chiffre 6. Si tous les chiffres de 1 à 9 échouent, retournez false, ce qui déclenche l’annulation dans le cadre appelant.
Pourquoi cet exemple aide en entretien
Le Sudoku vous donne une histoire de retour en arrière très concrète. Quand l’intervieweur demande « comment évitez-vous de perdre du temps sur des branches condamnées ? », vous pouvez répondre : « Je vérifie les trois contraintes avant de placer un chiffre. Si l’une d’elles échoue, je ne récuse pas du tout — j’essaie le chiffre suivant. Si les neuf chiffres échouent pour une case, je retourne false, ce qui déclenche chez l’appelant l’annulation de son dernier placement et l’essai de l’option suivante. » Cette réponse nomme le pruning, l’annulation et la condition de déclenchement. Elle est complète.
Le backtracking, DFS et la programmation dynamique ne sont pas la même chose
DFS est la forme, le backtracking est la discipline
DFS décrit la manière de parcourir : en profondeur d’abord, en suivant une branche jusqu’à une feuille, puis en revenant au dernier point de décision. Le backtracking utilise ce style de parcours mais ajoute deux choses que DFS n’exige pas : une modification explicite de l’état avant la récursion, et une restauration explicite de l’état après. C’est cela, la discipline. Un DFS sur un graphe ne modifie pas le graphe — il marque seulement les nœuds visités. Le backtracking sur un espace de solutions change l’état (place une reine, ajoute un chiffre, prolonge un chemin), puis annule ce changement. Même ordre de parcours, travail structurel complètement différent.
Quand la DP est la mauvaise réponse même si elle semble plus intelligente
La DP est vraiment puissante — pour le bon problème. Elle excelle quand vous avez des sous-problèmes qui se chevauchent et une structure optimale. Plus court chemin, nombre minimum de pièces, plus longue sous-séquence commune — tous tirent parti de la mémoïsation parce que le même sous-problème réapparaît dans plusieurs branches et qu’on ne veut le résoudre qu’une seule fois.
Mais quand le problème vous demande d’énumérer des configurations valides — toutes les parenthèses valides, toutes les permutations, tous les arrangements d’un échiquier — la DP n’a aucun mécanisme pour cela. La mémoïsation stocke des réponses à des sous-problèmes ; elle ne génère pas tous les chemins valides dans l’espace de solutions. Essayer d’utiliser la DP pour de l’énumération, c’est comme utiliser une calculatrice pour écrire un essai. L’outil n’est pas le bon.
À quoi cela ressemble en pratique
La génération de sous-ensembles versus le plus court chemin rend le choix évident. « Générer tous les sous-ensembles de [1,2,3] » — backtracking. À chaque étape, vous choisissez d’inclure ou d’exclure un élément, vous récusez, puis vous annulez. Vous avez besoin de tous les chemins de l’arbre de décision. « Trouver le plus court chemin de A à B dans un graphe pondéré » — Dijkstra ou BFS, pas du backtracking. Vous avez besoin d’une réponse optimale, pas de tous les chemins. Quand le problème dit tous, pensez backtracking. Quand il dit optimal, pensez DP ou parcours de graphe. CLRS fait explicitement cette distinction dans son traitement des paradigmes de conception d’algorithmes.
Les erreurs qui font paraître une bonne réponse hésitante
Oublier le cas de base ou l’étape d’annulation
Ce sont les deux bugs d’implémentation les plus fréquents, et ils sont liés. Le cas de base vous dit quand une solution complète est trouvée — sans lui, la récursion tourne indéfiniment ou s’arrête de manière incorrecte. L’étape d’annulation restaure l’état partagé après un appel récursif — sans elle, la branche suivante hérite des changements de la branche précédente. Ces deux bugs produisent des réponses erronées plutôt que des crashs, ce qui les rend plus difficiles à repérer pendant un entretien.
La cause structurelle : les candidats voient le backtracking comme « de la récursion plus une vérification ». Ils ajoutent la contrainte, écrivent l’appel récursif, puis passent à autre chose. L’étape d’annulation ressemble à du nettoyage — optionnelle, pas structurelle. Elle ne l’est pas. C’est le mécanisme qui rend l’algorithme correct.
Expliquer le code sans expliquer la recherche
Les réponses d’entretien les plus plates décrivent la syntaxe : « J’ai une fonction auxiliaire qui prend l’échiquier et la ligne courante. Je boucle sur les colonnes. Si la position est valide, j’appelle récursivement la fonction avec row+1. » C’est une description de la structure du code, pas de la recherche. Cela n’indique pas à l’intervieweur quel état change, ce qui déclenche le retour en arrière, ou comment le pruning réduit l’espace de recherche.
La solution consiste à narrer le processus de décision : « À chaque ligne, je choisis la colonne où placer la reine. Si aucune colonne n’est sûre, je retourne false — cela signale à l’appelant qu’on est dans une impasse et qu’il doit annuler son propre placement avant d’essayer la colonne suivante. Le pruning se fait dans la vérification de sécurité : si une colonne est déjà attaquée, je la saute sans récursion. »
À quoi cela ressemble en pratique
Réponse faible :
« Je vérifie si la position est valide et si oui j’appelle la fonction récursivement. Si j’atteins la dernière ligne, j’ajoute la solution. »
Relance de l’intervieweur : « Que se passe-t-il lorsqu’aucune position n’est valide sur une ligne ? »
Réponse corrigée :
« Exact — si aucune colonne ne passe la vérification de sécurité, je retourne false. Cela signale à l’appelant que l’état partiel courant est une impasse. L’appelant annule alors son propre placement de reine et essaie la colonne suivante. Donc l’étape d’annulation n’est pas juste du nettoyage — c’est ce qui permet à la recherche de continuer correctement à partir d’un état propre. »
La réponse corrigée nomme le mécanisme de retour en arrière et explique pourquoi il compte. C’est la réponse que l’intervieweur attendait.
Mémorisez une réponse de 30 secondes que vous pouvez vraiment donner
La structure d’une bonne réponse orale
Décomposez votre réponse en quatre temps. Ne scriptiez pas chaque mot — scriptiez les temps, puis laissez les mots venir naturellement.
- Ce que c’est : « Le backtracking est une stratégie de recherche où l’on fait un choix, on l’explore, puis on l’annule s’il viole une contrainte. »
- Quand l’utiliser : « Je le choisis quand le problème me demande d’énumérer toutes les combinaisons, permutations ou configurations valides — à chaque fois que je dois explorer un espace de choix sous contraintes. »
- Comment cela fonctionne : « Le schéma est choisir, explorer, annuler, pruner. Je fais un choix, je récuse sur la décision suivante, je restaure l’état si la branche échoue, et je saute les branches qui violent déjà une contrainte. »
- Pourquoi le pruning compte : « Sans pruning, je génère toutes les séquences possibles et je vérifie la validité à la fin. Avec pruning, je coupe tôt les branches mortes — c’est ce qui rend l’algorithme praticable. »
Quatre temps. Trente secondes. Chaque question de suivi vous demande de développer l’un d’eux.
À quoi cela ressemble en pratique
Voici le script complet de 30 secondes pour un problème de somme de combinaisons :
« C’est un problème de backtracking. Je dois trouver toutes les combinaisons de nombres qui totalisent la cible — c’est un problème d’énumération sous contrainte. Mon approche : à chaque étape, je choisis un nombre parmi les candidats, je l’ajoute à mon chemin courant, puis je récuse. Si la somme courante dépasse la cible, je prune — je ne récuse pas plus loin. Si elle lui est égale, j’enregistre la combinaison. Dans tous les cas, je retire le dernier nombre du chemin avant d’essayer le candidat suivant. C’est l’étape d’annulation — elle garde le chemin propre pour la branche suivante. »
Cela fait 95 mots. Cela couvre les quatre temps, nomme la contrainte, explique le pruning et décrit l’annulation. Selon les recherches d’interviewing.io sur la performance en entretien technique, les candidats qui narrent leur processus de décision — et pas seulement leur code — obtiennent de meilleurs scores sur les critères de communication.
Les questions de suivi auxquelles vous devez vous attendre
« Quelle est la complexité en temps ? »
« Dans le pire cas, c’est O(facteur_de_branchement^profondeur) — pour combination sum, c’est à peu près O(2^n) sans pruning. Avec pruning, c’est bien meilleur en pratique, mais le pire cas n’améliore pas son ordre de grandeur asymptotique. »
« En quoi est-ce différent du DFS ? »
« DFS est le style de parcours — le backtracking utilise DFS mais ajoute une modification explicite de l’état et sa restauration. Dans un DFS classique sur un graphe, je ne modifie pas le graphe. Dans le backtracking, je mute un état partagé puis je l’annule. C’est la différence structurelle. »
« Pourquoi pas de programmation dynamique ? »
« La DP sert à l’optimisation — trouver une meilleure réponse en réutilisant des sous-problèmes qui se recoupent. Ici, j’ai besoin de toutes les combinaisons valides, pas d’une seule optimale. La DP n’énumère pas les chemins dans un espace de solutions. »
FAQ
Q : Qu’est-ce que le backtracking en une phrase qu’un candidat peut dire en entretien ?
Le backtracking est une stratégie de recherche où l’on fait un choix, on l’explore récursivement, puis on l’annule s’il viole une contrainte — afin de pouvoir essayer l’option suivante à partir d’un état propre. C’est la phrase à mémoriser. Elle nomme le mécanisme (choisir, explorer, annuler), le déclencheur (violation d’une contrainte) et l’objectif (un état propre pour la branche suivante) — autrement dit, tout ce qu’un intervieweur a besoin d’entendre pour savoir que vous comprenez le schéma structurellement, pas seulement syntaxiquement.
Q : Comment savoir si un problème doit être résolu avec du backtracking plutôt qu’avec du DFS classique ou de la programmation dynamique ?
Cherchez une énumération sous contraintes. Si le problème demande toutes les combinaisons valides, permutations, arrangements ou chemins — et qu’une contrainte peut invalider tôt une solution partielle — c’est du backtracking. Le DFS classique est le bon choix quand vous parcourez un graphe fixe sans muter d’état. La DP est le bon choix quand vous cherchez une seule réponse optimale et que le problème présente des sous-problèmes qui se recoupent. Quand le problème dit « générer tous » ou « trouver tous les valides », commencez par le backtracking.
Q : Quelles sont les étapes clés du schéma de backtracking : choisir, explorer, annuler et pruner ?
Choisir signifie sélectionner une option parmi les candidats disponibles à l’étape courante. Explorer signifie récuser sur la décision suivante avec ce choix appliqué à l’état partagé. Annuler signifie restaurer l’état partagé exactement comme il était avant ce choix — pour que la branche suivante parte d’un état propre. Pruner signifie sauter entièrement un appel récursif lorsque l’état partiel courant viole déjà une contrainte. Ces quatre étapes sont structurelles, non optionnelles — en supprimer une seule produit soit des réponses fausses (si l’annulation manque), soit une recherche brute force (si le pruning manque).
Q : Comment dois-je expliquer mon arbre récursif et mes décisions de pruning à l’intervieweur ?
Nommez trois choses : ce que représente chaque nœud (un état de solution partielle), le facteur de branchement (combien de choix existent à chaque étape) et la profondeur (la longueur d’une solution complète). Puis expliquez le pruning comme le mécanisme qui supprime des sous-arbres : « Quand un état partiel viole déjà une contrainte, je n’y récuse pas — je coupe tout ce sous-arbre. » La complexité découle de ces trois éléments : O(facteur_de_branchement^profondeur) au pire, réduit en pratique par le pruning.
Q : Quels sont les problèmes d’entretien de backtracking les plus courants et qu’ont-ils en commun ?
N-Reines, solveur de Sudoku, combination sum, génération de toutes les permutations, génération de tous les sous-ensembles, word search et génération de parenthèses valides sont les exemples canoniques. Ce qu’ils partagent : ils exigent tous l’énumération de configurations valides sous contraintes, tous bénéficient d’un pruning précoce lorsqu’un état partiel échoue déjà, et tous nécessitent une restauration de l’état après chaque appel récursif. Si vous savez raconter clairement les N-Reines et combination sum, vous maîtrisez le schéma pour tous les autres.
Q : Quelles erreurs les candidats font-ils généralement lorsqu’ils implémentent ou décrivent le backtracking ?
Trois erreurs fréquentes. Premièrement, oublier l’étape d’annulation — la modification d’état avant l’appel récursif n’est jamais inversée, donc les branches suivantes héritent d’un état corrompu. Deuxièmement, raconter la structure du code au lieu de la recherche — décrire la signature de la fonction et la boucle sans expliquer ce qui déclenche le retour en arrière ou comment fonctionne le pruning. Troisièmement, sauter le cas de base — soit la récursion ne se termine jamais, soit elle s’arrête au mauvais moment. La solution pour les trois est de raconter l’algorithme en termes d’état : ce qui change, ce qui déclenche le rollback et ce qui signale une solution complète.
Comment Verve AI peut vous aider à préparer votre entretien sur le backtracking
L’écart entre comprendre le backtracking et l’expliquer avec fluidité sous pression n’est pas un problème de connaissances, mais de répétition. Vous pouvez lire tous les tutoriels, tracer tous les échiquiers des N-Reines, et rester muet quand un intervieweur vous demande « pourquoi avez-vous choisi le backtracking plutôt que la DP ? » — parce que vous n’avez jamais eu à dire la réponse à voix haute pendant que quelqu’un vous observe. C’est précisément le problème qu’un outil doit résoudre, et il ne fonctionne que s’il peut réellement entendre ce que vous dites et répondre à ce que vous avez dit, pas à une consigne pré-écrite.
Verve AI Interview Copilot est conçu pour exactement ce type de situation. Il écoute en temps réel votre réponse orale — y compris les passages où vous hésitez, utilisez des mots de remplissage ou oubliez l’étape d’annulation sans vous en rendre compte — et vous fournit un retour ciblé sur ce que vous avez réellement dit. Quand vous vous entraînez sur votre script de 30 secondes sur le backtracking, Verve AI Interview Copilot ne vérifie pas seulement si vous avez mentionné le pruning. Il observe si votre explication couvrait bien les quatre temps, si votre réponse sur la complexité était précise, et si vos réponses aux questions de suivi restaient solides lorsque la question changeait de direction. L’application desktop reste invisible pendant les sessions de partage d’écran, afin que vous puissiez l’utiliser pendant une simulation d’entretien en direct sans qu’elle apparaisse à l’écran de l’intervieweur. Si vous voulez passer de la compréhension du schéma à la maîtrise de l’explication, Verve AI Interview Copilot est l’environnement d’entraînement qui rend cet écart franchissable.
Conclusion
Si vous êtes arrivé ici, c’est parce que vous savez ce que fait le backtracking mais que vous vous figez quand quelqu’un vous demande de l’expliquer. Ce n’est pas un problème de connaissances — c’est un problème de répétition. Le concept est suffisamment clair. Le script ne l’était pas.
Vous avez maintenant ce script. Une définition en une phrase que vous pouvez prononcer sans hésiter. Une structure en quatre temps pour une réponse de 30 secondes. Deux exemples — N-Reines et Sudoku — que vous pouvez raconter étape par étape. Une réponse propre à chaque question de suivi qu’un intervieweur est susceptible de poser.
Il ne vous reste plus qu’à rendre cela banal. Dites le script de 30 secondes à voix haute jusqu’à ne plus penser aux mots et à commencer à penser à la recherche. Tracez les N-Reines sur papier jusqu’à pouvoir raconter un chemin valide et une branche prunée sans regarder vos notes. Le but n’est pas de paraître impressionnant. Le but est de paraître comme quelqu’un qui a expliqué cela cent fois — parce que c’est exactement ce en quoi les intervieweurs ont confiance.
Verve AI
Archives
