Python: надо скачать 500 страниц по HTTP, а затем прогнать по каждой тяжёлый парсинг на чистом Python (CPU-bound). Какой executor возьмёшь под каждый этап — ThreadPoolExecutor или ProcessPoolExecutor — и почему не один на всё?
Pythonmediummiddle
Проверяет знание Python и pandas для анализа данных.
pythonconcurrentthreadingmultiprocessing
Варианты ответа
Оба этапа в ProcessPoolExecutor: процессы быстрее потоков на любой нагрузке, а изоляция памяти заодно избавит от гонок при скачивании страниц
Парсинг — в потоки (ему нужна общая память со скачанными страницами), скачивание — в процессы: сокеты нельзя безопасно делить между потоками
Оба в ThreadPoolExecutor: парсер на чистом Python отпускает GIL каждые 100 байткод-инструкций, и потоки исполняются на ядрах параллельно
Скачивание — в потоки (GIL отпускается на время I/O-ожидания), парсинг — в процессы (настоящий параллелизм); потоки на CPU-bound упрутся в GIL
Как разобрать этот вопрос на собеседовании
Подумай, какая структура данных и какой инструмент pandas решают задачу с наименьшей сложностью: векторизация вместо циклов, groupby/merge вместо ручных склеек, корректная работа с NaN и типами. Интервьюер смотрит на читаемость кода и на то, понимаешь ли ты, что происходит «под капотом» — копия или вью, сложность операции, утечки памяти на больших данных.
На собеседовании по такому вопросу важно не только назвать ответ, но и кратко объяснить, почему он верный.
Тема вопроса — «Python». Чтобы подготовиться к похожим задачам, отрабатывай их на практике: python-тренажёр помогает довести навык до автоматизма, а раздел вопросов — увидеть формулировки, которые реально встречаются на интервью аналитика данных.
Разбор ответа
Подробный разбор с объяснением «почему правильный ответ верный» и почему остальные неверны — после регистрации.
3000+ вопросов с разбором, quiz-режим с проверкой, AI-собес и подготовка к интервью аналитика.