top 48 spring interview questions
Lista das perguntas e respostas mais frequentes das entrevistas de primavera para ajudá-lo a se preparar para a próxima entrevista:
Neste artigo, aprenderemos sobre o Spring Framework mais popular e amplamente usado. Inclui as questões Spring Framework e Spring MVC para caloiros e profissionais experientes. No entanto, antes de nos aprofundarmos na parte da mola, vamos entender o que é um Framework e por que precisamos de um framework adicional?
Uma estrutura em termos simples pode ser entendida como uma certa fronteira que já é construída para que outras coisas venham e se acumulem para realizar uma determinada ação.
Na terminologia do software, um Framework pode ser definido como um determinado aplicativo já desenvolvido contendo muitas funcionalidades e recursos para suportar qualquer aplicativo que esteja em modo de desenvolvimento.
Spring Framework
Uma estrutura contém várias classes e componentes prontos, que um desenvolvedor não precisa criar para desenvolver um aplicativo, reduzindo assim a complexidade do código e tornando o aplicativo fácil de manter. Isso também economiza tempo, portanto, a redução de custos é alcançada.
Primavera A estrutura é conhecida como estrutura leve devido ao seu tamanho pequeno e alta eficácia. É open-source e, portanto, fornece uma forte infraestrutura para desenvolver aplicativos Java de uma forma simples e fácil. Ele fornece suporte a diferentes outros frameworks como Hibernate, Struts, EJB, etc.
É dividido em certos módulos para alcançar várias coisas simultaneamente. Os módulos Spring incluem o módulo principal, o módulo da Web, o módulo de integração de dados, o módulo de teste, o módulo AOP, etc. Cada módulo tem seu próprio propósito de acordo com os requisitos dos desenvolvedores.
Neste artigo, cobriremos todos os tópicos importantes do Spring que são importantes do ponto de vista da entrevista.
Estaremos cobrindo o que é um Spring Framework, seus tipos de módulo, o conceito de injeção de dependência e inversão de controle, bean e seu ciclo de vida, diferentes escopos do bean, conceito de autowiring, manipulação de eventos em spring, Spring AOP, gerenciamento de transação Spring , spring MVC e seu fluxo de arquitetura.
Também cobriremos as anotações importantes usadas em diferentes módulos de molas e configurações, e sobre o recipiente de molas.
Alguns exemplos de código de conceitos muito importantes foram explicados aqui e eles o ajudarão a explicar de maneira detalhada. Links adicionais foram fornecidos para consultar o exemplo de amostra do Spring MVC. Explicamos o conceito de servlet do despachante de uma maneira muito refinada.
Com essas respostas nítidas e ponto a ponto, você será capaz de responder à maioria das perguntas da entrevista com segurança.
Perguntas e respostas mais populares para entrevistas de primavera
Vamos explorar as perguntas mais frequentes da entrevista do Spring Framework com respostas detalhadas e exemplos.
P # 1) O que é um Framework? Explique o Spring Framework.
Responda: Framework é um software já construído que ajuda os desenvolvedores a adicionar mais funcionalidades aos seus aplicativos usando classes e bibliotecas já construídas.
Spring Framework é uma estrutura de injeção de dependência, que ajuda os desenvolvedores a desenvolver aplicativos baseados em Java. Spring é uma estrutura de código aberto para Java Enterprise.
P # 2) Por que o Spring é preferido sobre os outros frameworks?
Responda: Spring é preferível a outras estruturas devido aos recursos abaixo:
- Tamanho muito pequeno e leve
- Ajuda a alcançar a aplicação fracamente acoplada por Inversão de Controle.
- Suporte AOP
- Framework MVC
- Bom recurso de gerenciamento de transações
- Recipiente de primavera
- Manipulação de exceção
P # 3) Categorizar os diferentes tipos de módulos no Spring Framework.
Responda: O cinco módulos principais no Spring Framework são mencionados abaixo:
- Spring Core Container que inclui core, beans, contexto e linguagem de expressão.
- AOP e aspectos.
- Módulo de integração de dados que inclui JDBC, OXM, ORM, módulos de transação, etc.
- Módulo da Web que inclui web, servlet, struts e portlet.
- Teste
P # 4) Explique o arquivo de configuração Spring.
Responda: Um arquivo XML contém todas as informações sobre as classes junto com seu processo de configuração e como essas classes interagiram com as outras classes.
Q # 5) Explique o conceito de injeção de dependência.
Responda: Em primeiro lugar, injeção significa transferir a dependência para qualquer objeto dependente.
A injeção de dependência é um tipo de padrão de projeto que ajuda a desenvolver um aplicativo fracamente acoplado. É uma implementação de inversão de controle que auxilia na resolução de dependências em uma aplicação.
Ele evita a criação de objetos próprios e, em vez disso, orienta como os objetos devem ser criados por meio de configurações e, em seguida, o IOC decide quais serviços precisam ser combinados por quais componentes.
A injeção de dependência é o principal recurso do Spring Framework.
P # 6) Quais são os diferentes tipos de injeção de dependência? Explique-os.
Responda: Existem dois tipos de injeção de dependência. Eles são os seguintes:
- Injeção de dependência baseada em construção - É alcançado quando o contêiner Spring invoca um construtor com argumentos e cada um tendo alguma dependência da outra classe.
- Injeção de dependência baseada em setter- Isso é obtido quando o contêiner Spring chama o método setter de beans após invocar um construtor sem argumentos para instanciar o bean.
P # 7) O que é bom para usar - Dependência baseada em construtor ou setter?
Responda: Ambos os tipos de injeção de dependência podem ser usados de acordo com as situações. É uma regra geral, que para dependência obrigatória, injeção de dependência baseada em construtor é usada, enquanto para dependência opcional, injeção de dependência baseada em setter é usada.
P # 8) Quais são as vantagens da Inversão de Controle?
Responda: Existem várias vantagens do IOC, e alguns deles são mencionados abaixo:
como abrir janelas de arquivos torrentados
- O IOC é capaz de reduzir a complexidade do código, reduzindo o código no aplicativo.
- Usando o IOC no aplicativo, o teste se torna mais simples e fácil, pois nenhuma pesquisa e singletons são necessários.
- O acoplamento fraco é obtido pelo IOC e isso, por sua vez, torna o código mais sustentável.
- O IOC oferece suporte à instanciação antecipada e ao carregamento tardio de serviços.
Q # 9) Explique o conceito de AOP.
Responda: AOP significa Programação Orientada a Aspectos. É outra abordagem de programação que ajuda os desenvolvedores a reestruturar o comportamento de responsabilidades como gerenciamento de transações e registro.
O AOP é implementado para questões transversais, ou seja, a definição é fornecida em um lugar e, funcionalmente, pode ser usada em muitos lugares com a ajuda do script.
P # 10) Explique o uso do Spring Container.
Responda: É a parte central e a espinha dorsal do framework Spring. O contêiner Spring ajuda a criar objetos, combiná-los, gerenciar suas configurações e completar o ciclo de vida de criação, implementação e destruição.
O contêiner Spring tem a ajuda da injeção de dependência para gerenciar os componentes que constroem o aplicativo.
P # 11) Quais são os diferentes tipos de contêiner IOC?
Resposta: O contêiner IOC é de dois tipos, conforme mencionado abaixo:
- Fábrica de Feijão - É um contêiner simples e fornece suporte para injeção de dependência.
- Spring ApplicationContext - É um contêiner avançado que adiciona recursos complexos como decodificar mensagens textuais de arquivos e é capaz de publicar eventos para os ouvintes.
P # 12) Qual é a implementação do contêiner Bean Factory?
Responda: A classe XmlBeanFactory é a implementação mais importante da fábrica de feijão e é útil para ler dados dos arquivos XML.
P # 13) Qual é a implementação do contêiner ApplicationContext?
Responda: Alguns dos contêineres ApplicationContext mais comumente usados incluem FileSystemXmlApplicationContext, ClassPathXmlApplicationContext e WebXmlApplicationContext etc.
P # 14) O que são feijões na primavera?
Responda: Spring Beans nada mais são do que objetos Java simples que são gerenciados pelo contêiner Spring.
Exemplo:
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); } }
P # 15) Quais são os componentes da definição de feijão?
Responda: Basicamente, a definição do bean contém os metadados de configuração que são usados pelo contêiner Spring para saber detalhes como o processo de criação do bean, o ciclo de vida do bean e as dependências de um bean.
Q # 16) Quais são as maneiras pelas quais os metadados de configuração podem ser fornecidos ao contêiner Spring?
Responda: Os metadados de configuração podem ser fornecidos ao Spring Container de três maneiras, ou seja, por meio de arquivo de configuração baseado em XML, configuração baseada em anotação e configuração baseada em Java.
P # 17) Qual é a sintaxe para adicionar um bean no aplicativo Spring?
Resposta: Sintaxe:
Q # 18) Quais são os tipos de escopo do bean?
Responda: O escopo do bean pode ser definido como singleton e protótipo, solicitação, sessão, sessão global, etc.
- O protótipo é declarado sempre que uma nova instância de bean é necessária.
- Singleton é declarado quando a mesma instância de bean é usada todas as vezes.
- A solicitação é usada para o escopo da solicitação HTTP.
- A sessão é usada para o escopo da sessão HTTP.
- A sessão Global-HTTP define o escopo do bean para a sessão HTTP global.
Syntax:
Q # 19) Qual é o escopo padrão do bean no Spring? Além disso, eles estão sincronizados?
Responda: O escopo padrão do bean no Spring é Singleton. Além disso, eles não são sincronizados, ou seja, não são seguros para thread.
P # 20) Qual é o ciclo de vida de um feijão na primavera?
Responda: O ciclo de vida de um Spring Bean segue certas etapas, conforme mencionado abaixo:
- Instanciação - o contêiner Spring do arquivo XML encontra a definição do bean e, em seguida, o bean é instanciado.
- Preencher propriedades - o contêiner Spring popula todas as propriedades mencionadas na definição do bean com a ajuda da injeção de dependência.
- Configurando o nome de Bean.
- Configurando a fábrica de feijão.
- Pré-inicialização e inicialização do bean.
- Pós-inicialização do bean.
- Destrua o bean chamando o método destroy ().
Q # 21) O que você quer dizer com feijão interno?
Responda: O bean que é definido dentro da propriedade ou elemento construtor é chamado de bean interno.
Nenhum ID ou nome específico é necessário para o bean interno; na verdade, o contêiner Spring evita esses valores junto com a definição de escopo. Beans internos são considerados anônimos e seu escopo é sempre definido como protótipos.
P # 22) Quais são as maneiras de inserir o conceito de coleção no Spring?
Responda: Basicamente, existem quatro elementos de coleção para inserir no Spring.
Eles estão:
- elemento - Liga o conjunto de valores, eliminando as duplicatas deles.
- elemento - É útil para inserir ou injetar valores e também permite valores duplicados.
- elemento - É usado para inserir um par chave ou nome-valor que pode ser de qualquer tipo.
- elemento - É usado para inserir pares de chave ou nome-valor, mas o tipo deve ser apenas a string.
Q # 23) Explique o conceito de Autowiring.
Responda: Autowiring é um conceito essencial no framework Spring. É usado para injetar implicitamente a dependência do objeto pelo uso de um setter ou injeção baseada no construtor. Autowiring funciona apenas com tipos de referência, portanto, não é útil para injetar valores para tipos primitivos e de string.
A melhor vantagem do autowire é que os desenvolvedores precisam escrever menos código, pois a injeção de dependência é realizada pelo autowire. Além disso, o programador não controlou o processo.
Syntax:
Leitura Recomendada => Spring Autowired Annotation, Spring Bean Autowire Byname
Q # 24) Explique os diferentes modos de Autowiring.
Responda: Autowiring vem com cinco modos, que orientam o contêiner Spring para usar o recurso de injeção de dependência.
- Sem modo - É chamado para ser a configuração padrão e implica autowiring desativado e um bean explícito deve ser usado para a fiação de referência.
- byName - O autowiring pode ser feito pelo nome da propriedade. O Spring container procura no arquivo de configuração XML os beans cujo atributo autowire está definido como byName.
- por tipo - A fiação automática pode ser feita por tipo de propriedade. O Spring container procura no arquivo de configuração XML os beans cujo atributo autowire está definido como byType.
- Construtor - É quase o mesmo para byType, mas o tipo é aplicável para argumentos do construtor se nenhum tipo de argumento do construtor for encontrado no contêiner, então um erro será lançado.
- Detecção automática - Refere-se ao comportamento do Spring mostrando sua prioridade de escolha. Em primeiro lugar, o Spring escolhe autowiring usando o construtor, se isso não acontecer, ele muda a prioridade para byType.
P # 25) Existe alguma limitação do autowiring? Se sim, explique.
Responda: Sim, existem algumas limitações de fiação automática que são mencionadas abaixo:
- Sempre existe a possibilidade de substituir.
- O desenvolvedor não poderá fazer o autowire de propriedades primitivas e Spring.
- A fiação automática torna-se complexa quando usada em grandes aplicações em comparação com a fiação explícita.
P # 26) O que é fiação de anotação e como podemos ativá-la?
Responda: O uso alternativo de XML são anotações nas quais os desenvolvedores movem toda a configuração em uma classe com a ajuda de anotações para uma classe ou método específico.
Ele é ativado no arquivo de configuração do Spring ao declarar.
P # 27) Qual é o uso da anotação @Required?
Responda: É usado para indicar que no momento da configuração, a propriedade do bean deve ser populada por meio de autowiring ou valor de propriedade explícito na definição do bean.
Exemplo:
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; } }
P # 28) Qual é o uso da anotação @Autowired?
Responda: Ajuda a obter melhor controle e compreensão de como e onde a autowiring deve ser realizada. Ele pode ser usado para o bean autowire em qualquer método setter, propriedade ou construtor.
Exemplo:
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(); } }
P # 29) Qual é o uso da anotação @Qualifier?
Responda: É usado principalmente quando o desenvolvedor é obrigado a criar muitos beans do mesmo tipo e deseja conectar apenas um deles com a propriedade, neste cenário @Qualifier com @Autowired é usado para remover confusão e especificar o bean exato a ser conectado .
como declarar uma lista vinculada em java
P # 30) Como um evento é tratado no Spring?
Responda: O tratamento de eventos é obtido por meio da classe ApplicationEvent e da interface ApplicationListner.
Quando o bean implementa ApplicationListner, ApplicationEvent é gerado para ApplicationContext e notifica que o bean foi gerado.
P # 31) Quais são os exemplos de eventos de primavera padrão?
Responda: Existem muitos eventos Spring padrão que atendem ao respectivo propósito e poucos entre eles são ContextStartedEvent, ContextRefreshedEvent, ContextStoppedEvent, ContextClosedEvent, RequestHandledEvent etc.
Q # 32) O que o Ponto Comum denota?
Responda: Ele denota um ponto específico onde o aspecto AOP pode ser conectado. É o local original no aplicativo onde alguma ação pode ser realizada usando a estrutura AOP.
Q # 33) O que é o modelo JDBC e como usá-lo no Spring?
Responda: O modelo JDBC é um modelo fornecido pela estrutura Spring para usar o JDBC com mais eficiência.
O modelo JDBC é geralmente usado para conversão de dados de banco de dados em objetos, execução de instruções preparadas e que podem ser chamadas e também oferece suporte ao tratamento de erros para um banco de dados.
P # 34) O que é gerenciamento de transações no Spring? Explique os diferentes tipos de gerenciamento de transações.
Responda: Transação é basicamente alguma operação realizada em alguns dados do banco de dados. O gerenciamento de transações está incluído no sistema de gerenciamento de banco de dados relacional e é usado para garantir a consistência e a ética dos dados.
A principal vantagem do Gerenciamento de transações é que ele suporta gerenciamento de transações declarativo e programático e APIs como Hibernate, JTA e JDBC por integração correta.
onde transmitir anime gratuitamente
Existem dois tipos de gerenciamento de transações, mencionados abaixo:
- Gestão de transações programáticas é usado para ajudar a transação em termos de codificação ou script.
- Gestão Declarativa de Transações é usado para isolar o código de negócios e as transações.
P # 35) Qual é o gerenciamento de transações mais comumente usado?
Responda: O Declarative Transaction Management é amplamente utilizado por desenvolvedores.
P # 36) Explique a estrutura Spring MVC.
Responda: MVC significa Model, View e Controller. A estrutura Spring MVC é usada para desenvolver aplicativos da web com bom fluxo de arquitetura e configurações. É altamente flexível na integração com outras estruturas.
P # 37) Explique a arquitetura Spring MVC.
Responda: A arquitetura Spring MVC é baseada em Model, View e Controller.
(imagem fonte )
O link acima também tem um exemplo simples do fluxo Spring MVC completo para referência.
O fluxo da Arquitetura Spring vai da seguinte maneira :
- A solicitação é recebida pelo servlet do dispatcher.
- O servlet do dispatcher envia a solicitação ao mapeamento do manipulador que fornece a resposta em termos de nome da classe do controlador.
- Agora a solicitação é enviada ao controlador a partir do servlet do despachante, portanto, o controlador processa a solicitação e retorna o objeto de visualização do modelo como uma resposta ao servlet do despachante.
- Novamente, o servlet do dispatcher envia a solicitação ao resolvedor de visualização para obter a página de visualização correta.
- Por último, o servlet do dispatcher envia o objeto modelo recebido à página do navegador para exibir o resultado.
O @Controller e o @RequestMapping são as duas anotações principais usadas no fluxo Spring MVC.
Q # 38) Qual é o uso do Servlet Dispatcher?
Responda: O Dispatcher Servlet é usado para tratar todas as solicitações e respostas HTTP de entrada do cliente. No geral, ele controla todas as comunicações do manipulador para o controlador para visualizar o resolvedor para a página de visualização real.
P # 39) Explique o uso das anotações @Controller e @RequestMapping no Spring MVC.
Responda:
@Controlador - Denota aquela classe particular que se comporta como um controlador.
@RequestMapping - É basicamente usado para mapear um URL para toda a classe ou para qualquer método específico.
Q # 40) Explique a Inversão de Controle e Injeção de Dependência por meio de um exemplo simples.
Responda: Como sabemos, ele é usado para remover a dependência de um aplicativo.
Código sem DI:
public class Student { Address address; Employee() { address= new Address();// here we are creating instance } }
Aluno e Endereço estarão usando a mesma instância, portanto, haverá uma dependência criada aqui.
Código com DI:
public class Student{ Address address; Employee(Address address) { this.address=address;//not creating instance } }
Nenhuma instância é criada aqui, portanto, a dependência não é criada, portanto, o código se torna mais flexível e fracamente acoplado.
Q # 41) Explique conselhos e seus tipos.
Responda: Qualquer ação realizada pelo AOP é chamada de Conselho.
Existem cinco tipos de conselhos mencionados abaixo:
- Antes do conselho.
- Depois de conselhos.
- Depois de retornar o conselho.
- Em torno de conselhos.
- Lança conselhos.
Q # 42) Quais são os diferentes tipos de Mapeamento Relacional de Objeto que o Spring suporta?
Responda: Spring suporta ORM como Hibernate, IBatis, TopLink, Java Data Object, OJB e JPA, etc.
P # 43) Por que o Spring é preferido em relação aos frameworks ou aos principais benefícios do Spring Framework?
Responda: Spring é preferível à estrutura por vários motivos. Poucos deles são mencionados abaixo:
- Spring resolve muitos problemas complexos de desenvolvimento de aplicativos por seus submódulos como núcleo, web, acesso a dados, teste, etc.
- O Spring fornece classes POJO para desenvolvimento que, por sua vez, reduzem o estresse.
- Integração poderosa com outras estruturas.
- Bom teste de aplicação.
- Recurso de gerenciamento de transações e modularidade.
Q # 44) O que você quer dizer com Spring Batch?
Responda: Spring batch também é uma estrutura leve criada para dar suporte ao desenvolvimento de aplicativos em lote robustos para o sistema corporativo.
O Spring batch melhora a produtividade, a abordagem para o desenvolvimento e torna muito mais fácil certos recursos que os usuários aprenderam no Spring.
P # 45) Qual é o principal uso da estrutura de lote Spring?
Responda: O Spring batch é usado principalmente para ler e gravar arquivos e também para executar certas operações no banco de dados, como leitura ou gravação, transformação de dados, criação de relatórios, importação e exportação de dados, etc.
P # 46) Explique a arquitetura de lote do Spring.
Responda: A arquitetura do Spring batch compreende principalmente três camadas de componentes, ou seja, um aplicativo, um núcleo e uma infraestrutura.
Um aplicativo consiste em scripts e jobs em lote criados pelos desenvolvedores durante o lote de primavera. O núcleo contém todas as classes importantes e necessárias que são requeridas para iniciar e controlar um trabalho em lote. Por último, a infraestrutura lida com o aplicativo e o núcleo, incluindo serviços, leitores, gravadores, etc.
Q # 47) Explicar Tasklet em Spring Batch.
Responda: Tasklet é uma interface frequentemente chamada para executar apenas uma tarefa, como limpeza, exclusão ou configuração de recursos durante o tempo de execução.
Q # 48) Explique o princípio de funcionamento do Spring Batch.
Responda: O Spring batch funciona principalmente em quatro etapas, conforme mencionado abaixo:
- Em primeiro lugar, o step-it orienta o trabalho para fazer seu respectivo trabalho.
- Possui uma interface itemReader para fornecer os dados.
- Possui a interface itemProcessor para uma transformação de dados.
- Por último, possui uma interface itemStreamWriter para gerar o resultado desejado.
Conclusão
Esperamos que este artigo tenha fornecido informações claras sobre o Spring Framework. Ele explicou o Spring e seus recursos, Aplicativos nos quais o Spring é usado e porque ele é essencial para o desenvolvimento de aplicativos.
Módulos Spring, Injeção de Dependências, Inversão de Controle, Gerenciamento de Transações, Programação Orientada a Aspectos, conceito de acoplamento flexível, Arquitetura Spring MVC, Anotações importantes, beans e Autowiring.
Todas as perguntas importantes da entrevista de primavera cobrindo todos os tópicos mencionados acima estão incluídas aqui. É sempre aconselhável explicar qualquer conceito com a ajuda de um exemplo de código, o que dá melhor compreensão ao entrevistador.
Espero que este artigo o ajude a limpar suas entrevistas. Tudo de bom!
Leitura recomendada
- Perguntas e respostas da entrevista
- Algumas perguntas interessantes da entrevista de teste de software
- 20 perguntas da entrevista seletiva de controle de qualidade para limpar a entrevista em 2021
- Perguntas e respostas da entrevista de teste de ETL
- As 25 principais perguntas da entrevista de Perl que você deve preparar em 2021
- As 25 principais perguntas da entrevista de engenharia de software (LATEST 2021)
- 36 principais perguntas da entrevista do Jenkins (para 2021)
- As 12 principais perguntas da entrevista Mockito (Entrevista Mocking Framework)