6 questions d’entretien d’embauche sur Spring

Le framework Spring a vu le jour en 2002, et il est depuis ce jour l’un des frameworks les plus populaires et aboutis. Pour peu qu’un développeur possède de bonnes connaissances en langage Java, les possibilités offertes par Spring sont infinies. C’est pour cette raison que les entreprises cherchent aujourd’hui à recruter des développeurs capables d’utiliser Spring, et que vous lisez cet article aujourd’hui.

Pour un recruteur, le meilleur moyen d’évaluer les compétences techniques de candidats pour un poste de développeur Spering est d’avoir recours à des tests de programmation. Recevoir les candidats les plus performants en entretien reste bien évidemment indispensable, mais il est important de faire une pré-sélection pour n’accorder du temps qu’aux candidats qui disposent des pré-requis techniques dans la technologie visée.

Voici une liste de 6 questions d’entretien d’embauche sur Spring que vous pouvez poser à vos candidats. Certaines de ces questions sont basiques, et d’autres nécessites une connaissance avancée de Spring.

Citez quelques avantages du framework Spring

Avant que Spring ne prenne de l’importance, JEE était le choix évident pour développer une application. Mais ce dernier présentait de nombreuses limitations. Le code n’était pas assez modulaire, et plus l’application devenait importante, plus il devenait difficile d’identifier ses composants séparément.  De plus, c’était un framework très lourd, qui avait tendance a dégrader les performances.

Spring a réussi a se défaires de tous les écueils du framework J2EE en un claquement de doigt. Spring est uniquement composé de « plain old Java objects » (c’est-à-dire de bons vieux objets Java, bien plus faciles à utiliser).

Enfin, le framework Spring peut-être utilisé pour le développement d’applications à interface graphique, d’applications web, d’applets, etc.

Bonnes réponses :

Cite l’avantage majeur Spring, à savoir la création d’une application composée de « plain old Java objects »

Explique les désavantages des méthodes utilisées auparavant

Réponses alarmantes :

Ne connaît pas les avantages du framework

N’a qu’une idée très basique des composants de Spring

Que pouvez-vous dire à propos de l’acronyme S.O.L.I.D, bien souvent utilisé en programmation orienté objet ?

Michael Feathers est connu pour avoir popularisé l’acronyme S.O.L.I.D, bien que Robert Martin soit l’inventeur de cette ligne directrice créée pour désigner les 5 principes de la programmation orientée objet. S.O.L.I.D signifie :

·        « Single responsibility principle » (Responsabilité unique)

·        « Open/Closed principle » (Ouvert/Fermé)

·        « Liskov substitution principle » (Substitution de Liskov)

·        « Interface segregation principle » (Ségrégation des interfaces)

·        « Dependency inversion principle » (Inversion des dépendances)

Le principe de responsabilité unique préconise qu’une classe ne doit changer que pour une unique raison, et que chaque classe doit avoir une unique responsabilité. Cela signifie que l’on peut mettre un tas de choses dans une seule classe, mais il ne s’agit certainement pas d’une bonne pratique. 

Le principe ouvert/fermé prévoit que toute classe doit être ouverte à l’extension mais fermée à la modification. Il faut uniquement créer des getters et des setters là où ils sont nécessaires, et garder privées les variables.

Selon la substitution de Liskov, les objets d’un programme doivent être remplaçables par leurs sous-types, sans entraîner une erreur.

La ségrégation des interfaces préconise qu’aucun client ne doit dépendre de méthodes qu’il n’utilise pas.

L’inversion des dépendances (à ne pas confondre avec l’injection des dépendances) prévoit que les modules de haut niveau ne doivent pas dépendre des modules de bas niveau, et que les abstractions ne doivent pas dépendre des détails (mais que les détails doivent dépendre des abstractions).

Bonnes réponses :

Connaître les cinq principes

Avoir une idée claire de ces principes, étayer avec des exemples

Prouver une bonne compréhension des enjeux de la programmation orientée objet

Réponses alarmantes :

N’avoir jamais entendu parlé de l’acronyme S.O.L.I.D. 

Incapacité à donner des exemples concrets

Qu’est-ce qu’un conteneur IoC permet de faire sur Spring ?

IoC signifie « inversion of control » (inversion de contrôle).

L’IoC permet de faire en sorte que le framework prenne en charge l’exécution principale du programme. 

Dans le cas de Spring, le conteneur IoC est implémenté au niveau de l’ApplicationContext Interface. Il prend tout en charge : initialisation, configuration et assemblage des beans tout au long de leur cycle de vie.

La configuration de l’IoC peut se faire par le biais de fichiers de configuration XML, d’annotations Java ou directement dans le code source Java.

Bonne réponses :

Démontre une bonne connaissance de l’IoC

Expliquer l’implémentation de l’IoC par Spring grâce à l’injection des dépendances

Réponses alarmantes :

N’a jamais entendu parlé de l’IoC

A du mal à comprendre les enjeux de l’IoC et n’évoque pas du tout la question de l’injection des dépendances

Quelles sont les différences entre l’inversion de contrôle et une implémentation de classes POJO (plain old Java objects) ?

Imaginez que vous avez une interface, et une classe qui implémente cette interface. Cette classe aurait également des méthodes qui écrasent les implémentations de l’interface. Pour exécuter une fonction en particulier, il faudra créer un objet de cette classe, puis exécuter la fonction depuis l’instance de cet objet. Voilà le scénario classique en utilisant des classes POJO.

A l’inverse, si on vient à utiliser le conteneur IoC du Spring, la création d’un objet devient déléguée à une entité externe (Spring en l’occurrence). Un objet nous est alors fourni par le conteneur IoC, et on peut directement appelé les méthodes à l’intérieur.

Bonne réponses :

Explique que la meilleure approche serait de poursuivre l’implémentation

Mauvaises réponses :

Ne parvient pas à différencier ces deux types d’implémentation

Incapacité à expliquer le rôle du conteneur IoC

Pourquoi la configuration en utilisant les annotations est-elle préférable à la configuration XML ?

Depuis la version 2.5 de Spring, l’injection des dépendances peut être réalisable en utilisant les annotations. Cela constitue une avancée majeure car un grand nombre de personnes détestaient l’ancienne norme, à savoir la configuration par le biais de fichiers XML. Grâce à la configuration basée sur les annotations, les dépendances peuvent être injectées directement dans la classe du composant en annotant une classe, un champ ou une méthode pertinente.

Bonne réponses :

Capacité à différencier les deux méthodes

Réponses alarmantes :

Mauvaise connaissance du sujet, difficulté à citer différentes annotations de configuration

Quels sont les atouts et les limites de la programmation réactive ?

La programmation réactive permet de gagner du temps à l’exécution, de simplifier l’écriture de certaines applications, d’éviter certains bugs (oubli de mise à jour de valeur par exemple) et de ne plus avoir à tenir compte de l’ordre de déclenchement des événements.

Malgré ces nombreux avantages, la programmation réactive présente bien évidemment quelques limites. Parmi elles, la difficulté de son implémentation, ou sa nature asynchrone (rendant plus difficile la compréhension et le suivi d’un flux).

Bonnes réponses :

Présente un bon recul par rapport aux avantages et aux inconvénients de la programmation réactive 

Réponses alarmantes :

Ne connaît pas la notion de programmation réactive

N’évoque pas le caractère asynchrone de la programmation réactive

Conclusion

Nous espérons que ces quelques questions pourront vous aider à mieux comprendre comment interroger un développeur Spring lors d’un entretien d’embauche. Toutefois, tester les compétences réelles d’un candidat est beaucoup plus efficace en utilisant une solution de tests techniques de programmation. Ceux-ci permettent d’évaluer tous vos candidats de manière équitable, et de comparer leurs résultats très simplement grâce à des rapports de performance personnalisés.