Entrevista técnica backend Java: perguntas e respostas-modelo
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 umEXPLAIN. - 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
- Oracle Java SE 21: classe String (imutabilidade)
- Oracle Java SE 21: Object (contrato de hashCode/equals)
- Oracle Java SE 21: HashMap
- Oracle Java SE 21: ConcurrentHashMap
- Spring Framework: @Transactional (proxy, rollback)
- PostgreSQL: introdução a índices
- PostgreSQL: isolamento de transações
- MDN: Idempotent
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.