Собеседование на Data Engineer в Работа.ру

Проверь себя · 1/3разбор после ответа
Нужно получить уникальный список идентификаторов пользователей из двух каналов: campaign_a(user_id) и campaign_b(user_id). Как корректнее объединить списки, чтобы убрать дубликаты?

Почему Работа.ру — особенный работодатель для DE

Работа.ру — российский job-маркетплейс: с одной стороны соискатели с резюме, с другой работодатели с вакансиями, а в середине — поиск и matching, который должен свести нужного кандидата с нужной вакансией. Для Data Engineer это классический классифайд-домен с сильным акцентом на поиск: данные полутекстовые (резюме, описания вакансий), запросов много, а качество выдачи напрямую влияет на бизнес-метрику — отклики и найм.

Что делает DE на практике: строит и поддерживает поисковый индекс резюме и вакансий (обычно на ElasticSearch), собирает потоки событий (просмотры, отклики, приглашения, отказы) и превращает их в витрины для аналитики, готовит фичи для ML-моделей matching и ранжирования, поддерживает инфраструктуру A/B-тестов, по которой продукт проверяет изменения в выдаче. Стек, который называют кандидаты: Spark для тяжёлых трансформаций, ClickHouse как аналитическое хранилище, ElasticSearch для поиска, Kafka для стриминга событий.

Главная специфика — поиск и matching поверх слабоструктурированных данных. Резюме — это не аккуратная табличка, а текст с навыками, опытом и зарплатными ожиданиями в свободной форме. DE здесь не только гоняет ETL, но и участвует в том, чтобы индекс был свежим, релевантным и быстрым. Плюс много событийных данных: воронка «показ вакансии → клик → отклик → приглашение» — основа продуктовой аналитики. Актуальные вакансии и детали процесса — на странице карьеры Работа.ру.

Информация в статье основана на публичных источниках и опыте кандидатов. Формат и число этапов отличаются по командам и грейдам — уточняйте у рекрутера.

Этапы собеседования

Обычно 5–6 этапов, от первого звонка до оффера — 2–4 недели: скрининг, SQL/Python, секция по Spark, блок про ClickHouse и ElasticSearch, архитектурный кейс, поведенческое и финал. Ниже — что обычно спрашивают.

1. HR-скрининг (30–45 минут)

Рекрутер знакомится и сверяет базу: опыт с распределёнными данными и стеком (Spark, ClickHouse, ElasticSearch, Kafka), масштабы, мотивацию. Полезно за минуту рассказать, какие пайплайны строили и какой был эффект на продукт. Опыт в поиске, классифайдах или HR-tech — сильный сигнал, назовите его сразу.

2. SQL и Python (60 минут)

Живое кодирование. SQL — оконные функции, дедупликация, агрегаты по большим фактическим таблицам событий. Python — читаемый код обработки данных, структуры, работа с pandas или Spark. Частый практический вопрос — посчитать воронку откликов или дедуплицировать события, где одно действие пользователя логируется несколько раз.

Подготовка: SQL для Data Engineer, SQL-тренажёр.

3. Spark (60–90 минут)

Профильная секция. Модель выполнения (ленивые трансформации против действий), шаффлы, join-стратегии, борьба с перекосом данных (skew), кэширование. Могут дать медленный пайплайн и попросить найти узкое место. Ждут понимания, почему джоба тормозит и как её ускорить, а не пересказа документации.

Подготовка: Spark на собесе DE.

4. ClickHouse и ElasticSearch (60 минут)

Два аналитических/поисковых движка. По ClickHouse — движки семейства MergeTree, партиционирование, материализованные представления, какие запросы он тянет плохо. По ElasticSearch — как устроен инвертированный индекс, чем отличается от базы данных, как обновлять индекс без простоя, как построить пайплайн индексации резюме и вакансий. Именно ElasticSearch здесь чаще всего проседает у кандидатов.

5. Архитектура и поведенческое + финал (60–90 минут)

Архитектурный кейс на marketplace/поисковых пайплайнах плюс беседа с тимлидом. STAR-истории про сложные пайплайны, инциденты, работу со смежными командами (поиск, ML, продукт). Здесь же обсуждают формат работы и грейд.

Что Работа.ру ценит в DE

  • Уверенный Spark. Основной инструмент тяжёлых трансформаций. Ждут понимания шаффлов, join-стратегий и умения диагностировать медленную джобу.
  • ElasticSearch не поверхностно. Как устроен инвертированный индекс, чем поиск отличается от базы данных, как строить и обновлять индекс резюме и вакансий. Это ключевое отличие от «обычного» DE-собеса и главный фильтр.
  • ClickHouse. Партиционирование, движки MergeTree, материализованные представления — на этом строится аналитика событий.
  • A/B-инфраструктура. Понимание, как устроен сбор и разметка событий для экспериментов, как не сломать метрики при изменении логирования.
  • DWH и моделирование. Как разложить сырые события на слои и построить витрины, чтобы аналитики не пересчитывали воронку с нуля каждый раз.

Типичные задачи и кейсы

  • Поисковый индекс резюме. Как построить пайплайн индексации резюме и вакансий в ElasticSearch, держать индекс свежим и обновлять без простоя.
  • Event-пайплайн откликов. Как собрать поток событий «показ → клик → отклик → приглашение» и посчитать воронку без задвоений.
  • Пайплайн фич для matching. Как считать поведенческие и текстовые фичи для модели matching и отдавать их без рассинхрона между обучением и продом.
  • A/B-инфраструктура. Как собирать метрики экспериментов над выдачей поиска, чтобы результаты были воспроизводимы.
  • Cohort retention соискателей. Как посчитать удержание соискателей по когортам и разложить его по источникам трафика.
Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Как готовиться: план

За 4–6 недель до собеса:

  1. Неделя 1–2 — Spark и оптимизация. Модель выполнения, шаффлы, join-стратегии, борьба с data skew. Разберите 3–4 кейса оптимизации медленных джоб. Spark на собесе DE.
  2. Неделя 3 — ElasticSearch. Инвертированный индекс, отличие от базы данных, mapping, обновление индекса без простоя, пайплайн индексации. Это то, что отличает Работа.ру от других DE-собесов, — не пропускайте.
  3. Неделя 3–4 — ClickHouse и DWH. MergeTree, партиционирование, материализованные представления, слои DWH и моделирование витрин событий.
  4. Неделя 4 — SQL до автоматизма. Оконные функции, дедупликация, воронки. Прорешайте 25–30 задач на Карьернике: база SQL и Python для DE закрывается за месяц по 15–20 минут в день.
  5. Неделя 5–6 — Архитектура, mocks, behavioral. Marketplace- и поисковые пайплайны, мок-интервью, 5–6 STAR-историй.

Частые ошибки

  • ElasticSearch поверхностно. «Это поисковый движок» — и всё. Без понимания инвертированного индекса и того, чем поиск отличается от базы данных, профильную секцию не пройти. Здесь режут чаще всего.
  • Слабый SQL. Уверенная архитектура, но плывёт на дедупликации и оконных функциях. SQL — ежедневный инструмент, на нём проверяют базу.
  • Spark поверхностно. Знает API, но не понимает шаффлы и перекос данных. На кейсе с медленной джобой это сразу видно.
  • Игнорировать событийную специфику. Кандидат считает воронку наивным JOIN и задваивает отклики. В job-маркетплейсе события логируются с повторами — дедупликация обязательна.

Связанные темы

FAQ

Сколько этапов?

Обычно 5–6: HR-скрининг, SQL/Python, Spark, ClickHouse/ElasticSearch, архитектура и финал. Весь цикл — 2–4 недели. Число этапов отличается по командам и грейдам.

Нужен ли опыт в HR-tech?

Не обязателен, но желателен. Опыт в поиске, классифайдах или другом маркетплейсе помогает: вы уже понимаете индексацию, matching и событийную воронку. Без него ждут быстрого погружения в домен.

Нужен ли ElasticSearch обязательно?

Практически да. Поиск резюме и вакансий — ядро продукта, и по ElasticSearch спрашивают глубже, чем на обычном DE-собесе. Если опыта с ним нет, разберите хотя бы инвертированный индекс, mapping и обновление индекса.

Какой уровень SQL ждут?

Middle: уверенные оконные функции, дедупликация, подсчёт воронок по событийным таблицам. Простых агрегатов недостаточно.

Это официальная информация?

Нет. Этапы основаны на публичных источниках и опыте кандидатов. Конкретный формат зависит от команды и грейда — уточняйте у рекрутера.


Тренируйте Data Engineering — откройте тренажёр с 1500+ вопросами для собесов.