Для Go-роли в крупном e-commerce готовьте язык вместе с эксплуатацией. На каждый ответ о goroutine, channel или slice добавляйте ownership, отмену, метрики, поведение под нагрузкой и сценарий отказа.
План
Пройдите этапы по порядку
- 01
Чем длина slice отличается от capacity?
Объясните header с указателем, len и cap, правила append и переаллокацию. Покажите риск удержания большого backing array маленьким subslice и случай, когда копирование является осознанной экономией памяти.
- 02
Кто должен закрывать channel?
Обычно закрывает отправитель, который знает, что значений больше не будет. Получатель не должен закрывать канал, а несколько производителей требуют координации. Обсудите утечки goroutine, select по context.Done и завершение pipeline.
- 03
Как context проходит через сервис?
Контекст несёт дедлайн, отмену и request-scoped значения через границы вызовов. Его передают первым аргументом, не хранят в структуре и не используют как универсальный мешок. Все блокирующие операции должны уважать отмену.
- 04
Что делает планировщик Go под нагрузкой?
Разберите модель G-M-P, work stealing, сетевой poller и влияние блокирующих syscall. Свяжите теорию с симптомами: рост goroutines, scheduler latency, CPU saturation и профили pprof.
- 05
Как обеспечить идемпотентность заказа или платежа?
Предложите idempotency key, уникальное ограничение или inbox/outbox, чёткий статус операции и повторяемый ответ. Отделите доставку сообщения at-least-once от ровно одного бизнес-эффекта.
- 06
Как пережить пик трафика маркетплейса?
Оцените QPS, лимиты зависимостей и горячие ключи. Добавьте backpressure, очереди, кеш с защитой от stampede, graceful degradation, autoscaling по подходящей метрике и нагрузочный тест до релиза.
Что обычно мешает
Частые ошибки
- Отвечать о Go только синтаксисом.
- Запускать goroutine без пути завершения.
- Обещать exactly-once без бизнес-идемпотентности.
- Проектировать бесконечные retries при перегрузке.
Перед следующим этапом
Чек-лист готовности
- Объясняю slices, maps и interfaces под капотом.
- Пишу pipeline с отменой и закрытием.
- Профилирую CPU, память и goroutines.
- Разбираю Kafka, PostgreSQL и кеширование.
- Проектирую деградацию при пиковом трафике.
Коротко
Частые вопросы
Это реальные вопросы Ozon?
Нет утверждения о едином списке: команды и вакансии различаются. Вопросы здесь — редакционная программа подготовки на основе открытого технологического контекста и типовых требований production Go-ролей.
Нужно ли решать алгоритмы?
Подготовьте структуры данных, сложность и live coding. Даже если секция ближе к практическому коду, способность быстро написать и проверить небольшую функцию остаётся базовой.
Что важнее: Go или system design?
Для middle нужен уверенный язык и эксплуатационные основы; с ростом грейда возрастает вес архитектуры, отказоустойчивости и решений под нагрузкой. Уточните баланс у рекрутера.
Источники
Источники и редакционная политика
Материалы RecallDeck сопоставлены с официальной документацией и открытыми публикациями компаний, когда первичный источник доступен. Мы не связаны с упомянутыми работодателями, не публикуем конфиденциальные задания и не продаём места в подборках. Формат найма может меняться — уточняйте его у рекрутера.
От чтения к воспроизведению
Отрепетируйте полный цикл интервью.
RecallDeck возвращает сложные темы по расписанию и помогает удерживать в памяти язык, SQL, архитектуру и поведенческие истории.