Confirme o padrão primeiro pelas métricas: crescimento constante aponta para um vazamento ou um cache sem limite, enquanto um pico agudo aponta para uma única requisição carregando coisa demais de uma vez. Capture um heap profile antes e depois de um período de crescimento e compare as alocações retidas. As causas de sempre são caches sem despejo, coleções crescendo dentro de objetos de vida longa, recursos não fechados e endpoints que carregam um result set inteiro em memória.
Por que os entrevistadores perguntam isso
O entrevistador quer um método em vez de um chute, mais evidência de que você já usou um profiler no calor do problema. Distinguir crescimento gradual de picos é a divisão diagnóstica central, e muda onde você procura. Ele também checa se você recorreria a reinícios e um limite de memória maior como resposta permanente, o que esconde o problema até o tráfego dobrar.
Como estruturar sua resposta
- Separe crescimento constante de alocação em picos usando as métricas.
- Capture e compare heap profiles ao longo de uma janela de crescimento.
- Enumere as causas de sempre e revise as mudanças recentes.
- Coloque uma proteção no lugar para que não volte a acontecer em silêncio.
Exemplo de resposta
O formato do gráfico me diz onde olhar. Uma subida lenta ao longo de dias que sobrevive a períodos calmos é um vazamento ou um cache sem limite. Um dente de serra que dispara em requisições específicas significa que algo carrega demais de uma vez. Para o primeiro caso eu tiro heap profiles com algumas horas de diferença sob tráfego parecido e faço um diff por tamanho retido, depois olho o que segura os maiores objetos. Na prática costuma ser algo sem graça: um mapa usado como cache sem despejo e sem máximo, um label de métrica construído a partir de um valor fornecido pelo usuário, então a cardinalidade cresceu para sempre, ou listeners registrados num objeto de vida longa e nunca removidos. Para picos eu procuro endpoints que leem uma tabela inteira para uma lista em vez de fazer streaming, ou um job em lote que carrega todas as linhas antes de gravar. Peguei exatamente isso numa exportação CSV que materializava um milhão de linhas; fazer streaming em páginas deixou a memória plana. Depois eu adiciono um alerta na tendência de memória, não só na queda, para saber disso antes do reinício.
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ê decidiria se é um vazamento ou apenas um conjunto de trabalho grande?
- O que você limitaria para impedir um cache sem limite de crescer de novo?
- Como as configurações do coletor de lixo mudam o que você vê aqui?
Mais perguntas para Desenvolvedor Backend
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