На коротком техническом интервью аналитика данных в Aston спрашивали оконные функции SQL, BI-инструменты, алгоритмическую сложность и устройство ETL. Вопросы выглядели простыми, но даже здесь можно потерять баллы, если назвать термин без механизма и рабочего примера.
Какие оконные функции использовал аналитик
Оконная функция вычисляет значение по связанным строкам, не объединяя их в одну строку, как делает GROUP BY. Например, LAG() возвращает предыдущее событие пользователя, LEAD() — следующее, а ROW_NUMBER() нумерует строки внутри группы. Документация PostgreSQL показывает, что окно задают через OVER, а группировку — через PARTITION BY.
Для пользовательского пути можно написать:
SELECT
user_id,
event_name,
event_at,
-- Предыдущее действие ищем отдельно для каждого пользователя.
LAG(event_name) OVER (
PARTITION BY user_id ORDER BY event_at
) AS previous_event
FROM product_events;
На собеседовании стоит назвать не только функцию, но и условие сортировки. Без стабильного ORDER BY база не знает, какое событие считать предыдущим.
Как рассказывать про BI-системы
Перечень Tableau, Power BI или Metabase показывает знакомство с интерфейсом, но почти ничего не говорит об аналитической работе. Лучше раскрыть один отчёт по четырём пунктам:
- Для кого он создан и какое решение помогает принять.
- Из каких таблиц или витрин получает данные.
- Какие метрики и фильтры содержит.
- Как проверяется свежесть и правильность чисел.
Например: «Собрал в Power BI воронку регистрации для продуктовой команды, связал события по пользователю, добавил разрез по источнику и сверил итоговые регистрации с транзакционной базой». Это конкретнее, чем «строил графики». Сама платформа включает подключение источников, подготовку данных, моделирование и публикацию отчётов — этапы перечислены в обзоре Power BI.
Что означает алгоритмическая сложность
Big O описывает, как растут время или память алгоритма при увеличении входа. Это не секундомер и не обещание точного времени. Константы и особенности данных важны в реальной программе, но нотация помогает сравнить рост решений.
Один проход по n строкам — O(n). Два последовательных прохода всё ещё дают O(n), потому что постоянный множитель отбрасывают. Вложенный полный проход обычно даёт O(n²). Сортировка общего назначения — чаще O(n log n).
Типичная ошибка. Говорить, что O(2n) быстрее или принципиально отличается от O(n).
Как лучше. Объяснить, что обе функции растут линейно, а затем отдельно обсудить постоянные расходы, если они значимы для практики.
Какая сложность доступа к dict в Python
Чтение, вставка и удаление по ключу в dict в среднем работают за O(1). Это достигается хэш-таблицей: Python вычисляет хэш ключа и находит подходящую позицию. При большом числе коллизий худший случай способен вырасти до O(n). Справочная таблица сложности операций приведена в Python Wiki.
На интервью важно произнести слово «в среднем». Ещё два условия сильного ответа: ключ должен быть хэшируемым, а равные ключи должны иметь одинаковый хэш. Скорость поиска по значению у словаря не становится O(1) — для него обычно нужен проход.
Что входит в ETL-процесс
ETL переносит данные из источников в целевое хранилище через преобразование по бизнес-правилам. Между этапами появляются очистка, дедупликация, объединение, проверка типов и контроль качества. В ELT сырые данные сначала загружают, а преобразования выполняют уже внутри мощного хранилища. Разницу подробно объясняет Azure Architecture Center.

Преобразование отделяет источники от подготовленного целевого хранилища. Источник: Microsoft Azure Architecture Center.
Сильный рабочий пример включает расписание, способ повторного запуска, обработку опоздавших данных и проверку результата. Фраза «инженеры настроили Airflow» не раскрывает вклад аналитика; можно объяснить, какие правила витрины и проверки вы передали команде.
Даже если пайплайн поддерживает отдельная команда, аналитик отвечает за смысл витрины. Он должен назвать гранулярность строки, ключи, правила расчёта и контрольные показатели. Это показывает понимание данных от источника до отчёта, а не только умение написать финальный SELECT.
Итог: получил бы кандидат оффер
Фактический результат не опубликован. По доступной части кандидат скорее прошёл бы дальше: он привёл корректный пример оконной функции, назвал рабочие BI-системы, понял среднюю сложность словаря и описал участие в пайплайнах. Для окончательного решения мы бы дали практическую SQL-задачу и попросили подробнее разобрать личный вклад в ETL и отчёты.
Источники
частые вопросы
Короткие ответы
Какие оконные функции нужно знать аналитику данных?
Как минимум ROW_NUMBER, RANK, DENSE_RANK, LAG, LEAD и агрегаты с OVER. Важно уметь объяснить PARTITION BY, ORDER BY и границы окна.
Нужно ли аналитику знать алгоритмическую сложность?
Да, на базовом уровне. Она помогает оценивать операции над коллекциями Python и замечать решения, которые плохо масштабируются.
Достаточно ли перечислить знакомые BI-системы?
Нет. Сильнее назвать отчёт, источники данных, модель, пользователей и решение, которое команда приняла с его помощью.


