Blog
Para quem já sabe o básico e quer ir fundo. Aqui o assunto é como os modelos funcionam em produção: memória, roteamento, ferramentas, agentes. O lado técnico que pouca gente explica direito.
Big-O como linguagem pra falar de custo; O(1)/O(log n)/O(n)/O(n log n)/O(n²) com exemplos reais; quando constantes importam; amortized vs worst-case; por que bubble sort teórico é ruim mas timsort real venceu.
Arrays contíguos (cache locality), hashmaps amortized O(1), collision strategies (open addressing vs chaining), load factor, quando Map beat Object em JS, Set, WeakMap. Por que hash ruim degrada pra O(n).
BST balanceada (como Map de várias libs), heap (priority queue pra scheduling), trie (autocomplete, filesystem path). Pular AVL e red-black como estudo acadêmico — entender o que a lib padrão usa por baixo.
Grafo como abstração comum (deps de pacote, roteamento, social graph). BFS pra menor número de hops, DFS pra ciclos, Dijkstra pra shortest path com pesos. Representação: adjacency list vs matrix. Detectar ciclos em build systems.
Recursão sem misticismo: caso base + passo. Memoization top-down, tabulation bottom-up. DP clássicos úteis (knapsack pra budget, LCS pra diff, edit distance pra fuzzy search). Quando recursão estoura stack e como reescrever iterativo.
indexOf moderno (Two-Way/Boyer-Moore por baixo), regex NFA vs DFA (por que regex ruim trava), fuzzy matching (edit distance, Jaro-Winkler), suffix array básico. Quando buscar em memória vs delegar pro Postgres FTS.
Timsort (V8, Python, JDK), quicksort pragmático, mergesort quando estabilidade importa, quickselect pra top-k sem ordenar tudo, counting/radix em casos específicos (ints pequenos). 99% do tempo: use lib padrão, não reinvente.
Bloom filter (membership com falso positivo, zero falso negativo — cache, dedup); HyperLogLog (cardinalidade com 1-2% erro em MB); Count-Min sketch (frequência aproximada); quando aceitar imprecisão em troca de memória constante.
Cinco problemas de produção: (1) dedup de 10M eventos usando Bloom; (2) top-N queries lentas do banco com min-heap; (3) detecção de ciclo em deps de pacote; (4) cursor pagination com tiebreaker estável; (5) rate limit com sliding window counter. Cada um com análise de custo real.