Назад к материалам

Видео + статья / Собеседования

Собеседование аналитика данных: SQL, A/B-тесты и метрики

Правильные ответы на вопросы аналитика данных: JOIN, очистка данных, boxplot, оконные функции, A/B-тесты, LTV и North Star.

Опубликовано
Обновлено
Видео вышло
Видео
18:51
Текст
5 минут

Если ролик не загружается, выберите другую площадку.

Смотреть на

На собеседовании Junior Data Analyst могут проверить SQL, очистку данных, Python, статистику экспериментов и продуктовые метрики за одну встречу. Сильный ответ начинается с короткого вывода, а затем показывает механизм на простом примере. Разбираем вопросы реального интервью без личных данных участников.

Чем INNER JOIN отличается от FULL JOIN?

INNER JOIN оставляет только совпавшие пары строк, а FULL JOIN сохраняет строки обеих таблиц. Там, где пары нет, поля второй стороны будут NULL. Если ключ повторяется два раза слева и три раза справа, результат содержит шесть комбинаций — это частая ловушка в задачах.

ClickHouse отличается не только синтаксисом. Это колоночная аналитическая СУБД: запрос читает нужные столбцы, а движок и ключ сортировки определяют хранение и скорость. Конструкция PREWHERE позволяет раньше отфильтровать данные, но на собеседовании важнее объяснить, почему столбцовое хранение удобно для агрегаций.

Чтобы проверить уникальность идентификатора в SQL, используйте GROUP BY id HAVING COUNT(*) > 1. В pandas метод duplicated возвращает маску повторов.

Пример кодаPython
import pandas as pd

# В примере идентификатор 102 встречается дважды.
users = pd.DataFrame({"user_id": [101, 102, 102, 103]})

# keep=False отмечает все строки, участвующие в дубле.
duplicates = users[users.duplicated("user_id", keep=False)]
print(duplicates)

Как найти мусор в датасете и объяснить boxplot?

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

Boxplot показывает медиану, межквартильный размах и точки за границами усов. Точка за усом — кандидат на проверку, но не автоматическая ошибка: редкая крупная покупка может быть настоящей.

Примеры boxplot с разными настройками усов и выбросов

Boxplot помогает быстро сравнить центр, разброс и крайние значения нескольких распределений. Источник: Matplotlib.

Типичная ошибка. Удалить все выбросы по правилу 1,5 × IQR.

Как лучше. Сначала проверить источник, единицы и бизнес-смысл значения, затем решить: исправить, оставить, ограничить или исключить.

Что такое линейная регрессия?

Линейная регрессия оценивает ожидаемое значение цели как линейную комбинацию признаков. В простом случае модель выглядит как y = b0 + b1 × x: коэффициент b1 показывает, насколько меняется прогноз y при увеличении x на единицу при прочих равных.

Сильный ответ включает три ограничения. Связь может быть нелинейной, остатки могут иметь неодинаковую дисперсию, а корреляция не доказывает причинность. Модель проверяют на отложенных данных и сравнивают с простым базовым прогнозом.

Как посчитать нарастающую сумму и максимум в SQL?

Нарастающую сумму считают оконным SUM: строки сохраняются, а сумма растёт внутри пользователя и месяца. В PostgreSQL агрегат с OVER и сортировкой образует running sum — это описано в официальной документации.

SELECT
  user_id,
  purchase_date,
  amount,
  SUM(amount) OVER (
    PARTITION BY user_id, DATE_TRUNC('month', purchase_date)
    ORDER BY purchase_date
    ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
  ) AS month_running_total
FROM purchases;

Максимум проще всего найти через MAX(value). Если функцию запрещено использовать, можно отсортировать ORDER BY value DESC и взять первую строку. Перебор циклом технически возможен, но в SQL это лишняя процедурная работа.

Чем отличаются pass, continue и break?

pass ничего не делает, continue переходит к следующей итерации, break завершает ближайший цикл. pass используют как допустимую синтаксическую заглушку, например в ещё не реализованной функции. Он не пропускает итерацию и не выходит из цикла.

На интервью приведите один короткий пример: continue отбрасывает некорректную строку, а break останавливает поиск после найденного значения. Это сразу снимает двусмысленность определения.

Как правильно проектировать A/B-тест?

Гипотезу, основную метрику, размер выборки и правило остановки фиксируют до запуска. Статистическая значимость отвечает, насколько данные совместимы с нулевой гипотезой при выбранной процедуре. Мощность — вероятность обнаружить эффект заданного размера, если он существует.

Постоянное «подглядывание» и остановка при первом p < 0,05 повышают риск ложноположительного результата. При множестве проверок применяют коррекции, например Бонферрони, Холма или Benjamini–Hochberg, либо заранее выделяют одну основную метрику.

Пользователей распределяют по устойчивому идентификатору: хэш переводит user_id в бакет, и человек остаётся в одной группе. До анализа проверяют SRM — неожиданное расхождение фактических размеров групп с заданным распределением.

Что показывают LTV, DAU, MAU и North Star?

Эти метрики нельзя заменять друг другом. DAU и MAU считают активных пользователей за день и месяц. LTV оценивает ценность клиента за весь срок отношений с продуктом. Формула ARPU × среднее время жизни подходит как грубое приближение, но точный расчёт зависит от маржи, удержания и горизонта.

North Star Metric должна отражать ценность, которую регулярно получает пользователь, и быть связана с ростом продукта. Выручка важна, но может увеличиться разовой акцией и ничего не сказать об удержании. Поэтому рядом нужны защитные метрики: жалобы, возвраты, отток или качество сервиса.

Итог: получил бы кандидат оффер?

Фактический результат встречи не раскрыт. По показанной части кандидат скорее прошёл бы дальше, но уверенного решения об оффере недостаточно. Он хорошо описал опыт, JOIN, поиск дублей, A/B-тесты и продуктовые метрики. Слабее прозвучали линейная регрессия, точный синтаксис нарастающей суммы и различия управляющих операторов Python.

Мы бы дали шанс на следующий этап, если роль предполагает поддержку команды, а не полностью самостоятельное ведение сложных экспериментов. Перед повторным интервью стоит решить SQL-задачи вслух и пройти тематический блок в тренажёре ЮНИКОД.

Источники

частые вопросы

Короткие ответы

Какой SQL нужен Junior Data Analyst?

Нужно уверенно владеть JOIN, GROUP BY, HAVING, подзапросами, CTE и базовыми оконными функциями, а также уметь предсказать результат запроса.

Нужно ли аналитику знать статистику для A/B-тестов?

Да. Минимум — гипотезы, ошибки первого и второго рода, мощность, доверительный интервал, множественные сравнения и правила остановки теста.

Как понять, что ответ на собеседовании достаточно глубокий?

После определения назовите механизм, рабочий пример, ограничение и способ проверить результат. Если все четыре части есть, ответ обычно выдерживает уточнения.

следующий шаг

Отработайте вопросы аналитика до реального интервью

Тренажёр ЮНИКОД помогает повторять вопросы, находить пробелы и тренировать короткие профессиональные ответы.

Перейти в тренажёр →