К обычному разбору
Тренировка по собеседованиюТехническое собеседованиеT1 / PrideInBrains2026-02-16

Agents/NLP technical screen: Python, ML basics и поиск

Идите сверху вниз: сначала попробуйте сами, затем откройте разбор. Если шаг с кодом, пишите решение прямо здесь и запускайте проверки на странице.

Шагов
4
Вопросов
4
Задач
0
1Вопрос10 мин

async, threading и multiprocessing в Python

Когда использовать async, threading и multiprocessing в Python, и как GIL влияет на этот выбор?

Ответьте без подсказки

Сначала проговорите ответ вслух или тезисами.

Запишите черновик

Формулы, план решения, риски и примеры.

Сравните с разбором

Откройте разбор только после своей попытки.

Показать разбор

Короткий ответ

async/threading подходят для I/O-bound задач, multiprocessing - для CPU-bound Python кода; GIL мешает параллельному исполнению Python bytecode в threads.

Подробный разбор

asyncio хорош, когда много сетевых или файловых ожиданий и код можно писать в cooperative style. Threads тоже удобны для I/O-bound задач, особенно когда библиотека блокирующая, но GIL не дает двум Python threads одновременно исполнять CPU-bound bytecode.

Для CPU-bound задач на чистом Python используют multiprocessing или выносят вычисления в native code, который освобождает GIL. В ML/NumPy/PyTorch часть операций выполняется в C/CUDA и может эффективно параллелиться вне GIL.

В production выбор зависит от нагрузки: web API с внешними calls - async/thread pool; тяжелый feature extraction на CPU - processes/queue; GPU inference - batching и отдельный worker pool.

Типичные ошибки

  • Говорить, что threads всегда бесполезны из-за GIL.
  • Использовать multiprocessing для легкого I/O.
  • Не учитывать serialization overhead между processes.

Как сказать на собеседовании

  • Раздели I/O-bound и CPU-bound.
  • Упомяни, что native ML libraries часто обходят GIL.
2Вопрос10 мин

Почему dict в Python обычно работает за O(1)

Объясните, как устроен hash table в Python dict и почему операции lookup/insert обычно O(1), но иногда деградируют.

Ответьте без подсказки

Сначала проговорите ответ вслух или тезисами.

Запишите черновик

Формулы, план решения, риски и примеры.

Сравните с разбором

Откройте разбор только после своей попытки.

Показать разбор

Короткий ответ

dict использует hash ключа для адресации ячейки; амортизированно lookup/insert O(1), но коллизии и resize дают худшие случаи.

Подробный разбор

Python dict - hash table. Для ключа считается hash, по нему выбирается позиция в массиве. Если ячейка занята другим ключом, используется probing. При нормальной load factor среднее число probes мало, поэтому lookup/insert/delete амортизированно O(1).

Деградация возможна при большом числе коллизий или специально подобранных ключах, хотя Python защищается randomized hashing для строк. Resize тоже стоит O(n), но происходит редко, поэтому в амортизированной оценке insert остается O(1).

Важно помнить: ключ должен быть hashable и equality-compatible с hash. Изменяемые объекты как list не могут быть ключом, потому что их hash был бы нестабилен.

Типичные ошибки

  • Говорить, что dict всегда строго O(1).
  • Забывать про hashable keys.
  • Не отличать average и worst case.

Как сказать на собеседовании

  • Скажи amortized average O(1).
  • Упомяни collisions, probing и resize.
3Вопрос12 мин

Базовая архитектура Transformer

Коротко объясните, из каких блоков состоит Transformer и какую роль играет attention.

Ответьте без подсказки

Сначала проговорите ответ вслух или тезисами.

Запишите черновик

Формулы, план решения, риски и примеры.

Сравните с разбором

Откройте разбор только после своей попытки.

Показать разбор

Короткий ответ

Transformer состоит из embeddings, positional information, self-attention, feed-forward blocks, residual connections и normalization.

Подробный разбор

Transformer заменяет recurrent обработку последовательности на attention. Каждый токен получает embedding, к нему добавляется positional information, затем self-attention позволяет токенам смотреть на другие токены и агрегировать контекст.

Типичный block: multi-head self-attention, residual connection, layer norm, feed-forward network, снова residual/norm. Multi-head attention позволяет разным heads смотреть на разные виды связей. Feed-forward слой применяет нелинейное преобразование к каждому position.

Для encoder моделей attention обычно bidirectional, для decoder LLM используется causal mask, чтобы токен не видел будущее.

Типичные ошибки

  • Забыть positional information.
  • Не объяснить разницу encoder/decoder mask.
  • Сводить Transformer только к attention formula.

Как сказать на собеседовании

  • Назови block-level структуру.
  • Покажи связь с BERT/GPT.
4Вопрос14 мин

Как дообучать encoder под доменный retrieval

Есть доменный поиск, где generic embeddings плохо работают. Как дообучить encoder и проверить, что retrieval стал лучше?

Ответьте без подсказки

Сначала проговорите ответ вслух или тезисами.

Запишите черновик

Формулы, план решения, риски и примеры.

Сравните с разбором

Откройте разбор только после своей попытки.

Показать разбор

Короткий ответ

Нужны доменные query-document positives, hard negatives, contrastive/ranking loss и retrieval eval вроде Recall@K/NDCG на отложенном наборе.

Подробный разбор

Сначала собираем данные: реальные queries, clicked/accepted documents, экспертная разметка релевантности или пары из бизнес-процесса. Для обучения bi-encoder хорошо работают positive pairs и hard negatives: документы похожие лексически, но нерелевантные.

Loss можно выбрать multiple negatives ranking loss, triplet loss или contrastive loss. Hard negatives лучше регулярно обновлять, потому что модель быстро учится на легких отрицательных примерах.

Проверка должна быть retrieval-specific: Recall@K, MRR, NDCG, coverage по типам запросов, latency и online A/B, если есть трафик. Важно сравнивать с BM25/hybrid baseline, а не только с предыдущей embedding моделью.

Типичные ошибки

  • Дообучать на случайных negatives.
  • Мерить только classification accuracy.
  • Не сравнивать с BM25/hybrid baseline.

Как сказать на собеседовании

  • Обязательно скажи hard negatives.
  • Метрики называй retrieval-specific.