Этап 6 из 7 · ≈ 4 ч

Память, инструменты и тесты

Основа с Junior

Стек и куча, escape analysis, GC, модули, go test и pprof.

Что важно знать

  • go mod, go test, go vet, golangci-lint.
  • Табличные тесты и бенчмарки — идиома Go.
  • Escape analysis решает, где живёт переменная.
  • pprof — профили CPU, памяти и горутин.

Критерии освоения

Junior ≈ 4 ч

  • Управляет зависимостями через go modules и пишет табличные тесты

Практика. Покрыть пакет табличными тестами и бенчмарками.

Middle ≈ 6 ч

  • Профилирует сервис через pprof и снижает аллокации
  • Объясняет escape analysis и работу сборщика мусора Go

Практика. Найти через pprof горячее место и лишние аллокации в HTTP-сервисе и сократить их.

Проверка знаний

Войдите, чтобы пройти тест: сданный тест отмечает тему пройденной на карте и в ИПР.

Вопросы с собеседований

Смотреть все
Как устроены модули Go — go.mod, go.sum, версии?Junior

go.mod объявляет путь модуля, версию Go и зависимости с версиями (семантическое версионирование). go.sum хранит хеши — гарантия, что скачан тот же код. Версии выбирает MVS (minimal version selection): берётся минимальная версия, удовлетворяющая всем…

Полный разбор
Как в Go устроены сборка мусора и размещение на стеке или в куче?Middle

GC в Go — конкурентный mark-and-sweep без поколений и без перемещения объектов, с паузами в доли миллисекунды. Где разместить значение, решает escape analysis компилятора: не «убегает» из функции — на стек (бесплатно), иначе — в кучу (работа для GC). GOGC…

Полный разбор
Как пишут тесты в Go — табличные тесты, моки, бенчмарки?Junior

Тесты — функции TestXxx(t testing.T) в файлах _test.go, запуск go test ./.... Идиома — табличные тесты: срез случаев и t.Run для каждого. Зависимости подменяют через маленькие интерфейсы и рукописные фейки. Бенчмарки — BenchmarkXxx(b testing.B), go test…

Полный разбор
Что такое гонка данных в Go и как её найти?Junior

Гонка данных — две горутины обращаются к одной переменной одновременно, и хотя бы одна пишет, без синхронизации. Результат непредсказуем, а для мап и срезов возможна порча структуры. go test -race / go run -race включает детектор: он отслеживает обращения и…

Полный разбор
Как устроен срез (slice) в Go?Junior

Срез — дескриптор из трёх полей: указатель на базовый массив, длина (len — сколько элементов доступно) и ёмкость (cap — сколько поместится до конца массива). append пишет в тот же массив, пока хватает ёмкости; иначе выделяет новый массив большего размера и…

Полный разбор
Как найти, что тормозит или ест память в Go-сервисе, — pprof?Middle

pprof — встроенный профилировщик. В сервис подключают import _ "net/http/pprof" (на внутреннем порту), затем go tool pprof http://host:6060/debug/pprof/profile?seconds=30 — профиль CPU, /heap — память (живые объекты и аллокации), /goroutine — стеки всех…

Полный разбор

← Вся карта «Go»

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования