Manual de Engenharia
Um curso estruturado: fundamentos, implementação, sistemas operacionais, redes, segurança e arquitetura. Laboratórios especializados são opcionais.
Comece aqui: Amazon SDE II
Esta trilha prioriza programação, design manutenível, bancos de dados, concorrência e projeto de sistemas antes de infraestrutura especializada.
- Fundamentos computacionais e estruturas de dados25 capítulos publicados
- Projeto de algoritmos e programação12 capítulos publicados
- Projeto orientado a objetos, SOLID e manutenibilidade17 capítulos publicados
- Execução, bancos de dados, redes e segurança32 capítulos publicados
- Projeto de sistemas: dos requisitos às falhas10 capítulos publicados
- Opcional: projeto distribuído avançado e estudos de sistemas9 capítulos publicados
- Exercícios independentes e comunicação10 capítulos publicados
- Aprofundamento opcional em compiladores e VM10 capítulos publicados
Trilhas de estudo
- Ciência da Computação — Currículo FundamentalFormação geral orientada por pré-requisitos e lacunas explicitadas.
- Sistemas Avançados — Laboratórios OpcionaisExperimentos de infraestrutura e falhas após o currículo fundamental.
Assuntos não publicados permanecem lacunas explícitas; passar em teste automatizado não comprova a completude técnica de um capítulo.
Navegar por categoria
Fundamentos da Computação (29)
Provas, semântica de programação e raciocínio computacional.
- Fundamentos de programação: controle de fluxo, funções e invariantesAprenda condicionais, laços, funções, escopo e invariantes ao derivar um algoritmo linear de arrays com casos-limite.
- Tipos e representação de dados: inteiros, bytes, texto e precisãoAprenda contratos de tipos, limites de inteiros, endianness, UTF-8 e precisão numérica com formato binário verificável.
- Lógica, técnicas de demonstração e invariantes de laçoConstrua argumentos precisos com proposições, quantificadores, contraexemplos, indução, invariantes e provas de terminação.
- Semântica de programação, aliasing e contratos executáveisAnalise avaliação, igualdade, mutação, exceções e contratos de funções antes de aplicar recursos da linguagem em algoritmos.
- Fundamentos de memória: referências, aliasing e duração de objetosCompreenda associação de nomes, identidade, referências mutáveis, quadros de chamadas e snapshots imutáveis com exemplos.
- Fundamentos de C: ponteiros, arrays, limites e duração de objetosAprenda ponteiros em C, conversão de arrays, aritmética válida, propriedade e duração com um programa C11 verificável.
- Matemática discreta: conjuntos, contagem e probabilidade exataDemonstre identidades de contagem, permutações, combinações, probabilidade condicional, Bayes e esperança com frações exatas e verificações exaustivas.
- Relações Binárias, Classes de Equivalência e Ordens ParciaisDeduza partições, ordens parciais, fecho de alcançabilidade e dependências topológicas com contraexemplos executáveis.
- Análise assintótica e custo de algoritmosAprenda a deduzir custos de tempo e memória por contagens, invariantes e recorrências, distinguindo pior caso, custo amortizado e esperança matemática.
- Cálculo em ponto flutuante: arredondamento, cancelamento e soma compensadaAnalise aproximação binária, adição não associativa e soma compensada de Neumaier com oráculos racionais exatos.
- Estatística numericamente estável: média online e variância de WelfordDerive atualizações em uma passagem, diferencie variâncias amostral e populacional e teste com frações exatas.
- Fundamentos de teoria dos números: divisibilidade, MDC e algoritmo de EuclidesDerive divisibilidade, algoritmo de Euclides e coeficientes de Bézout com provas, inteiros negativos e exercícios.
- Aritmética modular: congruências, inversos e exponenciação rápidaDerive congruências, inversos modulares e quadrados sucessivos com invariantes de correção e testes exaustivos.
- Raciocínio algorítmico: especificação, força bruta, invariantes e otimizaçãoAprenda um método de resolução de problemas ao derivar um algoritmo linear correto a partir de uma solução quadrática.
- Recursão, pilha de chamadas e divisão e conquistaEntenda contratos recursivos, casos-base, quadros da pilha, provas de término e recorrências de divisão e conquista com testes.
- Resolução de Recorrências: Árvores, Substituição e Teorema MestreDeduza e verifique recorrências de divisão e conquista, contagens exatas, casos do Teorema Mestre, contraexemplos e uso da pilha.
- Contratos de erro em Python: exceções e liberação de recursosDefina entradas inválidas, propague exceções e verifique limpeza com context managers e streams reproduzíveis.
- Fundamentos de arquivos e dados: bytes, UTF-8, JSON e validaçãoLeia arquivos JSON UTF-8 limitados, rejeite dados ambíguos e grave registros validados com limites explícitos.
- Do código C ao executável: pré-processamento, objetos e ligaçãoCompile C11 com vários arquivos e compreenda unidades de tradução, símbolos, falhas de ligação e carregamento.
- Linguagens Formais e Autômatos Finitos: AFD, AFN, Fecho Épsilon e DeterminizaçãoFundamentos de AFD e AFN: linguagens regulares, fecho épsilon, determinização, provas e testes independentes em Python.
- Gramáticas Livres de Contexto, Autômatos com Pilha e Análise SintáticaFundamentos de gramáticas livres de contexto: pilha, árvores sintáticas, reconhecimento por tabela e testes independentes em Python.
- Compilador de Expressões: Análise Léxica, AST, Bytecode e Máquina VirtualImplemente uma linguagem aritmética: tokens ASCII, parser com precedência, AST, bytecode de pilha e avaliação racional exata.
- Sistemas de Tipos Estáticos, Escopos Léxicos e Compilador de Expressões TipadasAmplie o compilador com variáveis tipadas, escopos léxicos, verificação estática, expressões condicionais e bytecode testado.
- Funções Tipadas, Closures Léxicas e Quadros de Chamada da Máquina VirtualCompile funções tipadas, closures e chamadas de ordem superior com quadros de ativação explícitos e testes independentes de execução.
- Células Mutáveis, Closures Compartilhadas e Funções Recursivas TipadasEstenda o compilador tipado com células mutáveis, atribuições e let rec, verificando compartilhamento de memória e recursão na VM.
- Endereços Léxicos, Verificação de Bytecode Tipado e Máquina Virtual por SlotsResolva variáveis por slots, analise controle de fluxo e tipos da pilha do bytecode e confira os resultados com uma VM independente.
- Serialização Versionada de Bytecode, Integridade e Carregamento VerificadoDefina um formato versionado e limitado para bytecode com JSON determinístico, checksum, decodificação rigorosa e verificação da VM.
- Alcançabilidade no Heap, Tempo de Vida e Coleta Mark-and-SweepDerive alcançabilidade e construa um coletor mark-and-sweep limitado com closures, células compartilhadas, ciclos e testes independentes.
- Garbage Collection Integrado à VM: Raízes, Closures e Ciclos RecursivosIntegre mark-and-sweep por raízes explícitas à VM de slots, preservando closures mutáveis e coletando ciclos recursivos inacessíveis.
Arquitetura de Computadores (5)
Bits, ISA, cache e modelo de pipeline; coerência ainda não foi publicada.
- Lógica digital: portas booleanas, tabelas-verdade e somadores bináriosDerive AND, OR, NOT e XOR por tabelas-verdade e construa meios-somadores, somadores completos e soma de largura fixa.
- Fundamentos de lógica sequencial: relógio, registradores e máquinas de estadosDerive transições síncronas, flip-flops D, registradores e máquinas de estados com rastreamentos e invariantes executáveis.
- Representação de máquina, instruções de CPU e mapeamento de cacheDerive complemento de dois, endianness, execução de instruções e conflitos de cache com modelos Python reproduzíveis e casos-limite.
- Fundamentos de CPU: caminho de dados, controle e ciclo de instruçõesRastreie PC, acumulador, memória, ALU e desvios em uma CPU didática de oito bits com semântica explícita.
- Pipeline de CPU: dependências, forwarding e previsão de desviosDerive latência, vazão, stalls, dependências de carga e previsão de desvios de dois bits com modelos e testes independentes.
Estruturas de Dados e Algoritmos (23)
Representação de dados, provas e algoritmos.
- Arrays e strings: representação, custos e percursos corretosCompreenda arrays contíguos, crescimento dinâmico, indexação, slices, Unicode e invariantes de limites com exemplos testados.
- Tipos abstratos de dados: interfaces, invariantes e custosSepare o contrato do TAD da representação e derive uma fila circular limitada com provas de FIFO e complexidade.
- Arrays dinâmicos: capacidade, redução e análise amortizadaImplemente array redimensionável com append, pop e redução de capacidade; demonstre custos amortizados.
- Listas ligadas: nós, inversão, ciclos e propriedadeImplemente e demonstre a inversão de lista simplesmente ligada e a detecção de ciclo de Floyd, comparando custos com arrays.
- Pilhas e filas: LIFO, FIFO, deques e invariantesDiferencie contratos de pilhas e filas, demonstre seus invariantes e implemente verificação de delimitadores e filas para BFS.
- Tabelas hash, colisões e invariantesEntenda funções hash, tratamento de colisões, fator de carga e entradas adversariais por meio de um algoritmo verificável e suas limitações.
- Árvores binárias e BSTs: percursos, ordenação e alturaExplique estrutura de árvores binárias, DFS/BFS, ordenação BST e complexidade dependente da altura com implementação iterativa.
- Heaps binários e filas de prioridadeExplique os invariantes de forma e ordem, derive atualizações logarítmicas, heapify linear e resolva top-k com exemplos executáveis.
- Busca em grafos com BFS e DFSDeduza BFS e DFS, caminhos mínimos em grafos sem pesos, invariantes de visitação e limites de custo em função de vértices e arestas.
- Algoritmos de ordenação: estabilidade, mergesort, quicksort e heapsortDeduza insertion, merge, quick e heap sort, compare custos e estabilidade e verifique duas implementações completas.
- Busca binária: limites, invariantes e predicados monótonosDeduza a busca binária com invariante de partição, implemente limites, analise complexidade e identifique condições de invalidade.
- Two pointers e prefix sums: invariantes e consultas em subarraysDeduza ponteiros opostos e somas prefixadas, prove invariantes e resolva problemas de intervalos e subarrays com negativos.
- Dois ponteiros e janelas deslizantesDerive algoritmos lineares de janela por condições monotônicas e invariantes, identificando corretamente os casos em que o padrão falha.
- Pilhas monotônicas: próximo maior, temperaturas e histogramasDemonstre limites lineares de pilhas monotônicas, calcule próximos maiores e maior área de histograma com testes executáveis.
- Algoritmos em árvores: níveis, LCA, diâmetro e validação BSTDeduza percursos por níveis, ancestral comum mais baixo, diâmetro e limites de BST com implementações iterativas.
- Caminhos mínimos: Dijkstra, Bellman–Ford e ciclos negativosDemonstre o relaxamento de caminhos mínimos, implemente Dijkstra com heap e analise Bellman–Ford, pesos e ciclos negativos.
- Escalonamento guloso de intervalos: provas e contraexemplosDemonstre a escolha pelo menor término, teste casos-limite e distinga o ótimo em quantidade da variante ponderada.
- Backtracking: espaço de estados, poda e correçãoDerive árvores de busca com backtracking, segurança das podas, restrições de N-rainhas e limites de complexidade com testes.
- Programação dinâmica: estados e recorrênciasAprenda a definir estados, derivar recorrências, demonstrar transições e escolher memoização ou tabulação com limites de custo explícitos.
- Tries, busca por prefixo e chaves textuaisDeduza invariantes de tries, implemente inserção e busca por prefixo e analise comprimento de chaves e uso de memória.
- Union-Find: conectividade, compressão e KruskalDedução dos invariantes de union-find, compressão de caminhos, união por tamanho, custo amortizado e aplicação em árvores geradoras.
- Componentes fortemente conexos e grafos condensadosDeduza componentes fortemente conexos, prove por que a condensação é acíclica e implemente Kosaraju iterativo com testes.
- Fluxo máximo, corte mínimo e emparelhamento bipartidoDeduza conservação de fluxo, rede residual, caminhos aumentantes, teorema fluxo-corte e redução de emparelhamento com código testado.
Sistemas Operacionais e Concorrência (10)
Processos, memória, threads e sincronização.
- Como programas executam: argumentos, ambiente, streams e status de saídaEstude a execução de programas C11 com argumentos, ambiente, stdout, stderr e testes de processo.
- Processos, memória virtual e chamadas de sistemaDeduza isolamento de processos, tradução de endereços, tabelas de páginas, TLB, troca de contexto e proteção do kernel.
- Alocação de memória: listas livres, fragmentação e coalescênciaModele alocação first-fit e best-fit, blocos livres, fragmentação interna e externa, divisão e coalescência com testes independentes.
- Descritores de arquivos, buffering de I/O e persistência com fsyncEstude descritores, dup, offsets compartilhados, read/write, buffering e fsync com modelos Python e testes independentes.
- Sistemas de arquivos: inodes, blocos, journaling e recuperaçãoModele inodes, entradas de diretório, alocação não contígua de blocos e recuperação por redo log com testes finitos independentes.
- Escalonamento de CPU: FCFS, Round Robin, métricas e justiçaDerive políticas FCFS e Round Robin, preempção, tempo de resposta, espera e turnaround com simuladores e testes independentes.
- Concorrência: corridas, locks, condições e deadlocksDeduza invariantes de sincronização, seções críticas, condições de corrida, variáveis de condição, deadlocks e filas limitadas.
- Escalonamento por prioridades: MLFQ, aging e herança de prioridadeAnalise escalonamento MLFQ, boost periódico, starvation e inversão de prioridades com modelos de CPU e locks verificáveis.
- Modelos de memória: atômicos, happens-before e visibilidadeExplique data races em C++, ordem por objeto, release/acquire, operações relaxed, consistência sequencial e publicação segura.
- Oficina de C++17: token bucket thread-safe e compilação no CIConstrua token bucket em C++17 com relógio monotônico injetado, mutex, invariantes, validação e testes compilados no CI.
Redes de Computadores (7)
Roteamento por prefixos IPv4 e cache DNS; transporte ainda requer aprofundamento.
- Fundamentos de HTTP: cliente, servidor, requisições e respostasEntenda métodos, códigos de status, semântica de GET/POST/PUT/DELETE e responsabilidades de APIs antes de system design.
- Roteamento IP e DNS: seleção de prefixos, resolução e cache TTLDerive seleção de rotas IPv4 por prefixo e cache de DNS com TTL, expiração e modelos Python avaliados por oráculos independentes.
- Tamanho de pacotes IP: fragmentação IPv4 e descoberta da MTU do caminhoDeduza offsets IPv4 de oito bytes, flags MF/DF, remontagem e descoberta clássica de MTU com modelos finitos verificáveis.
- DNS autoritativo: cadeias CNAME e cache de respostas negativasEstude autoridade DNS, delegações, CNAME, NXDOMAIN/NODATA e TTL negativo da SOA com modelos Python e testes independentes.
- Fundamentos de redes: DNS, TCP, TLS e HTTPAcompanhe uma requisição por DNS, transporte, TLS e HTTP; derive custos de latência e falhas e diferencie TCP de QUIC.
- TCP como fluxo de bytes: enquadramento, ACK e controle de fluxoDerive enquadramento de mensagens TCP, sequência de bytes, ACK cumulativo e limites de envio com modelos Python verificados independentemente.
- Temporizadores TCP: estimativa de RTT, retransmissão e janelas de congestionamentoDerive SRTT, RTTVAR, RTO e backoff da RFC 6298; diferencie uma simulação por rodadas de cwnd/ssthresh do TCP real.
Segurança e Criptografia (3)
Protocolos de segurança; criptografia fundamental ainda ausente.
- TLS 1.3: autenticação, HKDF e derivação de chavesEntenda autenticação e derivação de chaves TLS 1.3, diferencie HKDF de cifragem e valide HKDF-SHA256 e rótulos TLS com vetores normativos.
- Segurança de APIs: identidade, autorização e modelos de ameaçaDistinga autenticação da autorização por objeto, analise fronteiras OAuth e JWT e derive isolamento multi-tenant e controles de API.
- Segurança OAuth 2.0: PKCE, vinculação de tokens e replayDeduza o fluxo de código com PKCE, fronteiras de ameaça, rotação de refresh tokens, audiência e resistência a replay a partir de RFCs.
Engenharia e Projeto de Software (22)
POO, SOLID, padrões, testes e qualidade.
- Programação modular: coesão, interfaces explícitas e funções purasAprenda a decompor programas em módulos coesos, separar cálculos de entrada/saída e testar contratos sem depender de frameworks.
- Fundamentos de Git: diretório de trabalho, index, commits e branchesCompreenda os três estados do Git, snapshots versionados, branches e merges com uma sequência testável em repositório isolado.
- Testes, contratos e manutenção seguraAprenda a realizar alterações verificáveis com invariantes, testes de fronteira, contratos de integração, regressões e análise de riscos operacionais.
- Fundamentos de Clean Code: coesão, acoplamento e mudanças segurasDerive fronteiras de código legível por coesão, acoplamento, funções puras, contratos e testes de um planejador de estoque reproduzível.
- Design orientado a objetos: encapsulamento, composição e polimorfismoProjete fronteiras orientadas a objetos com encapsulamento, composição, polimorfismo, contratos e modelo testado de preços.
- Low-Level Design: contratos, máquinas de estados e dependênciasProjete componentes sustentáveis a partir de invariantes, transições, interfaces e direção de dependências, com modelo testado.
- SOLID, inversão de dependências e contratos de comportamentoAplique SRP, OCP, LSP, ISP e DIP com contratos Python, fronteiras estáveis e testes de comportamento verificáveis.
- Arquitetura de software: fronteiras de dependência e projeto modularDerive arquiteturas em camadas e portas/adaptadores, imponha dependências entre módulos, registre decisões e teste um monólito modular.
- Modelagem de domínio: entidades, objetos de valor e invariantes de agregadosDiferencie identidade de valores imutáveis, escolha fronteiras transacionais e imponha invariantes de pedidos com contratos executáveis.
- Estratégias de testes: unidades, contratos, integração e E2EDiferencie testes unitários, de propriedades, integração, contrato e E2E com exemplos executáveis e limites de evidência.
- Refatoração e padrões: Strategy, Adapter e preservação de comportamentoRefatore com testes de contrato; compare Strategy, Adapter e Decorator em Python, com exemplos e limites práticos.
- Famílias de padrões de projeto: Builder, Facade e ObserverDerive padrões criacionais, estruturais e comportamentais com exemplos executáveis de Builder, Facade e Observer e contratos de falha.
- Padrões State e Command: transições, repetição e contratos de falhaSepare regras de estado de solicitações encapsuladas com State e Command, testando versões, ações inválidas e execução repetida.
- Padrões criacionais: Factory Method, Abstract Factory e fábricas simplesCompare seleção de construtores, métodos de criação sobrescritos e famílias de objetos compatíveis em pipelines de exportação testados.
- Debugging e profiling: reprodução, CPU, memória e tracingDiagnostique falhas com casos reproduzíveis, oráculos independentes, profiling de CPU, memória e telemetria.
- Fundamentos de build: grafos de dependência, compilação incremental e GNU MakeDerive o grafo de build e teste regras C11 com dependências de cabeçalhos, alvos phony e propagação de falhas.
- Oficina de código manutenível: token bucket, relógio injetado e testesImplemente token bucket revisável com relógio injetado, invariantes explícitos e testes determinísticos; avalie limites distribuídos.
- Ciclo de vida do software: dos requisitos à operaçãoAcompanhe requisitos, arquitetura, entregas testáveis, releases mensurados, aprendizado em incidentes e manutenção.
- CI/CD e engenharia de releases: canary, schema e rollbackProjete gates de CI, artefatos imutáveis, canary, migrações seguras, segredos e procedimentos de recuperação.
- Resposta a incidentes em produção, recuperação e postmortemsOrganize comando de incidentes, estabilize serviço, meça impacto, preserve evidências e produza ações verificáveis de postmortem.
- Verificação formal: invariantes, exploração de estados e TLA+Aprenda safety, liveness, atomicidade e refinamento com exploração finita de estados num protocolo concorrente de reservas e fundamentos TLA+.
- Testes algorítmicos por propriedades: oráculos, shrinking e metamorfismoGere casos adversariais com Hypothesis e compare busca binária e subarrays com oráculos independentes.
Bancos de Dados e Armazenamento (8)
Consultas, transações, índices e recuperação.
- Fundamentos de bancos relacionais: chaves, JOINs e integridadeDerive tabelas, chaves primárias e estrangeiras, normalização e consultas SQL com restrições e exemplos executáveis.
- Fundamentos de SQLite: CRUD parametrizado e transações atômicasConstrua e teste um repositório SQLite com parâmetros vinculados, limites de saldo e rollback transacional.
- Migrações de esquema SQLite: user_version, compatibilidade e rollbackEvolua o esquema SQLite entre versões preservando registros, rejeitando estados inconsistentes e revertendo falhas.
- Transações, isolamento e consistência distribuídaDiferencie ACID, anomalias transacionais, serialização, linearizabilidade e defasagem de réplicas usando modelos explícitos de operações.
- Índices transacionais: MVCC, unicidade e isolamento serializávelExplique constraints únicas com concorrência, índices multiversão, locks de predicado, write skew, retries e custos de indexação.
- Planejamento SQL: seletividade, estatísticas, índices e joinsCompreenda planos SQL por custo, estimativa de cardinalidade, índices compostos, joins e EXPLAIN ANALYZE com contas verificáveis.
- Armazenamento de bancos: páginas, MVCC, B-trees e WALAnalise armazenamento de tuplas, splits de B-tree, visibilidade MVCC e recuperação por WAL com base no PostgreSQL.
- Replicação de bancos, failover e limites de perda de dadosExplique envio de WAL, réplicas síncronas e assíncronas, atraso, consistência de leituras, slots de retenção e failover seguro.
Sistemas Distribuídos (8)
Mensageria, replicação, coordenação e resiliência.
- Cache: correção, invalidação e falhasEntenda cache-aside, TTL, leituras obsoletas, stampede e estratégias de falha sob requisitos explícitos de consistência, privacidade e escala.
- Balanceamento de carga: capacidade, roteamento e recuperaçãoProjete balanceamento HTTP com algoritmos de roteamento, dimensionamento quantitativo, verificações de saúde e segurança de retries.
- Rate limiting: token bucket e garantias distribuídasDeduza admissão por tokens, compare janelas, use HTTP 429 e discuta consistência, concorrência e tratamento de falhas.
- Filas, semântica de entrega e idempotênciaProjete processamento assíncrono com confirmações, reentregas, filas de erro, consumidores idempotentes e controle explícito de pressão.
- Particionamento e sharding: chaves, hotspots e rebalanceamentoProjete partições e shards por padrões de acesso, dimensione hotspots, modele hashing estável, migração e constraints globais.
- Consenso distribuído: Raft, quóruns e logs replicadosDeduza interseção de quóruns e termos do Raft, eleições, replicação de logs, regras de commit e limites sob partições.
- Modelos de partições de rede: verificação exaustiva de quorunsEnumere grafos de conectividade de três e cinco nós, demonstre exclusividade de maioria e delimite falhas ainda não testadas.
- Observabilidade: métricas, logs, traces e SLOsModele latência fim a fim, sinais essenciais, propagação de traces, orçamento de erros SLO e riscos de cardinalidade.
Projeto de Sistemas (13)
Requisitos, capacidade, APIs e arquiteturas.
- Estimativas de capacidade e restrições de sistemasDerive estimativas de tráfego, armazenamento, utilização e capacidade de pico com hipóteses explícitas, sem confundir médias com garantias.
- Método de System Design: requisitos, capacidade, interfaces e falhasAprenda um método completo de projeto de sistemas com requisitos, dimensionamento, APIs, dados, tratamento de falhas e SLOs verificáveis.
- Contratos HTTP: paginação, idempotência e atualizações condicionaisProjete recursos HTTP, paginação por cursor, ETags, comandos idempotentes, erros padronizados e evolução compatível de APIs.
- Seleção de armazenamento: relacional, documentos, chave-valor e objetosEscolha armazenamento por consultas, invariantes de consistência e custos; compare SQL, documentos, chave-valor, blobs e busca.
- Fronteiras de serviços: monólitos modulares, microsserviços e eventosEscolha fronteiras entre serviços por autoridade, consistência, falhas síncronas e custos reais de escala.
- APIs confiáveis: timeouts, retries, idempotência e backpressureDeduza orçamento de deadlines, amplificação por retries e comandos idempotentes; projete controle de admissão e respostas de erro.
- System Design: escrita autoritativa, projeções de leitura e consistênciaProjete caminhos de escrita e projeções de leitura com eventos seguros para replay, limites de atraso e verificação de recuperação.
- Estudo de System Design: notificações multicanal duráveisProjete notificações com SLOs, APIs, outbox transacional, dimensionamento de filas, falhas de provedores e testes de recuperação.
- Estudo de caso: projetar um encurtador de URLsProjete um serviço de URLs curtas desde requisitos e estimativas até identificadores, armazenamento, cache, disponibilidade e prevenção de abuso.
- Projeto de sistema: pedidos, reserva de estoque e pagamentosProjete checkout com reserva atômica de estoque, idempotência durável, outbox transacional e recuperação segura de pagamentos.
- System Design: reserva de ingressos, concorrência e expiraçãoProjete reserva de assentos com confirmação atômica, idempotência, expiração, isolamento transacional e falhas testadas.
- Projeto de sistema: feed social, fanout e ordenação de timelineProjete feed de leitura intensa com fanout híbrido, posts duráveis, cursores cronológicos, hidratação e proteção de privacidade.
- Revisão crítica de System Design: invariantes e recuperação no checkoutAudite uma arquitetura de checkout por estoque, dual writes, pagamentos incertos, sobrecarga de filas e isolamento multitenant.
Avaliação e Raciocínio de Engenharia (11)
Exercícios, revisões de projeto e comunicação.
- Oficina de algoritmos: salas para intervalos e janelas com negativosResolva dois exercícios originais com heap e deque monotônica, provas, contraexemplos e testes exaustivos independentes.
- Avaliação independente: rotas com cupom e rodadas de tarefasResolva dois desafios originais de grafos sem solução antecipada, com contratos claros, fixtures, verificador e rubrica.
- Avaliação independente II: lotes minimax e ilhas dinâmicasResolva desafios inéditos de busca por capacidade e conectividade incremental, com 18 casos públicos sem soluções antecipadas.
- Avaliação Independente III: Programação Dinâmica e Eventos IdempotentesResolva dois exercícios inéditos de particionamento por programação dinâmica e projeção idempotente, com corretores e critérios de revisão.
- Avaliação de Código Legado: Caracterização, Isolamento por Cliente e PaginaçãoInvestigue uma busca de tickets deliberadamente defeituosa, caracterize seu comportamento e implemente um contrato corrigido sem expor campos privados.
- Oficina de System Design: entrega multitenant de webhooksResolva arquitetura de webhooks com carga estimada, outbox, idempotência, retries, recuperação de filas e mudanças de requisitos.
- Oficina adaptativa de System Design: processamento sob novos requisitosReprojete pipeline multitenant conforme mudam tráfego, tenants ruidosos, panes, exclusão e residência dos dados.
- Avaliação Independente de System Design: Medição de Uso, Eventos Atrasados e ReconciliaçãoProjete um registro de uso isolado por cliente com dimensionamento verificável, reprocessamento idempotente, ajustes tardios, testes de falha e revisão auditável.
- Comunicar decisões técnicas com evidênciasEstruture experiências profissionais em contexto, responsabilidade, ação, decisão e resultados mensuráveis, reconhecendo limites e trade-offs.
- Oficina de concorrência: corridas, CAS e intercalaçõesDerive uma corrida de duas reservas, corrija com CAS versionado, enumere sequências e teste sincronização entre threads.
- Oficina de injeção de falhas: outbox, crashes e entrega duplicadaTeste falhas antes/depois do commit, outbox pelo menos uma vez, deduplicação no receptor e fronteiras de recuperação.
Laboratórios Especializados de Sistemas (11)
Experimentos opcionais de infraestrutura.
- Laboratório PostgreSQL: reservas concorrentes e recuperação de falhasTeste processos independentes e PostgreSQL real com atualização condicional, idempotência e commits duráveis com outbox.
- Laboratório Serializable PostgreSQL: write skew e retries completosReproduza write skew real no PostgreSQL, evite com SERIALIZABLE e repita integralmente a transação abortada.
- Oficina SQLite multiprocessos: reservas atômicas e recuperaçãoTeste processos reais, transações SQLite em arquivo, constraints de estoque e replay após encerramento abrupto.
- Laboratório PostgreSQL: replicação física e promoção manualExecute replicação real primário/standby com pg_basebackup, observe replay, pare primário e promova réplica.
- Segurança do failover PostgreSQL: fencing e gates de promoçãoImplemente decisões de promoção que falham de modo seguro, rejeite provas antigas e revise limites de promoção de standby.
- Medições de recuperação PostgreSQL: RPO, RTO e partição de redeMeça fases de promoção, confira replay de commit e demonstre por que primário isolado continua exigindo fencing.
- Laboratório RabbitMQ: redelivery e inbox transacionalTeste desconexão de consumidor RabbitMQ real, mensagens reenviadas e deduplicação em inbox PostgreSQL com ACK manual.
- Laboratório de restart RabbitMQ: filas duráveis e mensagens confirmadasReinicie container RabbitMQ real após publicação persistente confirmada e verifique recuperação, sem confundir com failover quorum.
- Failover de líder RabbitMQ Quorum: laboratório de três nósTeste replicação RabbitMQ quorum real: publicação confirmada, parada do líder inicial, recuperação e escrita pela maioria sobrevivente.
- RabbitMQ Quorum: perda de maioria, bloqueio e recuperaçãoTeste perda de maioria, ausência de confirmação de publicação e recuperação de escritas num cluster RabbitMQ real.
- Partição de rede real RabbitMQ: brokers ativos sem quorumIsole um broker em execução da rede Docker, observe confirmação na minoria e restaure quorum sem reiniciar o nó.