Подготовка по специальности

Собеседование Go-разработчика (Golang):
вопросы и ответы.

Go-интервью почти целиком крутится вокруг конкурентности и внутреннего устройства: горутины, каналы, планировщик, слайсы, map, интерфейсы. Вопросов меньше, чем в Java-мире, но копают глубже — «как устроено под капотом» здесь норма, а не исключение.

Обновлено 5 августа 2026 г.10 вопросов с разбором
Короткий ответ

Не пытайтесь выучить все ответы: интервьюеры проверяют понимание, а не память. Разберите темы ниже, прорешайте типичные вопросы вслух и свяжите каждый ответ с примером из собственного опыта.

01 · Процесс

Как обычно проходит интервью

Обычно: скрининг, секция по языку с разбором кода (найти гонку, утечку горутин, багу со слайсом), секция по инфраструктуре — базы данных, Kafka/очереди, gRPC, Docker/Kubernetes, для middle и выше — системный дизайн. Живой код с горутинами есть почти всегда.

02 · Темы

Что нужно знать перед интервью

Язык и рантайм

  • слайсы: устройство, append, ловушки шаринга массива
  • map: устройство, эвакуация, почему не потокобезопасна
  • интерфейсы: внутреннее представление, nil-интерфейс
  • defer, panic, recover
  • GC и планировщик: GMP-модель

Конкурентность

  • горутины и каналы: буферизованные, закрытие, select
  • sync: Mutex, WaitGroup, Once, errgroup
  • паттерны: worker pool, fan-in/fan-out, pipeline
  • утечки горутин и race detector
  • context: отмена, дедлайны, передача значений

Сервисы и инфраструктура

  • HTTP-сервер: middleware, таймауты, graceful shutdown
  • gRPC против REST, protobuf
  • работа с БД: database/sql, пулы соединений, транзакции
  • очереди (Kafka), кеши (Redis), метрики и трейсинг

03 · Вопросы

Реальные вопросы с разбором ответов

Пометка у вопроса — как часто он встречается на реальных интервью: почти всегда часто иногда

01. Как устроен слайс? Что произойдёт при append?

почти всегда

Заголовок: указатель на массив, длина, ёмкость. Append при нехватке ёмкости аллоцирует новый массив и копирует; при достаточной — пишет в тот же, и это ловушка: два слайса разделяют память, append в один портит другой. Пример такой ошибки — почти обязателен.

02. Почему map не потокобезопасна и что будет при конкурентной записи?

почти всегда

Рантайм детектирует конкурентную запись и падает с fatal error — это не паника, recover не спасёт. Решения: мьютекс вокруг map, sync.Map для специфичных сценариев (много чтений, редкие записи), шардирование. Упомяните, что порядок обхода map намеренно рандомизирован.

03. Опишите GMP-модель планировщика Go.

часто

G — горутины, M — потоки ОС, P — процессоры-контексты с локальными очередями. Планировщик кооперативный с вытеснением по сигналам; блокирующий сисколл открепляет M от P. Work stealing балансирует очереди. Глубина здесь отличает middle от senior.

04. Когда nil-интерфейс не равен nil?

почти всегда

Интерфейс — пара (тип, значение). Если в интерфейс положили типизированный nil-указатель, тип не пуст — сравнение с nil даёт false. Классика: функция возвращает error через конкретный тип *MyError. Покажите, как избегать: возвращать явный nil.

05. Что такое утечка горутин и как её найти?

почти всегда

Горутина заблокирована навсегда: чтение из канала, в который никто не пишет, забытый receiver, отсутствие отмены. Поиск: pprof (goroutine profile), метрика runtime.NumGoroutine. Профилактика: context с отменой, select с ctx.Done(), явное владение каналом.

06. Как работает context и зачем он в каждой сигнатуре?

почти всегда

Дерево отмены: отмена родителя доходит до всех детей, плюс дедлайны и значения. Передаётся первым аргументом по конвенции; горутины и запросы к БД/HTTP обязаны его уважать. Антипаттерны: хранить context в структуре, класть в него бизнес-данные.

07. Буферизованный канал против небуферизованного: семантика и применение.

часто

Небуферизованный — синхронная встреча отправителя и получателя; буферизованный развязывает их до заполнения буфера. Примеры: сигнал о готовности — небуферизованный; очередь заданий worker pool — буферизованный. Закрывает канал только владелец-отправитель.

08. Напишите worker pool с ограничением параллелизма и обработкой ошибок.

почти всегда

Канал заданий, N горутин-воркеров, WaitGroup или errgroup с контекстом для первой ошибки и отмены остальных. Проговорите завершение: закрытие канала заданий после отправки всех, ожидание воркеров. Это самая частая практическая задача Go-интервью.

09. defer: порядок выполнения и вычисление аргументов.

часто

LIFO, аргументы вычисляются в момент объявления defer, а не выполнения. Ловушки: defer в цикле копит вызовы до выхода из функции; изменение именованного возвращаемого значения в defer работает. Пример с закрытием ресурсов в цикле — типичный вопрос.

10. Поведенческий: расскажите про сервис, который вы спроектировали или значимо переработали.

почти всегда

Схема: задача и нагрузка → ключевые решения (протокол, хранилище, конкурентность) → компромиссы → результат в метриках. Для Go-вакансий сильно звучат кейсы про пропускную способность, устойчивость к сбоям зависимостей и наблюдаемость.

04 · Практика

Live coding: чего ожидать

Типичные задачи: найти гонку или утечку в готовом коде, написать worker pool или pipeline на каналах, merge N каналов (fan-in), rate limiter, обработка данных с конкурентностью и отменой по context.

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

Отвечайте из своего опыта. Подсказки, шпаргалки и AI-инструменты работают только как опора для собственной мысли: выдуманный опыт раскрывается первым же уточняющим вопросом.

Общая подготовка — резюме, техника, звук и демонстрация экрана — разобрана в чек-листе подготовки к онлайн-собеседованию. Как осознанно использовать AI-подсказки во время звонка — в гайде «Как использовать AI на собеседовании».

05 · FAQ

Частые вопросы

Что спрашивают у джуна и у мидла по Go — в чём разница?

Джун: слайсы, map, горутины и каналы на базовом уровне, defer, обработка ошибок. Middle: планировщик и GMP, внутреннее устройство структур, паттерны конкурентности, pprof, устройство сервисов в проде — таймауты, graceful shutdown, наблюдаемость. Системный дизайн начинается с middle.

Нужно ли знать другие языки до Go?

Нет, но контекст помогает: многие вопросы построены на контрасте — почему в Go нет наследования, зачем явные ошибки вместо исключений, чем горутины легче потоков. Умение объяснить эти решения дизайна языка производит хорошее впечатление.

Какая инфраструктура ожидается вокруг Go?

Стандартный набор вакансий: PostgreSQL, Redis, Kafka или другая очередь, gRPC, Docker и Kubernetes, Prometheus с Grafana. Глубина по каждому инструменту зависит от роли, но уверенная работа с БД и очередями через призму конкурентности ожидается почти везде.

Тренировка перед интервью

Репетируйте ответы вслух с Mira

Mira слышит вопрос и подсказывает опору для ответа прямо во время звонка. 30 минут бесплатно каждый месяц, банковская карта не нужна.

Скачать Mira