As 35 principais perguntas e respostas da entrevista de primavera: Guia definitivo 2022

Publicados: 2021-01-08

Tem uma entrevista futura relacionada ao Spring Framework? Talvez você tenha chegado a esta página porque está caçando as principais perguntas da entrevista do Spring Framework . Em nosso blog, discutiremos as perguntas e respostas mais frequentes da entrevista da Spring.

Se você passar por isso, é provável que você tenha um desempenho incrível em sua entrevista. Antes de darmos o pontapé inicial, vamos dar um resumo da demanda geral pelo Spring Framework no mercado atual.

Leia: Desenvolvedores full stack demandam na Índia

O Spring torna a linguagem de programação Java mais rápida, simples e segura para todos. Seu foco principal é a velocidade, mas é simples e produtivo. Devido a isso, tornou-se um dos frameworks Java mais populares do mundo. As bibliotecas são flexíveis e confiáveis. Ele é usado em muitos lugares, como compras on-line, carros conectados e tecnologias mais inovadoras.

Também se gaba de suas contribuições para grandes gigantes como Amazon, Google e Alibaba. Além disso, a comunidade Spring é enorme. Abrange todas as faixas etárias e é muito diversificada. Você encontrará ótimos recursos e suporte on-line para avançar para o próximo nível, facilitando sua jornada.

Se você é um programador Java, o Spring Framework é crucial para você. Muitas empresas exigem que o programador entenda o Spring Framework ou pelo menos conheça alguns de seus módulos.

Aqui estão algumas das principais perguntas e respostas da entrevista do Spring que você pode esperar que seu entrevistador pergunte.

Índice

Perguntas e respostas da entrevista de primavera 2020

P.1 Quais são as diferentes versões que você pode encontrar do Spring Framework e quais são seus principais recursos?

As três versões são Spring 2.5, Spring 3.0 e Spring 4.0.

Spring 2.5 foi a primeira versão a suportar anotações. Foi lançado no ano de 2007. O Spring 3.0 utilizou atualizações no Java5 e, além disso, ofereceu ajuda ao JEE6. Foi lançado dois anos depois, em 2009. O Spring 4.0 foi a principal variante para oferecer suporte abrangente ao Java 8. Foi lançado no ano de 2013.

Q.2 Descrever ou definir Spring Framework

É uma plataforma Java de código aberto. Ele é usado como uma opção para tecnologias Java corporativas pesadas. Para simplificar, simplifica o desenvolvimento Java porque é leve. Os desenvolvedores podem desenvolver aplicativos usando o Spring Framework e implantar até mesmo em computadores com memória e recursos de CPU restritos. Além disso, oferece suporte a vários outros frameworks, incluindo, mas não limitado a Tapestry, JSF, EJB, Hibernate, Struts e muito mais.

Leia: Ideias e tópicos de projetos de pilha completa

Q.3 Quais são as vantagens do Spring Framework?

  • O Spring Framework é um código aberto e não possui nenhum bloqueio de fornecedor.
  • Você pode usar apenas o que realmente precisa por causa da arquitetura em camadas que usa.
  • O Spring Framework usa POJOs, o que facilita muito o teste de aplicativos.
  • Você pode usá-lo com todos os outros frameworks de Java com Spring Frameworks. Não impõe quaisquer restrições ou limitações.
  • Spring Framework é um framework modular. É muito flexível.

Q.4 Quais são os vários recursos do Spring Framework?

  • Leve: Spring Framework é leve quando falamos de sua transparência e tamanho.
  • Inversão de controle: É o princípio onde o fluxo de controle de um programa é invertido. Aqui, as fontes externas como serviços, framework e outros componentes controlam o fluxo de um programa em vez do programador.
  • Programação Orientada a Aspectos: A programação orientada a aspectos no Spring suporta o desenvolvimento de ligação dividindo os serviços do sistema da lógica de negócios do aplicativo.
  • Container: O container está no cerne do Spring Framework É o container que cria os objetos, os vincula, os configura e se encarrega de seu ciclo de vida completo, que é desde a criação até o fim.
  • Framework MVC: O framework de aplicação web MVC do Spring Framework é fácil de usar e configurável. Você pode usar outros frameworks em vez de escolher o Spring MVC Framework.
  • Gerenciamento de transações: Spring Framework usa uma camada de abstração genérica para gerenciamento de transações. Você pode usar o suporte a transações do Spring em ambientes com menos contêineres.
  • Manipulação de Exceções JDBC: Você não precisa manipular explicitamente nenhuma exceção relacionada ao banco de dados. O Spring JDBC Framework lida com isso usando o tratamento de exceção JDBC.

Leia: Perguntas da entrevista do desenvolvedor de pilha completa

Q.5 Quantos módulos você pode encontrar no Spring Framework? Nomeie-os.

Você pode encontrar vinte módulos que são categorizados em Core Container, Web, Data Access/Integration, AOP (Aspect Oriented Programming), Instrumentation e Test.

Spring Core Container: Como o nome sugere, é o container principal do Spring Framework. É composto por

  • Núcleo da mola
  • Feijão Primavera
  • Linguagem de Expressão Spring
  • Contexto de primavera

Web: Esta camada dá suporte para criar uma aplicação web. É composto pelos seguintes módulos:

  • Rede
  • Web – MVC
  • Web – Soquete
  • Web – Portlet

Acesso/Integração de Dados: Esta camada dá suporte à comunicação com o banco de dados. É composto pelos seguintes módulos:

  • Conectividade de banco de dados Java – JDBC
  • Mapeamento Relacional de Objetos – ORM
  • Mapeadores XML de Objetos – OXM
  • Serviço de Mensagens Java – JMS
  • Transação

Programação Orientada a Aspectos: Nesta camada, os desenvolvedores podem usar pointcuts, conselhos, etc. para desacoplar o código.

Instrumentação: Esta camada dá suporte a implementações de carregador de classe e instrumentação de classe.

Teste: Esta camada dá suporte a testes com TestNG e Junit.

Você também pode encontrar outros nós diversos, como:

Mensagens: Este módulo oferece assistência para STOMP. Ele também ajuda como um modelo de programação de anotação que é necessário no roteamento e processamento de mensagens STOMP de clientes WebSocket.

Aspects: Este módulo oferece suporte para integração com o AspectJ.

Q.6 O que é um arquivo de configuração Spring?

É basicamente um arquivo XML. Você pode encontrar todas as informações sobre as aulas neste arquivo. Ele descreve ainda como essas classes são configuradas e conhecidas umas pelas outras. Os arquivos de configuração XML são detalhados, por isso é necessário mantê-los limpos. Caso contrário, gerenciá-los se torna difícil se o seu projeto for grande.

Q.7 Descreva os diferentes componentes de um aplicativo Spring.

Normalmente, um aplicativo Spring é composto pelos seguintes componentes:

  • Interface: Todas as funções são definidas na interface.
  • Classe Bean: Você pode encontrar propriedades aqui junto com as funções set e get.
  • Spring Aspect-Oriented Programming (AOP): Fornece a funcionalidade de interesses transversais.
  • Arquivo de Configuração do Bean: Este arquivo contém os detalhes das classes e como se pode configurá-las.
  • Programa do usuário: Um programa do usuário usa a função.

Q.8 Explique as várias maneiras de usar o Spring Framework

O Spring Framework pode ser usado de várias maneiras, como:

  • O Spring Framework pode ser usado como um aplicativo Web abrangente do Spring.
  • O Spring Framework pode ser usado como uma estrutura da Web de terceiros, usando a camada intermediária do Spring Frameworks.
  • O Spring Framework pode ser usado para uso remoto.
  • O Spring Framework pode ser usado como Enterprise Java Bean, que pode agrupar POJOs existentes.

Q.9 O que é o Spring IOC Container?

O contêiner está no centro do Spring Framework. É o container que cria os objetos, os liga, os configura e se encarrega de seu ciclo de vida completo, que é desde a criação até o fim.

O contêiner Spring usa a injeção de dependência para gerenciar os componentes que criam um aplicativo. O contêiner obtém instruções para quais objetos criar, definir e chamar lendo os metadados de configuração fornecidos por anotações Java, código Java ou por um XML.

Q.10 O que é uma injeção de dependência?

Na injeção de dependência, em vez de criar objetos, você simplesmente os descreve sobre como criá-los. Os desenvolvedores precisam descrever quais serviços são exigidos por um componente específico no arquivo de configuração. Não há necessidade de conectar os serviços aos componentes diretamente no código. Eles são conectados pelo contêiner Spring IoC.

Q.11 Em quantos métodos se pode fazer Injeção de Dependência?

Existem três maneiras pelas quais a injeção de dependência é feita, como:

  • Injeção de Construtor
  • Injeção de Incubador
  • Injeção de Interface

No entanto, no Spring Framework, apenas injeção de construtor e injeções de setter são usadas.

Q.12 O que torna a injeção de construtor diferente da injeção de setter.

Injeção de Construtor Injeção de Incubador
Não há injeção incompleta ou limitada. Pode haver injeção incompleta ou limitada.
Ele não substitui a propriedade setter. Ele substitui a propriedade do construtor.
Ele cria uma nova instância se alguma alteração for feita. Ele não cria nenhuma nova instância se uma alteração for feita.
Funciona melhor para muitas propriedades. Funciona melhor para menos propriedades.

Q.13 Quantos tipos de contêineres IOC estão disponíveis na primavera?

Normalmente, você pode encontrar dois contêineres IOC, a saber:

  1. BeanFactory: BeanFactory é uma espécie de classe de fábrica que compreende um grupo de beans. Ele instancia o bean sempre que solicitado pelos clientes.
  2. ApplicationContext: A interface ApplicationContext é criada acima da interface BeanFactory. Ele oferece algumas funcionalidades extras, além da fornecida pelo BeanFactory.

Q.14 Conte-nos sobre algumas diferenças entre BeanFactory e ApplicationContext.

BeanFactory ApplicationContext
É uma interface explicada em org.springframework.beans.factory.BeanFactory É uma interface explicada em org.springframework.context.ApplicationContext
Ele usa inicialização Lazy Ele usa inicialização agressiva
Ele fornece explicitamente um objeto de recurso usando a sintaxe Ele constrói e gerencia objetos de recursos por conta própria
Não ajuda a internacionalização Ajuda na internacionalização
Não ajuda a dependência baseada em anotação Ajuda a dependência baseada em anotação

Q.15 Quais são alguns benefícios do IoC?

Alguns dos benefícios do IoC são:

  • Isso reduzirá a quantidade de código necessária em seu aplicativo.
  • Seu aplicativo é muito mais fácil de testar porque não precisa de nenhum mecanismo de pesquisa de singletons ou JNDI em seus casos de teste de unidade.
  • Incentiva o acoplamento solto com esforço mínimo e o mecanismo menos intrusivo.
  • Ele auxilia na instanciação rápida e no carregamento lento dos serviços.

Q.16 O que são Spring Beans?

Spring Beans são os objetos que servem como backbone do aplicativo do usuário. Beans são controlados pelo contêiner Spring IoC. Ao controlá-lo, eles são instanciados, configurados, conectados e gerenciados por um contêiner Spring IoC. Beans são criados usando os metadados de configuração que os usuários fornecem ao contêiner.

Q.17 Como os metadados de configuração são fornecidos ao contêiner Spring?

Os metadados de configuração podem ser fornecidos ao contêiner Spring de uma das maneiras:

  • Configuração baseada em anotação: Pode-se usar anotações na classe relevante para descrever a fiação do bean na própria classe do componente. Não é a configuração padrão. Então, se você deseja usá-lo, você deve habilitá-lo no arquivo de configuração do Spring antes de poder usá-lo.
  • Configuração Baseada em XML: As dependências e os serviços requeridos pelos beans são mencionados nos arquivos de configuração. Estes estão em um formato XML. Eles compreendem muitas definições de bean e opções de configuração específicas do aplicativo. Eles geralmente começam com uma tag bean.
  • Configuração baseada em Java: Os principais recursos no novo suporte à configuração Java do Spring Framework são métodos anotados @Bean e classes anotadas @Configuration.

Q.18 Quantos escopos de bean o Spring suporta?

Ele suporta cinco escopos que são:

  • Singleton: Isso dá escopo para a definição de bean para uma única instância por contêiner Spring IoC.
  • Protótipo: Isso dá escopo para uma única definição de bean ter qualquer número de instâncias de objeto.

Os escopos abaixo estão disponíveis apenas se os usuários empregarem um ApplicationContext com reconhecimento da Web.

  • Request: Isso dá escopo para uma definição de bean para uma solicitação HTTP.
  • Sessão: Isso dá escopo para uma definição de bean para uma sessão HTTP.
  • Sessão Global: Isso dá escopo para uma definição de bean para uma sessão HTTP Global.

Q.19 Explicar o ciclo de vida do Bean no Spring Bean Factory Container

  1. O contêiner Spring instancia primeiro o bean da definição do bean no arquivo XML.
  2. O Spring usando a injeção de dependência preenche todas as propriedades.
  3. A fábrica chama setBeanName() fornecendo o ID do bean se o bean executar a interface BeanNameAware.
  4. A fábrica chama setBeanFactory() criando uma instância de si mesmo se o bean executar a interface BeanFactoryAware.
  5. Se houver algum BeanPostProcessors relacionado ao bean, os métodos preProcessBeforeInitialization() serão chamados.
  6. Se o bean especificar o método init, ele será chamado.
  7. Se houver algum BeanPostProcessors relacionado ao bean, os métodos preProcessAfterInitialization() serão chamados.

Q.20 Explique a fiação do Bean

A fiação do feijão é quando todos os grãos são combinados dentro do recipiente Spring. O contêiner Spring deve entender quais beans são necessários e como ele deve empregar a injeção de dependência para vincular os beans.

Q.21 O que é fiação automática e nomeie os diferentes modos de fiação automática?

O contêiner Spring tem a capacidade de conectar automaticamente os relacionamentos entre os beans de conexão. O Spring pode resolver automaticamente os colaboradores do seu bean vendo o conteúdo do BeanFactory.

Os diferentes modos de fiação automática do bean são:

  1. não: Esta é a opção pré-selecionada, o que significa que não há fiação automática. Você precisa usar uma referência de bean explícita para fiação.
  2. byName: Injeta a dependência do objeto com base no nome do bean. Ele emparelha e conecta suas propriedades com os beans explicados pelos nomes exatos no arquivo XML.
  3. byType: Como o nome diz, ele injeta a dependência do objeto de acordo com o tipo. Ele corresponde e conecta uma propriedade se o tipo corresponder a um dos nomes dos beans em um arquivo XML.
  4. Construtor: Um construtor injeta a dependência chamando o construtor da classe. Tem muitos parâmetros.
  5. Autodetect: Por padrão, o contêiner se conecta automaticamente usando um construtor. Se falhar, ele tenta se conectar automaticamente por tipo.

Q.22 Quais são as restrições ou limitações da fiação automática?

Existem algumas limitações/restrições que se enfrenta ao usar a fiação automática, como:

  • Possibilidade de substituição: Usando as configurações <constructor-arg> e <property>, você pode especificar dependências. Ele substituirá a fiação automática.
  • Tipo de dados primitivos: Tipos de dados primitivos, classes e strings não podem ser conectados automaticamente.
  • Natureza complicada: a fiação explícita é preferível à fiação automática porque a última é confusa por natureza.

Q.23 O que é configuração de contêiner baseada em anotação?

Uma alternativa para configurações XML, configuração de contêiner baseada em anotação, é usada para descrever uma conexão de bean. O desenvolvedor transfere a configuração para a classe do componente usando anotações no método, classe ou declaração de campo.

Q.24 Como você ativa a fiação de anotação no Spring?

A fiação de anotação é desativada por padrão no contêiner Spring. Portanto, para usar a fiação baseada em anotação, você deve habilitá-la no arquivo de configuração do Spring definindo o elemento <context:annotation-config/>.

Q.25 Explique a diferença entre várias anotações como @Controller, @Component, @Repository e @Service no Spring?

@Controller: Isso indica uma classe como um controlador Spring Web MVC. Ele importa automaticamente os beans marcados com ele para o contêiner de injeção de dependência.

@Component: Isso indica uma classe java como um bean. É um estereótipo geral para qualquer componente gerenciado pelo Spring. O processo de varredura de componentes do Spring pode pegá-lo e puxá-lo para o contexto do aplicativo.

@Service: Esta anotação é uma área de anotação de componentes. Não há nenhum novo comportamento sobre a anotação @Component. Pode-se usar @Service em vez de @Component em classes de camada de serviço porque especifica a intenção adequadamente.

@Repository: Esta anotação é uma área da anotação @Component. Ele vem com as mesmas funções e usos. No entanto, oferece algumas vantagens extras, justamente para DAOs. Ele obtém os DAOs no contêiner DI e qualifica as exceções não verificadas para tradução em Spring DataAccessException.

Q.26 Descrever o suporte Spring DAO

O suporte a Data Access Object no Spring facilita o acesso a tecnologias como Hibernate, JDBC ou JDO de maneira adequada e estável. Ele permite selecionar qualquer uma das tecnologias sem qualquer aborrecimento. Também permite codificar sem se preocupar em capturar exceções relacionadas a cada uma dessas tecnologias.

Q.27 Quais classes estão disponíveis no Spring JDBC API?

As classes que estão presentes na API JDBC são:

  1. JdbcTemplateName
  2. SimpleJdbcTemplate
  3. NamedParameterJdbcTemplate
  4. SimpleJdbcInsert
  5. SimpleJdbcCall

Q.28 Quais são os métodos pelos quais se pode acessar o Hibernate usando Spring?

Existem dois métodos pelos quais se pode acessar o Hibernate usando Spring:

  1. O método de inversão de controle com um modelo de retorno de chamada e hibernação.
  2. Aplicando um nó AOP Interceptor e estendendo o HibernateDAOSupport.

Q.29 Nomeie os tipos de gerenciamento de transações suportados pelo Spring

O Spring suporta dois tipos de gerenciamento de transações. Eles estão:

  1. Gerenciamento de transações programáticas: Aqui, a transação é controlada com a ajuda da programação. Ele fornece uma grande quantidade de flexibilidade. No entanto, é difícil de manter.
  2. Gerenciamento de transações declarativas: Aqui, o gerenciamento de transações é mantido separado do código comercial. Pode-se usar apenas anotações ou configurações baseadas em XML para controlar as transações.

Q.30 Descreva AOP

AOP é conhecido como programação organizada por aspecto. É um sistema de programação que permite que os engenheiros de software modularizem preocupações transversais ou condutas que ultrapassem as divisões padrão de obrigações. Exemplos de preocupações transversais são registro e gerenciamento de transações. O núcleo da AOP é um aspecto . Ele exemplifica práticas que podem influenciar várias classes em módulos reutilizáveis.

Q.31 O que você quer dizer com aspecto?

Aspecto é a modularização da preocupação, que atravessa vários objetos. Um bom exemplo de interesses transversais no J2EE seriam os aplicativos de gerenciamento de transações. Os aspectos são executados utilizando classes regulares ou classes regulares explicadas com a anotação @Aspect no Spring Framework.

Q.32 O que é um JoinPoint

Um ponto em que a execução de um programa é chamada de JoinPoint, por exemplo, o tratamento de uma exceção ou a execução de um método. No Spring AOP, um JoinPoint representa consistentemente uma execução de método.

Q.33 O que você quer dizer com o framework Spring MVC?

O framework Spring web MVC oferece arquitetura model-view-controller e componentes prontos para uso. Você pode usar esses componentes para criar aplicativos da Web flexíveis e fracamente acoplados. O padrão MVC oferece suporte ao isolamento de diferentes aspectos do aplicativo, como lógica de negócios, lógica de entrada e lógica da interface do usuário, ao mesmo tempo em que fornece um acoplamento fraco entre cada um desses componentes.

Q.34 Descrever o DispatcherServlet

Este é o núcleo do framework Spring Web MVC. Ele gerencia todas as solicitações e respostas HTTP. O DispatcherServlet obtém do arquivo de configuração a entrada do mapeamento do manipulador e passa a requisição antecipadamente para o controlador. O controlador então fornece um objeto de Model e View. O DispatcherServlet marca a entrada do resolvedor de visualização no arquivo de configuração e chama o componente de visualização definido.

Q.35 Explicar o contexto do aplicativo Web

O WebApplicationContext é um aumento do ApplicationContext simples. Ele tem mais alguns recursos que são necessários para aplicativos da web. É diferente de um ApplicationContext normal porque tem a capacidade de resolver temas e decidir com qual servlet está vinculado.

Aprenda cursos de software online das melhores universidades do mundo. Ganhe Programas PG Executivos, Programas de Certificado Avançado ou Programas de Mestrado para acelerar sua carreira.

Conclusão

Cobrimos a maioria das principais perguntas da entrevista de primavera que são feitas pelo entrevistador. Se você estiver interessado em saber mais e precisar de orientação de especialistas do setor, confira o Programa de Desenvolvimento de Software Full-Stack do UpGrad & IIIT Banglore's Executive PG Program .

O que é Java Spring?

Java Spring desenvolvido pela Sun Microsystems, é uma plataforma que suporta o desenvolvimento de aplicativos. Spring é uma coleção de serviços e APIs baseados em Java que ajudam a escrever aplicativos escaláveis. Spring é uma estrutura de desenvolvimento de aplicativos de código aberto. Ele pode ser usado com qualquer aplicativo baseado em Java, portanto, tornando-o de código aberto. O Spring fornece classes de utilitários, tratamento de exceções, AOP e interfaces para dar suporte a aplicativos corporativos. Java Spring é uma plataforma que suporta aplicativos do lado do servidor baseados em Java e simplifica o processo geral de desenvolvimento. É uma plataforma altamente flexível que pode ser usada com qualquer servidor baseado em Java. Ele fornece classes de utilitários e serviços de tratamento de exceções. Possui um sistema de suporte transacional e oferece fácil vinculação com bancos de dados.

O que é Spring MVC?

Spring MVC (Model View Controller) é uma estrutura de aplicativo da Web de código aberto escrita em Java e desenvolvida nos últimos quatro anos por uma equipe da SpringSource. Ele é desenvolvido com base na API Servlet e está disponível para aplicativos da Web Java EE 5 e para aplicativos do Google Web Toolkit. Ele também se integra com Spring Data e Spring AOP, para que você possa usá-lo com Hibernate, JPA e programação orientada a aspectos, entre outros frameworks. O Spring MVC é altamente configurável e suporta os princípios de Inversão de Controle (IoC) do Spring. Ele suporta a construção de aplicativos da Web com estado, para que você possa manter as informações de estado do aplicativo entre as solicitações.

O que é o Spring Hibernate?

Hibernate é uma biblioteca de mapeamento relacional de objeto (ORM) para Java. O Hibernate é projetado para lidar com a Persistência de objetos de classe Java. É uma estrutura ORM poderosa, leve e extremamente portátil. O Hibernate está disponível sob a GNU Lesser General Public License (LGPL). Spring Data é um projeto dentro do Spring Framework que fornece um conjunto de componentes para acessar e gerenciar dados de uma forma mais orientada a objetos usando o conhecido paradigma Spring Inversion of Control (IoC). Hibernate é apenas um framework ORM. Spring Data, por outro lado, é um esforço para criar uma camada de abstração sobre vários mecanismos de armazenamento, como banco de dados relacional, NoSQL, arquivos simples etc.