Что важно знать
go mod,go test,go vet,golangci-lint.- Табличные тесты и бенчмарки — идиома Go.
- Escape analysis решает, где живёт переменная.
pprof— профили CPU, памяти и горутин.
Стек и куча, escape analysis, GC, модули, go test и pprof.
go mod, go test, go vet, golangci-lint.pprof — профили CPU, памяти и горутин.Практика. Покрыть пакет табличными тестами и бенчмарками.
Практика. Найти через pprof горячее место и лишние аллокации в HTTP-сервисе и сократить их.
Войдите, чтобы пройти тест: сданный тест отмечает тему пройденной на карте и в ИПР.
go.mod объявляет путь модуля, версию Go и зависимости с версиями (семантическое версионирование). go.sum хранит хеши — гарантия, что скачан тот же код. Версии выбирает MVS (minimal version selection): берётся минимальная версия, удовлетворяющая всем…
Полный разборGC в Go — конкурентный mark-and-sweep без поколений и без перемещения объектов, с паузами в доли миллисекунды. Где разместить значение, решает escape analysis компилятора: не «убегает» из функции — на стек (бесплатно), иначе — в кучу (работа для GC). GOGC…
Полный разборТесты — функции TestXxx(t testing.T) в файлах _test.go, запуск go test ./.... Идиома — табличные тесты: срез случаев и t.Run для каждого. Зависимости подменяют через маленькие интерфейсы и рукописные фейки. Бенчмарки — BenchmarkXxx(b testing.B), go test…
Полный разборГонка данных — две горутины обращаются к одной переменной одновременно, и хотя бы одна пишет, без синхронизации. Результат непредсказуем, а для мап и срезов возможна порча структуры. go test -race / go run -race включает детектор: он отслеживает обращения и…
Полный разборСрез — дескриптор из трёх полей: указатель на базовый массив, длина (len — сколько элементов доступно) и ёмкость (cap — сколько поместится до конца массива). append пишет в тот же массив, пока хватает ёмкости; иначе выделяет новый массив большего размера и…
Полный разборpprof — встроенный профилировщик. В сервис подключают import _ "net/http/pprof" (на внутреннем порту), затем go tool pprof http://host:6060/debug/pprof/profile?seconds=30 — профиль CPU, /heap — память (живые объекты и аллокации), /goroutine — стеки всех…
Полный разборПосле собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.