> Приходилось ли работать с профилированием в Go (Go)

Уровень: middle · Роль: backend · Язык: Go · Категория: Поведенческие вопросы

Компании: Wildberries

Стек: Go

> Пример ответа

Короткий ответ

Да, приходилось. Профилировал Go-сервисы через pprof: снимал CPU и heap профили, анализировал flamegraph, искал горячие пути и утечки памяти. Обычно это было связано с ростом latency или потребления памяти под нагрузкой. На основе профилей оптимизировал аллокации, убирал лишние goroutine и уменьшал contention на mutex.

Пример по STAR

Ситуация: На проде сервис обработки заказов начал потреблять в 3 раза больше памяти после релиза. Latency выросла с 50 до 200 мс на p99. Задача: Найти причину деградации и вернуть метрики к прежним значениям без отката релиза. Действие: Подключил net/http/pprof, снял heap профиль через go tool pprof. Обнаружил, что в новом коде создавался большой slice в цикле без переиспользования буфера. Также увидел утечку goroutine из-за незакрытого канала в middleware. Заменил аллокацию на sync.Pool и добавил defer close(ch). Результат: Потребление памяти упало на 60%, p99 latency вернулась к 55 мс. Добавил бенчмарки с профилированием в CI, чтобы ловить регрессии заранее.

Как отвечать на собеседовании

Расскажи конкретный кейс, где профилирование дало измеримый результат. Упомяни инструменты: pprof, trace, benchstat. Покажи, что понимаешь разницу между CPU, heap, block и mutex профилями. Сделай акцент на том, как интерпретировал данные и что изменил в коде. Если опыта мало, честно скажи, что пробовал на пет-проекте или локально, но понимаешь методологию.

Что проверяет интервьюер

Умеешь ли ты пользоваться стандартными инструментами профилирования Go. Понимаешь ли, как читать flamegraph и метрики аллокаций. Можешь ли связать результаты профилирования с конкретными изменениями в коде. Есть ли у тебя системный подход к оптимизации, а не слепой перебор. Способен ли ты объяснить trade-off между производительностью и читаемостью.

Типичные ошибки

Говорить только о теории, не приводя реальных примеров. Путать профилирование с логированием или метриками. Не упоминать, как именно анализировал данные. Заявлять об оптимизациях без цифр до и после. Игнорировать важность воспроизводимости замеров. Считать, что pprof - это единственный инструмент, и не знать про trace или benchstat.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью