Собеседование на Data Engineer в Работа.ру
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 соискателей. Как посчитать удержание соискателей по когортам и разложить его по источникам трафика.
Как готовиться: план
За 4–6 недель до собеса:
- Неделя 1–2 — Spark и оптимизация. Модель выполнения, шаффлы, join-стратегии, борьба с data skew. Разберите 3–4 кейса оптимизации медленных джоб. Spark на собесе DE.
- Неделя 3 — ElasticSearch. Инвертированный индекс, отличие от базы данных, mapping, обновление индекса без простоя, пайплайн индексации. Это то, что отличает Работа.ру от других DE-собесов, — не пропускайте.
- Неделя 3–4 — ClickHouse и DWH. MergeTree, партиционирование, материализованные представления, слои DWH и моделирование витрин событий.
- Неделя 4 — SQL до автоматизма. Оконные функции, дедупликация, воронки. Прорешайте 25–30 задач на Карьернике: база SQL и Python для DE закрывается за месяц по 15–20 минут в день.
- Неделя 5–6 — Архитектура, mocks, behavioral. Marketplace- и поисковые пайплайны, мок-интервью, 5–6 STAR-историй.
Частые ошибки
- ElasticSearch поверхностно. «Это поисковый движок» — и всё. Без понимания инвертированного индекса и того, чем поиск отличается от базы данных, профильную секцию не пройти. Здесь режут чаще всего.
- Слабый SQL. Уверенная архитектура, но плывёт на дедупликации и оконных функциях. SQL — ежедневный инструмент, на нём проверяют базу.
- Spark поверхностно. Знает API, но не понимает шаффлы и перекос данных. На кейсе с медленной джобой это сразу видно.
- Игнорировать событийную специфику. Кандидат считает воронку наивным JOIN и задваивает отклики. В job-маркетплейсе события логируются с повторами — дедупликация обязательна.
Связанные темы
- Собеседование на DE в HH
- Собеседование на DE в Avito
- Spark на собесе DE
- Собеседование на DS в Работа.ру
- Собеседование на PM в Работа.ру
FAQ
Сколько этапов?
Обычно 5–6: HR-скрининг, SQL/Python, Spark, ClickHouse/ElasticSearch, архитектура и финал. Весь цикл — 2–4 недели. Число этапов отличается по командам и грейдам.
Нужен ли опыт в HR-tech?
Не обязателен, но желателен. Опыт в поиске, классифайдах или другом маркетплейсе помогает: вы уже понимаете индексацию, matching и событийную воронку. Без него ждут быстрого погружения в домен.
Нужен ли ElasticSearch обязательно?
Практически да. Поиск резюме и вакансий — ядро продукта, и по ElasticSearch спрашивают глубже, чем на обычном DE-собесе. Если опыта с ним нет, разберите хотя бы инвертированный индекс, mapping и обновление индекса.
Какой уровень SQL ждут?
Middle: уверенные оконные функции, дедупликация, подсчёт воронок по событийным таблицам. Простых агрегатов недостаточно.
Это официальная информация?
Нет. Этапы основаны на публичных источниках и опыте кандидатов. Конкретный формат зависит от команды и грейда — уточняйте у рекрутера.
Тренируйте Data Engineering — откройте тренажёр с 1500+ вопросами для собесов.