На реальном собеседовании Data Scientist в Сбер кандидату задали семь вопросов: от базового Python до устройства attention. Компания и позиция известны из публичного названия ролика; личные данные участников для разбора не нужны. Ниже — ответы, которые раскрывают тему точнее и выдерживают уточнения интервьюера.
Изменяемость и dunder-методы в Python
Вопрос: что такое изменяемые и неизменяемые типы?
Изменяемый объект можно изменить без создания нового объекта. Например, у списка можно заменить элемент. Строка и кортеж неизменяемы: операция создаёт новое значение. Важно не говорить, что «переменная изменяемая». Переменная — имя, которое ссылается на объект.
items = [1, 2]
before = id(items)
# Список изменяется на месте: идентификатор объекта остаётся прежним.
items.append(3)
assert id(items) == before
text = "data"
# Строка не меняется: результат операции хранится в новом объекте.
new_text = text.upper()
assert text == "data"
assert new_text == "DATA"Вопрос: зачем нужны магические методы?
Dunder-методы с двойными подчёркиваниями подключают класс к протоколам Python. __len__ позволяет вызвать len(obj), __iter__ — пройти объект циклом, __eq__ — сравнить значения. Это не «магия», а контракт языка, описанный в модели данных Python.
Коротко: в Python изменяемость относится к объекту: список можно изменить на месте, а операция над строкой создаёт новый объект.
Как оптимизировать медленный Python-код
Сильный ответ начинается со слова «измерить». Сначала воспроизводим нагрузку и определяем узкое место через cProfile, профилировщик строк, трассировку БД или метрики. Затем проверяем алгоритм, число запросов, сериализацию, сетевое ожидание и только потом делаем точечное изменение.
from collections import Counter
def most_common(values: list[str]) -> str:
# Counter считает элементы за один проход вместо повторного values.count().
counts = Counter(values)
return counts.most_common(1)[0][0]После правки повторяем тот же тест. Документация Python рекомендует профилировать программу, а не оптимизировать по ощущению.
Коротко: оптимизацию начинают с измерения: профилировщик показывает узкое место, после чего сравнивают результат до и после изменения.
Почему в градиентном бустинге деревья неглубокие
Градиентный бустинг строит деревья последовательно: каждое следующее исправляет ошибки текущей композиции. Если отдельные деревья слишком глубокие, каждый слабый алгоритм начинает запоминать шум, модель становится сложнее и хуже обобщает.
Небольшая глубина ограничивает взаимодействия признаков, а learning rate управляет вкладом нового дерева. Эти параметры рассматривают вместе с числом деревьев и регуляризацией. В руководстве scikit-learn отдельно разобран компромисс между скоростью обучения и числом оценщиков.
Коротко: неглубокие деревья в бустинге дают слабым моделям контролируемую сложность и снижают риск переобучения.
Как развивался NLP
Bag of Words представляет текст через частоты слов и почти не учитывает порядок. TF-IDF уменьшает вес частых для корпуса слов. Word2Vec и похожие методы учат плотный вектор слова, но обычно дают ему одно представление вне зависимости от контекста.
Рекуррентные сети учитывают последовательность, но обрабатывают токены шаг за шагом. Трансформеры используют attention и строят контекстное представление: значение слова зависит от соседей. Это не значит, что TF-IDF устарел для любой задачи. Для небольших данных и понятного базового решения он всё ещё полезен; scikit-learn показывает его применение в классификации текста.
Коротко: развитие NLP — переход от разреженных частотных признаков к контекстным представлениям слов и фраз.
Что делают Query, Key и Value
Для каждого токена модель строит три представления. Query выражает, какую информацию токен ищет. Key помогает оценить, насколько другой токен релевантен запросу. После softmax веса применяются к Value — содержимому, которое попадёт в итоговое представление.
Attention связывает токены через Query, Key и Value внутри блоков трансформера. Источник: D. Godoy, Wikimedia Commons, лицензия CC BY 4.0.
Multi-head attention повторяет механизм в нескольких подпространствах, чтобы разные головы могли замечать разные связи. В документации Hugging Face можно посмотреть современные варианты реализации attention.
Коротко: Query ищет релевантную информацию, Key участвует в расчёте веса, а Value переносит содержимое в итоговое представление.
Как выбрать алгоритм кластеризации
KMeans ищет группы вокруг центров и требует заранее задать их число. DBSCAN выделяет плотные области, умеет отмечать шум и не требует числа кластеров, но чувствителен к масштабу признаков и параметрам плотности. Агломеративная кластеризация постепенно объединяет близкие объекты и строит иерархию.
Один алгоритм по-разному ведёт себя на компактных группах, вытянутых формах и данных с шумом. Источник: scikit-learn.
На интервью не нужно выбирать «лучший» алгоритм без данных. Сначала уточните форму кластеров, шум, размер выборки, метрику расстояния и то, как будет проверяться полезность групп.
Коротко: алгоритм кластеризации выбирают по форме групп, шуму, масштабу данных и тому, известное ли число кластеров.
Получил ли кандидат оффер
Да, кандидат получил оффер в Сбер. В разборе отмечено, что его вытащили сильные проекты, софт-скилы и уверенная подача. При этом ошибки в базовом Python и неполные объяснения могли привести к отказу у другого интервьюера.
Наш вывод: результат заслуженный, но стратегию «надеяться на подачу» повторять не стоит. Проектный опыт нужно подкреплять точными определениями, механизмом и ограничениями. Тогда уверенность усиливает ответ, а не маскирует пробел.
Коротко: кандидат получил оффер благодаря проектному опыту и уверенной подаче, хотя в базовых вопросах были ошибки.
Чек-лист подготовки
- Объясняю изменяемость через объект и
id. - Знаю три dunder-метода и связанные протоколы.
- Начинаю оптимизацию с профилирования.
- Объясняю бустинг без фразы «деревья просто исправляют ошибки».
- Могу нарисовать Query, Key и Value.
- Выбираю кластеризацию по свойствам данных.
Источники
частые вопросы
Короткие ответы
Какие темы повторить перед собеседованием Data Scientist?
Повторите Python, способы измерения производительности, деревья и бустинг, классические методы NLP, attention, трансформеры и основные алгоритмы кластеризации.
Нужно ли выводить формулы наизусть?
Нужно понимать смысл элементов формулы и уметь объяснить их на примере. Точное воспроизведение без понимания редко выдерживает уточняющие вопросы.
Можно ли получить оффер с ошибками в теории?
Можно, если другие сигналы сильные, но рассчитывать на это не стоит. Уверенная подача не заменяет базу, а помогает показать уже существующий опыт.


