45 вопросов по асинхронность с технических собеседований
45 вопросов1634 компании353 технологии
Что проверяют на интервью
Как устроена подборка
На странице собраны вопросы по асинхронность — от проверки базовых принципов до практического применения и архитектурных решений. В подборке чаще встречаются темы: асинхронность, python, javascript.
Процессы подходят для CPU-bound Python-расчётов и изоляции, потоки — для блокирующего I/O, asyncio — для множества операций с неблокирующими библиотеками. Это разные модели, их можно сочетать.
Асинхронность помогает эффективно обслуживать много операций, которые большую часть времени ждут I/O. Корутины позволяют описывать такой поток последовательно без отдельного системного потока на каждое ожидание.
ASGI-сервер передаёт запрос FastAPI, а event loop исполняет coroutine-задачи до точек ожидания. Пока одна задача ждёт неблокирующий I/O, цикл может выполнять другие.
Выбор зависит от нагрузки: asyncio удобен для большого числа неблокирующих I/O-операций, потоки — для блокирующих библиотек и параллельного ожидания. Это инструменты, а не взаимоисключающие предпочтения.
Асинхронность особенно полезна для I/O-bound задач: сетевых запросов, обращений к БД и ожидания событий. Она позволяет совмещать ожидания, а не автоматически параллелить вычисления.
Event loop выполняет готовые callbacks и шаги корутин, а при ожидании I/O передаёт управление другим задачам. Конкурентность возникает за счёт переключения, не обязательного параллелизма.
Asyncio переключает корутины кооперативно в event loop, поэтому для ожидания I/O ему не требуется одновременное выполнение Python-потоков. GIL и асинхронность решают разные вопросы.
Асинхронность позволяет не блокировать поток на ожидании и переключаться между задачами. Механизмы различаются: event loop, futures, корутины и планировщики runtime.
Event loop отслеживает готовые события и запускает соответствующие callbacks или продолжения корутин. Пока операция I/O ожидает готовности, цикл может обслуживать другие задачи.