Descubra como o tempo de execução cresce conforme a entrada cresce, e aí descarte constantes e termos de ordem menor. Leia a estrutura do código: blocos sequenciais somam, loops aninhados multiplicam, e chamadas recursivas seguem a recorrência. Espaço é a memória extra que você aloca além da entrada, incluindo a pilha de chamadas. Diga o pior caso por padrão, e aponte o caso médio separadamente se eles diferirem de forma significativa.
Por que os entrevistadores perguntam isso
Análise de complexidade é o vocabulário comum para falar de performance, então o entrevistador quer saber se você consegue raciocinar sobre escala antes de escrever código, em vez de depois de fazer profiling em produção. Eles estão checando se você separa a taxa de crescimento de micro otimizações, se você lembra de espaço além de tempo, e se você consegue enxergar o custo escondido em coisas como ordenar dentro de um loop ou copiar uma lista a cada iteração.
Como estruturar sua resposta
- Nomeie a entrada e diga o que n realmente mede.
- Percorra o código de cima para baixo, somando trabalho sequencial e multiplicando trabalho aninhado.
- Diga tempo e espaço separadamente, descartando constantes.
- Sinalize o pior caso e a entrada que o dispara.
Exemplo de resposta
Eu começo nomeando o n, porque metade da confusão nessas conversas vem de duas pessoas medindo coisas diferentes. Depois eu leio o código estruturalmente. Blocos sequenciais somam, então o maior vence; loops aninhados multiplicam; uma chamada recursiva vira uma recorrência que eu posso expandir ou reconhecer. Para espaço eu conto qualquer coisa que eu alocar além da entrada, e sempre incluo a pilha de chamadas, que é a parte que as pessoas esquecem na recursão. Um exemplo concreto: eu tinha uma função que parecia linear porque era um loop sobre uma lista de pedidos, mas dentro dela a gente chamava um helper que buscava um registro por id numa lista. Aquela busca era linear, então o custo real era quadrático, e só apareceu quando um cliente chegou a uns quarenta mil pedidos. A gente trocou a lista por um dicionário indexado por id e o endpoint foi de uns nove segundos para menos de duzentos milissegundos. Então minha regra é olhar dentro de cada chamada, não só nos loops que dá para ver.
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
- Qual é a complexidade se a entrada já estiver ordenada?
- Como a análise amortizada mudaria sua resposta para um array dinâmico?
- Quando você aceitaria um big O pior por uma constante melhor no mundo real?
Mais perguntas para Engenheiro de Software
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