Техническое собеседование аналитика
discount по убыванию. Поле discount может быть NULL (скидки нет). Чтобы товары без скидки всегда оказывались внизу независимо от настроек СУБД, какой вариант сортировки выбрать?Структура
Обычно 60–90 минут. Три блока:
- SQL — 30–40 минут.
- Python / pandas — 15–30 минут.
- Теория / кейс — 10–20 минут.
Некоторые компании делают 2 отдельных техсобеса: SQL и Python.
Блок 1: SQL
Формат
- Задачи на собственном экране (coderpad, Google Doc).
- Live coding, интервьюер наблюдает.
- Можно гуглить синтаксис (не решение).
Типы задач
Easy (для junior):
- Простой SELECT + WHERE.
- GROUP BY + агрегаты.
- JOIN двух таблиц.
Medium (middle):
- Оконные функции (ROW_NUMBER, LAG).
- CTE.
- Сложные JOIN 3+ таблиц.
- Retention / cohort.
Hard (senior):
- Session analysis (30-min timeout).
- Sequential events analysis.
- Multi-step funnel with timing.
- Optimisation discussion.
Пример задачи
Таблица orders(user_id, order_date, amount). Найдите пользователей, у которых суммарная выручка выросла > 20% MoM в последние 3 месяца.
Как решать
- Уточните схему. «Что есть в таблице? Какие типы?»
- Проговорите подход. «Я сделаю CTE для monthly totals, потом LAG для сравнения».
- Пишите постепенно. По кусочкам, проверяйте.
- Тестируйте. «Я бы проверил edge case: 0 заказов в месяц».
Ошибки
- SELECT * на огромной таблице.
- Integer division без cast в numeric.
- LEFT JOIN превращается в INNER через WHERE.
- Забытый DISTINCT в COUNT(users).
Блок 2: Python / pandas
Формат
- Jupyter в shared screen.
- Датасет предоставлен (CSV или заранее загружен DataFrame).
Типы задач
- Прочитать CSV.
- Отфильтровать, отсортировать.
- Groupby с агрегатами.
- Merge двух DataFrame.
- Pivot / unstack.
- Решить задачу с тем, что делали в SQL — но в pandas.
Пример
Дан DataFrame df с колонками user_id, date, amount. Посчитайте topo-5 пользователей по суммарной выручке за последние 30 дней.
from datetime import datetime, timedelta
cutoff = datetime.now() - timedelta(days=30)
top_5 = (
df[df['date'] >= cutoff]
.groupby('user_id')['amount']
.sum()
.sort_values(ascending=False)
.head(5)
)Тренироваться на таких вопросах можно в Telegram-боте Карьерник — там 1500+ задач с реальных собесов с разборами.
Блок 3: Теория
SQL-теория
- Разница HAVING и WHERE.
- Типы JOIN и когда какой.
- Оконные функции vs GROUP BY.
- Индексы — когда и зачем.
- Как оптимизировать медленный запрос.
Статистика / A-B
- Что такое p-value.
- Ошибки I / II рода.
- ЦПТ.
- Мощность теста.
- SRM.
Метрики продукта
- DAU / MAU / WAU.
- Retention.
- Воронки.
- LTV / CAC.
Как подготовиться
За месяц
- 100+ SQL-задач — базовые и оконные.
- 50+ pandas-задач.
- Разобрать 20+ теоретических вопросов.
- 5–10 продуктовых кейсов.
За неделю
- Пройти через задачи собесов топ-компаний (Яндекс, Авито).
- Проговаривать вслух.
- Mock interview с другом или ментором.
За день
- Повторить основы.
- Проверить технику: камера, микро, среду для coding.
- Выспаться.
Непосредственно перед
- 30 минут — разминка лёгкими задачами.
- Вода рядом.
- Скачайте cheatsheets на всякий случай (можете подсмотреть синтаксис).
Во время собеса
Сценарии
Забыли синтаксис
«Не помню точный синтаксис функции — это было что-то вроде ARRAY_AGG... интервьюер, подскажете?» Интервьюер обычно скажет. Лучше honestly, чем мучиться.
Не понимаете задачу
«Могу уточнить — нужно вернуть top-5 или сегментировать на 5 групп?» Уточнять — hallmark senior.
Застряли
«Мне нужно 30 секунд подумать». Не паника, не молчание — короткая пауза.
Ошиблись
«Смотрю, я забыл добавить DISTINCT. Исправляю». Не паникуйте — мы все ошибаемся.
Критерии оценки
Интервьюер оценивает:
- Correctness — решение работает?
- Approach — хорошая логика?
- Code quality — чистый, читабельный?
- Communication — проговариваете ли?
- Edge cases — подумали про NULL, 0, пустые данные?
Код идеальный, но молчали → не пройти. Код с багом, но красивое рассуждение → пройти.
К слову, набить руку на таких кейсах удобно через тренажёр в Telegram — разбирайте по 10 вопросов в день, через 2 недели тема становится рефлексом.
Live coding vs offline
Live
Стандарт в РФ. Интервьюер наблюдает. Проговаривайте вслух.
Take-home
«Решите дома за 2 часа, пришлите». Встречается реже, но есть. Плюс: можно спокойно. Минус: больше ожиданий.
Специфика топ-компаний
Яндекс
Жёсткий SQL, много оконных. Часто кейсы + теория одновременно.
Авито
Продуктовая логика важнее чистоты кода. Много кейсов.
Тинькофф
Финансовая specifics. Статистика для risk-моделей.
Ozon
SQL + кейсы e-commerce. RFM, когорты.
Читайте также
- Структура собеседования
- 50 вопросов по SQL
- Чеклист подготовки
- Ошибки на собеседовании
- Задачи для junior
FAQ
Сколько задач обычно?
SQL: 3–5. Python: 2–3. Теория: 5–10.
Можно ли гуглить?
Синтаксис — можно. Решение — нет.
Проваливают за неправильный ответ?
За один — нет. За общий уровень — да.
Что важнее — скорость или правильность?
Правильность. Скорость — бонус.