← Ver a árvore completa

ROTA · 36 CLASSES · 1 GRUPOS

Entrevistas em Rust

Pratique padrões de algoritmos, explique decisões e resolva problemas com Rust.

Pré-requisitos orientam, mas nunca bloqueiam. Sete classes são grátis com conta, nas três rotas.

O ARCO DA ROTA

01Entrevistas

ORDEM RECOMENDADA

36 classes, do primeiro passo ao fechamento.

Cada classe informa a duração estimada. Os exercícios usam Rust na sua máquina. Você pode sair da ordem quando outro nó fizer mais sentido.

  1. 01
    Método e ferramentasEntrevistas de algoritmos: reconheça o padrão antes do código

    Aprenda a esclarecer o problema, reconhecer pistas, declarar um invariante e testar casos de borda antes de escrever Rust.

  2. 02
    Método e ferramentasBig-O na prática: derive tempo e espaço sem decorar

    Derive Big-O pelos estados visitados, pelo armazenamento criado e pelos custos reais de Vec, HashMap, ordenação e aritmética.

  3. 03
    Método e ferramentasVec, HashMap, String e ownership para entrevistas

    Use Vec, fatias, HashMap e String com contratos de ownership claros, custos derivados e tratamento correto de UTF-8.

  4. 04
    Busca bináriaBusca binária: o invariante que corta a busca pela metade

    Implemente busca binária com um intervalo semiaberto, prove cada descarte e evite loops infinitos, índices inválidos e overflow.

  5. 05
    Busca bináriaFirst true e lower bound: mantenha a resposta no intervalo

    Transforme condições monotônicas em first true, lower bound e posições de inserção com um intervalo semiaberto.

  6. 06
    Busca bináriaPrimeira e última ocorrência sem varrer o array

    Delimite blocos de valores repetidos com lower e upper bound, derive a contagem e preserve O(log n) mesmo com muitas duplicatas.

  7. 07
    Busca bináriaArrays rotacionados e picos: encontre a ordem escondida

    Descubra condições monotônicas em arrays rotacionados e sequências unimodais para encontrar mínimos e picos em O(log n).

  8. 08
    Busca bináriaBusca binária na resposta: minimize o máximo

    Converta minimizar o máximo em first true, escreva verificadores gulosos e derive O(n log R) com aritmética segura.

  9. 09
    Two pointers, janelas e prefixosTwo pointers: mova somente o lado que pode melhorar

    Reconheça problemas de two pointers e prove qual ponta pode avançar sem eliminar uma resposta melhor.

  10. 10
    Two pointers, janelas e prefixosFast e slow: compacte no lugar sem perder dados

    Use fast como leitor e slow como fronteira de escrita para compactar uma fatia ordenada no lugar.

  11. 11
    Two pointers, janelas e prefixosPontas opostas: two sum em array ordenado

    Resolva two sum em dados ordenados com O(n) tempo, O(1) espaço e uma regra explícita para duplicatas.

  12. 12
    Two pointers, janelas e prefixosSliding window fixa: atualize em O(1) por passo

    Calcule a primeira janela uma vez e atualize cada deslocamento com um valor que sai e outro que entra.

  13. 13
    Two pointers, janelas e prefixosSliding window variável: expanda, repare e preserve o invariante

    Encontre a maior substring sem valores escalares repetidos e diferencie contagens escalares de offsets em bytes.

  14. 14
    Two pointers, janelas e prefixosPrefix sums: transforme intervalos em subtrações

    Use prefix[0] = 0 para responder somas de faixas meio-abertas em O(1) após um único pré-processamento.

  15. 15
    Pilhas, filas e monotonicidadeStack: delimitadores, desfazer e o topo como estado

    Use Vec<char> como pilha para validar delimitadores, modelar desfazer e explicar por que o topo preserva a ordem necessária.

  16. 16
    Pilhas, filas e monotonicidadeMonotonic stack: descarte candidatos que nunca voltarão

    Resolva next greater element em O(n) com índices pendentes, comparação estrita, Option e uma prova amortizada por push e pop.

  17. 17
    Pilhas, filas e monotonicidadeMonotonic queue: máximo de cada janela em O(n)

    Use VecDeque<usize> para expirar índices antigos e manter o máximo de todas as janelas fixas em tempo linear.

  18. 18
    DFS, BFS e grafosGrafos: representação, fronteira e conjunto de visitados

    Represente grafos com Vec<Vec<usize>>, escolha pilha ou fila, marque vértices na descoberta e derive O(V+E).

  19. 19
    DFS, BFS e grafosDFS em árvores: combine respostas da subárvore

    Percorra árvores de filhos possuídos com empréstimos, combine resumos das subárvores e analise tempo O(n) e pilha O(h).

  20. 20
    DFS, BFS e grafosDFS em grafos: ciclos, componentes e cores

    Faça DFS em listas de adjacência, marque antes da recursão, conte componentes e detecte ciclos dirigidos com três cores.

  21. 21
    DFS, BFS e grafosBFS: níveis e menor distância sem peso

    Use VecDeque, marque no enqueue e calcule níveis, distâncias e caminhos mínimos em grafos sem peso.

  22. 22
    DFS, BFS e grafosBFS em matrizes: vizinhos, limites e ondas

    Modele células como um grafo implícito, valide matrizes irregulares e calcule ondas BFS por quatro vizinhos em O(C).

  23. 23
    BacktrackingBacktracking: escolha, explore e desfaça

    Reconheça árvores de escolhas, mantenha o caminho da ramificação atual e restaure cada mutação antes de explorar o próximo irmão.

  24. 24
    BacktrackingPermutações: caminho, usados e restauração

    Gere permutações de valores distintos com path e used, restaure os dois estados e clone cada folha para resultados independentes.

  25. 25
    BacktrackingCombinações e subsets: avance o índice, não repita ordens

    Use uma fronteira start crescente para gerar combinações e subsets sem ordens duplicadas, com casos de borda e custo de saída explícitos.

  26. 26
    BacktrackingPoda e dedup: corte somente estados impossíveis

    Prove skips de irmãos duplicados e podas de soma monotônica sem eliminar soluções alcançáveis, com somas em i128 e restauração explícita.

  27. 27
    Heaps e Top KBinaryHeap: prioridade máxima, mínima e Reverse

    Use BinaryHeap como max-heap, inverta a prioridade com Reverse e defina desempates lexicográficos sem supor estabilidade.

  28. 28
    Heaps e Top KTop K: mantenha somente os candidatos necessários

    Mantenha um min-heap de tamanho k para selecionar os k maiores, defina bordas e empates, e ordene somente quando a API exigir.

  29. 29
    Heaps e Top KMerge K fluxos ordenados com um heap de fronteira

    Intercale k fatias ordenadas com uma fronteira por fluxo, desempate determinístico e custo O(k + N log(h + 1)), onde h é o máximo de fluxos ativos.

  30. 30
    Programação dinâmicaMemoização: cada estado resolvido uma vez

    Modele estados sobrepostos, guarde resultados possíveis e impossíveis e derive tempo, espaço e profundidade da pilha em uma solução memoizada.

  31. 31
    Programação dinâmicaTabulação 1D: ordem de dependência e memória reduzida

    Converta uma recorrência em ordem bottom-up, prove dependências prontas e reduza uma tabela 1D para memória constante sem perder correção.

  32. 32
    Programação dinâmicaDP em grades: estado, transição e caso base

    Modele predecessores em uma grade retangular, represente bloqueios e estados inalcançáveis e reduza a tabela para uma linha com overflow explícito.

  33. 33
    Concorrência na entrevista RustThreads na entrevista: ownership, move, Send e join

    Use spawn, move, Send e JoinHandle para transferir trabalho entre threads, tratar panic e coletar resultados determinísticos sem prometer ordem.

  34. 34
    Concorrência na entrevista RustChannels: fechamento, backpressure e deadlocks

    Coordene mpsc, clones de Sender, fechamento por drop e sync_channel sem criar ciclos entre send, recv e join.

  35. 35
    Concorrência na entrevista RustArc, Mutex e worker pool: escolha a coordenação

    Separe ownership compartilhado de acesso exclusivo com Arc e Mutex, limite guards e encerre um worker pool com mensagens e joins.

  36. 36
    Speedrun e revisãoSpeedrun final: reconheça, prove, implemente e revise

    Resolva um speedrun misto com um loop de quatro passos, invariantes explícitas, casos de borda e custos derivados antes do tempo terminar.

SUA PRIMEIRA CLASSE

Entrevistas de algoritmos: reconheça o padrão antes do código

Aprenda a esclarecer o problema, reconhecer pistas, declarar um invariante e testar casos de borda antes de escrever Rust.

Pratique com um projeto local

Entre para ler a aula, baixar o projeto e executar os testes com Cargo na sua máquina.

Começar pela rota →

ESTA ROTA E TODAS AS OUTRAS

Qualquer plano abre os 126 nós.

Mensal R$19,90 · anual R$149 · lifetime R$499. Todos têm garantia de 7 dias.

Comparar os 3 planos →Começar pelas classes grátis