Entrevista técnica backend Java: perguntas e respostas-modelo

· · 8 min de leitura

Resposta rápida: numa entrevista técnica para desenvolvedor backend Java no Brasil, as perguntas mais comuns giram em torno de fundamentos da linguagem (String, equals/hashCode, coleções), concorrência, Spring (injeção de dependência, @Transactional), SQL e desenho de APIs REST. Não existe lista oficial por empresa, então o que dá para preparar é o padrão de resposta: definição curta, exemplo real e trade-off. As respostas-modelo abaixo são ilustrativas, não perguntas confirmadas de nenhuma empresa.

Como estruturar uma resposta técnica

O entrevistador quer saber se você já usou o conceito, não se decorou a definição. Use três passos: (1) uma frase direta; (2) um exemplo do seu projeto, estágio ou projeto pessoal, dito como tal; (3) o trade-off, ou seja, quando a solução não serve. Se não souber, diga o que sabe e como descobriria o resto. Chutar com segurança e errar costuma custar mais do que admitir a lacuna. Para o formato do teste que normalmente vem antes da conversa, veja o guia do teste técnico take-home.

Fundamentos de Java: perguntas e respostas-modelo

1. Por que String é imutável? A documentação do Java diz que as Strings são constantes: seus valores não mudam depois de criadas, e por isso podem ser compartilhadas. Resposta-modelo: "Como a String é imutável, ela pode ser compartilhada com segurança entre threads e usada como chave de mapa sem que o hash mude. O custo é criar objetos novos em concatenações repetidas; em laços, uso StringBuilder."

2. Qual a relação entre equals e hashCode? Se dois objetos são iguais segundo equals, o hashCode dos dois deve ser o mesmo; objetos diferentes podem ter o mesmo hash, mas hashes distintos ajudam o desempenho das tabelas hash. Por isso, ao sobrescrever um, sobrescreva o outro. Exemplo: uma entidade Cliente usada como chave de HashMap sem hashCode consistente "some" do mapa.

3. Diferença entre HashMap e ConcurrentHashMap? O HashMap não é sincronizado, aceita chave e valor nulos e não garante ordem; com várias threads alterando a estrutura, exige sincronização externa. O ConcurrentHashMap suporta leituras concorrentes sem bloqueio e atualizações com alta concorrência, mas não aceita null como chave nem valor. Atenção: métodos agregados como size só são confiáveis sem atualizações concorrentes.

4. Checked vs unchecked exceptions, interface vs classe abstrata, final, static, Optional, streams. São perguntas frequentes em guias brasileiros; prepare uma frase e um exemplo para cada.

Spring e acesso a dados

Como funciona o @Transactional e qual a pegadinha? Pela documentação do Spring Framework, no modo proxy (o padrão) só chamadas externas que passam pelo proxy são interceptadas: uma chamada de método dentro da mesma classe (auto-invocação) não inicia transação, mesmo com a anotação. Além disso, por padrão apenas RuntimeException e Error causam rollback; exceções checadas não. Resposta-modelo: "Já vi um método @Transactional chamado por outro da mesma classe que não gerava transação. Resolvi movendo a lógica para outro bean. E configuro rollbackFor quando preciso reverter em exceção checada."

  • Injeção de dependência: por que preferir injeção via construtor (imutabilidade, testabilidade).
  • Problema N+1 no JPA/Hibernate: o que é, como detectar nos logs de SQL e como corrigir (join fetch, entity graph, batch).
  • Lazy vs eager loading e o LazyInitializationException.

SQL e bancos de dados

  • Para que serve um índice e qual o custo? Ele evita varrer a tabela inteira, mas precisa ser mantido a cada escrita; a documentação do PostgreSQL recomenda remover índices raramente usados. Boa resposta cita leitura mais rápida e escrita mais cara.
  • Níveis de isolamento. No PostgreSQL são quatro níveis do padrão SQL, com Read Committed como padrão; confirme o comportamento no banco que a vaga usa.
  • INNER vs LEFT JOIN, GROUP BY/HAVING, e como ler um EXPLAIN.
  • Quando usar NoSQL? Evite "é mais rápido"; fale de modelo de dados, consistência e padrão de acesso.

Treino prático: pegue uma consulta lenta de um projeto seu, rode EXPLAIN e conte o que mudou depois do índice. Isso vale mais do que qualquer definição decorada.

APIs REST e desenho de serviços

O que é idempotência? Um método HTTP é idempotente se o efeito no servidor de uma requisição é o mesmo que o de várias requisições idênticas. GET, HEAD, OPTIONS, TRACE, PUT e DELETE são idempotentes; POST e PATCH não têm essa garantia (MDN). Isso importa para reenvio: um pagamento repetido por timeout não pode cobrar duas vezes, e a solução comum é uma chave de idempotência.

  • Códigos de status certos (201, 400, 401 vs 403, 404, 409, 429).
  • Paginação por offset vs cursor.
  • Autenticação vs autorização e limites do JWT.
  • Monolito vs microsserviços: cite o custo operacional, não só as vantagens. Para perguntas de arquitetura em fintechs, veja o artigo de system design em fintech.

Live coding e comunicação

Mesmo que o conteúdo seja bom, o processo é avaliado. Repita o problema com suas palavras, pergunte sobre limites e entradas vazias, comece pela solução simples, diga a complexidade e teste com um caso pequeno antes de declarar pronto. Se travar, narre o que já tentou. Se a entrevista for em inglês, veja o guia de entrevista técnica em inglês; para plataformas de teste, live coding e HackerRank.

Se você quiser treinar com apoio de uma ferramenta

O Interview Copilot é um overlay para desktop (macOS, Windows e Linux em beta) que ouve o áudio da chamada, transcreve e sugere respostas em tempo real, e também resolve problemas de código a partir de uma captura de tela. O plano gratuito não pede cartão (5 minutos de reconhecimento ao vivo e 3 soluções por captura). Veja também o assistente de entrevista de código. É um ótimo uso em simulados de treino.

Sobre as regras: muitas empresas proíbem ajuda externa durante testes e entrevistas, e algumas monitoram a tela. Antes de uma entrevista real, pergunte ao recrutador o que é permitido e siga o que estiver no e-mail do convite. No macOS e no Windows a janela pede ao sistema para não aparecer na captura; no Linux ela fica visível, e o resultado depende do app de compartilhamento, então teste com um compartilhamento privado (detalhes). Não há garantia, e quebrar regras pode levar à desclassificação.

Fontes

Verificado em 13/11/2026. Não consegui confirmar, em fonte oficial, quais perguntas específicas empresas brasileiras fazem; os temas acima são gerais e as respostas-modelo, ilustrativas.

FAQ

Quais perguntas de entrevista técnica para desenvolvedor Java são mais comuns?

Fundamentos (String, equals/hashCode, coleções), concorrência, Spring (injeção de dependência, @Transactional), SQL e REST. Não há lista oficial por empresa; leia a descrição da vaga e prepare os temas citados nela.

Por que String é imutável em Java?

Segundo a documentação, Strings são constantes e, por serem imutáveis, podem ser compartilhadas. Isso dá segurança entre threads e estabilidade como chave de mapa; o custo é criar novos objetos em concatenações repetidas.

Qual a diferença entre HashMap e ConcurrentHashMap?

HashMap não é sincronizado, aceita null e não garante ordem. ConcurrentHashMap suporta concorrência sem bloquear leituras, mas não permite chave ou valor nulos.

Por que meu método @Transactional não abre transação?

No modo proxy padrão, a auto-invocação, isto é, um método chamando outro da mesma classe, não passa pelo proxy e não inicia transação. Mova a lógica para outro bean ou use o modo AspectJ.

Como responder quando não sei a resposta?

Diga o que sabe, explique como investigaria e peça para raciocinar em voz alta. Admitir a lacuna costuma ser melhor do que chutar com segurança e errar.

Posso usar IA durante a entrevista técnica?

Depende das regras da empresa, e muitas proíbem. Pergunte ao recrutador antes da entrevista real e siga o e-mail do convite; para treino, use à vontade.

Como o aplicativo ajuda aqui

Artigos relacionados

Leia a seguir