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
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.
- 01Mé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.
- 02Mé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.
- 03Mé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.
- 04Busca 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.
- 05Busca 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.
- 06Busca 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.
- 07Busca 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).
- 08Busca 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.
- 09Two 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.
- 10Two 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.
- 11Two 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.
- 12Two 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.
- 13Two 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.
- 14Two 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.
- 15Pilhas, 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.
- 16Pilhas, 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.
- 17Pilhas, 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.
- 18DFS, 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).
- 19DFS, 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).
- 20DFS, 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.
- 21DFS, 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.
- 22DFS, 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).
- 23BacktrackingBacktracking: 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.
- 24BacktrackingPermutaçõ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.
- 25BacktrackingCombinaçõ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.
- 26BacktrackingPoda 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.
- 27Heaps 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.
- 28Heaps 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.
- 29Heaps 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.
- 30Programaçã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.
- 31Programaçã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.
- 32Programaçã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.
- 33Concorrê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.
- 34Concorrê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.
- 35Concorrê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.
- 36Speedrun 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.
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.