🛒 Что спрашивают на техничке в X5 по Go

Я помогаю Golang, Java и C# разработчикам находить работу и проходить собеседования: резюме и отклики, которые доходят до HR, спокойный собес и торг по офферу. Разбираю механику найма изнутри, я провёл более 100 собеседований. Без воды, только чек-листы и готовые фразы.

golangx5горутины

Продолжаю серию про технички в конкретных компаниях.

Сегодня X5 и Go: я разобрал семь записей из подборки X5 с марта по август 2026. Это собеседования в разных командах: облако, инфраструктура, доставка, реклама. В пяти была практическая задача. В двух записях также обсуждали системный дизайн.

🔀 Горутины и каналы (5 из 7)

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

В другом задании есть около 30 URL. Сначала надо параллельно собрать ответы, потом вернуть первый успешный и отменить остальные запросы. В августе попросили написать FetchAll с лимитом одновременных запросов и отменой через context. Вопросы о каналах встречались и вне задач: в 6 из 7 собеседований.

Как подготовиться. Возьми одну задачу из материалов в боте и реши её через канал, через mutex и через запись по разным индексам слайса. Для каждого варианта проговори, как дождаться горутин, кто закрывает канал и что произойдёт, если все запросы завершатся ошибкой. В одном из устных разборов интервьюер менял условия по ходу разговора.

⚙️ Горутины и планировщик (5 из 7)

Здесь проверяли планировщик Go: как горутины выполняются на потоках ОС и что происходит при блокировке. В одной записи спросили: может ли горутина начать работу на одном потоке, а закончить на другом? Где её стек и что с ним будет при росте? В другой — запись в файл: это netpoller или handoff?

Как подготовиться. Разбери запись в файл по G-M-P: что блокируется, кому передают P и кто выполняет остальные горутины. Сравни это с ожиданием сети.

📦 go.mod, go.sum и приватные модули (3 из 7)

Здесь проверяли работу с модулями Go: версии, хэши и доступ к приватным репозиториям. Например: зачем нужны оба файла? Когда не совпадёт контрольная сумма? Как настроить GOPRIVATE и GOPROXY?

Как подготовиться. Сделай небольшой тренировочный проект с зависимостями, проверь оба файла и настрой GOPRIVATE.

📨 Kafka (6 из 7)

Здесь проверяли архитектуру Kafka: партиции, группы консьюмеров, гарантии доставки, порядок сообщений, идемпотентность и DLQ.

Например: консьюмер упал после обработки, но до коммита offset. Придёт ли сообщение снова? Как сохранить порядок событий пользователя? Куда отправить сообщение, которое постоянно падает?

Как подготовиться. Повтори внутреннее устройство Kafka, гарантии доставки и transactional inbox/outbox.

🐘 PostgreSQL и архитектура

PostgreSQL обсуждали в 5 из 7 записей. Составные индексы и уровни изоляции в 4 из 7 каждый. Например: поможет ли индекс по (a, b), если запрос фильтрует только по b? Почему не используют Serializable для всех транзакций? Отдельного задания написать SQL-запрос в этой подборке не было.

В двух записях проектировали сервис. В одной нужно создать виртуальную машину, диск и IP. Каждая операция длится 5–10 минут. Сервис упал после создания ресурса, но до записи результата в БД — как не создать его повторно? В другой задаче нужно подобрать рекламу быстрее 100 мс при большом объёме данных. Какие данные можно подготовить заранее, если одинаковые запросы не гарантированы?

Условие практической задачи могут поменять после первого решения. Готовься объяснять, что случится при ошибке, отмене запроса и падении сервиса.

Пиши в комментариях, на чём тебя ловили на техничке по Go в X5?

Полный список вопросов и задач с собеседований в X5 по Go как всегда в боте @booster_tbot

Если хочешь подготовиться к техничкам по Go, напиши мне.

Читайте так же