Pular para o conteúdo
Voltar às Trilhas Intermediário
Fundamentos que Não Mudam
🧱

Fundamentos que Não Mudam

Os pilares da programação que nenhuma linguagem, framework ou tendência vai tornar obsoletos. Memória, estruturas de dados, algoritmos, recursão e orientação a objetos — dominados uma vez, aplicados para sempre.

Capítulos 12
Progresso 0/52 aulas
Concluído 0%
📌
CAPÍTULO 1

Pilar 1: Como o Computador Executa Seu Código

4 aulas
🎯

Stack e Heap: onde vivem seus dados

Aprenda toda variável ocupa espaço em algum lugar da memória com conceitos práticos e exercícios aplicados.

Em Andamento
🔒

Valor vs Referência: o bug que todo mundo tem

Aprenda passagem por valor: a função recebe uma cópia com conceitos práticos e exercícios aplicados.

Bloqueada
🔒

Mutabilidade e Garbage Collector

Aprenda imutável não significa que a variável não muda — significa que o objeto não muda com conceitos práticos e exercícios aplicados.

Bloqueada
🔒

1.4 Mutabilidade, Identidade & id()

id(obj) retorna o endereço único de memória na Heap. "==" compara igualdade de conteúdo, enquanto "is" compara identidade de memória.

Bloqueada
📌
CAPÍTULO 2

Pilar 2: Estruturas de Dados e o Trade-off Fundamental

5 aulas
🔒

O(n) vs O(1): a escolha que importa

Aprenda notação big-o: medindo o custo das operações com conceitos práticos e exercícios aplicados.

Bloqueada
🔒

Dict: a estrutura que está em todo lugar

Aprenda dicionário é uma tabela hash — não um arquivo de texto com conceitos práticos e exercícios aplicados.

Bloqueada
🔒

Stack e Queue: controle de ordem e fluxo

Aprenda stack (pilha): lifo — o último que entra é o primeiro que sai com conceitos práticos e exercícios aplicados.

Bloqueada
🔒

2.4 File Descriptors: Tudo no Linux é um Arquivo

No SO, arquivos abertos, conexões TCP e sockets de rede são representados como inteiros (File Descriptors) na tabela de arquivos do processo.

Bloqueada
🔒

2.5 Memória Virtual, Paginação & Swap

A MMU (Memory Management Unit) divide a memória em páginas de 4KB, mapeando o endereço virtual do processo para o endereço físico na RAM ou disco (Swap).

Bloqueada
📌
CAPÍTULO 3

Pilar 3: Algoritmos — Busca, Ordenação e Complexidade

5 aulas
🔒

Busca Linear vs Busca Binária

Aprenda busca linear: o(n) — funciona sempre, mas não escala com conceitos práticos e exercícios aplicados.

Bloqueada
🔒

Ordenação: por que importa entender o sort

Aprenda python usa timsort: o(n log n) e estável com conceitos práticos e exercícios aplicados.

Bloqueada
🔒

3.3 HTTP/HTTPS & Handshake TLS

No HTTPS, o Handshake TLS negocia chaves simétricas de sessão via Criptografia Assimétrica (ECC/RSA) antes do primeiro byte HTTP trafegar.

Bloqueada
🔒

3.4 Resolução DNS: De Nomes a IPs

Navegador -> Cache Local -> Resolvente ISP -> Root Servers -> TLD (.com) -> Servidor Autoritativo -> Registro A / AAAA com IP.

Bloqueada
🔒

3.5 Sockets & WebSockets Full-Duplex

Inicia como requisição HTTP com headers Upgrade: websocket. Após o aceite do servidor, a conexão TCP permanece aberta para quadros binários bidirecionais.

Bloqueada
📌
CAPÍTULO 4

Pilar 4: Recursão — Quando a Função Chama a Si Mesma

5 aulas
🔒

Como a recursão funciona na call stack

Recursão é quando uma função chama a si mesma com uma entrada menor ou mais simples. Todo algoritmo recursivo precisa de dois ingredientes obrigatórios:.

Bloqueada
🔒

Memoização: não calcule o que você já calculou

A sequência de Fibonacci (1, 1, 2, 3, 5, 8, 13...) parece simples:.

Bloqueada
🔒

4.3 Análise Assintótica Big-O

O(1) busca em Tabela Hash. O(log n) busca binária. O(n) busca linear. O(n log n) ordenação eficiente. O(n²) loops aninhados.

Bloqueada
🔒

4.4 Busca Binária & Timsort

Busca Binária elimina metade dos candidatos a cada passo em listas ordenadas. Timsort é o algoritmo de ordenação estável O(n log n) do Python.

Bloqueada
🔒

4.5 Race Conditions em Coleções Compartilhadas

Modificar uma lista ou dicionário compartilhado por múltiplas threads simultaneamente sem trava pode corromper ponteiros internos.

Bloqueada
📌
CAPÍTULO 5

Pilar 5: Orientação a Objetos — Os 4 Pilares Reais

4 aulas
🔒

Encapsulamento: protegendo o estado interno

Aprenda encapsulamento: expor interface, esconder implementação com conceitos práticos e exercícios aplicados.

Bloqueada
🔒

Herança vs Composição: a escolha certa

Aprenda herança: "é um" — use com moderação com conceitos práticos e exercícios aplicados.

Bloqueada
🔒

Polimorfismo: mesma interface, comportamentos diferentes

Aprenda polimorfismo: o código que não precisa saber com quem está falando com conceitos práticos e exercícios aplicados.

Bloqueada
🔒

5.4 Closures Lexicais & Padrão Decorator

Closures "lembram" das variáveis do seu escopo criador. Decorators envelopam funções adicionando comportamentos (ex: log, auth, rate-limit).

Bloqueada
📐
CAPÍTULO 6

Pilar 6: Modelagem de Domínio & POO (Entidades vs Value Objects)

4 aulas

Invariantes de negócio, Composição vs Herança, Coesão e Acoplamento.

🔒

6.1 Entidades, Value Objects & Invariantes

Entidades possuem identidade única (ID). Value Objects são imutáveis definidos por seu valor. Invariantes são regras inegociáveis de negócio.

Bloqueada
🔒

6.2 Invariantes de Negócio & Domain Constraints

Invariantes são regras que nunca podem ser quebradas (ex: saldo não pode ser negativo sem limite). Devem ser validadas no construtor do modelo.

Bloqueada
🔒

6.3 Composição vs Herança

Herança cria alto acoplamento ("É UM"). Composição cria flexibilidade em tempo de execução ("TEM UM").

Bloqueada
🔒

6.4 Coesão & Acoplamento em Classes

Alta coesão: classe foca em um único propósito. Baixo acoplamento: classes interagem via interfaces bem definidas sem conhecer detalhes internos.

Bloqueada
🗄️
CAPÍTULO 7

Pilar 7: Persistência de Dados (ACID, Índices & Normalização)

5 aulas

Transações ACID, Índices B-Tree, Normalização 1FN a 3FN e Eliminação de N+1 Queries.

🔒

7.1 Transações ACID & Isolamento de Dados

Atomicidade (tudo ou nada), Consistência (regras válidas), Isolamento (transações concorrentes seguras) e Durabilidade (persistido em disco).

Bloqueada
🔒

7.2 JOINs & Planos de Execução (EXPLAIN ANALYZE)

EXPLAIN ANALYZE mostra se o banco usou índice ou fez varredura completa da tabela (Full Table Scan). JOINs devem usar chaves indexadas.

Bloqueada
🔒

7.3 Índices B-Tree vs Hash & Custo de Leitura/Escrita

Índices B-Tree aceleram buscas SELECT O(log n) e ordenações, mas tornam INSERT/UPDATE/DELETE mais lentos pois a árvore precisa ser rebalanceada.

Bloqueada
🔒

7.4 Normalização (1FN, 2FN, 3FN) & Desnormalização

1FN: atributos atômicos. 2FN: sem dependência parcial da PK. 3FN: sem dependência transitiva. Desnormalização estratégica é usada para relatórios analíticos.

Bloqueada
🔒

7.5 Transações ACID & Problema N+1 no ORM

Atomicidade, Consistência, Isolamento e Durabilidade. Evite N+1 Queries no Django ORM utilizando select_related para ForeignKeys.

Bloqueada
🔐
CAPÍTULO 8

Pilar 8: Concorrência (Mutex, Locks, Deadlocks & GIL)

4 aulas

Travas de memória, prevenção de Deadlocks e isolamento transacional.

🔒

8.1 Locks, Semáforos & Prevenção de Deadlocks

Locks garantem exclusão mútua em seções críticas de código. A ordem estrita de aquisição de travas evita Deadlocks.

Bloqueada
🔒

8.2 Mutex, Semáforos & Trava de Memória

Mutex (Lock de exclusão mútua): permite apenas 1 thread por vez. Semáforo: permite até N threads simultâneas no recurso.

Bloqueada
🔒

8.3 Prevenção de Deadlocks & Livelocks

Deadlock ocorre quando Thread A espera Trava B e Thread B espera Trava A. Evita-se ordenando estritamente a aquisição de travas.

Bloqueada
🔒

8.4 Níveis de Isolamento de Transação no Banco

Read Uncommitted (Dirty Read), Read Committed (Phantom Read evitado), Repeatable Read (padrão InnoDB) e Serializable.

Bloqueada
🗝️
CAPÍTULO 9

Pilar 9: Criptografia, Hashing & Autenticação (HMAC & JWT)

4 aulas

Hashing unidirecional, Criptografia Simétrica/Assimétrica, AuthN vs AuthZ e Tokens HMAC.

🔒

9.1 Hashing vs Criptografia & Tokens HMAC

Hashes (bcrypt, SHA-256) validam integridade sem revelar a senha. HMAC combina chaves secretas para assinar payloads à prova de adulteração.

Bloqueada
🔒

9.2 Criptografia Simétrica (AES) vs Assimétrica (RSA/ECC)

Simétrica (AES-256): rápida para grandes volumes de dados. Assimétrica (RSA/ECC): usada em assinaturas digitais e troca inicial de chaves.

Bloqueada
🔒

9.3 Autenticação (AuthN) vs Autorização (AuthZ)

AuthN (Autenticação): valida quem é o usuário (senha/MFA). AuthZ (Autorização): valida permissões de acesso ao recurso (RBAC/ABAC).

Bloqueada
🔒

9.4 Tokens Assinados HMAC & JWT (Prevenção de Falsificação)

HMAC calcula o digest do payload combinando uma chave secreta. Se o cliente alterar 1 caractere no token, a verificação do digest falha.

Bloqueada
🧪
CAPÍTULO 10

Pilar 10: Pirâmide de Testes, TDD & Cobertura

4 aulas

Testes Unitários, de Integração, Mocks, Stubs e Ciclo Red-Green-Refactor.

🔒

10.1 Pirâmide de Testes & Mocks em Produção

Testes unitários rodam em milissegundos e isolam dependências com Mocks. Testes de integração validam contratos reais com banco e rede.

Bloqueada
🔒

10.2 Mocks, Stubs & Test Fixtures

Stubs fornecem respostas prontas. Mocks verificam se determinado método foi chamado com argumentos esperados.

Bloqueada
🔒

10.3 TDD (Test-Driven Development): Red-Green-Refactor

1. Escreva o teste (RED). 2. Escreva o código mínimo para passar (GREEN). 3. Melhore o design sem quebrar os testes (REFACTOR).

Bloqueada
🔒

10.4 Cobertura de Testes & A Armadilha dos 100%

100% de cobertura de código apenas garante que as linhas foram executadas, não que as regras de negócio foram testadas adequadamente.

Bloqueada
🌿
CAPÍTULO 11

Pilar 11: Grafo Interno do Git (DAG, Rebase & Conflitos)

4 aulas

Commits como Grafo Acíclico Dirigido (DAG), Rebase vs Merge e Resolução de Conflitos.

🔒

11.1 O Grafo Interno do Git (DAG) & Rebase

Cada commit aponta para seus pais formando um DAG. Rebase reaplica commits sobre uma nova base mantendo um histórico linear.

Bloqueada
🔒

11.2 Rebase vs Merge: Preservação vs Histórico Linear

Merge preserva a história exata das ramificações. Rebase reaplica seus commits no topo da branch de destino gerando um histórico limpo e linear.

Bloqueada
🔒

11.3 Resolução de Conflitos & Ancestral Comum

O Git compara a branch atual (OURS), a nova branch (THEIRS) e o ancestral comum (BASE) para identificar e mesclar alterações automaticamente.

Bloqueada
🔒

11.4 Workflows: Trunk-Based Development vs Git Flow

Trunk-Based: integrações contínuas e frequentes na branch principal. Git Flow: branches de longa duração para releases, features e hotfixes.

Bloqueada
🏗️
CAPÍTULO 12

Pilar 12: Refatoração Segura & Engenharia de Código Legado

4 aulas

Characterization Tests, Pontos de Costura (Seams) e Gestão de Dívida Técnica.

🔒

12.1 Characterization Tests & Pontos de Costura (Seams)

Characterization Tests capturam o comportamento atual (mesmo bugs) como rede de segurança. Seams abrem pontos de extensão sem reescrever o sistema.

Bloqueada
🔒

12.2 Characterization Tests: Travando Comportamentos

Escreva testes que afirmem a saída atual do sistema (mesmo bugada). Eles garantem que nenhuma alteração não intencional ocorra durante a refatoração.

Bloqueada
🔒

12.3 Refatoração Segura & Regra do Escoteiro

Faça refatoração em passos minúsculos com testes passando a cada modificação. Nunca altere comportamento de negócio enquanto refatora a estrutura.

Bloqueada
🔒

12.4 Pontos de Costura (Seams) & Dívida Técnica

Um Seam é um lugar onde você pode alterar o comportamento sem mudar o código naquele ponto. Permite injetar dependências e testar isoladamente.

Bloqueada