Data / SQL Senior — техническое интервью

75 минут, senior. Аналитические SQL, моделирование данных, ETL, качество данных.

Questions
14
Live coding
2

Разогрев: опыт и контекст

  1. Техническое влияние

    BehavioralMedium

    Какое решение за последние 1–2 года дало наибольший эффект для продукта или команды? Что именно сделали вы?

    Scoring rubric (0–10)
    3–5: «Улучшили производительность» без метрик и своей роли.
    6–8: Конкретное решение, контекст, результат (latency, cost, velocity).
    9–10: Trade-offs до/после; как убедили стейкхолдеров; что измеряли.
    Красный флаг: приписывает себе работу команды без деталей.
    Interviewer notes
    5 минут — ключевой вопрос для senior+.
  2. Мотивация смены

    BehavioralEasy

    Почему сейчас рассматриваете новые возможности? Что ищете в следующей роли?

    Scoring rubric (0–10)
    3–5: «Хочу роста / денег» без конкретики.
    6–8: Понятные критерии (стек, продукт, процессы); не toxic про текущего работодателя.
    9–10: Осознанный fit: что даст компания кандидату и наоборот.
    Красный флаг: только негатив про прошлые команды, обвиняет всех кроме себя.
    Interviewer notes
    Не давить — достаточно 2–3 минут.
  3. Контекст данных

    BehavioralMedium

    С какими объёмами данных и pipeline работали? Какие DWH/стеки (PostgreSQL, BigQuery, Spark)?

    Scoring rubric (0–10)
    3–5: «SQL на работе» без масштаба.
    6–8: TB order; batch vs streaming; tooling; личный вклад в pipeline/модели.
    9–10: Data quality incidents; cost/latency trade-offs; org data mesh experience.
    Красный флаг: senior data без prod pipeline ownership story.
    Interviewer notes
    5 минут.

Аналитический SQL

  1. Window functions

    TheoryHard

    Нужен monthly retention cohort: для каждого signup month — % users active in month N. Подход?

    Scoring rubric (0–10)
    3–5: Nested subqueries без windows.
    6–8: Cohort table; DATE_TRUNC; ROW_NUMBER / LAG; retention matrix query outline.
    9–10: Handles late events; timezone; test fixtures; performance on large fact table.
    Красный флаг: full table scan per cohort in app code.
    Interviewer notes
    6 минут — можно на доске pseudo-SQL.
  2. Медленный отчёт

    TheoryHard

    Dashboard query 45s на fact table 500M rows. План оптимизации?

    Scoring rubric (0–10)
    3–5: «Больше CPU».
    6–8: EXPLAIN; partition by date; pre-aggregate mart; materialized view.
    9–10: Columnar store; sort keys; incremental refresh; query rewrite.
    Красный флаг: SELECT * on fact for BI tool.
    Interviewer notes
    5 минут.
  3. Star vs snowflake

    TheoryHard

    Проектируете DWH для sales analytics. Star или snowflake — когда что?

    Scoring rubric (0–10)
    3–5: «Star всегда».
    6–8: Star for simplicity/perf; snowflake for normalization/storage; conformed dimensions.
    9–10: Slowly changing dimensions Type 2; role-playing dimensions; data vault mention ok.
    Красный флаг: OLTP schema copied to DWH «as is».
    Interviewer notes
    5 минут.
  4. Data quality

    TheoryHard

    Revenue metric в dashboard расходится с finance на 3%. Как расследуете?

    Scoring rubric (0–10)
    3–5: «Пересчитаем SQL».
    6–8: Source of truth definition; lineage; filter differences; timezone/currency.
    9–10: Automated reconciliation tests; anomaly detection; ownership RACI.
    Красный флаг: ignore discrepancy «погрешность».
    Interviewer notes
    5 минут.

Практика: SQL / код

  1. Top N per group

    Coding taskHardCode

    SQL: для каждого department вернуть top 3 сотрудника по salary.

    Scoring rubric (0–10)
    3–5: GROUP BY max without tie handling.
    6–8: ROW_NUMBER() OVER (PARTITION BY dept ORDER BY salary DESC) filter rn <= 3.
    9–10: DENSE_RANK for ties policy; index on (dept, salary); explain plan.
    Красный флаг: correlated subquery O(n²) without awareness.
    Interviewer notes
    15 минут. Run выполняет скрипт целиком в SQLite, схема и данные уже в starter.
    В Engineering четвёртый сотрудник с той же зарплатой, что и третий, —
    повод спросить про политику ties (ROW_NUMBER vs RANK vs DENSE_RANK).
    Диалект SQLite: `DISTINCT ON` из разбора — только PostgreSQL, не запустится.
  2. Dedupe events

    Coding taskHardCode

    Поток событий с at-least-once delivery. Напишите логику dedupe по event_id в batch job (pseudo-code ok).

    Scoring rubric (0–10)
    3–5: DISTINCT without window/state.
    6–8: Dedup table/watermark; idempotent upsert; batch boundaries.
    9–10: Late arriving events; TTL; exactly-once semantics discussion.
    Красный флаг: in-memory dedupe only for unbounded stream.
    Interviewer notes
    15 минут.

Pipeline и архитектура

  1. ETL vs ELT

    TheoryHard

    Greenfield analytics stack. ETL в Spark vs ELT в warehouse — критерии выбора?

    Scoring rubric (0–10)
    3–5: «Зависит» без criteria.
    6–8: Team skills; data volume; transform complexity; warehouse compute cost.
    9–10: dbt layer; streaming vs batch; governance; testability.
    Красный флаг: Spark for everything including simple SQL transforms.
    Interviewer notes
    4 минуты.
  2. PII и compliance

    TheoryHard

    Analytics team просит доступ к email в events. Ваш подход?

    Scoring rubric (0–10)
    3–5: «Дадим read replica».
    6–8: Minimization; hashing/tokenization; role-based access; audit logs.
    9–10: Differential privacy/anonymization; legal basis; retention policy.
    Красный флаг: full PII copy to analytics sandbox «для удобства».
    Interviewer notes
    4 минуты.

Инженерная культура и вопросы

  1. Приоритизация техдолга

    BehavioralMedium

    Как решаете, когда платить техдолг, а когда откладывать ради фич? Пример из практики.

    Scoring rubric (0–10)
    3–5: «Всегда сначала фичи» или «всегда сначала рефакторинг».
    6–8: Критерии (риск, частота изменений, cost of delay); пример компромисса.
    9–10: Связь с roadmap; % capacity на платформу; метрики (MTTR, lead time).
    Красный флаг: техдолг = «переписать всё с нуля».
    Interviewer notes
    4 минуты.
  2. Архитектурное решение

    BehavioralHard

    Опишите спорное техническое решение в команде. Как пришли к итогу?

    Scoring rubric (0–10)
    3–5: «Мы выбрали микросервисы» без альтернатив.
    6–8: Варианты, аргументы, критерии; роль кандидата; итог и последствия.
    9–10: RFC/ADR; dissenting opinion учтён; postmortem/ревизия решения через время.
    Красный флаг: «насильно навязал своё» без данных.
    Interviewer notes
    5 минут.
  3. Вопросы к нам

    BehavioralEasy

    Какие вопросы у вас к нам про команду, продукт или процессы?

    Scoring rubric (0–10)
    3–5: «Нет вопросов» или только про отпуск/ЗП.
    6–8: 2–3 содержательных вопроса про продукт, команду, релизы.
    9–10: Вопросы показывают, что изучил компанию; уточняет ожидания от роли.
    Красный флаг: нулевой интерес к продукту на middle+.
    Interviewer notes
    Оставить 3–5 минут в конце интервью.

Run an interview with this template

Sign up free: copy the template to your org, schedule an interview, and run it in a room with live coding.

Get started in FlashTalk