Os dois são defensáveis: o Maven dá um build declarativo e altamente convencional que qualquer um lê fácil, enquanto o Gradle oferece builds incrementais e um build cache que compensam em projetos multi módulo grandes. Para reprodutibilidade, fixe versões exatas de dependência, use um bill of materials para bibliotecas relacionadas, evite ranges de versão e snapshots em releases, e rode o build num container com toolchain fixa para que a versão do JDK não seja a que a máquina tiver.
Por que os entrevistadores perguntam isso
O entrevistador está menos interessado na sua preferência do que em saber se você tem opinião sobre higiene de build: gestão de dependências, reprodutibilidade e tempos de build. Citar fixação de versão, um bill of materials e escaneamento de dependências mostra que você trata o build como infraestrutura de produção. Builds longos e resolução instável de dependências são custos reais de time, e essa pergunta descobre se você os percebe.
Como estruturar sua resposta
- Dê uma comparação curta e uma escolha padrão com um motivo.
- Cubra gestão de versões de dependência e um bill of materials.
- Explique como você torna os builds reprodutíveis entre máquinas.
- Cite velocidade de build e checagens de cadeia de suprimentos.
Exemplo de resposta
Para um serviço único eu normalmente pego Maven, porque o build acaba sendo algo que qualquer um lê sem aprender uma linguagem específica do projeto, e o parent do Spring Boot resolve a maior parte. Para um repositório multi módulo grande onde o tempo de build é um imposto diário eu prefiro Gradle, já que builds incrementais e o build cache mudam de verdade o ciclo de feedback. Sobre reprodutibilidade, as regras são as mesmas nos dois casos: versões exatas, sem ranges, sem dependências snapshot em nada que seja lançado, e um bill of materials para grupos de bibliotecas, para que eu atualize uma família junta em vez de misturar versões e receber um erro estranho em runtime. Eu fixo o JDK com uma toolchain para o build não depender do que está instalado no notebook de alguém, e o CI builda num container. Eu também quero a árvore de dependências checada no CI, tanto por vulnerabilidades quanto por upgrades transitivos acidentais, já que o incidente clássico é um bump de versão menor chegando por uma dependência transitiva e mudando um comportamento que ninguém escolheu.
Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.
Veja como funcionaPerguntas de acompanhamento que você pode esperar
- Como você resolve um conflito entre duas versões transitivas de uma biblioteca?
- Como você reduziria um build de dez minutos?
- Qual é a sua política para atualizar dependências com vulnerabilidades conhecidas?
Mais perguntas para Desenvolvedor Java
Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.
Prever minhas perguntas