Глубокий разбор технологий уровня Middle 1: внутренности runtime, паттерны concurrency, БД, архитектура, observability, инфраструктура, брокеры. Дополнение к ../02-middle-1.md , но другого формата — отдельный файл на каждую тему.
30 файлов, ~30 000 строк (~1.1 МБ). Подходит как настольный справочник на собес 2026.
Версия Go — 1.22+ (с фичами 1.21/1.23/1.24 где уместно).
Предполагается, что джун-материалы из ../01-junior-tech/ уже изучены. Здесь — следующий уровень: внутренности структур runtime, production-кейсы, реальные паттерны.
1. Базовая концепция — короткое введение, без воды
2. Под капотом — runtime структуры, ASCII-схемы, dispatch механики
3. Gotchas — 8-12 реальных подвохов с кодом
4. Производительность — оптимизации, бенчмарки
5. Когда использовать — альтернативы, trade-offs
6. Вопросы с собеса — 20-30 вопросов с развёрнутыми ответами
7. Practice — 5-8 задач с решениями
8. Источники — Go blog, runtime sources, статьи Habr 2024-2026
# Файл Главные темы Строк 01 01-interfaces-internals.mdiface/eface/itab из runtime/iface.go, itab cache, assertI2I/E2I, FAST vs SLOW path, dynamic dispatch cost 1054 02 02-generics.mdType parameters, constraints, type sets, GCShape stenciling, dictionary, бенчмарки vs interface 1089 03 03-reflect-unsafe.mdreflect Type/Value/Kind, DeepEqual, 4 правила unsafe.Pointer, unsafe.String/SliceData (1.20+), noescape 1001 04 04-escape-analysis-memory-model.md-gcflags=“-m”, правила escape, happens-before, atomic memory ordering, race detector через shadow memory 1005
# Файл Главные темы Строк 05 05-channels-select-internals.mdhchan structure, sendq/recvq, sudog, runtime.selectgo (2 passes), gopark/goready 1040 06 06-sync-advanced.mdMutex normal/starvation, RWMutex writer preference, Pool victim cache, sync.Map read/dirty, atomic 1.19+ 1180 07 07-concurrency-patterns.mdWorker pool, errgroup (SetLimit), pipeline, fan-in/out, semaphore, singleflight, rate limiting, backpressure 1509 08 08-goroutine-leaks-debug.mdСценарии leak, pprof goroutine, uber/goleak, race detector, delve, testing/synctest (1.24+) 1178
# Файл Главные темы Строк 09 09-gmp-deep.mdG/M/P структуры, work stealing (runqsteal), async preempt через SIGURG, syscall handoff, netpoll, sysmon 1023 10 10-gc-tuning.mdTri-color + hybrid Dijkstra/Yuasa, write barrier, pacer math, GOGC, GOMEMLIMIT в k8s (90% от лимита) 1094 11 11-pprof-profiling.mdCPU/heap/goroutine/block/mutex profiles, flat vs cum, flame graph, pprof -base, continuous profiling 1130 12 12-benchmarks-trace.mdb.N, deadcode elimination + sink, benchstat, runtime/trace, Flight Recorder (1.23+), b.Loop (1.24+) 1270
# Файл Главные темы Строк 13 13-testing-advanced.mdt.Parallel/Cleanup/Helper, testify, gomock, mockery, testcontainers, golden files, coverage modes 1028 14 14-fuzz-testing.mdGo 1.18+ fuzz API, seeds, corpus, reproducing crashes, OSS-Fuzz, differential fuzzing 776
# Файл Главные темы Строк 15 15-database-sql-pgx.mddatabase/sql pool tuning, prepared statements, pgx v5 (native protocol), CopyFrom, Listen/Notify 881 16 16-orm-builders.mdsqlx, squirrel, sqlc (рекомендуется) , GORM, ent, bun — сравнение, N+1, когда что 884 17 17-transactions-migrations.mdIsolation levels, SSI в PostgreSQL, deadlock retry, UnitOfWork, SKIP LOCKED, golang-migrate/goose/atlas 1123
# Файл Главные темы Строк 18 18-clean-architecture.mdClean/Hexagonal/Onion, dependency rule, Repository pattern, OrderService example 850-1000 19 19-ddd-and-di.mdDDD tactical (entity, VO, aggregate), manual DI vs wire vs fx, functional options 850-1000 20 20-project-layout.mdgolang-standards, internal/, cmd/, package naming, mono-repo, workspaces 800-1000
# Файл Главные темы Строк 21 21-http-routers-middleware.mdGo 1.22 ServeMux, chi/gin/echo/fiber сравнение, middleware patterns, validator, OpenAPI, WebSocket 1000-1200 22 22-grpc.md4 типа RPC, buf, interceptors, status/codes, mTLS, Health Check, gRPC-Gateway, Connect-Go 1000-1200 23 23-graceful-shutdown.mdhttp.Shutdown vs Close, gRPC GracefulStop, signal.NotifyContext, k8s preStop 800-1000
# Файл Главные темы Строк 24 24-logging-slog.mdslog (1.21+), JSONHandler, context propagation, zap/zerolog сравнение, sampling, PII masking 779 25 25-metrics-prometheus.mdCounter/Gauge/Histogram, client_golang, cardinality bomb , RED/USE, exemplars, SLI/SLO 844 26 26-tracing-otel.mdOTel API/SDK, W3C propagation, tail-based sampling, auto-instrumentation, OTLP Collector 794
# Файл Главные темы Строк 27 27-docker-k8s.mdMulti-stage build, distroless, GOMEMLIMIT/automaxprocs , Deployment/Service/probes, HPA, Helm 1051
# Файл Главные темы Строк 28 28-redis.mdgo-redis v9, структуры данных, pipelining vs MULTI/EXEC, cache-aside + singleflight, Redlock критика Kleppmann , Streams 842 29 29-kafka.mdfranz-go (рекомендуется 2026) , idempotent producer, exactly-once, consumer groups, schema registry, DLQ, outbox, KRaft799 30 30-nats-rabbit.mdNATS Core vs JetStream, queue groups, RabbitMQ exchanges, quorum queues (replace mirrored), publisher confirms 828
Если времени мало — сначала эти:
05-channels-select-internals.md — hchan + select internals спрашивают почти всегда
01-interfaces-internals.md — iface/eface на лету разбирать
07-concurrency-patterns.md — попросят написать worker pool
09-gmp-deep.md — GMP-модель + work stealing
10-gc-tuning.md — tri-color, GOMEMLIMIT, pacer
15-database-sql-pgx.md — pgx v5 + pool tuning
18-clean-architecture.md + 19-ddd-and-di.md — как структурировать сервис
02-generics.md — стало популярной темой
25-metrics-prometheus.md — cardinality bomb, RED/USE
23-graceful-shutdown.md — k8s lifecycle, preStop
04-escape-analysis... — closure capture → heap alloc (даже если переменная маленькая)
05-channels-select... — single-case select оптимизируется компилятором
06-sync-advanced — sync.Map медленнее обычного Mutex+map при равных read/write
07-concurrency-patterns — time.After в long-running select течёт памятью (use NewTimer + Stop)
10-gc-tuning — забыли GOMEMLIMIT в k8s → OOM Kill при memory pressure
15-database-sql... — SetMaxOpenConns не настроен → connection storm на проде
17-transactions... — long-running transaction блокирует другие, deadlock без retry
25-metrics-prometheus — label на user_id = cardinality bomb (миллион timeseries)
27-docker-k8s — нет non-root user, нет distroless — security holes
28-redis — Redlock не безопасен в edge cases (читать Kleppmann)
29-kafka — auto-commit + crash = потерянные сообщения
30 markdown-файлов (+README)
~30 000 строк
~1.1 МБ материала
700+ вопросов с собеса с ответами
200+ компилируемых примеров кода
25+ ASCII-схем (iface/eface/itab, hchan + sudog, GMP + work stealing, tri-color GC, pprof flow, Kafka partitions, K8s pod lifecycle и др.)