ENIGMA AI
ENIGMA AI
Собеседование 12 мин чтения

Собеседование в Ozon Tech: этапы, вопросы и как подготовиться

Собеседование в Ozon Tech: этапы, вопросы и как подготовиться

Ozon — один из крупнейших e-commerce игроков в России и самый быстрорастущий маркетплейс. Tech-подразделение компании насчитывает тысячи инженеров, работающих над логистикой, финтехом (Ozon Bank), рекламой и платформой для селлеров.

В этом гайде — всё о найме в Ozon Tech: от отклика до оффера.

Почему Ozon интересен разработчикам

Масштаб задач:

  • 500M+ заказов в год
  • Собственная логистическая сеть (склады, доставка)
  • Финтех-направление (Ozon Bank, Ozon Card)
  • Рекламная платформа
  • B2B-сервисы для продавцов

Технологии:

  • Go как основной язык backend
  • Kubernetes в продакшене
  • Собственные ML-решения для рекомендаций и ценообразования
  • Микросервисная архитектура (500+ сервисов)

Структура найма

Процесс в Ozon Tech стандартизирован и включает 4-5 этапов:

  1. Скрининг с рекрутером (15-30 минут)
  2. Техническое интервью (1-1.5 часа)
  3. Алгоритмическая секция (45-60 минут)
  4. System Design (для Middle+ позиций)
  5. Финальное интервью / знакомство с командой

Срок: 2-3 недели от первого контакта до оффера.

Этап 1: Скрининг

Звонок с HR для оценки базового соответствия.

Типичные вопросы:

  • Расскажите о себе и текущем проекте
  • Почему рассматриваете Ozon?
  • Какой стек используете?
  • Какое направление интересно? (логистика, финтех, платформа)
  • Ожидания по зарплате и формату работы

Что важно:

Ozon активно развивает офисы в Москве, Санкт-Петербурге и других городах. Удалёнка возможна, но многие команды работают в гибридном формате.

Этап 2: Техническое интервью

Основная проверка хард-скиллов. Формат — видеозвонок с одним-двумя разработчиками из команды.

Backend (Go — основной язык)

Вопросы по Go:

  • Как устроен планировщик горутин (GMP model)?
  • Что такое race condition? Как обнаружить и исправить?
  • Каналы: буферизированные vs небуферизированные, когда что?
  • Как работает select с default case?
  • Что такое context, как правильно использовать?
  • Как устроены слайсы, что происходит при append?
  • Интерфейсы в Go: неявная реализация, пустой интерфейс
  • Как работает defer? Порядок выполнения нескольких defer
  • Паттерн errgroup — зачем и как использовать?
  • Graceful shutdown — как реализовать?

Вопросы по базам данных:

  • PostgreSQL vs MySQL — ключевые различия
  • Индексы: B-tree, Hash, GIN, GiST — когда какой?
  • Как работает VACUUM в PostgreSQL?
  • Что такое deadlock, как избежать?
  • Транзакции: уровни изоляции, примеры проблем
  • Репликация: master-slave, master-master
  • Партиционирование vs шардирование

Вопросы по инфраструктуре:

  • Kubernetes: Pod, Deployment, Service — в чём разница?
  • Как работает service discovery в k8s?
  • Что такое liveness и readiness probes?
  • Docker: layers, кеширование, multi-stage builds
  • Как устроен CI/CD в вашем текущем проекте?

Вопросы по архитектуре:

  • Микросервисы vs монолит — когда что выбрать?
  • Паттерны коммуникации: sync vs async
  • Что такое saga pattern?
  • Event sourcing и CQRS — зачем нужны?
  • Как обеспечить идемпотентность API?

Frontend

JavaScript/TypeScript:

  • Event loop: call stack, task queue, microtask queue
  • Замыкания — как работают, примеры использования
  • Прототипное наследование
  • Promise: состояния, методы, как написать свой Promise.all
  • async/await под капотом
  • Map vs Object, Set vs Array — когда что?
  • WeakMap — зачем нужен?

React:

  • Virtual DOM — как работает reconciliation?
  • Hooks: useState, useEffect, useCallback, useMemo — детали реализации
  • Почему нельзя вызывать хуки в условиях?
  • Context API vs Redux — когда что использовать?
  • Как работает React.memo?
  • Suspense и lazy loading
  • Как профилировать React-приложение?

Производительность:

  • Critical rendering path
  • Reflow vs repaint
  • Как оптимизировать большие списки? (виртуализация)
  • Web Workers — когда использовать?
  • Service Workers и PWA

Mobile (Android/iOS)

Android:

  • Activity и Fragment lifecycle
  • ViewModel: как выживает при пересоздании Activity?
  • Coroutines: scope, context, dispatchers
  • Flow vs LiveData
  • Dependency Injection: Dagger/Hilt
  • Как работает RecyclerView под капотом?

iOS:

  • ARC: strong, weak, unowned — когда что?
  • DispatchQueue: serial vs concurrent
  • Combine framework
  • SwiftUI: @State, @Binding, @ObservedObject
  • Core Data vs Realm

Этап 3: Алгоритмическая секция

Ozon даёт 1-2 задачи уровня Easy-Medium. Время — 45-60 минут.

Ключевые темы:

  • Массивы и строки
  • Хеш-таблицы
  • Two pointers, sliding window
  • Стек и очередь
  • Бинарный поиск
  • Базовые графы (BFS/DFS)
  • Простое DP

Примеры задач:

Задача 1: Склад и товары

Дан массив товаров с весами и вместимость тележки.
Найти максимальное количество товаров, которое можно увезти за одну поездку.
(Вариация задачи о рюкзаке)

Задача 2: Оптимизация доставки

Даны координаты точек доставки. Найти минимальное расстояние, 
чтобы посетить все точки и вернуться на склад.
(Упрощённый TSP для небольшого n)

Задача 3: Ценовые диапазоны

Дан массив цен товаров. Для каждого товара найти количество товаров 
с ценой в диапазоне [price - k, price + k].

Задача 4: Слияние интервалов

Даны интервалы времени доставки. Объединить пересекающиеся интервалы.

Как решать:

  1. Проговорите понимание задачи
  2. Обсудите примеры и edge cases
  3. Предложите brute-force решение и его сложность
  4. Оптимизируйте
  5. Напишите код
  6. Протестируйте на примерах

Этап 4: System Design

Для позиций Middle+ добавляется проектирование систем.

Популярные задачи в Ozon:

  • Спроектировать систему управления складом
  • Сервис отслеживания доставки (трекинг)
  • Система рекомендаций товаров
  • Корзина и checkout
  • Сервис уведомлений (push, email, SMS)
  • Платёжная система
  • Инвентаризация в реальном времени

Пример: Система трекинга доставки

Функциональные требования:

  • Курьер обновляет статус заказа
  • Клиент видит текущий статус и местоположение
  • Push-уведомления при изменении статуса
  • История всех статусов

Нефункциональные требования:

  • 10M активных заказов одновременно
  • Задержка обновления < 5 секунд
  • 99.9% availability

Компоненты:

  • Location Service (приём GPS-координат от курьеров)
  • Order Status Service (хранение и обновление статусов)
  • Notification Service (push/sms/email)
  • API Gateway
  • Message Queue (Kafka) для асинхронной обработки
  • Redis для кеширования активных заказов
  • TimescaleDB для хранения истории локаций

Что обсудить:

  • Как часто курьер отправляет координаты?
  • Как оптимизировать запись большого количества локаций?
  • Как обеспечить exactly-once доставку уведомлений?
  • Что делать при потере связи у курьера?

Этап 5: Финальное интервью

Встреча с нанимающим менеджером и/или командой.

Фокус:

  • Культурный fit
  • Soft skills
  • Мотивация
  • Ваши вопросы

Что спрашивают:

  • Расскажите о самом сложном проекте
  • Как вы справляетесь с конфликтами в команде?
  • Как принимаете решения при неопределённости?
  • Что для вас важно в работе?

Вопросы, которые стоит задать:

  • Какая команда и над каким продуктом буду работать?
  • Как устроен релизный цикл?
  • Какие главные технические челленджи сейчас?
  • Как выглядит рост внутри компании?

Особенности Ozon Tech

1. E-commerce специфика Много задач связано с логистикой, складами, ценообразованием. Если есть опыт в e-commerce — это большой плюс.

2. Высокая нагрузка Чёрная пятница, распродажи — пиковые нагрузки в 10-100 раз выше обычных. Вопросы про масштабирование будут обязательно.

3. Go как стандарт Большинство backend-сервисов на Go. Даже если идёте на Python/Java позицию, базовое понимание Go приветствуется.

4. Быстрый рост Ozon растёт агрессивно. Много возможностей для карьерного роста, но и темп работы высокий.

5. Зарплаты Конкурентные с рынком. Бонусы, RSU (акции), ДМС, компенсация питания.

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

  • Не знать специфику бизнеса Ozon (изучите продукты перед интервью)
  • Игнорировать масштаб (все ответы должны учитывать высокую нагрузку)
  • Не задавать уточняющих вопросов на System Design
  • Писать код молча, без объяснения логики
  • Не подготовить вопросы про команду

План подготовки на 2 недели

Неделя 1:

  • Дни 1-2: Go (горутины, каналы, паттерны)
  • Дни 3-4: Базы данных (индексы, транзакции, репликация)
  • Дни 5-7: Kubernetes, Docker, микросервисы

Неделя 2:

  • Дни 1-3: LeetCode (15-20 задач Easy-Medium)
  • Дни 4-5: System Design (склад, доставка, уведомления)
  • Дни 6-7: Мок-интервью, изучение продуктов Ozon

Как не потерять оффер из-за стресса

Вы подготовились, знаете ответы, но на интервью — ступор. Знакомо?

ENIGMA AI помогает в реальном времени:

  • Транскрибирует вопросы интервьюера
  • Показывает подсказки по концепциям
  • Помогает вспомнить синтаксис и паттерны
  • Невидим при screen share

Попробовать бесплатно →

Ресурсы

Go:

  • “Concurrency in Go” by Katherine Cox-Buday
  • Go blog (официальный)
  • Канал GopherCon на YouTube

System Design:

  • System Design Primer (GitHub)
  • Designing Data-Intensive Applications
  • Блог Ozon Tech на Хабре

Алгоритмы:

  • LeetCode (Easy-Medium)
  • Grokking the Coding Interview

Отзывы:

  • Glassdoor
  • Хабр Карьера
  • Telegram-чаты по трудоустройству

Ozon — это масштаб, скорость и интересные инженерные задачи. Подготовьтесь как следует, и оффер не заставит себя ждать.

Похожие статьи

Все статьи