dezembro 21, 2025
9 min de leitura

Perguntas para Entrevista de Desenvolvedor Backend (Java): Guia Completo

interview
career-advice
job-search
Perguntas para Entrevista de Desenvolvedor Backend (Java): Guia Completo
Milad Bonakdar

Milad Bonakdar

Autor

Domine o desenvolvimento backend Java com perguntas essenciais para entrevistas, cobrindo Spring Boot, Microsserviços, JPA e design de sistemas. Preparação perfeita para entrevistas de desenvolvedor Java.


Introdução

Java continua sendo uma potência no mundo de backend empresarial, especialmente com o moderno ecossistema Spring Boot. Sua robustez, escalabilidade e vasto ecossistema o tornam uma das principais escolhas para a construção de microsserviços e aplicações nativas da nuvem.

Este guia aborda as principais perguntas de entrevistas para Desenvolvedores Backend especializados em Java e Spring Boot. Exploraremos os principais conceitos do framework, arquitetura de microsserviços, interações com bancos de dados usando JPA/Hibernate e as melhores práticas para ajudá-lo a se preparar para sua próxima entrevista.


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:

  1. @Configuration: Marca a classe como uma fonte de definições de bean.
  2. @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.
  3. @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 acessar author.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: Usando Spring Security.

  • Autenticação: Verificar quem é o usuário (por exemplo, Basic Auth, Form Login, OAuth2/OIDC).
  • Autorização: Verificar o que o usuário tem permissão para fazer (por exemplo, controle de acesso baseado em função usando @PreAuthorize).
  • JWT: Para microsserviços stateless, JSON Web Tokens são comumente usados para passar a identidade entre os serviços.

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 usando when(...).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 RuntimeException for 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 de RuntimeException). 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 @Transactional do 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).
  • Parallel Streams: Pode processar dados em paralelo usando várias threads (.parallelStream()).

Raridade: Comum Dificuldade: Média

Newsletter subscription

Dicas de carreira semanais que realmente funcionam

Receba as últimas ideias diretamente na sua caixa de entrada

Pare de Se Candidatar. Comece a Ser Contratado.

Transforme seu currículo em um ímã de entrevistas com otimização impulsionada por IA em que candidatos a emprego em todo o mundo confiam.

Comece grátis

Compartilhar esta publicação

Supere a Taxa de Rejeição de 75% do ATS

3 em cada 4 currículos nunca chegam a um olho humano. Nossa otimização de palavras-chave aumenta sua taxa de aprovação em até 80%, garantindo que os recrutadores realmente vejam seu potencial.