Подготовка к интервью

Вопросы на собеседовании по asyncio

148 вопросов по asyncio с технических собеседований

148 вопросов 1634 компании 353 технологии

Что проверяют на интервью

Как устроена подборка

На странице собраны вопросы по asyncio — от проверки базовых принципов до практического применения и архитектурных решений. В подборке чаще встречаются темы: asyncio, async, python.

Каталог

Результаты поиска

Найдено: 148
Лайвкодинг

Импорт заказов: незапущенная корутина и скрытые ошибки БД

Программа не запускает корутину main, а ошибки БД маскируются под успешный импорт. Дополнительно нужны корректные транзакции, идемпотентность и валидация заказов.

Читать ответ
Теория

Как спроектировать асинхронный семафор (asyncio.Semaphore) для жёсткого ограничения RPS к внешнему API?

Semaphore ограничивает число одновременных запросов, а не RPS. Для жёсткого ограничения скорости нужен отдельный временной лимитер, который разрешает старт только в допустимый момент.

Читать ответ
Теория

Как устроен под капотом механизм создания легковесных потоков (greenlet) в библиотеке Gevent в сравнении с нативными корутинами asyncio? Почему Gevent требует механизма monkey patching, а asyncio — нет?

Greenlet сохраняет стек выполнения и позволяет переключаться из обычного синхронного кода; asyncio использует явные await-точки нативных корутин. Gevent делает I/O кооперативным через свои API или patching.

Читать ответ
Теория

Атомарное уменьшение лимита в Redis или asyncio.Lock

Нужно атомарно проверить и уменьшить лимит в том месте, где он хранится: командой/скриптом Redis для общего состояния либо asyncio.Lock для одного процесса. Измерение ожидания полезно дополнительно.

Читать ответ
Теория

В чем разница между asyncio.create_task() и прямым вызовом корутины через await? Как работает планировщик asyncio, когда задача создана через create_task(), но текущий поток выполнения занят тяжелыми вычислениями?

await coro() исполняет корутину в текущей задаче и ждёт её; create_task() создаёт отдельную задачу для конкурентного выполнения. Занятый тяжёлым кодом event loop не может нормально переключать задачи.

Читать ответ
Теория

Вы хорошо описали управление задачами и корректное завершение. А как вы контролируете незавершённые операции AsyncIO при остановке приложения?

При остановке сначала прекратите принимать новую работу, затем ограниченно дождитесь активных задач, отмените оставшиеся и дождитесь их cleanup. Простого вызова cancel недостаточно.

Читать ответ
Теория

Можно ли написать асинхронный сервер в Python без asyncio?

Да: асинхронный сервер можно построить на неблокирующих сокетах и selectors или использовать другую event-loop-библиотеку. Asyncio — готовая реализация, а не единственный способ конкурентного I/O.

Читать ответ
Теория

Что произойдёт, если синхронный блокирующий код попадёт в asyncio, и как вынести такую задачу в отдельный поток?

Блокирующий синхронный код остановит event loop на время выполнения и задержит остальные корутины. Для блокирующего I/O его можно перенести в поток через asyncio.to_thread.

Читать ответ