Carrière & Entretien

Questions d’entretien Développeur Full-Stack au Sénégal

13 دقائق للقراءة

📌 Pilier : Carrière développeur Web au Sénégal — guide complet (à créer)
Voisins : Développeur Frontend Angular · DevOps Engineer · Négocier son salaire de dev en CFA et USD

Que fait un Développeur Full-Stack ?

Un développeur Full-Stack code à la fois la partie visible (frontend) et la partie serveur (backend) d’une application web. Sur les deux offres scrapées en mai 2026 sur emploisenegal et emploidakar, les missions incluent la conception et l’implémentation d’interfaces React ou Vue, la création d’APIs REST avec Node.js ou Java, l’intégration de paiements mobiles ou de services tiers, et la collaboration avec un Product Manager pour traduire les spécifications en fonctionnalités livrables. Le métier est le plus demandé du marché tech sénégalais — environ un quart des offres tech observées. Vous travaillerez chez des recruteurs comme GBG, des éditeurs régionaux, ou des cabinets de prestation comme Alten Senegal qui placent des consultants chez des donneurs d’ordre européens.

Stack technique attendue à Dakar

Sur les deux offres Full-Stack observées (mai 2026), les technologies suivantes ressortent en tête ; cette liste est complétée par les tendances connues du marché ouest-africain pour calibrer les attentes de stack typique :

Si vous débutez et devez choisir un ordre d’apprentissage, commencez par HTML/CSS + JavaScript puis React, et seulement après Node.js côté serveur. Le TypeScript se greffe une fois les bases JS solides.

Salaire moyen au Sénégal pour ce poste

Sur les deux offres scrapées en mai 2026, aucune n’affichait de salaire explicite. Le marché Full-Stack est mature et bien documenté par les cabinets de recrutement régionaux. Croisé avec les fourchettes du marché ouest-africain (sources : Talent.com, Glassdoor, Talent2Africa, Africashore), la grille suivante représente le marché Full-Stack sénégalais à cette date :

Niveau Salaire brut mensuel (XOF) ≈ EUR indicatif
Junior (0-2 ans) 220 000 – 300 000 – 450 000 335 – 460 – 685 €
Confirmé (2-5 ans) 400 000 – 600 000 – 850 000 610 – 915 – 1 295 €
Senior (5+ ans) 700 000 – 1 000 000 – 1 500 000 1 070 – 1 525 – 2 285 €

En freelance, le TJM d’un profil confirmé tourne autour de 80 000 – 130 000 – 230 000 FCFA. Les profils qui ajoutent une composante télétravail international (clients européens ou nord-américains) tirent les fourchettes vers le haut. Pour cadrer la négociation : Négocier son salaire de dev en CFA et USD — guide Afrique de l’Ouest.

Questions d’entretien & réponses

Question 1 : Quelle est la différence entre let, const et var en JavaScript ?

Ce que cherche vraiment le recruteur

Question fondamentale qui apparaît dans 80 % des entretiens Full-Stack et qui filtre les candidats. Le recruteur veut vérifier que vous comprenez la portée (scope), le hoisting et la mutabilité. Il guette une réponse qui mentionne explicitement la portée fonctionnelle de var contre la portée de bloc de let et const, ainsi que le fait que const ne rend pas immuable le contenu d’un objet mais seulement la liaison de la variable. Une mauvaise réponse sur cette question signale un candidat qui copie du code sans comprendre.

Exemple de réponse

var a une portée fonctionnelle et subit le hoisting : la déclaration remonte en haut de la fonction et la variable existe avec la valeur undefined avant la ligne d’affectation. let et const ont une portée de bloc — délimitée par les accolades — et sont en zone morte temporelle avant leur déclaration. La différence entre let et const est que const interdit la réaffectation : const obj = {} ne permet pas obj = {a:1}, mais permet obj.a = 1 car seule la liaison est fixe. En pratique moderne, on utilise const par défaut et let uniquement quand on doit réaffecter ; var n’a plus d’usage légitime dans un projet écrit après 2017.

Question 2 : Expliquez ce qu’est un hook React et donnez un exemple avec useEffect.

Ce que cherche vraiment le recruteur

Le recruteur teste votre maîtrise du modèle moderne de React, qui a remplacé les composants de classe depuis 2019. Il guette une réponse qui définit un hook comme une fonction qui permet à un composant fonctionnel d’accéder à des fonctionnalités du framework (état local, cycle de vie, contexte), avec un exemple useEffect qui montre la dépendance, le nettoyage et le timing d’exécution. Une erreur fréquente est d’oublier le tableau de dépendances ou de mal nettoyer un abonnement.

Exemple de réponse

Un hook est une fonction React préfixée par use qui ajoute des capacités à un composant fonctionnel. useState gère l’état local, useEffect les effets de bord, useContext la consommation d’un contexte. Pour useEffect, voici un exemple typique de récupération de données :

useEffect(() => {
  const controller = new AbortController();
  fetch('/api/users', { signal: controller.signal })
    .then((r) => r.json())
    .then(setUsers);
  return () => controller.abort();
}, []);

Le tableau vide indique « exécuter une seule fois au montage ». La fonction retournée s’exécute au démontage pour annuler le fetch et éviter une mise à jour d’état sur un composant démonté, qui produirait un avertissement console. Si on voulait re-fetcher quand un identifiant change, on l’ajouterait au tableau de dépendances : [userId].

Question 3 : Comment exposez-vous une API REST sécurisée avec Node.js, et comment gérez-vous l’authentification ?

Ce que cherche vraiment le recruteur

Question d’application qui couvre à la fois le backend et la sécurité. Le recruteur évalue votre capacité à structurer un service Express ou NestJS, à protéger les routes, à valider les entrées, et à gérer les jetons d’authentification. Il guette les pièges habituels : secrets en clair dans le code, absence de validation, CORS mal configuré, mots de passe stockés en clair.

Exemple de réponse

J’expose l’API avec Express ou NestJS, en organisant le code en couches : routes, contrôleurs, services, accès données. Les routes sensibles sont protégées par un middleware d’authentification qui vérifie un JWT signé avec une clé HMAC HS256 ou une clé asymétrique RS256, dont la valeur vit dans une variable d’environnement, jamais dans le code. Les entrées sont validées avec Zod ou Joi avant d’atteindre le contrôleur, ce qui rejette les charges malformées avant tout accès à la base. Les mots de passe utilisateur sont hachés avec bcrypt à un coût d’au moins 12. Le CORS est configuré strictement avec une liste blanche d’origines, pas un astérisque. Pour les charges critiques, je rajoute un rate-limiter (express-rate-limit) qui bloque les attaques par force brute sur le login. Les logs sortent au format JSON pour ingestion par un agrégateur.

Question 4 : Quelle est la limite des Server Components React et comment la contournez-vous ?

Ce que cherche vraiment le recruteur

Question moderne, qui teste votre veille techno sur React 19 et Next.js 15. Le recruteur cherche à voir si vous comprenez le découpage server/client, ses bénéfices (chargement initial plus rapide, moins de JavaScript expédié au navigateur) et ses contraintes (pas d’état React, pas d’événements DOM, pas de hooks). Une bonne réponse mentionne la directive "use client" et le motif d’imbrication où un Server Component encapsule un Client Component pour préserver les bénéfices.

Exemple de réponse

Les Server Components s’exécutent uniquement sur le serveur, ce qui les rend incompatibles avec l’état React, les hooks comme useState ou useEffect, et les gestionnaires d’événements DOM. Ils peuvent en revanche accéder directement à la base de données et lire des fichiers, ce qui supprime une couche d’API pour les cas simples. La limite arrive dès qu’on a besoin d’interactivité : un bouton qui change un compteur ou un formulaire qui valide en direct. On contourne en isolant la partie interactive dans un Client Component marqué par "use client" en haut du fichier, puis on l’importe depuis un Server Component parent. Le détail du choix entre les deux est traité dans Server vs Client Components — où placer la frontière en React 19.

Question 5 : Une application Full-Stack en production perd 30 % de ses requêtes API depuis ce matin. Comment procédez-vous ?

Ce que cherche vraiment le recruteur

Mise en situation qui évalue votre méthode de diagnostic. Le recruteur cherche un candidat structuré qui ne saute pas sur la première hypothèse et qui distingue les couches : client, réseau, équilibreur de charge, application, base de données. Une bonne réponse suit une séquence d’isolation : observer les métriques, lire les logs, formuler des hypothèses, tester en commençant par la moins coûteuse.

Exemple de réponse

Je commence par regarder le dashboard de supervision pour qualifier l’incident : depuis quand, quel pourcentage exact, quelles routes affectées, quel code HTTP. Si les erreurs sont des 502 ou 504, je suspecte le backend ou la base ; si ce sont des 401 ou 403, plutôt un changement de configuration sur l’authentification. Je consulte ensuite les logs applicatifs sur les dernières heures pour identifier un changement récent : déploiement, mise à jour de dépendance, rotation de secret. Je vérifie la base de données : nombre de connexions actives, requêtes lentes, espace disque. Si je trouve un déploiement récent corrélé au début de l’incident, je rollback sans hésiter, puis je rouvre l’enquête à froid. Sinon, je restreins le champ en isolant une route et en reproduisant l’erreur sur un environnement de staging. Je tiens un journal d’incident écrit en temps réel pour le post-mortem.

Question 6 : Décrivez un projet où vous avez dû convaincre une équipe non-technique d’un choix d’architecture.

Ce que cherche vraiment le recruteur

Question comportementale au format STAR. Le recruteur évalue votre capacité à vulgariser, à présenter des arbitrages chiffrés et à porter une décision technique face à des interlocuteurs qui parlent un autre langage. Il guette une réponse concrète, pas une généralité, avec un résultat mesurable.

Exemple de réponse

Sur un projet de plateforme e-commerce pour une PME, l’équipe métier voulait un seul serveur monolithique pour simplifier l’exploitation, alors que l’application devait servir 50 000 visiteurs lors des opérations promotionnelles. J’ai préparé un comparatif chiffré sur trois options : monolithe sur un VPS unique, application séparée frontend + API avec autoscaling, microservices complets. J’ai présenté les coûts mensuels estimés, le temps de mise en place, et le coût d’un éventuel pic non absorbé. Le choix s’est porté sur l’option médiane : un frontend Next.js sur Vercel et une API Node.js sur deux instances derrière un équilibreur de charge, avec autoscaling. Le coût mensuel est resté sous le budget initial, la première campagne de soldes a tenu sans incident, et l’équipe métier a validé la démarche pour les projets suivants.

Difficulté de l’entretien

6 / 10 — Moyen

Le process Full-Stack au Sénégal se déroule typiquement en trois étapes : pré-qualification téléphonique avec la RH, entretien technique d’environ une heure avec un lead développeur, et entretien final avec le manager ou le responsable produit. Un test technique à la maison d’environ trois à cinq heures est devenu standard pour les confirmés et seniors — généralement la création d’une mini-application React + API avec une logique métier précise. Le live-coding court (45 minutes, deux problèmes algorithmiques de niveau LeetCode facile à moyen) reste optionnel sauf chez les éditeurs ou les startups bien financées. L’anglais technique en lecture est attendu ; à l’oral, il est requis seulement pour les missions chez des donneurs d’ordre internationaux.

Difficulté du métier

7 / 10 — Difficile

Le Full-Stack demande une largeur de stack peu commune : frontend, backend, base de données, déploiement, parfois sécurité et performance. Le quotidien combine debugging de problèmes touchant plusieurs couches, veille techno permanente (React, Node, écosystème npm changent vite), et pression de livraison fréquente. Le risque opérationnel est réel : une régression peut casser le tunnel d’achat ou l’authentification, avec impact immédiat sur les utilisateurs. L’autonomie attendue est forte dès le confirmé : le développeur Full-Stack porte des fonctionnalités de bout en bout sans demander d’arbitrage à chaque étape. La compensation est que le métier offre une grande employabilité — c’est le rôle le plus polyvalent du marché — et un éventail d’évolutions vers tech lead, freelance international ou architecte.

Pré-requis pour ce poste

  • Diplôme Bac+3 à Bac+5 en informatique, ou expérience démontrée équivalente (bootcamp + portfolio).
  • Expérience minimale typique : 0 à 2 ans pour les juniors, 3 à 5 ans pour les confirmés.
  • Maîtrise solide de JavaScript ou TypeScript, HTML, CSS.
  • Pratique opérationnelle d’au moins un framework frontend (React, Vue ou Angular).
  • Pratique d’au moins un environnement backend (Node.js, Python, PHP, Java).
  • Connaissance d’au moins une base relationnelle (PostgreSQL ou MySQL) et notions de modélisation.
  • Pratique de Git et du workflow par branches avec pull requests.
  • Anglais technique lu et écrit ; anglais oral seulement pour les missions internationales.
  • Notions de Docker et de déploiement sur un cloud (AWS, GCP, OVH ou Hetzner).

Pour aller plus loin

Si vous visez aussi un poste plus spécialisé comme Développeur Frontend Angular ou que vous voulez basculer côté ops avec un rôle de DevOps Engineer, notre bibliothèque d’articles entretien détaille les divergences techniques entre ces métiers.

Pour solidifier votre stack côté React, le tutoriel React 19 + Next.js 15 : architecture full-stack moderne couvre l’architecture attendue en 2026, et Quand choisir MongoDB plutôt que PostgreSQL aide à argumenter vos choix de base de données en entretien.

→ Voir tous les articles du cluster (à créer)

Références techniques (sources primaires vérifiées)

Autres entretiens techniques

Sponsoriser ce contenu

Cet emplacement est à vous

Position premium en fin d'article — c'est l'instant où les lecteurs sont le plus engagés. Réservez cet espace pour votre marque, votre formation ou votre offre.

Recevoir nos tarifs
Publicité