top 48 spring interview questions
Liste des questions et réponses d'entretien de printemps les plus fréquemment posées pour vous aider à vous préparer à l'entretien à venir:
Dans cet article, nous découvrirons le Spring Framework le plus populaire et le plus utilisé. Il comprend les questions Spring Framework et Spring MVC pour les novices et les professionnels expérimentés. Cependant, avant d'aller plus loin dans la partie printemps, comprenons ce qu'est un Framework et pourquoi nous avons besoin d'un framework en plus?
Un cadre en termes simples peut être compris comme une certaine frontière qui est déjà construite pour que d'autres choses viennent et s'accumulent pour effectuer une certaine action.
Dans la terminologie logicielle, un Framework peut être défini comme une certaine application déjà développée contenant de nombreuses fonctionnalités et fonctionnalités pour prendre en charge toute application en mode développement.
Cadre de printemps
Un framework contient plusieurs classes et composants prêts à l'emploi, qu'un développeur n'a pas besoin de créer pour développer une application, réduisant ainsi beaucoup de complexité du code et rendant l'application facile à maintenir. Cela permet également de gagner du temps, d'où une réduction des coûts.
Printemps Framework est connu comme un framework léger en raison de sa petite taille et de sa grande efficacité. Il est open-source et fournit donc une infrastructure solide pour développer des applications Java de manière simple et facile. Il prend en charge différents autres frameworks tels que Hibernate, Struts, EJB, etc.
Il est divisé en certains modules pour réaliser plusieurs choses simultanément. Les modules Spring incluent le module de base, le module Web, le module d'intégration de données, le module de test, le module AOP, etc. Chaque module sert son propre objectif selon les exigences des développeurs.
Dans cet article, nous couvrirons tous les sujets importants du printemps qui sont importants du point de vue de l'entretien.
Nous couvrirons ce qu'est un Spring Framework, ses types de modules, le concept d'injection de dépendance et d'inversion de contrôle, le bean et son cycle de vie, les différentes portées du bean, le concept d'autowiring, la gestion des événements au printemps, Spring AOP, la gestion des transactions Spring , Spring MVC et son architecture coulent.
Nous aborderons également les annotations importantes utilisées dans différents modules de ressorts et configurations, et sur les conteneurs à ressorts.
Quelques exemples de code de concepts très importants ont été expliqués ici et ils vous aideront à les expliquer de manière détaillée. Des liens supplémentaires ont été fournis pour faire référence à l'exemple d'exemple Spring MVC. Nous avons expliqué le concept de servlet répartiteur de manière très raffinée.
Avec ces réponses nettes et point à point, vous serez en mesure de répondre à la plupart des questions d'entrevue en toute confiance.
Questions et réponses sur les entretiens de printemps les plus populaires
Explorons les questions d'entretien du cadre Spring les plus fréquemment posées avec des réponses détaillées et des exemples.
Q # 1) Qu'est-ce qu'un cadre? Expliquez le framework Spring.
Répondre: Framework est un logiciel déjà construit qui aide les développeurs à ajouter plus de fonctionnalités à leurs applications en utilisant des classes et des bibliothèques déjà construites.
Spring Framework est un framework d'injection de dépendances, qui aide les développeurs à développer des applications basées sur Java. Spring est un framework open-source pour Java Enterprise.
Q # 2) Pourquoi Spring est-il préféré aux autres frameworks?
Répondre: Spring est préféré aux autres frameworks en raison des fonctionnalités ci-dessous:
- Très petite taille et léger
- Aide à réaliser une application faiblement couplée par inversion de contrôle.
- Prise en charge AOP
- Cadre MVC
- Bonne fonctionnalité de gestion des transactions
- Conteneur à ressort
- Gestion des exceptions
Q # 3) Catégorisez les différents types de modules dans Spring Framework.
Répondre: Le cinq modules principaux de Spring Framework sont mentionnés ci-dessous:
- Spring Core Container qui comprend le noyau, les beans, le contexte et le langage d'expression.
- AOP et aspects.
- Module d'intégration de données qui comprend JDBC, OXM, ORM, des modules de transaction, etc.
- Module Web qui comprend le Web, le servlet, les struts et le portlet.
- Test
Q # 4) Expliquez le fichier de configuration Spring.
Répondre: Un fichier XML contient toutes les informations sur les classes ainsi que leur processus de configuration et la manière dont ces classes ont interagi avec les autres classes.
Q # 5) Expliquez le concept d'injection de dépendance.
Répondre: Premièrement, l'injection signifie le transfert de la dépendance à n'importe quel objet dépendant.
L'injection de dépendances est une sorte de modèle de conception qui aide à développer une application faiblement couplée. Il s'agit d'une implémentation d'inversion de contrôle qui aide à résoudre les dépendances dans une application.
Il évite la création d'objet propre et guide plutôt la façon dont les objets doivent être créés via des configurations, puis le CIO décide quels services doivent être mis en correspondance avec quels composants.
L'injection de dépendances est la fonctionnalité principale de Spring Framework.
Q # 6) Quels sont les différents types d'injection de dépendance? Expliquez-les.
Répondre: Il existe deux types d'injection de dépendances. Ils sont les suivants:
- Injection de dépendances basée sur la construction - Il est réalisé lorsque le conteneur Spring appelle un constructeur avec des arguments et chacun ayant une certaine dépendance à l'autre classe.
- Injection de dépendance basée sur un poseur Cela est réalisé lorsque le conteneur Spring appelle la méthode setter de beans après avoir appelé un constructeur sans argument pour instancier le bean.
Q # 7) Quel est bon à utiliser - Dépendance basée sur un constructeur ou un Setter?
Répondre: Les deux types d'injection de dépendances peuvent être utilisés en conséquence en fonction des situations. C'est une règle empirique, que pour la dépendance obligatoire, l'injection de dépendance basée sur le constructeur est utilisée tandis que pour la dépendance facultative, l'injection de dépendance basée sur le setter est utilisée.
Q # 8) Quels sont les avantages de l'inversion de contrôle?
Répondre: Il y a plusieurs avantages de IOC, et peu d'entre eux sont mentionnés ci-dessous:
- IOC est capable de réduire la complexité du code en réduisant le code dans l'application.
- En utilisant IOC dans l'application, les tests deviennent plus simples et faciles car aucune recherche et des singletons ne sont nécessaires.
- Le couplage lâche est réalisé par IOC et cela, à son tour, rend le code plus maintenable.
- IOC prend en charge l'instanciation précoce et le chargement tardif des services.
Q # 9) Expliquez le concept d'AOP.
Répondre: AOP est l'acronyme de Aspect Oriented Programming. C'est une autre approche de programmation qui aide les développeurs à restructurer le comportement des responsabilités telles que la gestion des transactions et la journalisation.
AOP est implémenté pour des préoccupations transversales, c'est-à-dire que la définition est fournie en un seul endroit et qu'elle peut être utilisée fonctionnellement à de nombreux endroits à l'aide du script.
Q # 10) Expliquez l'utilisation de Spring Container.
Répondre: C'est la partie centrale et l'épine dorsale du framework Spring. Le conteneur Spring permet de créer des objets, de combiner les objets entre eux, de gérer leurs configurations et de compléter le cycle de vie de création, de mise en œuvre et de destruction.
Le conteneur Spring utilise l'aide d'Injection de dépendances pour gérer les composants qui construisent l'application.
Q # 11) Quels sont les différents types de conteneurs IOC?
Réponse: Le conteneur IOC est de deux types comme indiqué ci-dessous:
- Usine de haricots - C'est un conteneur simple et fournit un support pour l'injection de dépendances.
- Application de printempsContexte - C'est un conteneur avancé qui ajoute des fonctionnalités complexes telles que le décodage des messages textuels à partir de fichiers et est capable de publier des événements pour les écouteurs.
Q # 12) Quelle est la mise en œuvre du conteneur Bean Factory?
Répondre: La classe XmlBeanFactory est l'implémentation la plus importante de la fabrique de bean et est utile pour lire les données des fichiers XML.
Q # 13) Quelle est l'implémentation du conteneur ApplicationContext?
Répondre: Certains des conteneurs ApplicationContext les plus couramment utilisés incluent FileSystemXmlApplicationContext, ClassPathXmlApplicationContext et WebXmlApplicationContext, etc.
Q # 14) Que sont les haricots au printemps?
Répondre: Les Spring Beans ne sont rien d'autre que de simples objets Java gérés par le conteneur Spring.
Exemple:
package com.javaworld; public class Demo { private String message; public void setMessage(String message){ this.message = message; } public void getMessage(){ System.out.println('Display Information: ' + message); } }
Q # 15) Quels sont les composants de la définition de bean?
Répondre: Fondamentalement, la définition du bean contient les métadonnées de configuration utilisées par le conteneur Spring pour connaître des détails tels que le processus de création du bean, le cycle de vie du bean et les dépendances d'un bean.
Q # 16) De quelles manières les métadonnées de configuration peuvent-elles être fournies au conteneur Spring?
Répondre: Les métadonnées de configuration peuvent être fournies au conteneur Spring de trois manières, à savoir via un fichier de configuration XML, une configuration basée sur des annotations et une configuration basée sur Java.
Q # 17) Quelle est la syntaxe pour ajouter un bean dans l'application Spring?
Réponse: Syntaxe:
Q # 18) Quels sont les types de portée de bean?
Répondre: La portée du bean peut être définie comme un singleton et un prototype, une requête, une session, une session globale, etc.
- Le prototype est déclaré lorsqu'une nouvelle instance de bean est requise à chaque fois.
- Singleton est déclaré lorsque la même instance de bean est utilisée à chaque fois.
- La requête est utilisée pour la portée de la requête HTTP.
- La session est utilisée pour la portée de la session HTTP.
- La session Global-HTTP étend le bean à la session HTTP globale.
Syntax:
Q # 19) Quelle est la portée par défaut de bean au printemps? De plus, sont-ils synchronisés?
Répondre: La portée par défaut du bean dans Spring est Singleton. De plus, ils ne sont pas synchronisés, c'est-à-dire qu'ils ne sont pas thread-safe.
Q # 20) Quel est le cycle de vie d'un haricot au printemps?
Répondre: Le cycle de vie d'un Spring Bean suit certaines étapes, comme mentionné ci-dessous:
- Instanciation - Le conteneur Spring du fichier XML trouve la définition du bean, puis le bean est instancié.
- Remplir les propriétés - Le conteneur Spring remplit toutes les propriétés mentionnées dans la définition du bean à l'aide de l'injection de dépendances.
- Définition du nom de Bean.
- Réglage de la fabrique de grains.
- Pré-initialisation et initialisation du bean.
- Post initialisation du bean.
- Détruisez le bean en appelant la méthode destroy ().
Q # 21) Qu'entendez-vous par haricots intérieurs?
Répondre: Le bean qui est défini à l'intérieur de la propriété ou de l'élément constructeur est appelé un bean interne.
Aucun ID ou nom spécifique n'est requis pour le bean interne, en fait, le conteneur Spring évite ces valeurs avec la définition de la portée. Les beans internes sont dits anonymes et leur portée est toujours définie comme des prototypes.
Q # 22) Quelles sont les façons d'insérer le concept de collection au printemps?
Répondre: Fondamentalement, il y a quatre éléments de collection à insérer dans Spring.
Elles sont:
- élément - Il câble l'ensemble des valeurs en éliminant les doublons.
- élément - Il est utile d'insérer ou d'injecter des valeurs et permet également de dupliquer des valeurs.
- élément - Il est utilisé pour insérer une clé ou une paire nom-valeur qui peut être de n'importe quel type.
- élément - Il est utilisé pour insérer des paires clé ou nom-valeur, mais le type ne doit être que la chaîne.
Q # 23) Expliquez le concept de câblage automatique.
Répondre: L'autowiring est un concept essentiel dans Spring Framework. Il est utilisé pour injecter implicitement une dépendance d'objet en utilisant une injection basée sur un setter ou un constructeur. Le câblage automatique fonctionne uniquement avec les types référence, il n'est donc pas utile pour injecter des valeurs pour les types primitifs et chaîne.
Le meilleur avantage de l'autowire est que les développeurs doivent écrire moins de code car l'injection de dépendances est prise en charge par autowire. En outre, le programmeur n'a pas contrôlé le processus alors.
Syntax:
Lecture recommandée => Annotation de ressort automatique, Spring Bean Autowire Byname
Q # 24) Expliquez les différents modes de câblage automatique.
Répondre: Le câblage automatique est livré avec cinq modes, qui guident le conteneur Spring pour l'utilisation de la fonction d'injection de dépendance.
- Pas de mode - Il est appelé comme paramètre par défaut et implique que le câblage automatique est désactivé et qu'un bean explicite doit être utilisé pour le câblage de référence.
- de nom - Le câblage automatique peut être effectué par nom de propriété. Le conteneur Spring recherche dans le fichier de configuration XML les beans dont l'attribut autowire est défini sur byName.
- par type - Le câblage automatique peut être effectué par type de propriété. Le conteneur Spring recherche dans le fichier de configuration XML les beans dont l'attribut autowire est défini sur byType.
- Constructeur - C'est presque la même chose pour byType mais le type est applicable pour les arguments de constructeur si aucun type d'argument de constructeur n'est trouvé dans le conteneur, une erreur est générée.
- Détection automatique - Il fait référence au comportement de Spring montrant sa priorité de choix. Premièrement, Spring choisit le câblage automatique à l'aide du constructeur, si cela ne se produit pas, il change la priorité en byType.
Q # 25) Y a-t-il une limitation du câblage automatique? Si oui, expliquez.
Répondre: Oui, il existe certaines limitations du câblage automatique qui sont mentionnées ci-dessous:
- Il y a toujours une possibilité de passer outre.
- Le développeur ne pourra pas activer automatiquement les propriétés primitives et Spring.
- Le câblage automatique devient complexe lorsqu'il est utilisé dans de grandes applications par rapport au câblage explicite.
Q # 26) Qu'est-ce que le câblage d'annotation et comment l'activer?
Répondre: L'utilisation alternative de XML consiste en des annotations dans lesquelles les développeurs déplacent la configuration entière dans une classe à l'aide d'annotations pour une classe ou une méthode particulière.
Il est activé dans le fichier de configuration Spring en déclarant.
Q # 27) À quoi sert l'annotation @Required?
Répondre: Il est utilisé pour indiquer qu'au moment de la configuration, la propriété du bean doit être renseignée via l'autowiring ou une valeur de propriété explicite dans la définition du bean.
Exemple:
package com.softwaretestinghelp; import org.Springframework.beans.factory.annotation.Required; public class Employee { private Integer age; private String Lname; @Required public void setAge(Integer age) { this.age = age; } public Integer getAge() { return age; } @Required public void setLName(String Lname) { this.name = name; } public String getLName() { return name; } }
Q # 28) À quoi sert l'annotation @Autowired?
Répondre: Cela permet d'obtenir un meilleur contrôle et une meilleure compréhension de la manière et de l'endroit où l'autowiring doit être réalisé. Il peut être utilisé pour le bean autowire sur n'importe quelle méthode, propriété ou constructeur de setter.
Exemple:
package com.softwaretestinghelp; import org.Springframework.beans.factory.annotation.Autowired; public class code-editor { private SpellCheck spellCheck; @Autowired public void setSpellCheck( SpellCheck spellCheck ){ this.spellCheck = spellCheck; } public SpellCheck getSpellCheck( ) { return spellCheck; } public void spellCheck() { spellCheck.checkSpelling(); } }
Q # 29) À quoi sert l'annotation @Qualifier?
Répondre: Il est principalement utilisé lorsque le développeur est tenu de créer de nombreux beans du même type et souhaite n'en câbler qu'un seul avec la propriété, dans ce scénario @Qualifier avec @Autowired est utilisé pour supprimer la confusion et spécifier le bean exact à câbler .
Q # 30) Comment un événement est-il géré au printemps?
Répondre: La gestion des événements est réalisée via la classe ApplicationEvent et l'interface ApplicationListner.
Lorsque le bean implémente ApplicationListner, ApplicationEvent est généré dans ApplicationContext et notifie que le bean est généré.
Q # 31) Quels sont les exemples d'événements de printemps standard?
Répondre: Il existe de nombreux événements Spring standard ayant un objectif respectif et peu d'entre eux sont ContextStartedEvent, ContextRefreshedEvent, ContextStoppedEvent, ContextClosedEvent, RequestHandledEvent, etc.
Q # 32) Que signifie le point commun?
comment ouvrir le fichier.dat sur mac
Répondre: Il indique un point spécifique où l'aspect AOP peut être branché. C'est l'emplacement d'origine dans l'application où une action peut être entreprise à l'aide du framework AOP.
Q # 33) Qu'est-ce que le modèle JDBC et comment l'utiliser au printemps?
Répondre: Le modèle JDBC est un modèle fourni par le framework Spring pour utiliser JDBC plus efficacement.
Le modèle JDBC est généralement utilisé pour la conversion des données de base de données en objets, l'exécution d'instructions préparées et appelables, et prend également en charge la gestion des erreurs pour une base de données.
Q # 34) Qu'est-ce que la gestion des transactions au printemps? Expliquez les différents types de gestion des transactions.
Répondre: La transaction est essentiellement une opération effectuée sur certaines données de la base de données. La gestion des transactions relève du système de gestion de la base de données relationnelle et est utilisée pour assurer l'éthique et la cohérence des données.
Le principal avantage de la gestion des transactions est qu'elle prend en charge la gestion des transactions déclarative et programmatique et les API comme Hibernate, JTA et JDBC par une intégration correcte.
Il existe deux types de gestion des transactions, qui sont mentionnés ci-dessous:
- Gestion programmatique des transactions est utilisé pour aider la transaction en termes de codage ou de script.
- Gestion des transactions déclaratives est utilisé pour isoler le code métier et les transactions.
Q # 35) Quelle est la gestion des transactions la plus couramment utilisée?
Répondre: La gestion déclarative des transactions est largement utilisée par les développeurs.
Q # 36) Expliquez le framework Spring MVC.
Répondre: MVC signifie modèle, vue et contrôleur. Le framework Spring MVC est utilisé pour développer des applications Web avec un bon flux d'architecture et de bonnes configurations. Il est très flexible en intégration avec les autres frameworks.
Q # 37) Expliquez l'architecture Spring MVC.
Répondre: L'architecture Spring MVC est basée sur le modèle, la vue et le contrôleur.
(image la source )
Le lien ci-dessus contient également un exemple simple du flux Spring MVC complet pour référence.
Le flux de l'architecture de printemps se déroule de la manière suivante :
- La demande est reçue par le servlet du répartiteur.
- Le servlet Dispatcher envoie la demande au mappage de gestionnaire qui fournit la réponse en termes de nom de classe de contrôleur.
- La demande est maintenant envoyée au contrôleur à partir du servlet du répartiteur, par conséquent le contrôleur traite la demande et renvoie l'objet de vue de modèle en réponse au servlet du répartiteur.
- Encore une fois, le servlet du répartiteur envoie la demande de résolution de vue pour obtenir la page de vue correcte.
- Enfin, le servlet du répartiteur envoie l'objet modèle reçu à la page du navigateur pour afficher le résultat.
@Controller et @RequestMapping sont les deux annotations principales utilisées dans le flux Spring MVC.
Q # 38) Quelle est l'utilisation du servlet Dispatcher?
Répondre: Dispatcher Servlet est utilisé pour gérer toutes les requêtes et réponses HTTP entrantes du client. Dans l'ensemble, il contrôle toutes les communications du gestionnaire vers le contrôleur pour afficher le résolveur sur la page d'affichage réelle.
Q # 39) Expliquez l'utilisation des annotations @Controller et @RequestMapping dans Spring MVC.
Répondre:
@Manette - Il désigne cette classe particulière qui se comporte comme un contrôleur.
@RequestMapping - Il est essentiellement utilisé pour mapper une URL sur toute la classe ou sur une méthode particulière.
Q # 40) Expliquez l'inversion du contrôle et l'injection de dépendances à travers un exemple simple.
Répondre: Comme nous le savons, il est utilisé pour supprimer la dépendance d'une application.
Code sans DI:
public class Student { Address address; Employee() { address= new Address();// here we are creating instance } }
L'étudiant et l'adresse utiliseront la même instance, par conséquent, une dépendance sera créée ici.
Code avec DI:
public class Student{ Address address; Employee(Address address) { this.address=address;//not creating instance } }
Aucune instance n'est créée ici, donc la dépendance n'est pas créée, d'où le code devient plus flexible et faiblement couplé.
Q # 41) Expliquez les conseils et leurs types.
Répondre: Toute action entreprise par AOP est appelée un avis.
Il existe cinq types de conseils mentionnés ci-dessous:
- Avant les conseils.
- Après des conseils.
- Après le retour des conseils.
- Autour des conseils.
- Jette des conseils.
Q # 42) Quels sont les différents types de mappage relationnel d'objets pris en charge par Spring?
Répondre: Spring prend en charge ORM comme Hibernate, IBatis, TopLink, Java Data Object, OJB et JPA, etc.
Q # 43) Pourquoi Spring est-il préféré aux frameworks ou aux principaux avantages de Spring Framework?
Répondre: Le ressort est préféré au cadre pour plusieurs raisons. Peu d'entre eux sont mentionnés ci-dessous:
- Spring résout de nombreux problèmes complexes de développement d'applications par ses sous-modules tels que core, web, accès aux données, test, etc.
- Spring fournit des classes POJO pour le développement, ce qui réduit le stress.
- Intégration puissante avec les autres frameworks.
- Bons tests d'application.
- Fonctionnalité de gestion des transactions et modularité.
Q # 44) Qu'entendez-vous par Spring Batch?
Répondre: Spring batch est également un framework léger créé pour prendre en charge le développement d'applications par lots robustes pour le système d'entreprise.
Spring batch améliore la productivité, l'approche de développement et rend certaines fonctionnalités que les utilisateurs ont apprises dans Spring beaucoup plus faciles.
Q # 45) Quelle est l'utilisation principale du framework Spring batch?
Répondre: Spring batch est principalement utilisé pour lire et écrire des fichiers, ainsi que pour effectuer certaines opérations dans la base de données telles que la lecture ou l'écriture, la transformation de données, la création de rapports, ainsi que l'importation et l'exportation de données, etc.
Q # 46) Expliquez l'architecture de Spring batch.
Répondre: L'architecture Spring Batch comprend principalement trois couches de composants, à savoir une application, un cœur et une infrastructure.
Une application se compose de scripts et de travaux par lots créés par les développeurs via le lot de printemps. Le noyau contient toutes les classes importantes et nécessaires nécessaires au lancement et au contrôle d'un travail par lots. Enfin, l'infrastructure gère à la fois l'application et le cœur, y compris les services, les lecteurs, les rédacteurs, etc.
Q # 47) Expliquez Tasklet dans Spring Batch.
Répondre: Tasklet est une interface, qui est souvent appelée pour effectuer une seule tâche comme le nettoyage, la suppression ou la configuration des ressources pendant le temps d'exécution.
Q # 48) Expliquez le principe de fonctionnement de Spring Batch.
Répondre: Spring batch fonctionne principalement sur quatre étapes comme mentionné ci-dessous:
- Premièrement, step-it guide le travail pour faire son travail respectif.
- Il dispose d'une interface itemReader pour fournir les données.
- Il dispose de l'interface itemProcessor pour une transformation de données.
- Enfin, il dispose d'une interface itemStreamWriter pour générer le résultat souhaité.
Conclusion
Nous espérons que cet article vous aurait donné des informations claires sur Spring Framework. Il a expliqué Spring et ses fonctionnalités, les applications dans lesquelles Spring est utilisé et pourquoi il est essentiel pour le développement d'applications.
Modules Spring, injection de dépendances, inversion de contrôle, gestion des transactions, programmation orientée aspect, concept de couplage lâche, architecture Spring MVC, annotations importantes, beans et câblage automatique.
Toutes les questions importantes de l'entrevue de printemps couvrant tous les sujets mentionnés ci-dessus sont incluses ici. Il est toujours conseillé d'expliquer tout concept à l'aide d'un exemple de code, ce qui donne une meilleure compréhension à l'intervieweur.
J'espère que cet article vous aidera à effacer vos entretiens, tout le meilleur!
lecture recommandée
- Questions et réponses d'entrevue
- Quelques questions d'entretien intéressantes sur les tests de logiciels
- 20 questions d'entrevue d'AQ sélectives pour effacer l'entrevue en 2021
- Questions et réponses d'entrevue de test ETL
- Top 25 des questions d'entretien Perl à préparer en 2021
- Top 25 des questions d'entrevue en génie logiciel (DERNIER 2021)
- Les 36 principales questions d'entrevue Jenkins (pour 2021)
- Top 12 des questions d'entrevue Mockito (entretien Mocking Framework)