Perguntas de entrevista Java Backend Developer: Spring Boot e JPA

Milad Bonakdar
Autor
Prepare-se com perguntas práticas sobre Spring Boot, APIs REST, microsserviços, JPA/Hibernate, segurança, testes e decisões de arquitetura.
Introdução
Entrevistas de backend Java costumam avaliar se você consegue construir e operar APIs confiáveis, não apenas repetir nomes de frameworks. Espere perguntas sobre Spring Boot, design REST, persistência, transações, testes, segurança, observabilidade e decisões de arquitetura em sistemas de microsserviços.
Use este guia para preparar respostas ligadas ao trabalho real: o que a tecnologia faz, quando você a usaria, o que pode dar errado e como você testaria ou depuraria. Em 2026, também vale entender bases Java 17+, conversas sobre Java 21/25, projetos Spring Boot 3/4 e segurança moderna de APIs com OAuth2/JWT.
Como usar este guia
- Comece pelos fundamentos fáceis de Spring Boot e Java; depois treine em voz alta as perguntas médias e difíceis.
- Acrescente a cada resposta um exemplo de projeto do seu currículo ou portfólio.
- Quando houver tradeoff, diga qual opção escolheria por padrão e qual sinal faria você mudar.
- Se seu currículo menciona microsserviços, JPA, Kafka, Docker ou cloud, prepare uma história concreta de falha ou debugging.
Conceitos Essenciais do Spring Boot
1. O que é Spring Boot e como ele difere do tradicional Spring Framework?
Resposta:
- Spring Framework: Um framework abrangente para o desenvolvimento Java empresarial. Requer uma configuração manual significativa (baseada em XML ou Java) para ser configurado.
- Spring Boot: Uma extensão do Spring Framework que simplifica a configuração e o desenvolvimento de novas aplicações Spring.
- Auto-Configuração: Configura automaticamente os beans com base nas dependências do classpath.
- Servidores Embutidos: Inclui Tomcat, Jetty ou Undertow, para que você não precise implantar arquivos WAR.
- Starters: Dependências selecionadas para simplificar a configuração da build.
- Defaults Opinativos: Abordagem de "convenção sobre configuração".
Raridade: Comum Dificuldade: Fácil
2. Explique a anotação @SpringBootApplication.
Resposta: É uma anotação de conveniência que combina três outras anotações:
@Configuration: Marca a classe como uma fonte de definições de bean.@EnableAutoConfiguration: Diz ao Spring Boot para começar a adicionar beans com base nas configurações do classpath, outros beans e várias configurações de propriedades.@ComponentScan: Diz ao Spring para procurar outros componentes, configurações e serviços no pacote atual e nos subpacotes.
Raridade: Comum Dificuldade: Fácil
3. O que é Injeção de Dependência (DI) e Inversão de Controle (IoC)?
Resposta:
- IoC: Um princípio onde o controle da criação e gerenciamento de objetos é transferido do programador para um contêiner (Spring IoC Container).
- DI: Um padrão de design usado para implementar IoC. Em vez de um objeto criar suas dependências, elas são "injetadas" nele (via Construtor, Setter ou Campo).
- Benefício: Desacoplamento, testes mais fáceis (mocking de dependências) e melhor capacidade de manutenção.
Raridade: Muito Comum Dificuldade: Média
4. O que são Spring Boot Starters? Dê exemplos.
Resposta: Starters são um conjunto de descritores de dependência convenientes que você pode incluir em sua aplicação. Eles contêm todas as dependências que você precisa para colocar um projeto em funcionamento rapidamente com um conjunto consistente e suportado de dependências transitivas gerenciadas.
- Exemplos:
spring-boot-starter-web: Para construir aplicações web (inclui Tomcat e Spring MVC).spring-boot-starter-data-jpa: Para usar Spring Data JPA com Hibernate.spring-boot-starter-test: Para testes (inclui JUnit, Mockito).spring-boot-starter-security: Para Spring Security.
Raridade: Comum Dificuldade: Fácil
5. O que é Spring Actuator?
Resposta: Spring Boot Actuator fornece recursos prontos para produção para ajudá-lo a monitorar e gerenciar sua aplicação.
- Endpoints: Expõe endpoints como
/health(status do aplicativo),/metrics(uso de memória, CPU),/info(informações do aplicativo),/env(propriedades do ambiente). - Uso: Crítico para equipes de operações verificarem a saúde dos microsserviços em produção.
Raridade: Comum Dificuldade: Média
Microsserviços e arquitetura
6. Quais são os benefícios dos Microsserviços em relação à Arquitetura Monolítica?
Resposta:
- Escalabilidade: Os serviços individuais podem ser escalados independentemente com base na demanda.
- Agnóstico de Tecnologia: Diferentes serviços podem usar diferentes tecnologias (Java, Go, Python) mais adequadas para a tarefa.
- Isolamento de Falhas: Uma falha em um serviço não necessariamente derruba todo o sistema.
- Implantação Independente: As equipes podem implantar serviços independentemente, permitindo ciclos de lançamento mais rápidos (CI/CD).
Raridade: Comum Dificuldade: Média
7. O que é um API Gateway? Por que usá-lo?
Resposta: Um API Gateway é um servidor que atua como um único ponto de entrada no sistema. Ele recebe todas as chamadas de API dos clientes e as encaminha para o microsserviço apropriado.
- Funções: Roteamento de solicitações, composição e tradução de protocolo.
- Preocupações transversais: Autenticação, terminação SSL, Limitação de Taxa, Caching, Logging.
- Exemplos: Spring Cloud Gateway, Netflix Zuul, Kong.
Raridade: Muito Comum Dificuldade: Média
8. Explique o Service Discovery (Eureka).
Resposta: Em um ambiente de microsserviços, as instâncias de serviço têm endereços IP dinâmicos. Service Discovery é um mecanismo para os serviços se encontrarem.
- Eureka Server: Atua como um registro de serviço.
- Eureka Client: Os microsserviços se registram no Eureka Server na inicialização e enviam heartbeats.
- Discovery: Quando o Serviço A precisa chamar o Serviço B, ele pede ao Eureka o endereço do Serviço B.
Raridade: Comum Dificuldade: Média
9. O que é o padrão Circuit Breaker?
Resposta: O padrão Circuit Breaker impede que uma aplicação tente repetidamente executar uma operação que provavelmente falhará (por exemplo, chamar um serviço inativo).
- Estados:
- Fechado (Closed): As solicitações fluem normalmente.
- Aberto (Open): As solicitações são bloqueadas imediatamente (fail fast) para permitir que o serviço com falha se recupere.
- Semi-Aberto (Half-Open): Um número limitado de solicitações é permitido para testar se o serviço se recuperou.
- Ferramentas: Resilience4j (recomendado), Hystrix (obsoleto).
Raridade: Muito Comum Dificuldade: Difícil
Banco de Dados e JPA
10. O que são JPA e Hibernate?
Resposta:
- JPA (Java Persistence API): Uma especificação para acessar, persistir e gerenciar dados entre objetos Java e um banco de dados relacional. É apenas uma interface.
- Hibernate: A implementação mais popular da especificação JPA. É uma ferramenta ORM (Object-Relational Mapping).
Raridade: Comum Dificuldade: Fácil
11. Explique o problema N+1 Select no Hibernate.
Resposta: O problema N+1 acontece quando o framework de acesso a dados executa N instruções SQL adicionais para buscar os mesmos dados que poderiam ter sido recuperados ao executar a consulta SQL primária.
- Cenário: Buscar uma lista de
Authors (1 consulta). Iterar e acessarauthor.getBooks()(N consultas, uma para cada autor). - Solução: Use Join Fetch em JPQL (
SELECT a FROM Author a JOIN FETCH a.books) ou Entity Graphs para carregar entidades relacionadas eager em uma única consulta.
Raridade: Muito Comum Dificuldade: Média
12. Qual é a diferença entre @Entity, @Table e @Column?
Resposta:
@Entity: Especifica que a classe é uma entidade e é mapeada para uma tabela de banco de dados.@Table: Opcional. Especifica o nome da tabela de banco de dados a ser usada para o mapeamento. Se omitido, o nome da classe é usado.@Column: Opcional. Especifica os detalhes da coluna à qual um campo ou propriedade será mapeado. Se omitido, o nome do campo é usado.
Raridade: Comum Dificuldade: Fácil
Segurança e Testes
13. Como você protege uma aplicação Spring Boot?
Resposta: Use Spring Security como base e depois explique o modelo de segurança para o tipo de aplicação. Uma boa resposta separa autenticação, autorização, validação de tokens e proteções operacionais.
- Autenticação: Verifica quem chama a API, geralmente com OAuth2/OIDC, login por sessão ou credenciais entre serviços.
- Autorização: Limita o que o chamador pode fazer com roles, scopes, method security como
@PreAuthorizee regras em umSecurityFilterChain. - JWT/OAuth2 resource server: Em APIs stateless, valide bearer tokens, issuer, expiração, assinatura e scopes em vez de confiar cegamente no conteúdo do token.
- Hardening de API: HTTPS, CORS configurado com intenção, CSRF quando houver sessões de navegador, erros seguros, rate limits e auditoria para ações sensíveis.
Raridade: Comum Dificuldade: Média
14. Qual é a diferença entre @Mock e @InjectMocks no Mockito?
Resposta:
@Mock: Cria um objeto mock da classe/interface. Ele não tem nenhum comportamento real; você define seu comportamento usandowhen(...).thenReturn(...).@InjectMocks: Cria uma instância da classe e injeta os mocks que são criados com as anotações@Mock(ou@Spy) nesta instância. Usado para a classe em teste.
Raridade: Comum Dificuldade: Média
15. Como você lida com transações no Spring Boot?
Resposta:
Usando a anotação @Transactional.
- Mecanismo: Spring cria um proxy em torno da classe/método. Ele inicia uma transação antes da execução do método e a confirma após o método retornar. Se uma
RuntimeExceptionfor lançada, ele reverte a transação. - Propagation: Você pode configurar como a transação se relaciona com as transações existentes (por exemplo,
REQUIRED,REQUIRES_NEW).
Raridade: Comum Dificuldade: Média
Tópicos Avançados
16. O que é Spring Cloud Config?
Resposta: Spring Cloud Config fornece suporte do lado do servidor e do lado do cliente para configuração externalizada em um sistema distribuído.
- Config Server: Local central para gerenciar propriedades externas para aplicações em todos os ambientes. Ele pode ser apoiado por Git, SVN ou Vault.
- Benefício: Você pode alterar a configuração sem reimplantar a aplicação (usando
@RefreshScope).
Raridade: Incomum Dificuldade: Média
17. Explique a diferença entre os escopos Singleton e Prototype no Spring Beans.
Resposta:
- Singleton (Padrão): Apenas uma instância do bean é criada por contêiner Spring IoC. Ele é armazenado em cache e reutilizado.
- Prototype: Uma nova instância é criada cada vez que o bean é solicitado.
- Outros: Request, Session (escopos web-aware).
Raridade: Comum Dificuldade: Fácil
18. Qual é a diferença entre exceções Checked e Unchecked em Java?
Resposta:
- Checked Exceptions: Herdam de
Exception(mas não deRuntimeException). O compilador força você a tratá-las (try-catch) ou declará-las (throws). Exemplo:IOException,SQLException. Representam condições recuperáveis. - Unchecked Exceptions: Herdam de
RuntimeException. O compilador não força você a tratá-las. Exemplo:NullPointerException,IllegalArgumentException. Representam erros de programação. O@Transactionaldo Spring reverte apenas em exceções não verificadas por padrão.
Raridade: Comum Dificuldade: Fácil
19. Como funciona o Garbage Collection em Java?
Resposta: Garbage Collection (GC) é o processo de recuperação automática de memória ocupada por objetos que não são mais alcançáveis.
- Hipótese Geracional: A maioria dos objetos morre jovem.
- Estrutura da Heap: Geração Jovem (Eden, espaços Survivor) e Geração Antiga.
- Minor GC: Limpa a Geração Jovem. Rápido.
- Major/Full GC: Limpa a Geração Antiga. Mais lento, pode causar pausas "Stop-the-world".
- Algoritmos: G1GC (padrão no Java moderno), ZGC, Shenandoah (baixa latência).
Raridade: Comum Dificuldade: Difícil
20. O que são Java Streams?
Resposta: Introduzido no Java 8, Streams fornecem uma abordagem funcional para processar coleções de objetos.
- Recursos: Declarativo, Pipelining, Iteração Interna.
- Operações:
- Intermediárias:
filter,map,sorted(lazy). - Terminais:
collect,forEach,reduce(acionam o processamento).
- Intermediárias:
- Parallel Streams: Pode processar dados em paralelo usando várias threads (
.parallelStream()).
Raridade: Comum Dificuldade: Média


