Native image serve para cargas em que tempo de startup e memória dominam: funções serverless, ferramentas de linha de comando e serviços que escalam para zero, já que ela inicia em milissegundos sem aquecimento e com footprint bem menor. O custo é a suposição de mundo fechado, então reflexão, proxies dinâmicos e carregamento de recursos precisam ser conhecidos em tempo de build, os builds são lentos, e o throughput de pico pode ser menor do que o JIT alcança num processo de longa duração.
Por que os entrevistadores perguntam isso
Isso checa se você avalia uma tecnologia contra uma carga de trabalho em vez de seguir o hype. O entrevistador quer os dois lados: o ganho de startup e memória, e os custos reais em tempo de build, configuração de reflexão e depuração. Saber que frameworks geram a configuração necessária em tempo de build, e que um serviço de longa duração e alto throughput normalmente se sai melhor no JIT, mostra julgamento equilibrado.
Como estruturar sua resposta
- Case a técnica com cargas em que startup e memória importam.
- Explique a suposição de mundo fechado e o que ela restringe.
- Cubra os custos práticos: tempo de build, configuração, lacunas de ferramental.
- Diga quando você ficaria na JVM.
Exemplo de resposta
Eu apelo para isso quando o tempo de startup está no caminho crítico. Uma função que roda por duzentos milissegundos não pode bancar uma JVM que leva três segundos para subir e mais um minuto para aquecer, e o mesmo argumento vale para uma ferramenta de linha de comando ou um serviço que escala para zero entre picos de tráfego. Memória é o outro ganho, já que uma native image roda numa fração do heap. O que você abre mão é o dinamismo. Compilação ahead of time assume um mundo fechado, então qualquer coisa descoberta em runtime, reflexão, proxies dinâmicos, service loading, resource bundles, precisa ser declarada em tempo de build. Frameworks modernos geram a maior parte dessa configuração para você durante o passo de build, mas uma biblioteca que faz algo esperto em runtime vai falhar de um jeito que só aparece no binário nativo, então a suíte de testes precisa rodar contra a imagem também. Builds também levam minutos em vez de segundos, e o ferramental de observabilidade é menos maduro. Para um serviço de longa duração com tráfego constante eu fico na JVM, porque o JIT acaba batendo código compilado ahead of time no throughput de pico.
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 um framework gera a configuração de reflexão para você?
- Como você depuraria algo que só falha na native image?
- O que a otimização guiada por profile muda na diferença de throughput?
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