Специализация
Python Backend Developer
Java Backend Developer
Node.js Backend Developer
Golang Backend Developer
React Frontend Developer
Выберите навыки
React
JavaScript
Git
Redux
Webpack
Сложность
1-3
4-6
7-8
9-10
Рейтинг вопросов
1
2
3
4
5
Подпишись на React Developer в телеграм
Для чего нужны Async/await?
async/await — это синтаксис, который упрощает работу с промисами, делая асинхронный код более похожим на синхронный. Функция с ключевым словом async всегда возвращает промис, а await приостанавливает выполнение функции до получения результата промиса. Это делает код более читаемым и упрощает обработку ошибок.
В чём разница между многопоточностью (CPU-bound) и асинхронностью (IO-bound) в .NET и как работают async/await?
CPU-bound задачи используют потоки и Parallel/Tasks для распределения вычислений между ядрами и могут потребовать lock/SemaphoreSlim. IO-bound операции (await httpClient.GetAsync) не блокируют поток — метод возвращает Task, освобождая поток для других задач, а по завершении I/O продолжает выполнение в пуле. async/await трансформирует метод в state machine, которая при встрече await регистрирует продолжение и возвращает Task без блокировки текущего потока.
В чём разница между async/await и GCD?
GCD (Grand Central Dispatch) предоставляет низкоуровневые очереди и синхронизированные вызовы sync/async, требуя явного управления задачами и колбэками. async/await — новый синтаксис на основе Swift Concurrency с Task и Actor, упрощает чтение асинхронного кода, позволяет писать его как последовательный, автоматически управляет жизненным циклом задач.
Почему async/await вместо Promises?
async/await делает асинхронный код:
Читаемым (похож на синхронный).
Удобным для отладки (стек вызовов не «разрывается»).
Лёгким в обработке ошибок (через try/catch).
Какая связь между async/await и генераторами?
Ключевая связь в том, что и генераторы, и асинхронные функции позволяют приостанавливать выполнение кода и later возобновлять его. Генераторы используют ключевое слово yield для паузы и возврата значения. Механизм async/await был во многом вдохновлен этой идеей: await приостанавливает выполнение асинхронной функции, подобно тому как yield приостанавливает генератор. Изначально асинхронность в Python (библиотека asyncio) использовала генераторы для реализации корутин.
В каких случаях GCD может быть предпочтительнее async/await?
Что такое async/await в Swift?
Чем async/await удобнее completion-based API?
Что возвращает async-функция?
Чем async/await отличается от .then()?
Рейтинг:
4
Сложность:
6
GCD предпочтительнее, когда нужен низкоуровневый контроль над очередями. Он хорошо подходит для простых задач без сложной логики отмены. В легаси-проектах GCD часто уже используется повсеместно. Также GCD удобен для синхронизации и работы с shared state. async/await не всегда легко интегрируется в старый код.
Рейтинг:
5
Сложность:
6
async/await — это синтаксис для написания асинхронного кода в линейном стиле. Он позволяет вызывать асинхронные операции так, будто они выполняются синхронно. При этом поток не блокируется. Код становится проще для чтения и сопровождения. Это современная альтернатива completion-based API.
Рейтинг:
5
Сложность:
7
async/await избавляет от вложенных completion-блоков. Код становится линейным и читаемым. Проще обрабатывать ошибки и отмену. Меньше шансов допустить retain cycle. Это снижает сложность и количество багов.
Рейтинг:
5
Сложность:
4
Любая async-функция всегда возвращает Promise. Если функция возвращает обычное значение, оно автоматически оборачивается в Promise.resolve. Если внутри происходит throw, возвращается Promise.reject. await не меняет тип возвращаемого значения функции.
Рейтинг:
5
Сложность:
5
async/await и .then() работают поверх Promise и дают одинаковые возможности. Разница в том, что async/await позволяет писать асинхронный код в синхронном стиле, улучшая читаемость. .then() использует цепочки колбэков и чаще приводит к вложенности. С точки зрения выполнения и производительности они эквивалентны.
Рейтинг:
4
Сложность:
4
Рейтинг:
2
Сложность:
5
Рейтинг:
2
Сложность:
6
Рейтинг:
2
Сложность:
6
Рейтинг:
2
Сложность:
6