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

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

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

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

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

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

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

Каталог

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

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

Как сделать, чтобы два asyncio.sleep(5) отработали за 5 секунд, а не за 10?

Запустите оба ожидания конкурентно, например через asyncio.gather(). Два последовательных await asyncio.sleep(5) дают около 10 секунд, а конкурентный запуск — около 5 секунд плюс накладные расходы.

Читать ответ
Лайвкодинг

Вы затронули важный момент с несколькими инстансами. А можете привести пример кода с использованием asyncio.Lock для защиты составной операции внутри одного процесса?

Один общий asyncio.Lock должен охватывать проверку и изменение состояния. Это защищает задачи одного event loop, но не несколько процессов, потоков или независимые экземпляры приложения.

Читать ответ
Лайвкодинг

import asyncio

Да, в показанном запуске asyncio.run() завершает асинхронные генераторы, поэтому Cleanup будет напечатано при завершении работы. Но break сам по себе не гарантирует немедленное выполнение finally генератора.

Читать ответ
Поведенческий

Создавали ли вы асинхронные функции при работе с Python, например в Django или с asyncio?

Назовите реальные async-функции и зачем они были нужны: параллельное ожидание HTTP, БД или других I/O. async def само по себе не ускоряет функцию и не запускает её автоматически.

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

Что такое Future (будущий результат) в asyncio и как он связан с Task?

Future представляет результат, который появится позже: значение, исключение или отмену. Task управляет выполнением coroutine и предоставляет Future-подобный интерфейс ожидания её результата.

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

Какова связь между циклом событий asyncio и системными вызовами epoll/kqueue ядра Linux?

asyncio event loop ожидает готовность I/O через платформенный механизм: на Linux это обычно epoll, а kqueue относится к BSD/macOS. Между ожиданиями loop выполняет готовые callbacks и продвигает tasks.

Читать ответ
Лайвкодинг

В AsyncIO нужно атомарно уменьшить лимит в общем состоянии после await. Какой подход наиболее надёжен?

Наиболее надёжен последний вариант с учётом области состояния: атомарная операция Redis для нескольких workers либо asyncio.Lock для одного event loop. Проверка и уменьшение должны составлять одну критическую операцию.

Читать ответ
Лайвкодинг

Атомарное условное списание баланса в PostgreSQL

Более зрелый вариант — атомарное условное списание в PostgreSQL с проверкой результата. Оно защищает общий баланс между процессами и экземплярами приложения, а не только внутри одного event loop.

Читать ответ
Лайвкодинг

import json

В коде синхронный Redis блокирует async-обработчик, запросы к БД выполняются по одному ID, а отсутствие продукта приводит к ошибке. Нужны валидация входа, пакетное чтение и контролируемый кеш.

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

Как организовать параллельное выполнение задач с помощью multithreading и asyncio (пул воркеров, очередь задач, gather)?

Для блокирующего I/O используйте ограниченный пул потоков, для async I/O — ограниченное число корутин с очередью или семафором. gather собирает результаты, но сам не ограничивает конкурентность.

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

Как под капотом работает asyncio в Python? В чем разница между ключевыми словами await, async def, созданием задачи через asyncio.create_task() и простым вызовом асинхронной функции?

Вызов async def создаёт coroutine, await ожидает awaitable в текущей задаче, а create_task планирует отдельную Task. Event loop возобновляет готовые задачи, переключаясь при реальном ожидании.

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

Зачем нужны Lock, Event и другие примитивы синхронизации в asyncio, если event loop обычно работает в одном потоке? Возможны ли гонки данных?

Гонки возможны между участками, разделёнными await: другая задача успевает изменить общее состояние до продолжения первой. Один поток исключает одновременное исполнение, но не логическое чередование операций.

Читать ответ