Amazon SDE II — Formação Central Estudo sequencial de algoritmos, design manutenível e sistemas; sem garantia de contratação.
Material educacional independente, sem endosso das empresas citadas.
Progresso da trilha 0 / 0
O progresso fica armazenado somente neste navegador. Limpar progresso
1. Fundamentos computacionais e estruturas de dados Fundamentos de programação: controle de fluxo, funções e invariantes Aprenda 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ão Aprenda 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ço Construa argumentos precisos com proposições, quantificadores, contraexemplos, indução, invariantes e provas de terminação. Semântica de programação, aliasing e contratos executáveis Analise 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 objetos Compreenda 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 objetos Aprenda 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 exata Demonstre 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 Parciais Deduza partições, ordens parciais, fecho de alcançabilidade e dependências topológicas com contraexemplos executáveis. Análise assintótica e custo de algoritmos Aprenda 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 compensada Analise 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 Welford Derive 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 Euclides Derive 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ápida Derive 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ção Aprenda um método de resolução de problemas ao derivar um algoritmo linear correto a partir de uma solução quadrática. Arrays e strings: representação, custos e percursos corretos Compreenda arrays contíguos, crescimento dinâmico, indexação, slices, Unicode e invariantes de limites com exemplos testados. Tipos abstratos de dados: interfaces, invariantes e custos Separe 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 amortizada Implemente array redimensionável com append, pop e redução de capacidade; demonstre custos amortizados. Recursão, pilha de chamadas e divisão e conquista Entenda 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 Mestre Deduza e verifique recorrências de divisão e conquista, contagens exatas, casos do Teorema Mestre, contraexemplos e uso da pilha. Listas ligadas: nós, inversão, ciclos e propriedade Implemente 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 invariantes Diferencie contratos de pilhas e filas, demonstre seus invariantes e implemente verificação de delimitadores e filas para BFS. Tabelas hash, colisões e invariantes Entenda 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 altura Explique 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 prioridade Explique 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 DFS Deduza 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. 2. Projeto de algoritmos e programação Algoritmos de ordenação: estabilidade, mergesort, quicksort e heapsort Deduza insertion, merge, quick e heap sort, compare custos e estabilidade e verifique duas implementações completas. Busca binária: limites, invariantes e predicados monótonos Deduza 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 subarrays Deduza ponteiros opostos e somas prefixadas, prove invariantes e resolva problemas de intervalos e subarrays com negativos. Dois ponteiros e janelas deslizantes Derive 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 histogramas Demonstre 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 BST Deduza 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 negativos Demonstre o relaxamento de caminhos mínimos, implemente Dijkstra com heap e analise Bellman–Ford, pesos e ciclos negativos. Escalonamento guloso de intervalos: provas e contraexemplos Demonstre 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ção Derive á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ências Aprenda 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 textuais Deduza 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 Kruskal Dedução dos invariantes de union-find, compressão de caminhos, união por tamanho, custo amortizado e aplicação em árvores geradoras. 3. Projeto orientado a objetos, SOLID e manutenibilidade Programação modular: coesão, interfaces explícitas e funções puras Aprenda a decompor programas em módulos coesos, separar cálculos de entrada/saída e testar contratos sem depender de frameworks. Contratos de erro em Python: exceções e liberação de recursos Defina 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ção Leia arquivos JSON UTF-8 limitados, rejeite dados ambíguos e grave registros validados com limites explícitos. Fundamentos de Git: diretório de trabalho, index, commits e branches Compreenda 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 segura Aprenda 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 seguras Derive 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 polimorfismo Projete 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ências Projete 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 comportamento Aplique 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 modular Derive 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 agregados Diferencie 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 E2E Diferencie 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 comportamento Refatore 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 Observer Derive 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 falha Separe 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 simples Compare 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 tracing Diagnostique falhas com casos reproduzíveis, oráculos independentes, profiling de CPU, memória e telemetria. 4. Execução, bancos de dados, redes e segurança Lógica digital: portas booleanas, tabelas-verdade e somadores binários Derive 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 estados Derive 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 cache Derive 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ções Rastreie 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 desvios Derive latência, vazão, stalls, dependências de carga e previsão de desvios de dois bits com modelos e testes independentes. Do código C ao executável: pré-processamento, objetos e ligação Compile C11 com vários arquivos e compreenda unidades de tradução, símbolos, falhas de ligação e carregamento. Fundamentos de build: grafos de dependência, compilação incremental e GNU Make Derive o grafo de build e teste regras C11 com dependências de cabeçalhos, alvos phony e propagação de falhas. Como programas executam: argumentos, ambiente, streams e status de saída Estude a execução de programas C11 com argumentos, ambiente, stdout, stderr e testes de processo. Processos, memória virtual e chamadas de sistema Deduza 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ência Modele 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 fsync Estude descritores, dup, offsets compartilhados, read/write, buffering e fsync com modelos Python e testes independentes. Sistemas de arquivos: inodes, blocos, journaling e recuperação Modele 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ça Derive 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 deadlocks Deduza 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 prioridade Analise escalonamento MLFQ, boost periódico, starvation e inversão de prioridades com modelos de CPU e locks verificáveis. Fundamentos de HTTP: cliente, servidor, requisições e respostas Entenda 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 TTL Derive 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 caminho Deduza 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 negativas Estude 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 HTTP Acompanhe 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 fluxo Derive 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 congestionamento Derive SRTT, RTTVAR, RTO e backoff da RFC 6298; diferencie uma simulação por rodadas de cwnd/ssthresh do TCP real. TLS 1.3: autenticação, HKDF e derivação de chaves Entenda 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. Fundamentos de bancos relacionais: chaves, JOINs e integridade Derive 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ômicas Construa 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 rollback Evolua o esquema SQLite entre versões preservando registros, rejeitando estados inconsistentes e revertendo falhas. Transações, isolamento e consistência distribuída Diferencie 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ável Explique 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 joins Compreenda 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 WAL Analise armazenamento de tuplas, splits de B-tree, visibilidade MVCC e recuperação por WAL com base no PostgreSQL. Segurança de APIs: identidade, autorização e modelos de ameaça Distinga 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 replay Deduza 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. 5. Projeto de sistemas: dos requisitos às falhas Estimativas de capacidade e restrições de sistemas Derive 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 falhas Aprenda 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 condicionais Projete 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 objetos Escolha 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 eventos Escolha fronteiras entre serviços por autoridade, consistência, falhas síncronas e custos reais de escala. Cache: correção, invalidação e falhas Entenda 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ção Projete 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ídas Deduza 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ência Projete processamento assíncrono com confirmações, reentregas, filas de erro, consumidores idempotentes e controle explícito de pressão. APIs confiáveis: timeouts, retries, idempotência e backpressure Deduza orçamento de deadlines, amplificação por retries e comandos idempotentes; projete controle de admissão e respostas de erro. 6. Opcional: projeto distribuído avançado e estudos de sistemas System Design: escrita autoritativa, projeções de leitura e consistência Projete caminhos de escrita e projeções de leitura com eventos seguros para replay, limites de atraso e verificação de recuperação. Replicação de bancos, failover e limites de perda de dados Explique envio de WAL, réplicas síncronas e assíncronas, atraso, consistência de leituras, slots de retenção e failover seguro. Particionamento e sharding: chaves, hotspots e rebalanceamento Projete partições e shards por padrões de acesso, dimensione hotspots, modele hashing estável, migração e constraints globais. Estudo de System Design: notificações multicanal duráveis Projete 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 URLs Projete 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 pagamentos Projete 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ção Projete 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 timeline Projete 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 checkout Audite uma arquitetura de checkout por estoque, dual writes, pagamentos incertos, sobrecarga de filas e isolamento multitenant. 7. Exercícios independentes e comunicação Oficina de algoritmos: salas para intervalos e janelas com negativos Resolva dois exercícios originais com heap e deque monotônica, provas, contraexemplos e testes exaustivos independentes. Oficina de código manutenível: token bucket, relógio injetado e testes Implemente token bucket revisável com relógio injetado, invariantes explícitos e testes determinísticos; avalie limites distribuídos. Avaliação independente: rotas com cupom e rodadas de tarefas Resolva 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âmicas Resolva 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 Idempotentes Resolva 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ção Investigue 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 webhooks Resolva 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 requisitos Reprojete 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ção Projete 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ências Estruture experiências profissionais em contexto, responsabilidade, ação, decisão e resultados mensuráveis, reconhecendo limites e trade-offs. 8. Aprofundamento opcional em compiladores e VM Linguagens Formais e Autômatos Finitos: AFD, AFN, Fecho Épsilon e Determinização Fundamentos 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ática Fundamentos 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 Virtual Implemente 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 Tipadas Amplie 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 Virtual Compile 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 Tipadas Estenda 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 Slots Resolva 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 Verificado Defina 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-Sweep Derive 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 Recursivos Integre mark-and-sweep por raízes explícitas à VM de slots, preservando closures mutáveis e coletando ciclos recursivos inacessíveis.
Ainda não publicado nesta edição Lacunas fundamentais restantes: matemática discreta além de teoria dos números elementar (recorrências não uniformes ou de ordem superior), transformações gramaticais, recursão mútua, análise avançada de duração da memória, distribuição autenticada de bytecode, gerenciamento integrado de heap e backends nativos, computabilidade de Turing, coerência de cache, implementação detalhada de pipelines e estruturas de filesystems reais e testes de falha física, retransmissão/congestionamento TCP completos por ACK, resolução DNS autoritativa real e validação DNSSEC, AEAD e nonces, PKI/assinaturas e validação real de certificados, outros padrões especializados e avaliações cronometradas supervisionadas com casos não públicos. CI não certifica preparação para entrevistas.
Requisitos documentados publicamente https://amazon.jobs/content/en/how-we-hire/sde-ii-oa-prep https://amazon.jobs/content/en/how-we-hire/sde-ii-interview-prep https://amazon.jobs/content/en/how-we-hire/interview-prep/software-development-topics