Подготовка к собеседованию — Дата-сайентист
Колода из 283+ карточек с вопросами для собеседования по направлению «Дата-сайентист» — по темам и уровню сложности, с повторениями по вашим оценкам. Посмотрите несколько карточек ниже, затем выберите доступ, чтобы учить всё направление по расписанию в стиле Anki (SM-2).
Новым подписчикам месяца или года может быть доступно 7 дней бесплатно. Условия и сумму подтвердит страница оплаты.
С чего начать
Нужны Python, основы вероятности, статистики и линейной алгебры. Карточки о моделях и оценке предполагают опыт обучения хотя бы простой модели и дополняют эксперименты.
Первый проход: Python → Python для аналитиков (pandas и matplotlib). Начните с базовых вопросов в этих модулях, затем продолжайте по плану. К сложным и senior-вопросам возвращайтесь по требованиям вакансии; все карточки доступны с самого начала.
Общие темы могут входить в несколько направлений и сохраняют одну историю повторений. План ниже отмечает общие основы и профильные модули; выбирайте глубину под свою вакансию.
Что внутри
Все темы направления, сгруппированные так, как вы будете их учить.
Python
122 карточкиОбщие основы
Python для аналитиков (pandas и matplotlib)
10 карточекОбщие основы
Статистика и вероятность
11 карточекОбщие основы
A/B-тесты и эксперименты
9 карточекОбщие основы
SQL для аналитики
11 карточекОбщие основы
Основы ML и валидация
10 карточекПрофильный модуль
Классический ML и ансамбли
12 карточекПрофильный модуль
Метрики и дисбаланс классов
11 карточекПрофильный модуль
Фичи, подготовка данных и утечки
10 карточекПрофильный модуль
Глубокое обучение
12 карточекПрофильный модуль
NLP и LLM
12 карточекПрофильный модуль
ML-системный дизайн
8 карточекПрофильный модуль
MLOps и модель в проде
10 карточекПрофильный модуль
Поведенческое интервью
35 карточекОбщие основы
Примеры вопросов
Несколько карточек из колоды — откройте ответ, затем выберите доступ, чтобы учить весь набор по расписанию.
Чем отличаются изменяемые (mutable) и неизменяемые (immutable) типы?
Чем отличаются изменяемые (mutable) и неизменяемые (immutable) типы?
Короткий ответ: Изменяемый объект можно менять на месте (list, dict, set), неизменяемый — нельзя (int, str, tuple). Перепривязка переменной и изменение объекта — разные действия.
items = [1, 2]
alias = items
items.append(3)
assert alias is items and alias == [1, 2, 3]
text = "hello"
original = text
text += " world"
assert original == "hello" # исходная строка не изменилась
Подробно:
id()идентифицирует объект и постоянен в течение его жизни. То, что это адрес памяти, — деталь реализации CPython.- В кортеже нельзя заменить элементы, но вложенный список может изменяться. Неизменяемость не означает автоматически глубокую неизменяемость или потокобезопасность.
- Ключ словаря и элемент множества должны быть хешируемыми: хеш остаётся стабильным, а равные объекты имеют равные хеши. Кортеж со списком нехешируем. Изменяемый экземпляр пользовательского класса может хешироваться по идентичности: хешируемость не синоним неизменяемости.
- Функция получает ссылки на объекты. Мутация аргумента может быть видна вызывающему коду; перепривязка локального параметра не перепривязывает переменную снаружи.
Источники: Хешируемость Python, идентичность объектов.
Чем Series отличается от DataFrame, как загрузить данные и быстро их осмотреть?
Чем Series отличается от DataFrame, как загрузить данные и быстро их осмотреть?
Короткий ответ: Series — это одномерный массив с индексом (один столбец), DataFrame — двумерная таблица из колонок-Series с общим индексом строк. Данные грузят через pd.read_csv() / pd.read_sql(), а первичный осмотр делают через .head(), .info(), .describe(), .dtypes, .shape.
Подробно:
- Series vs DataFrame —
df['col']возвращаетSeries;df[['col']](двойные скобки) —DataFrameиз одной колонки. У обоих есть.index. - Загрузка —
read_csv(файл/URL),read_sql(SQL-запрос + соединение),read_parquet(быстрый колоночный формат). - Осмотр —
.head()/.tail()смотрят края,.info()даёт типы и пропуски,.describe()— статистику числовых колонок,.dtypes— типы,.shape— размер.
import pandas as pd
df = pd.read_csv("sales.csv", parse_dates=["order_date"])
df.shape # (10000, 8) — строки, колонки
df.info() # типы колонок и число непустых значений
df.describe() # count/mean/std/min/quartiles/max по числовым
df["revenue"].head() # Series — одна колонка
⚠️ Частая ошибка: забыть parse_dates= при чтении — колонка с датами останется object (строкой), и арифметика по датам/resample() работать не будут.
Чем отличаются среднее, медиана и мода, и почему для скошенных данных (доход, время отклика) лучше брать медиану?
Чем отличаются среднее, медиана и мода, и почему для скошенных данных (доход, время отклика) лучше брать медиану?
Короткий ответ: Среднее — сумма, делённая на количество, чувствительно к выбросам. Медиана — центральное значение упорядоченного ряда, устойчива к выбросам. Мода — самое частое значение. Для скошенных данных медиана точнее отражает «типичное» наблюдение.
Подробно:
- Среднее (mean) — хорошо для симметричных данных и для дальнейших расчётов (дисперсия, регрессия), но один выброс сдвигает его.
- Медиана — 50-й перцентиль; делит данные пополам и почти не реагирует на экстремумы.
- Мода — единственная метрика для категориальных данных («самый частый тариф»).
| Метрика | Когда применять | Чувствительность к выбросам |
|---|---|---|
| Среднее | симметричные данные, дальнейшие расчёты | высокая |
| Медиана | скошенные данные: доход, время отклика, цены | низкая |
| Мода | категориальные данные, самое частое значение | низкая |
⚠️ Частая ошибка: отчитываться средним по доходу или времени отклика. Длинный правый хвост тянет среднее вверх, и оно перестаёт описывать типичного пользователя — берите медиану.
Как устроен A/B-тест от начала до конца? Опишите ключевые этапы.
Как устроен A/B-тест от начала до конца? Опишите ключевые этапы.
Короткий ответ: A/B-тест — это рандомизированный эксперимент: пользователей случайно делят на контроль и тритмент, показывают разные версии и сравнивают одну заранее выбранную первичную метрику по фиксированному правилу решения.
Подробно:
- Гипотеза — что меняем, на какую метрику влияем и почему.
- Метрика и MDE — одна первичная метрика плюс минимально детектируемый эффект (MDE).
- Рандомизация — случайное и устойчивое разбиение на контроль/тритмент.
- Размер выборки и длительность — считаем и фиксируем до старта.
- Запуск до N — крутим до набора выборки, не подглядывая в промежуточные итоги.
- Анализ — сравниваем метрику, считаем p-значение и доверительный интервал лифта.
- Решение — выкатываем или откатываем по заранее заданному правилу.
Гипотеза → Рандомизация → Запуск до N → Анализ → Решение
│ │
контроль / тритмент выкатить ✓ / откатить ✗
⚠️ Частая ошибка: менять интерфейс по ходу теста или останавливать его в первый момент «значимости» — и то и другое ломает выводы.
Что такое оконные функции и чем они отличаются от GROUP BY?
Что такое оконные функции и чем они отличаются от GROUP BY?
Короткий ответ: Оконная функция считает агрегат по «окну» строк, но при этом не схлопывает строки — каждая исходная строка сохраняется и получает своё значение. GROUP BY, наоборот, сворачивает группу в одну строку.
Подробно:
- GROUP BY — N строк группы → 1 строка результата. Деталь теряется.
- Оконная функция — N строк остаются N строками, рядом появляется агрегат (сумма, ранг, среднее, lag).
- Синтаксис —
func() OVER (PARTITION BY ... ORDER BY ...).PARTITION BYзадаёт группы,ORDER BY— порядок внутри окна (нужен для нарастающих итогов и рангов).
-- Нарастающий итог продаж по каждому пользователю
SELECT
user_id,
order_date,
amount,
SUM(amount) OVER (
PARTITION BY user_id
ORDER BY order_date
) AS running_total
FROM orders;
⚠️ Частая ошибка: пытаться отфильтровать по результату оконной функции в WHERE — окна вычисляются после WHERE/GROUP BY, поэтому заворачивайте запрос в CTE/подзапрос и фильтруйте снаружи.
Что такое переобучение, как его обнаружить и как с ним бороться?
Что такое переобучение, как его обнаружить и как с ним бороться?
Короткий ответ: Переобучение — модель выучила шум трейна вместо закономерности: на трейне ошибка низкая, на новых данных — высокая. Обнаруживают по разрыву train/validation, лечат регуляризацией, упрощением модели, ранней остановкой и бóльшим объёмом данных.
Подробно:
- Обнаружение — сравнить ошибку на трейне и на валидации; learning curves: train-ошибка падает, validation-ошибка стоит или растёт → модель начала запоминать шум.
- Лечение — уменьшить ёмкость или добавить сигнала, а не «крутить» метрику.
| Обнаружить | Исправить | |
|---|---|---|
| Разрыв метрик | train ≈ 0, валидация заметно хуже | регуляризация (L1/L2), проще модель |
| Learning curves | кривые расходятся с ростом эпох | early stopping |
| Кросс-валидация | нестабильные метрики по фолдам | больше данных, аугментация |
| Сложность модели | глубокие деревья, миллионы весов | ограничить глубину, срезать фичи |
⚠️ Частая ошибка: сказать «кросс-валидация предотвращает переобучение». CV его лишь обнаруживает — честно оценивает качество. Предотвращают регуляризация, упрощение модели и данные.
Готовы лучше запоминать?
Посмотрите пример, выберите направление и настройте регулярную практику под свою подготовку.
Вопросы об этом направлении
Как готовиться к собеседованию на «Дата-сайентист»?
Учите концепции, которые придётся объяснять, а не только те, что умеете кодить. Направление «Дата-сайентист» в RecallDeck даёт 283+ отобранных вопросов и возвращает каждый по расписанию в стиле Anki (SM-2), основанному на ваших оценках — чтобы тренировать вспоминание и объяснение. Дополняйте повторения кодингом и пробными собеседованиями.
Какие темы охватывает направление «Дата-сайентист»?
Направление «Дата-сайентист» разбито на ключевые области, которые реально проверяют на таких собеседованиях, — по темам и уровню сложности (Concept, Junior, Middle, Senior). Полный план и примеры вопросов можно посмотреть выше до входа.
Помогает ли интервальное повторение в подготовке к «Дата-сайентист»?
Да. Активное вспоминание и честная самооценка помогают закреплять знания. RecallDeck назначает повторения карт по направлению «Дата-сайентист» на основе ваших оценок: знакомые карты возвращаются реже, а сложные получают больше практики.
Можно попробовать направление «Дата-сайентист» до оплаты?
Новым подписчикам месячного или годового тарифа может быть доступен пробный период семь дней со всем направлением «Дата-сайентист» и всеми функциями. Право на него и сумму подтвердит страница оплаты; при повторной подписке списание может быть сразу. Отмените подписку онлайн до конца пробного периода, чтобы избежать первого списания. У вечного доступа пробного периода нет.