Préparation aux Entretiens

Questions d'Entretien JavaScript avec Réponses

20 questions les plus fréquemment posées à un développeur frontend junior. Des réponses en langage simple, pas des phrases de manuel mémorisées.

❓ 20 questions 🎯 Niveau : junior 🔄 Mis à jour : 2026

📘 Bases du Langage

1. Quelle est la différence entre var, let et const ?
var a une portée de fonction et peut « s'échapper » d'un bloc ; let et const ont une portée de bloc, visibles seulement dans leur propre bloc { }. let peut être réassignée, const non. Aujourd'hui var ne s'utilise presque plus.
2. Quelle est la différence entre == et === ?
== compare les valeurs avec conversion de types ("5" == 5 → true), === compare sans conversion, type inclus ("5" === 5 → false). En pratique, on utilise presque toujours ===.
3. Quelle est la différence entre null et undefined ?
undefined est la valeur par défaut quand rien n'a été assigné à une variable. null est une valeur qu'un développeur assigne délibérément, pour dire explicitement « c'est vide ici ».
4. Quels types de données existe-t-il en JavaScript ?
Des types primitifs : string, number, boolean, undefined, null, symbol, bigint. Et un type non primitif — object (qui inclut les tableaux et les fonctions).
5. Qu'est-ce que le hoisting ?
Un mécanisme par lequel les déclarations de variables (var) et de fonctions sont déplacées en haut de leur portée avant l'exécution du code. let et const sont aussi hissées, mais tombent dans la « temporal dead zone » — on ne peut pas y accéder avant leur déclaration.
6. Qu'est-ce qu'une closure ?
Une fonction qui « se souvient » des variables d'une fonction externe, même après que celle-ci a fini de s'exécuter. Un exemple classique est une fonction compteur qui garde son état entre les appels.

🗂️ Tableaux et Objets

7. Quelle est la différence entre map et forEach ?
forEach parcourt simplement un tableau et ne renvoie rien. map parcourt aussi un tableau, mais renvoie un nouveau tableau avec le résultat de la fonction pour chaque élément.
8. Comment vérifies-tu si une variable est un tableau ?
Avec Array.isArray(valeur). L'opérateur typeof renvoie "object" pour un tableau, donc il ne sert pas à ça.
9. Comment copies-tu un objet ou un tableau ?
Pour une copie superficielle : l'opérateur spread {...obj} ou [...arr]. Pour une copie profonde d'objets imbriqués, on utilise souvent structuredClone(obj) ou JSON.parse(JSON.stringify(obj)).
10. Comment supprimes-tu un élément d'un tableau ?
Avec splice(index, 1) — modifie le tableau original. Ou avec filter, si tu as besoin d'un nouveau tableau sans modifier l'original : arr.filter(item => item !== valeur).
11. Que fait la méthode reduce ?
Elle réduit un tableau à une seule valeur, en parcourant chaque élément et en accumulant un résultat. Souvent utilisée pour additionner des valeurs : arr.reduce((sum, n) => sum + n, 0).

🖥️ Le DOM et les Événements

12. Comment sélectionnes-tu un élément sur la page ?
Le plus courant est document.querySelector(".classe") pour un élément et document.querySelectorAll(".classe") pour plusieurs. Il existe aussi getElementById.
13. Quelle est la différence entre addEventListener et onclick ?
onclick ne permet d'assigner qu'un seul gestionnaire — un nouveau remplace le précédent. addEventListener permet d'ajouter autant de gestionnaires que voulu au même événement, et de les retirer de façon plus flexible.
14. Qu'est-ce que la propagation d'événements (event bubbling) ?
Quand un événement se produit sur un élément imbriqué, il « remonte » ensuite à travers tous ses éléments parents. Ça permet d'utiliser la délégation d'événements : assigner un seul gestionnaire au parent plutôt que plusieurs à ses enfants.
15. Comment empêches-tu le comportement par défaut d'un événement ?
En appelant event.preventDefault() dans le gestionnaire — par exemple, pour qu'un formulaire ne recharge pas la page lors de son envoi.

⏳ Code Asynchrone

16. Qu'est-ce qu'un Promise ?
Un objet qui représente le résultat d'une opération asynchrone — il peut être dans l'un de trois états : pending (en attente), fulfilled (accompli) ou rejected (rejeté).
17. Comment fonctionnent async/await ?
C'est du « sucre syntaxique » au-dessus des promises : une fonction est marquée async, et à l'intérieur await « attend » le résultat d'un promise sans bloquer le reste du code de la page. Le code se lit comme du code synchrone.
18. Quelle est la différence entre setTimeout et setInterval ?
setTimeout exécute du code une fois après un délai défini. setInterval répète l'exécution à un intervalle spécifié jusqu'à être arrêté avec clearInterval.

💬 Questions Générales

19. Qu'est-ce que this en JavaScript ?
Une référence à l'objet dans le contexte duquel une fonction s'exécute. La valeur de this dépend de la façon dont la fonction a été appelée. Les fonctions fléchées n'ont pas leur propre this — elles le prennent du code environnant.
20. Comment trouves-tu généralement la cause d'un bug dans ton code ?
Une bonne réponse : je lis le message d'erreur dans la console, je place des console.log à des points suspects ou j'utilise des breakpoints dans les DevTools, je réduis le problème à une ligne précise, je vérifie les valeurs des variables à chaque étape.

Que faire ensuite

Tu te prépares pour ton premier entretien ?

Le cours de JavaScript couvre non seulement ces sujets, mais de vrais problèmes pratiques — après lui, répondre à ce type de questions devient naturel, pas mémorisé.