Conceitos da linguagem C# e da biblioteca base explicados a fundo, um de cada vez.
A escada IEnumerable até IList, visão somente leitura vs coleção imutável, tipos de parâmetro e de retorno, collection expressions do C# 12 e escolha da coleção concreta pelo padrão de acesso.
yield return e a state machine dos iteradores, execução adiada, enumeração múltipla, closures, IEnumerable vs IQueryable, streaming vs buffering e os operadores novos do .NET 9.
ImmutableList vs ImmutableArray, builders, ImmutableDictionary, FrozenDictionary e FrozenSet, e a diferença entre uma visão somente leitura e uma coleção imutável.
Queue, Stack, LinkedList, SortedDictionary vs SortedList, SortedSet e PriorityQueue, com o custo de cada estrutura e os limites que surpreendem.
Crescimento e capacity do List<T>, covariância de arrays, modificar a coleção durante um foreach e fatiar sem copiar com Span e CollectionsMarshal.AsSpan.
Buckets e entries, o contrato Equals/GetHashCode, o bug da chave mutável, IEqualityComparer e StringComparer, records como chave e APIs de lookup sem hash duplo.
Stream como abstração de arquivos, memória e rede, decorators como BufferedStream e GZipStream, leaveOpen e quem faz Dispose, Read que devolve menos bytes que o pedido, Seek e acesso assíncrono a arquivos.
ReadAsync com Memory, CopyToAsync, ArrayPool, PipeReader e PipeWriter com AdvanceTo e backpressure, e quando Pipelines compensa em vez de um Stream simples.
await foreach, iteradores assíncronos, cancelamento com EnumeratorCancellation, streaming de JSON no ASP.NET Core e o que acontece quando o stream falha no meio.
Thread vs Task, foreground e background, injeção gradual de threads no ThreadPool, starvation causada por sync-over-async, LongRunning e como enxergar o problema com contadores.
O que lock compila de fato, System.Threading.Lock, o que nunca usar como alvo, Interlocked e laços CAS, ReaderWriterLockSlim, por que não dá para usar await dentro de lock e como a ordem dos locks evita deadlock.
O que uma thread enxerga das escritas de outra, volatile e Volatile.Read, double-checked locking vs Lazy<T>, Interlocked como barreira completa e ThreadLocal vs ThreadStatic vs AsyncLocal.