Question d'entretien pour Développeur Java

Comment utilisez-vous les records, les types sealed et le pattern matching en Java moderne ?

Ce que le recruteur cherche à évaluer, comment structurer votre réponse et un exemple parlé à adapter.

Réponse rapide

Les records sont des porteurs immuables et transparents : vous déclarez les composants et vous obtenez un constructeur canonique, des accesseurs, equals, hashCode et toString. Les interfaces sealed restreignent les types qui peuvent les implémenter, si bien qu'un switch sur ces types peut être vérifié comme exhaustif à la compilation, sans branche default. Les patterns de record permettent ensuite de déstructurer dans le switch, ce qui transforme une chaîne d'instanceof et de casts en une seule instruction lisible.

Pourquoi les recruteurs posent cette question

Cela date instantanément vos connaissances Java et montre si vous modélisez vos données de façon délibérée. Le recruteur veut entendre que sealed plus records vous donne des types algébriques, qu'un switch exhaustif transforme l'ajout d'un sous-type en erreur de compilation plutôt qu'en surprise à l'exécution, et qu'un record n'est pas juste une classe plus courte : c'est une affirmation que la valeur est un agrégat transparent.

Comment structurer votre réponse

  • Définissez chaque fonctionnalité en une ligne et dites comment elles se combinent.
  • Expliquez l'exhaustivité et pourquoi l'absence de default est justement le but.
  • Donnez un exemple de modélisation réel comme un type résultat ou événement.
  • Notez les limites : les records sont immuables en surface et ne conviennent pas aux entités.

Exemple de réponse

Exemple parlé, à la première personne

Je les utilise ensemble. Une interface sealed déclare l'ensemble fermé des cas, chaque cas est un record avec ses propres composants, puis un switch avec des patterns de record les traite. Donc un résultat de paiement devient une interface sealed avec des records Approved, Declined et Pending, et le switch déstructure chacun directement en ses champs. Le compilateur impose l'exhaustivité, et c'est le vrai bénéfice : quand quelqu'un ajoute un quatrième cas, tous les switch qui traitent ce type ne compilent plus, au lieu de tomber silencieusement dans une branche default et de faire n'importe quoi. Les records m'ont aussi donné un equals et un hashCode corrects gratuitement, et un constructeur compact est un endroit naturel pour valider, donc un montant ne peut pas être négatif sur une instance qui existe. Les réserves que je mentionne : un record n'est immuable qu'en surface, donc un record qui contient une liste peut quand même être modifié via cette liste si je ne la copie pas dans le constructeur, et ils conviennent mal aux entités JPA, qui veulent un constructeur sans argument et un état mutable.

Vous passez cet entretien bientôt ? GhostPilot écoute votre appel en direct, repère la question dès qu'elle est posée et affiche une réponse structurée à l'écran en temps réel. Essayez-le lors de votre prochain entretien blanc, ou prenez un Session Pass à $29, sans abonnement, pour le jour J.

Voir comment ça marche

Questions de relance à prévoir

  • Comment validez-vous à l'intérieur d'un record sans constructeur complet ?
  • Quand écririez-vous quand même une classe classique plutôt qu'un record ?
  • Qu'est-ce qu'une hiérarchie sealed vous apporte qu'une enum n'apporte pas ?

Autres questions pour Développeur Java

Votre recruteur posera sa propre version de celle-ci. Collez votre véritable fiche de poste dans le Question Predictor gratuit et obtenez les 20 questions que ce poste a le plus de chances de poser, avec ce que chacune cherche vraiment à sonder.

Prédire mes questions

Répétez les questions difficiles avant qu'on vous les pose

Entraînez-vous avec un copilote en direct, puis présentez-vous prêt. Un Session Pass à $29 vous accompagne pendant l'entretien, sans abonnement et sans engagement.

Obtenir GhostPilot