Entrevista técnica

O plano de 7 dias para nunca mais travar em Big-O na entrevista

30 minutos por dia. No fim, a cola com 20 trechos de código e as frases para dizer na entrevista. Regra: diga a complexidade antes de tipar.

O caminhoachar os loopscontartempo e espaçoversão melhor

Quem fala a complexidade com segurança passa confiança na entrevista. Na mentoria, eu monto com você o plano de estudo para a vaga que você quer, ajusto o seu LinkedIn e te ensino a achar as melhores vagas.

Etapa01

Dia 1 · O(1) e O(n)

Acesso direto é constante. Um loop que passa por todos os itens é linear.

Faça: Resolva 3 problemas fáceis e escreva a complexidade em um comentário antes do código.

Etapa02

Dia 2 · O(n²)

Loop dentro de loop sobre os mesmos dados. 1.000 itens viram 1 milhão de passos.

Faça: Escreva a força bruta do Two Sum e diga por que ela é O(n²).

Etapa03

Dia 3 · O(log n)

Cada passo corta o problema pela metade. 1 milhão de itens em cerca de 20 passos.

Faça: Implemente a busca binária do zero, sem olhar.

Mentoria

Metade do plano. Agora, mire na vaga certa.

Big-O na ponta da língua já coloca você na frente de quem só decora solução. Na mentoria, eu monto com você o plano de estudo para a vaga que você quer, ajusto o seu LinkedIn e te ensino a achar as melhores vagas.

Etapa04

Dia 4 · O(n log n)

O custo de ordenar. Ordenar e depois percorrer continua O(n log n).

Faça: Resolva um problema que fica fácil depois de ordenar (ex.: Merge Intervals).

Etapa05

Dia 5 · Espaço também conta

Hash map ou array extra do tamanho da entrada custa O(n) de memória.

Faça: Refaça o Two Sum com hash map e diga tempo e espaço.

Etapa06

Dias 6 e 7 · Fale em voz alta

Pegue 10 problemas que você já resolveu e diga a complexidade antes de rodar.

Faça: Grave 1 minuto explicando a complexidade de um problema. Ouça e refaça.

A cola: 20 trechos de código

01. arr[i]: tempo O(1), espaço O(1). Acesso direto por índice.

02. map.get(k) / set.has(x): tempo O(1) em média, espaço O(1). Hash: busca sem percorrer.

03. arr.push(x) / arr.pop(): tempo O(1) amortizado, espaço O(1). Mexe só no fim do array.

04. arr.shift() / arr.unshift(x): tempo O(n), espaço O(1). Mexe no início: reindexa todos.

05. for (const x of arr) { ... }: tempo O(n), espaço O(1). Passa uma vez por cada item.

06. arr.includes(x) / arr.indexOf(x): tempo O(n), espaço O(1). Busca linear escondida.

07. arr.map(...) / arr.filter(...): tempo O(n), espaço O(n). Cria um array novo.

08. [...arr] / arr.slice(): tempo O(n), espaço O(n). Copia o array inteiro.

09. for (a of A) {} for (b of B) {}: tempo O(n + m), espaço O(1). Loops em sequência somam.

10. for (a of A) for (b of A) {}: tempo O(n²), espaço O(1). Loops aninhados multiplicam.

11. for (a of A) for (b of B) {}: tempo O(n · m), espaço O(1). Dois tamanhos diferentes.

12. for (x of arr) if (arr.includes(x)): tempo O(n²), espaço O(1). includes dentro do loop.

13. const seen = new Set(arr): tempo O(n), espaço O(n). Troca memória por velocidade.

14. contar frequência com Map: tempo O(n), espaço O(n). Um passe + um hash.

15. busca binária em array ordenado: tempo O(log n), espaço O(1). Corta pela metade a cada passo.

16. while (n > 1) n = Math.floor(n / 2): tempo O(log n), espaço O(1). Divide por 2 até chegar em 1.

17. arr.sort((a, b) => a - b): tempo O(n log n), espaço depende da engine. Ordenar é sempre o gargalo.

18. ordenar + dois ponteiros: tempo O(n log n), espaço O(1) extra. O sort domina o loop.

19. DFS ou BFS em grafo: tempo O(V + E), espaço O(V). Visita cada vértice e aresta uma vez.

20. fib(n) recursivo sem memo: tempo O(2ⁿ), espaço O(n). Recalcula tudo. Com memo: O(n).

Frases para dizer na entrevista

“A força bruta é O(n²). Com hash map, cai para O(n) de tempo e O(n) de espaço.”

“O gargalo é o sort, então o total fica O(n log n).”

“Posso trocar memória por velocidade: guardo o que já vi em um Set.”

“Se a entrada já vier ordenada, uso busca binária e fica O(log n).”

“Antes de codar: vou confirmar o tamanho da entrada para escolher a abordagem.”

Big-O Cheat Sheet ↗ · Tech Interview Handbook: study cheatsheet ↗ · VisuAlgo (veja os algoritmos rodando) ↗ · NeetCode roadmap ↗ · MDN: Array.prototype.sort (pt-BR) ↗

O júnior torce para não perguntarem. Quem passa responde antes.

O júnior escreve o código e torce para o entrevistador não perguntar. Quem passa diz a complexidade antes de tipar e já sugere a otimização.

Como contar: ache os loops, veja quantas vezes cada um roda, some os que estão em sequência e multiplique os que estão um dentro do outro.

Passe na entrevista técnica e chegue às melhores vagas

Big-O é a pergunta que mais aparece no teste técnico. A mentoria acelera esse caminho: plano de estudo para a vaga que você quer, LinkedIn que mostra o seu trabalho e as empresas certas para conversar.