Junior/Middle DS в команде агентных RAG-систем ИТ B2C: классический ML, NLP/LLM, Python и продакшен-мышление
Фишка: Команда разрабатывает агентные RAG-системы для B2C-продуктов Сбера с реальным продакшеном. Сильный акцент на llm-as-a-judge, бенчмарки, улучшение retrieval и генерации — а не только на обучение моделей с нуля.
| Этап | Длительность | Что проверяют |
|---|---|---|
| HR-скрининг | 20–30 мин | Мотивация, опыт, формат работы (офис/удалёнка), зарплатные ожидания, готовность к релокации в Москву |
| Технический скрининг | 45–60 мин | Базовый ML, метрики классификации, Python, краткий разбор проектов из NLP |
| Техническое интервью | 60–90 мин | NLP/LLM, RAG-пайплайн, трансформеры, эксперименты и оценка качества, задачи на код |
| Системный дизайн / кейс | 45–60 мин | Проектирование RAG- или агентной системы: retrieval, генерация, метрики, вывод в прод |
| Финал с командой | 30–60 мин | Культурный фит, вопросы кандидата, обсуждение роли в команде менторства |
Обязательный минимум
Плюсом будет
Что такое ROC-AUC?
Площадь под ROC-кривой (TPR vs FPR). Не зависит от порога, хорош для сравнения ранжирующих моделей. Не подходит при сильном дисбалансе без доп. анализа.
Что такое F1-Score?
Гармоническое среднее precision и recall. Балансирует оба типа ошибок. Полезен при несбалансированных классах.
Что такое precision?
TP / (TP + FP). Доля верных среди предсказанных положительных. Важна, когда цена ложноположительного высока.
В чём разница между F-мерой и ROC-AUC?
F1 зависит от выбранного порога и баланса классов; ROC-AUC — от ранжирования без фиксированного порога.
Как работает градиентный бустинг?
Последовательно добавляет слабые модели (деревья), каждая обучается на остатках предыдущей. Минимизирует loss через градиентный спуск в пространстве функций.
В чём разница в реализации между XGBoost и LightGBM?
XGBoost — level-wise рост деревьев; LightGBM — leaf-wise, GOSS и EFB для ускорения. LightGBM быстрее на больших данных, но склоннее к переобучению.
Что такое регуляризация в машинном обучении?
Штраф за сложность модели (L1/L2, dropout, early stopping). Снижает переобучение, улучшает обобщение.
В чём разницу между L1 и L2 регуляризацией?
L1 (Lasso) — разреженность, отбор признаков. L2 (Ridge) — сжатие весов, все признаки остаются. L1 устойчивее к выбросам в признаках.
Как выполняется кросс-валидация?
Данные делятся на k фолдов; модель обучается на k-1, валидируется на 1. Повторяется k раз. Итог — среднее и дисперсия метрики.
Как отбираешь признаки при их большом количестве?
Filter (корреляция, mutual information), wrapper (RFE), embedded (L1, feature importance в бустинге). Учитывай утечку данных и multicollinearity.
В чём разница между стекингом и блендингом?
Блендинг — усреднение/взвешивание предсказаний базовых моделей. Стекинг — мета-модель обучается на out-of-fold предсказаниях базовых моделей.
Что делать с датасетом перед обучением модели?
EDA, обработка пропусков и выбросов, кодирование категорий, масштабирование, train/val/test split, проверка утечек и дисбаланса.
Фишка: В Сбере часто спрашивают не только определения, но и выбор метрики под бизнес-задачу (модерация, скоринг, рекомендации).
Ловушка: Не путай precision и recall: для ручной модерации объявлений важнее precision (меньше ложных срабатываний).
Как GPT генерирует текст?
Авторегрессия: на каждом шаге предсказывается следующий токен по распределению softmax над словарём. Декодирование: greedy, beam search, top-k/top-p, temperature.
Какие основные подходы и архитектуры трансформеров существуют?
Encoder-only (BERT) — понимание; Decoder-only (GPT) — генерация; Encoder-Decoder (T5, BART) — seq2seq. Attention: self-attention, cross-attention, multi-head.
Какие знаешь методы оценки сходства векторов в NLP?
Cosine similarity, dot product, Euclidean. Для нормализованных эмбеддингов cosine ≈ dot product. BM25 для лексического поиска.
Какое свойство cosine similarity делает его предпочтительным для поиска ближайших соседей?
Инвариантность к длине вектора — сравнивает направление, а не масштаб. Удобно для текстовых эмбеддингов разной длины.
Как быстро отранжировать вектора по близости к запросу?
ANN-индексы: FAISS (IVF, HNSW), ScaNN. Точный поиск O(n), ANN — сублинейный с компромиссом recall.
Какие метрики используешь для оценки качества NLP-модели?
Классификация: accuracy, F1, macro/micro. Генерация: BLEU, ROUGE, BERTScore. Поиск: MRR, nDCG, Recall@k. LLM: human eval, llm-as-a-judge.
Совет: Подготовь 1–2 пет-проекта: текстовая классификация, суммаризация или семантический поиск — это прямое требование вакансии.
Фишка: Команда работает с русскоязычным NLP — знание pymorphy и особенностей морфологии русского будет плюсом.
Что такое RAG и для каких задач он используется?
Retrieval-Augmented Generation: поиск релевантных документов + генерация ответа LLM с контекстом. Решает галлюцинации, актуальность знаний, доменную специфику.
Как реализовать базовый RAG без LangChain?
1) Chunking документов → 2) Embedding → 3) Vector store → 4) Query embedding → 5) Top-k retrieval → 6) Prompt с контекстом → 7) LLM generation.
Какие проблемы решает RAG?
Актуальность знаний, снижение галлюцинаций, прозрачность (цитирование источников), работа с закрытыми данными без полного fine-tuning.
Как улучшить качество retrieval в RAG?
Лучший chunking (overlap, semantic), reranking (cross-encoder), гибридный поиск (BM25 + dense), fine-tuning эмбеддингов, очистка источников.
Как измерять качество RAG-системы?
Retrieval: Recall@k, MRR. End-to-end: faithfulness, answer relevance, context precision/recall (RAGAS). LLM-as-a-judge с human validation.
Что такое llm-as-a-judge?
LLM оценивает ответы другой LLM по заданным критериям. Быстро и масштабируемо, но требует калибровки с human labels и контроля bias.
Фишка: Это ключевая тема вакансии: команда улучшает агентные RAG-системы в проде — бенчмарки, llm-as-a-judge, retrieval и генерация.
Ловушка: Не ограничивайся теорией: покажи, как бы ты провёл A/B эксперимент или собрал бенчмарк для оценки улучшений.
Какие знаешь типы данных в Python?
int, float, str, bool, list, tuple, dict, set, frozenset. Изменяемые vs неизменяемые.
Какие знаешь неизменяемые типы данных в Python?
int, float, str, bool, tuple, frozenset. Нельзя изменить после создания.
В чём разница между copy и deepcopy?
copy — поверхностная копия (вложенные объекты общие). deepcopy — рекурсивная копия всех вложенных объектов.
Работал ли со Spark?
Распределённая обработка больших данных. DataFrame API, lazy evaluation, shuffle. Альтернативы: Dask, Polars, pandas на сэмпле.
Что такое SOLID?
S — Single Responsibility, O — Open/Closed, L — Liskov Substitution, I — Interface Segregation, D — Dependency Inversion. Принципы ООП-дизайна.
Как измеряется сложность алгоритмов?
Big O: O(1), O(log n), O(n), O(n log n), O(n²). Временная и пространственная сложность, worst/average case.
Совет: Вакансия требует код-ревью и тесты — будь готов обсудить, как ты структурируешь ML-код и покрываешь его тестами.
Что такое доверительный интервал?
Диапазон, в который с заданной вероятностью (1-α) попадает истинный параметр. Зависит от выборки и уровня значимости.
Как вычислить вероятность при условии (задача на монеты)?
Формула Байеса: P(A|B) = P(B|A)·P(A) / P(B). Разбей задачу на гипотезы, посчитай полную вероятность.
Как определить производную функции потерь для logloss и MSE?
MSE: d/dy (y-ŷ)² = -2(y-ŷ). Logloss (бинарная): -[y·log(ŷ) + (1-y)·log(1-ŷ)], производная через chain rule.
Можно ли использовать линейную регрессию при смещении выборки?
Оценки будут смещёнными (biased). Нужны методы коррекции: веса, propensity score, causal inference, или осознанное ограничение интерпретации.
Ловушка: На задачах по вероятности важно показать ход рассуждений, а не только финальный ответ.
Семантический поиск: top-k ближайших документов
Дан список текстов documents и запрос query. Каждый текст представлен вектором эмбеддинга (numpy array). Верни индексы top-k документов, наиболее похожих на query по cosine similarity.
import numpy as np def top_k_similar(query_vec, doc_vecs, k): # Нормализация q = query_vec / np.linalg.norm(query_vec) docs = doc_vecs / np.linalg.norm(doc_vecs, axis=1, keepdims=True) # Cosine similarity = dot product нормализованных векторов scores = docs @ q top_idx = np.argsort(scores)[::-1][:k] return top_idx.tolist()
Сложность: O(n·d + n·log k), где n — число документов, d — размерность
Балансировка метрик: выбор порога классификатора
Дан массив вероятностей pred_proba и бинарных меток y_true. Найди порог t ∈ [0, 1], при котором F1-score максимален.
from sklearn.metrics import f1_score
import numpy as np
best_t, best_f1 = 0.5, 0
for t in np.arange(0.01, 1.0, 0.01):
preds = (pred_proba >= t).astype(int)
f1 = f1_score(y_true, preds, zero_division=0)
if f1 > best_f1:
best_f1, best_t = f1, t
return best_t, best_f1Сложность: O(n · s), s — число порогов
Chunking текста для RAG
Реализуй функцию, которая разбивает длинный текст на чанки фиксированного размера (в символах) с перекрытием overlap. Верни список строк.
def chunk_text(text, chunk_size=500, overlap=50):
if not text:
return []
chunks = []
start = 0
while start < len(text):
end = start + chunk_size
chunks.append(text[start:end])
start += chunk_size - overlap
return chunksСложность: O(n), n — длина текста
Каркас ответа
3 дня
7 дней
14 дней
| Блок | Готов, если... |
|---|---|
| Классический ML | можешь объяснить ROC-AUC, F1, бустинг и выбрать метрику под бизнес-задачу |
| NLP и LLM | можешь описать, как работает GPT, и назвать метрики для классификации и генерации |
| RAG | можешь нарисовать пайплайн RAG без LangChain и объяснить, как измерять качество |
| Python | решаешь задачи на векторы, типы данных и complexity за 15–20 мин |
| System Design | можешь за 45 мин спроектировать RAG-систему с метриками и планом вывода в прод |
| Поведенческие | есть 2–3 STAR-истории про NLP-проекты с цифрами результата |
В день собеседования