**Контекст:** задача на обработку текста, спрашивают в data engineering командах: Яндекс Дзен, Mail.ru Cloud, Тинькофф. Проверяет знание `collections`, `heapq`, умение думать о производительности.
## Условие
Дан большой текст (строка или файл). Верни **K самых частых слов** и их количество, отсортированных по убыванию частоты. При равной частоте — **лексикографический порядок** (a-z).
## Требования
1. Нормализация слов: lowercase, убрать пунктуацию, разделить по whitespace
2. Обработать пустую строку → []
3. K может быть больше чем количество уникальных слов → вернуть все
4. Предусмотреть **стоп-слова** (параметр, опционально)
5. **Производительность:** text может быть 100 МБ+ (1М слов)
## API
[см. код в задании]
## Примеры
[см. код в задании]
## Constraints
- text: до 100 МБ
- k: 1 ≤ k ≤ 10⁶
- Unicode support требуется (русские слова, emoji игнорируются)
## Что ценится на собесе
- **Правильная нормализация** (regex для пунктуации, lowercase)
- **Использование `collections.Counter`** (идиоматично)
- **Понимание сложности** sort (n log n) vs heap (n log k) — когда k << n разница в разы
- **Stream processing** для больших файлов (чтение построчно)
algorithms hash-map sorting heap collections
Это задание для уровня Middle. Для middle-аналитиков с опытом 1-3 года, требует уверенного владения темой и понимания edge cases.
Подобные задания в категории «Python» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: algorithms, hash-map, sorting, heap, collections.
На реальном собеседовании на подобную задачу отводится 15-30 минут — оцениваются подход, корректность, обработка edge cases. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.
На zasqlpython.ru есть 482 Python задачи с проверкой через Pyodide, конспекты Python и pandas, AI мок-собеседование с разбором ваших ответов.
← Все задания