décembre 21, 2025
10 min de lecture

Questions d’entretien Java Backend Developer : Spring Boot et JPA

interview
career-advice
job-search
Questions d’entretien Java Backend Developer : Spring Boot et JPA
Milad Bonakdar

Milad Bonakdar

Auteur

Préparez vos entretiens avec des questions ciblées sur Spring Boot, les API REST, les microservices, JPA/Hibernate, la sécurité, les tests et l’architecture.


Introduction

Un entretien Java backend vérifie surtout si vous savez construire et exploiter des API fiables, pas seulement réciter des noms de frameworks. Attendez-vous à des questions sur Spring Boot, le design REST, la persistance, les transactions, les tests, la sécurité, l’observabilité et les compromis d’architecture en microservices.

Utilisez ce guide pour préparer des réponses reliées au terrain : à quoi sert la notion, quand l’utiliser, ce qui peut mal tourner et comment vous testeriez ou débogueriez. En 2026, il est aussi utile de connaître les bases Java 17+, les discussions Java 21/25, les projets Spring Boot 3/4 et la sécurité d’API moderne avec OAuth2/JWT.

Comment utiliser ce guide

  • Commencez par les bases faciles de Spring Boot et Java, puis entraînez-vous à voix haute sur les questions moyennes et difficiles.
  • Ajoutez à chaque réponse un exemple de projet tiré de votre CV ou portfolio.
  • Pour chaque compromis, indiquez votre choix par défaut et le signal qui vous ferait changer d’approche.
  • Si votre CV mentionne microservices, JPA, Kafka, Docker ou cloud, préparez une histoire concrète de panne ou de debugging.

Concepts fondamentaux de Spring Boot

1. Qu'est-ce que Spring Boot et en quoi diffère-t-il du framework Spring traditionnel ?

Réponse :

  • Spring Framework : Un framework complet pour le développement Java d'entreprise. Il nécessite une configuration manuelle importante (XML ou basée sur Java) pour être mis en place.
  • Spring Boot : Une extension du Spring Framework qui simplifie la configuration et le développement de nouvelles applications Spring.
    • Auto-Configuration : Configure automatiquement les beans en fonction des dépendances du classpath.
    • Serveurs intégrés : Inclut Tomcat, Jetty ou Undertow, vous n'avez donc pas besoin de déployer des fichiers WAR.
    • Starters : Dépendances organisées pour simplifier la configuration de la construction.
    • Valeurs par défaut orientées : Approche "La convention plutôt que la configuration".

Rareté : Courant Difficulté : Facile


2. Expliquez l'annotation @SpringBootApplication.

Réponse : C'est une annotation de commodité qui combine trois autres annotations :

  1. @Configuration : Marque la classe comme source de définitions de bean.
  2. @EnableAutoConfiguration : Indique à Spring Boot de commencer à ajouter des beans en fonction des paramètres du classpath, d'autres beans et de divers paramètres de propriété.
  3. @ComponentScan : Indique à Spring de rechercher d'autres composants, configurations et services dans le package actuel et les sous-packages.

Rareté : Courant Difficulté : Facile


3. Que sont l'injection de dépendances (DI) et l'inversion de contrôle (IoC) ?

Réponse :

  • IoC : Un principe où le contrôle de la création et de la gestion des objets est transféré du programmeur à un conteneur (Spring IoC Container).
  • DI : Un patron de conception utilisé pour implémenter IoC. Au lieu qu'un objet crée ses dépendances, elles sont "injectées" dans celui-ci (via le constructeur, le setter ou le champ).
  • Avantage : Découplage, tests plus faciles (simulation des dépendances) et meilleure maintenabilité.

Rareté : Très courant Difficulté : Moyenne


4. Que sont les Spring Boot Starters ? Donnez des exemples.

Réponse : Les Starters sont un ensemble de descripteurs de dépendances pratiques que vous pouvez inclure dans votre application. Ils contiennent toutes les dépendances dont vous avez besoin pour démarrer rapidement un projet avec un ensemble cohérent et pris en charge de dépendances transitives gérées.

  • Exemples :
    • spring-boot-starter-web : Pour la création d'applications web (inclut Tomcat et Spring MVC).
    • spring-boot-starter-data-jpa : Pour l'utilisation de Spring Data JPA avec Hibernate.
    • spring-boot-starter-test : Pour les tests (inclut JUnit, Mockito).
    • spring-boot-starter-security : Pour Spring Security.

Rareté : Courant Difficulté : Facile


5. Qu'est-ce que Spring Actuator ?

Réponse : Spring Boot Actuator fournit des fonctionnalités prêtes à l'emploi pour vous aider à surveiller et à gérer votre application.

  • Endpoints : Expose des endpoints tels que /health (état de l'application), /metrics (mémoire, utilisation du CPU), /info (informations sur l'application), /env (propriétés de l'environnement).
  • Utilisation : Essentiel pour les équipes d'exploitation afin de vérifier la santé des microservices en production.

Rareté : Courant Difficulté : Moyenne


Microservices et architecture

6. Quels sont les avantages des microservices par rapport à l'architecture monolithique ?

Réponse :

  • Évolutivité : Les services individuels peuvent être mis à l'échelle indépendamment en fonction de la demande.
  • Agnostique en matière de technologie : Différents services peuvent utiliser différentes technologies (Java, Go, Python) les mieux adaptées à la tâche.
  • Isolation des pannes : Une panne dans un service n'entraîne pas nécessairement la chute de l'ensemble du système.
  • Déploiement indépendant : Les équipes peuvent déployer des services indépendamment, ce qui permet des cycles de publication plus rapides (CI/CD).

Rareté : Courant Difficulté : Moyenne


7. Qu'est-ce qu'une passerelle API ? Pourquoi l'utiliser ?

Réponse : Une passerelle API est un serveur qui sert de point d'entrée unique dans le système. Elle prend tous les appels API des clients, puis les achemine vers le microservice approprié.

  • Fonctions : Routage des requêtes, composition et traduction de protocoles.
  • Préoccupations transversales : Authentification, terminaison SSL, limitation du débit, mise en cache, journalisation.
  • Exemples : Spring Cloud Gateway, Netflix Zuul, Kong.

Rareté : Très courant Difficulté : Moyenne


8. Expliquez la découverte de services (Eureka).

Réponse : Dans un environnement de microservices, les instances de service ont des adresses IP dynamiques. La découverte de services est un mécanisme permettant aux services de se trouver les uns les autres.

  • Eureka Server : Agit comme un registre de services.
  • Eureka Client : Les microservices s'enregistrent auprès du serveur Eureka au démarrage et envoient des battements de cœur.
  • Découverte : Lorsque le service A doit appeler le service B, il demande à Eureka l'adresse du service B.

Rareté : Courant Difficulté : Moyenne


9. Qu'est-ce que le patron Circuit Breaker ?

Réponse : Le patron Circuit Breaker empêche une application d'essayer à plusieurs reprises d'exécuter une opération susceptible d'échouer (par exemple, appeler un service en panne).

  • États :
    • Fermé : Les requêtes circulent normalement.
    • Ouvert : Les requêtes sont bloquées immédiatement (fail fast) pour permettre au service défaillant de récupérer.
    • Semi-ouvert : Un nombre limité de requêtes est autorisé à passer pour tester si le service a récupéré.
  • Outils : Resilience4j (recommandé), Hystrix (déprécié).

Rareté : Très courant Difficulté : Difficile


Base de données et JPA

10. Que sont JPA et Hibernate ?

Réponse :

  • JPA (Java Persistence API) : Une spécification pour l'accès, la persistance et la gestion des données entre les objets Java et une base de données relationnelle. Ce n'est qu'une interface.
  • Hibernate : L'implémentation la plus populaire de la spécification JPA. C'est un outil ORM (Object-Relational Mapping).

Rareté : Courant Difficulté : Facile


11. Expliquez le problème de sélection N+1 dans Hibernate.

Réponse : Le problème N+1 se produit lorsque le framework d'accès aux données exécute N instructions SQL supplémentaires pour extraire les mêmes données qui auraient pu être récupérées lors de l'exécution de la requête SQL principale.

  • Scénario : Extraction d'une liste d'Author (1 requête). Itération et accès à author.getBooks() (N requêtes, une pour chaque auteur).
  • Solution : Utilisez Join Fetch dans JPQL (SELECT a FROM Author a JOIN FETCH a.books) ou Entity Graphs pour charger les entités liées de manière anticipée dans une seule requête.

Rareté : Très courant Difficulté : Moyenne


12. Quelle est la différence entre @Entity, @Table et @Column ?

Réponse :

  • @Entity : Spécifie que la classe est une entité et est mappée à une table de base de données.
  • @Table : Facultatif. Spécifie le nom de la table de base de données à utiliser pour le mappage. Si elle est omise, le nom de la classe est utilisé.
  • @Column : Facultatif. Spécifie les détails de la colonne à laquelle un champ ou une propriété sera mappé. Si elle est omise, le nom du champ est utilisé.

Rareté : Courant Difficulté : Facile


Sécurité et tests

13. Comment sécuriser une application Spring Boot ?

Réponse : Utilisez Spring Security comme base, puis expliquez le modèle adapté au type d’application. Une bonne réponse distingue authentification, autorisation, validation des tokens et protections opérationnelles.

  • Authentification : Vérifie qui appelle l’API, souvent via OAuth2/OIDC, une session web ou des identifiants service-à-service.
  • Autorisation : Limite ce que l’appelant peut faire avec des rôles, des scopes, la sécurité de méthode comme @PreAuthorize et les règles d’un SecurityFilterChain.
  • JWT/OAuth2 resource server : Pour les API stateless, validez les bearer tokens, l’émetteur, l’expiration, la signature et les scopes au lieu de faire confiance au contenu du token.
  • Durcissement d’API : HTTPS, CORS configuré explicitement, CSRF pour les sessions navigateur, erreurs sûres, rate limiting et audit des actions sensibles.

Rareté : Courant Difficulté : Moyenne


14. Quelle est la différence entre @Mock et @InjectMocks dans Mockito ?

Réponse :

  • @Mock : Crée un objet mock de la classe/interface. Il n'a pas de comportement réel ; vous définissez son comportement à l'aide de when(...).thenReturn(...).
  • @InjectMocks : Crée une instance de la classe et injecte les mocks qui sont créés avec les annotations @Mock (ou @Spy) dans cette instance. Utilisé pour la classe testée.

Rareté : Courant Difficulté : Moyenne


15. Comment gérer les transactions dans Spring Boot ?

Réponse : En utilisant l'annotation @Transactional.

  • Mécanisme : Spring crée un proxy autour de la classe/méthode. Il démarre une transaction avant l'exécution de la méthode et la valide après le retour de la méthode. Si une RuntimeException est levée, il annule la transaction.
  • Propagation : Vous pouvez configurer la relation de la transaction avec les transactions existantes (par exemple, REQUIRED, REQUIRES_NEW).

Rareté : Courant Difficulté : Moyenne


Sujets avancés

16. Qu'est-ce que Spring Cloud Config ?

Réponse : Spring Cloud Config fournit une prise en charge côté serveur et côté client pour la configuration externalisée dans un système distribué.

  • Config Server : Emplacement central pour gérer les propriétés externes des applications dans tous les environnements. Il peut être soutenu par Git, SVN ou Vault.
  • Avantage : Vous pouvez modifier la configuration sans redéployer l'application (à l'aide de @RefreshScope).

Rareté : Peu courant Difficulté : Moyenne


17. Expliquez la différence entre la portée Singleton et Prototype dans les Spring Beans.

Réponse :

  • Singleton (par défaut) : Une seule instance du bean est créée par conteneur Spring IoC. Elle est mise en cache et réutilisée.
  • Prototype : Une nouvelle instance est créée chaque fois que le bean est demandé.
  • Autres : Request, Session (portées web-aware).

Rareté : Courant Difficulté : Facile


18. Quelle est la différence entre les exceptions Checked et Unchecked en Java ?

Réponse :

  • Exceptions Checked : Héritent de Exception (mais pas de RuntimeException). Le compilateur vous oblige à les gérer (try-catch) ou à les déclarer (throws). Exemple : IOException, SQLException. Représentent des conditions récupérables.
  • Exceptions Unchecked : Héritent de RuntimeException. Le compilateur ne vous oblige pas à les gérer. Exemple : NullPointerException, IllegalArgumentException. Représentent des erreurs de programmation. @Transactional de Spring annule uniquement les exceptions non vérifiées par défaut.

Rareté : Courant Difficulté : Facile


19. Comment fonctionne le ramasse-miettes (Garbage Collection) en Java ?

Réponse : Le ramasse-miettes (Garbage Collection - GC) est le processus de récupération automatique de la mémoire occupée par les objets qui ne sont plus accessibles.

  • Hypothèse générationnelle : La plupart des objets meurent jeunes.
  • Structure du tas (Heap) : Génération jeune (Eden, espaces Survivor) et Génération ancienne.
  • Minor GC : Nettoie la génération jeune. Rapide.
  • Major/Full GC : Nettoie la génération ancienne. Plus lent, peut provoquer des pauses "Stop-the-world".
  • Algorithmes : G1GC (par défaut dans Java moderne), ZGC, Shenandoah (faible latence).

Rareté : Courant Difficulté : Difficile


20. Que sont les flux Java (Java Streams) ?

Réponse : Introduits dans Java 8, les flux (Streams) fournissent une approche fonctionnelle du traitement des collections d'objets.

  • Fonctionnalités : Déclaratif, Pipelining, Itération interne.
  • Opérations :
    • Intermédiaire : filter, map, sorted (lazy).
    • Terminal : collect, forEach, reduce (déclenchent le traitement).
  • Flux parallèles : Peuvent traiter les données en parallèle à l'aide de plusieurs threads (.parallelStream()).

Rareté : Courant Difficulté : Moyenne

Newsletter subscription

Conseils de carrière hebdomadaires qui fonctionnent vraiment

Recevez les dernières idées directement dans votre boîte de réception

Créez un CV qui Vous Fait Embaucher 60% Plus Vite

En quelques minutes, créez un CV personnalisé et compatible ATS qui a prouvé obtenir 6 fois plus d'entretiens.

Créer un meilleur CV

Partager cet article

Doublez Vos Rappels d'Entretien

Les candidats qui adaptent leur CV à la description du poste obtiennent 2,5 fois plus d'entretiens. Utilisez notre IA pour personnaliser automatiquement votre CV pour chaque candidature instantanément.