Spring Boot: 22 Perguntas e Respostas Frequentes em Entrevistas

Está se preparando para uma entrevista como desenvolvedor Java Spring Boot e quer saber quais perguntas podem surgir? Não se preocupe, estamos aqui para te ajudar!

Este artigo é um guia para te deixar pronto, apresentando diversas perguntas frequentes em entrevistas de Spring Boot, junto com suas respectivas respostas, que os entrevistadores podem usar para avaliar suas habilidades.

Entrevistadores usam perguntas estratégicas sobre Java Spring Boot para medir o nível de proficiência dos candidatos, verificando se estão adequados para a posição. Por isso, é crucial que você se prepare com perguntas relevantes e saiba como respondê-las.

Antes de irmos direto para as perguntas e respostas da entrevista, vamos dar uma olhada no que é o Spring Boot e como ele beneficia os desenvolvedores Java.

O que é Java Spring Boot?

Esta estrutura Java foi criada pela equipe principal em 2014. Spring Boot, sendo uma estrutura de código aberto, possibilita o desenvolvimento eficiente de aplicações independentes, de nível de produção, que podem ser executadas em uma Máquina Virtual Java (JVM).

Desenvolvedores Java o escolhem para construir aplicações web e microsserviços devido à sua configuração rápida e simples, além do tempo de configuração seguro.

A facilidade de instalação e configuração de aplicações baseadas em Spring pelo Spring Boot é viabilizada por seus três recursos principais:

  • Autoconfiguração: configuração automática de aplicações Spring.
  • O Spring Boot adota uma abordagem opinativa para os padrões de configuração e pacotes a serem instalados, otimizando a configuração rápida de projetos.
  • O Spring Boot permite executar sua aplicação de forma independente, sem a necessidade de um servidor web.

Como o Spring Boot ajuda os desenvolvedores Java?

Para os desenvolvedores Java, o Spring Boot simplifica a configuração automática de todos os componentes necessários para desenvolver aplicações Spring de nível de produção. Isso reduz o tempo de desenvolvimento e aumenta a eficiência.

O Spring Boot integra-se facilmente ao ecossistema Spring, incluindo Spring JDBC, Spring Data, Spring Security e Spring ORM.

Além disso, desenvolvedores Java podem conectar o Spring Boot a diversos bancos de dados, como Oracle, MySQL, PostgreSQL e MongoDB.

Configurações flexíveis com XML, Java Beans e transações de banco de dados são outras funcionalidades úteis.

Agora que você tem uma compreensão básica do Spring Boot, vamos examinar algumas perguntas e respostas frequentes de entrevistas sobre o Spring Boot para te preparar.

Perguntas e Respostas da Entrevista Spring Boot

Quais são alguns recursos do Spring Boot?

Alguns recursos populares incluem:

  • A CLI do Spring Boot utiliza Groovy para escrever aplicações Spring Boot, evitando código repetitivo.
  • O Spring Boot oferece recursos de registro e segurança, protegendo sua aplicação contra possíveis ameaças.
  • Ele configura automaticamente componentes relevantes para seu projeto, eliminando a necessidade de arquivos WAR desnecessários.
  • O inicializador estabelece uma estrutura de projeto interna padrão, economizando tempo de configuração manual.
  • O recurso do atuador do Spring Boot fornece acesso a insights e métricas durante a execução da aplicação.
  • Um dos principais recursos, o Starter Dependency, agrega dependências comuns para recursos específicos.

O que são Spring Boot Starters?

Os iniciadores do Spring Boot são descritores de dependência que incluem um conjunto de provedores de gerenciamento de dependência, permitindo a configuração automática das dependências da aplicação. Eles facilitam um desenvolvimento rápido e simples.

O que é um atuador no Spring Boot e quais são suas vantagens?

O atuador é um recurso do Spring Boot que permite monitorar o que acontece dentro de uma aplicação enquanto ela está rodando.

Durante a depuração, por exemplo, você pode usar o atuador para análise de logs, com acesso a recursos como uso da CPU e identificação de beans.

Além disso, o atuador oferece acesso fácil a endpoints REST prontos para produção, que monitoram e gerenciam informações, além de recuperar dados da web.

O que é Thymeleaf e como usá-lo?

Thymeleaf é um template engine do lado do servidor para Java, que cria layouts de template naturais para aplicações Web Java Spring e HTML5.

O Spring Boot faz a configuração automática do Thymeleaf utilizando a dependência spring-boot-starter-thymeleaf no arquivo pom.xml para servir conteúdo web dinâmico.

Para que o Spring Boot leia e renderize templates Thymeleaf ou arquivos HTML, coloque os templates em src/main/resources/templates.

O Thymeleaf então analisa o arquivo index.html e usa os valores reais passados da classe controladora em vez dos valores dinâmicos presentes no arquivo de índice.

Após isso, a mensagem é renderizada no navegador web quando a aplicação Spring Boot é executada.

org.springframework.boot spring-boot-starter-thymeleaf

Descreva o processo de criação de um projeto Spring Boot usando o Spring Initializer.

O Spring Initializr, uma ferramenta web do Spring, permite criar um projeto Spring Boot com alguns passos, fornecendo os detalhes do projeto.

  • Acesse o Spring Initializr e preencha os campos de entrada.
  • Clique em “Gerar” para iniciar o download do projeto.
  • Extraia o projeto baixado do arquivo zip e abra-o no seu IDE. No IDE, navegue para Arquivo->Novo->Projeto de fontes existentes->Spring-boot-app e selecione o arquivo pom.xml. Clique no prompt de importação de alterações para sincronizar o projeto. Em seguida, acesse o arquivo application.properties e edite o número server.port para server.port=7000.
  • Agora, execute a aplicação em src->main->java->com.gfg.Spring.boot.app
  • O que é JPA no Spring Boot?

    JPA é uma especificação em Java que usa o Mapeamento Objeto-Relacional (ORM) para gerenciar dados relacionais e permitir o acesso a dados entre objetos Java ou classes Java e o banco de dados relacional da aplicação.

    A JPA utiliza a Java Persistent Query Language (JPQL), uma linguagem de consulta orientada a objetos, que também é independente de plataforma.

    A JPA permite o processamento de consultas e transações de objetos no banco de dados utilizando a API do Entity Manager que ela fornece.

    O que é configuração automática no Spring Boot?

    A configuração automática busca automatizar a configuração da aplicação Spring Boot utilizando as dependências JAR que você adiciona.

    Com base nas dependências disponíveis no Classpath da aplicação, a configuração automática declarará os objetos internos de módulos Spring, incluindo JPA e segurança do Spring, entre outros.

    O que são as anotações do Spring?

    As anotações do Spring são metadados que oferecem informações sobre um trecho de programa e adicionam dados suplementares a ele. Componentes de código, como classes e métodos, são comumente associados a anotações.

    As anotações não afetam diretamente a operação do programa ou a ação subsequente do código compilado. Sua sintaxe começa com o símbolo ‘@’.

    O Spring Boot oferece seis tipos principais de anotações, que incluem:

    • Anotações do Spring Core
    • Anotações de dados do Spring
    • Anotações do Spring Bean
    • Anotações do Spring Web
    • Anotações de agendamento do Spring
    • Anotações de inicialização do Spring

    O que significa Spring Data REST?

    Spring Data REST expõe recursos RESTful em torno dos recursos do Spring Data, utilizando um mínimo de código.

    O exemplo a seguir usa o método POST para solicitar conteúdo usando http://localhost/example como URL e Content-Type: application/json como Header.

    Solicitar conteúdo:

    {
        "name": "Jimmy",
        "Gender": "Male",
        "Age": 23
    }

    Conteúdo da resposta:

    {
        "name": "Jimmy",
        "Gender": "Male",
        "Age": 23
        "_links": {
            "self": {
                "href": "http://localhost:8080/example/1"
            },
            "person": {
                "href": "http://localhost:8080/example/1"
             }
        }
    }

    Trata-se de um conjunto abrangente de ferramentas predefinidas cujas propriedades são aplicadas aos respectivos ambientes de desenvolvimento para facilitar o desenvolvimento e economizar tempo.

    Sempre que você altera o código na aplicação Spring Boot, o recurso Spring Boot DevTools reinicia automaticamente. Isso evita o trabalho de reiniciar manualmente a aplicação cada vez que você modifica o código.

    O que é Spring Data?

    Spring Data busca facilitar o acesso a tecnologias de acesso a dados para desenvolvedores, como dados relacionais e não relacionais, e serviços de dados baseados na nuvem, mantendo as características específicas do armazenamento de dados subjacente.

    Como fazer uma configuração automática recuar quando um bean já existe?

    Você usará a anotação @ConditionalOnMissingBean, que inclui os atributos name e value da seguinte forma.

    • O atributo value armazena o tipo do bean a ser verificado.
    • O atributo name especifica o nome do bean a ser verificado.

    Como buscar dados de um banco de dados no Spring Boot?

    Podemos acessar dados de um banco de dados MySQL para nossa aplicação Spring Boot seguindo os passos abaixo.

    Passo 1: Use o comando create DATABASE person para criar o banco de dados no MySQL.

    Passo 2: Dentro do banco de dados, crie uma tabela:

    CREATE TABLE person(id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, name VARCHAR(255));

    Passo 3: Crie uma aplicação Spring Boot e adicione as dependências JDBC, MySQL e web necessárias.

    Passo 4: Configure o banco de dados no arquivo application.properties como abaixo.

    spring.datasource.url=jdbc:mysql://localhost:3306/personDetails
    spring.datasource.username=example123
    spring.datasource.password=example123
    spring.jpa.hibernate.ddl-auto=create-drop

    Passo 5: Em seguida, vamos lidar com as solicitações na classe controller:

    package com.person;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.web.bind.annotation.RestController;
    @RestController
    public class JdbcController {
       @Autowired
       JdbcTemplate jdbc;
       @RequestMapping("/save")
       public String index(){
          jdbc.execute("insert into person (name)values(Trial)");
          return "Name entered Successfully";
       }
    }

    Finalmente, execute a aplicação e verifique a entrada no banco de dados para visualizar os dados acessados.

    Por que precisamos de perfis Spring?

    Spring Profiles permite segregar a configuração de uma aplicação em diferentes partes e aproveitá-las para desenvolvimentos específicos.

    Spring Profiles evita que o desenvolvedor precise gerenciar configurações externas específicas do ambiente, caso os perfis não estejam disponíveis.

    Isso dificultaria a sincronização e significaria a necessidade extra de escrever vários componentes semelhantes a fábricas que aproveitariam certas coisas necessárias, dependendo de parâmetros específicos do ambiente.

    Podemos alterar a porta do servidor Tomcat embutido no Spring Boot?

    Sim, podemos.

    Isso é feito manipulando o arquivo application.properties para incluir a propriedade server.port e atribuir a ela uma porta de sua escolha. O Spring Boot carrega automaticamente o arquivo de propriedades da aplicação e aplica as configurações necessárias.

    Por exemplo, você pode alterar o número server.port do valor padrão de 8080 para server.port= 8081.

    Como configurar o Log4j para log?

    Com estes passos simples, podemos configurar o Log4j para registro:

  • Primeiro, crie seu projeto Java e clique com o botão direito no projeto. Navegue até MyEclipse->File->New->Java Project para nomear o projeto e clique em concluir.
  • Em seguida, clique com o botão direito no nome do projeto Java e selecione Build Path -> Configure Build Path. Esta etapa adicionará o arquivo log4j.
  • Navegue até a biblioteca e clique no botão Add External JARS e selecione o arquivo log4j no menu suspenso que aparece. Em seguida, clique em OK.
  • Crie um novo arquivo java que você chamará de arquivo log4j.properties, clique em concluir e adicione este arquivo ao Classpath.
  • Clique em Advanced no Classpath, selecione a opção Add Folders e lembre-se de clicar em OK.
  • Agora você pode procurar o arquivo log4j.properties, clicar em OK e executar o projeto.
  • Verifique o console para a saída abaixo.
  • [main] DEBUG Example – Hello this is a debug message
    [main] INFO Example – Hello this is an info message

    O que é um contêiner IoC?

    O contêiner IoC (Inversion of Control) é um contêiner principal do Spring que implementa automaticamente a injeção de dependência. Ele instancia a aplicação da classe e é responsável pela configuração dos objetos e montagem das dependências necessárias.

    Ele também gerencia o ciclo de vida do objeto, desde sua instanciação até sua destruição.

    O IoC executa essas tarefas utilizando a configuração de metadados em código Java, XML e anotações Java.

    O contêiner é chamado de Inversão de Controle porque ele controla os objetos Java e os ciclos de vida desses objetos, uma tarefa do desenvolvedor.

    Explicar como criar uma aplicação Spring Boot usando Maven

    Este processo envolve algumas etapas.

    Passo 1: Selecione o tipo de projeto.

    Passo 2: Nomeie seu projeto para configurá-lo e clique em concluir para criar o projeto.

    Passo 3: Agora, vamos configurar o arquivo pom.xml do projeto Maven para criar um projeto Spring Boot a partir dele.

    arquivo pom.xml:

    <project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">  
      <modelVersion>4.0.0</modelVersion>  
      <groupId>com.javatpoint</groupId>  
      <artifactId>spring-boot-example</artifactId>  
      <version>0.0.1-SNAPS<name>JavaTpoint Spring Boot Example</name>  
    </project>

    A configuração envolve a adição de um pai ao projeto Maven. Isso declarará o projeto Maven como um projeto filho do projeto pai.

    <parent>  
        <groupId>org.springframework.boot</groupId>  
        <artifactId>spring-boot-starter-parent</artifactId>  
        <version>1.4.2.RELEASE</version>  
    </parent>

    Passo 4: Adicione a dependência web, spring-boot-starter-web, ao pom.xml.

    <dependencies>  
        <dependency>  
            <groupId>org.springframework.boot</groupId>  
            <artifactId>spring-boot-starter-web</artifactId>  
        </dependency>  
    </dependencies>

    Passo 5: Adicione a versão Java do projeto.

    <properties>  
        <java.version>1.8</java.version>  
    </properties> 

    Passo 6: Observe que toda vez que adicionar novas dependências, precisa atualizar o projeto Maven.

    Passo 7: Torne o projeto Maven executável criando uma classe Java dentro do pacote src/main/java.

    Passo 8: Em seguida, chame o método de execução estática da classe Spring Application.

    Passo 9: Por último, execute a classe como uma aplicação Java.

    Quais são as vantagens do Spring Boot sobre o Spring?

    • A capacidade de bootstrapping do Spring Boot para compilar o idioma de origem usando o Boot Initializer, economiza espaço e reduz o tempo de carregamento da aplicação.
    • Ao contrário do Spring, o Spring Boot permite o gerenciamento de dependências após adicionar as dependências de inicialização do Spring sem precisar do POM pai (modelo de objeto pai) ou arquivo XML.
    • O Spring Boot permite que desenvolvedores usem anotações ou configurações XML sem a necessidade de configurações XML.
    • Desenvolvedores preferem o Spring Boot por seu código padrão reduzido para configurar uma aplicação. Ele vem com um banco de dados na memória e um servidor Tomcat embutido, diminuindo o código boilerplate. O Spring, por outro lado, possui mais código boilerplate.
    • O Spring Boot não precisa de arquivos WAR (recurso de aplicação web) e usa apenas o JAR (recurso Java), que tem uma estrutura menor e mais simples, sendo mais útil para usuários e desenvolvedores.
    • O Spring Boot incorpora automaticamente servidores como Tomcat e Jetty; o desenvolvedor não precisa configurar o servidor manualmente como no Spring.

    O processo de paginação divide os dados em seções para economizar recursos. Ele usa dois campos, tamanho da página e número da página.

    O processo envolve algumas etapas, incluindo:

    Passo 1: Configuração inicial
    A entidade consistirá em uma classe de domínio nomeada Person.

    @Entity 
    public class Person {
        @Id
        private long id;
        private String name; 
    }

    Passo 2: Criação do repositório
    Em seguida, use um PersonRepository que estende PagingAndSortingRepository para obter os métodos findAll(Pageable pageable) e findAll(Sort sort) para paginação e classificação, respectivamente.

    public interface PersonRepository extends PagingAndSortingRepository<Person, Integer> {
        List<Product> findAllByPrice(double price, Pageable pageable);
    }

    Passo 3: Etapa de paginação
    A primeira etapa envolve a criação de um objeto PageRequest, passando o número da página e o tamanho da página conforme solicitado, implementando a interface Pageable.

    Pageable firstPageWithTwoElements = PageRequest.of(0,2);
    Pageable secondPageWithThreeElements = PageRequest.of(1,3);

    Em seguida, passe este objeto PageRequest para o método do repositório como parâmetro.

    Page<Person> allProducts = personRepository.findAllByPrice(findPageWithTwoElements);
    List<Items> allTwoDollarItems = itemsRepository.findAllByPrice(2, secondPageThreeElements) 

    Por padrão, o método findAll(Pageable pageable) retornará um objeto Page<T>.

    Explicar como registrar uma configuração automática personalizada

    No arquivo META-INF/spring.factories, na chave @EnableAutoConfiguration, mencione o nome completo. Esta etapa registra a classe de configuração automática.

    org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.baeldung.autoconfigure.CustomAutoConfiguration

    Ao construir o projeto usando Maven, coloque o arquivo no diretório resources/META-INF.

    O que é bootstrapping no Spring Boot?

    Bootstrapping é o processo de execução da lógica na aplicação Spring Boot durante a inicialização.
    O Boot Initializer compila o código fonte no Spring Boot. Esse processo economiza espaço no dispositivo e reduz o tempo de carregamento da aplicação.

    Considerações Finais 👨‍💻

    Este artigo abordou diversas perguntas de Spring Boot que os entrevistadores podem fazer, juntamente com as respostas para te ajudar a enfrentá-las com confiança. Esperamos que você conquiste o emprego dos seus sonhos!

    Você também pode querer aprender dicas relevantes sobre perguntas comuns em entrevistas de Java.

    Boa sorte!🙂