Специализация
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 в телеграм
В чем различие между Observable и Promise? Где применяется каждый из этих паттернов?
Promise — это объект, который работает с одним значением или ошибкой, и его результат может быть получен только один раз. Он идеален для однократных асинхронных операций, таких как запросы к API. Observable позволяет работать с множественными значениями и управлять подписками на поток данных, что делает его полезным для событий, потоков данных или длительных операций. Основное различие — в многократности значений и возможностях управления потоком.
Что такое асинхронность в контексте Python?
Асинхронность — это способ выполнения задач без блокировки программы. Python позволяет писать асинхронный код с помощью async и await, чтобы обрабатывать множество задач одновременно, не дожидаясь завершения долгих операций, таких как запросы к серверу или чтение файлов.
Чем отличаются многопоточность, асинхронность и мультипроцессинг в Python? В чём сильные и слабые стороны каждого подхода?
Threading: несколько потоков в одном процессе, удобен для I/O, но GIL мешает параллельным вычислениям.
Asyncio: одна нить с циклом событий, отлично масштабирует I/O‑задачи, но требует перестройки кода.
Multiprocessing: несколько процессов, полноценный параллелизм на CPU‑интенсивных задачах, но тяжёлый в коммуникации и запуске.
На чём основана асинхронность в Python? Как она работает под капотом?
Асинхронность в Python строится на event loop — цикле событий, который управляет корутинами и неблокирующими вызовами I/O (через selectors с select/epoll/kqueue). При await корутина отдаёт управление loop, чтобы он мог переключиться на другие задачи, пока ждёт результата I/O.
В чём разница между многопоточностью (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 без блокировки текущего потока.
Как работает асинхронность в JS?
Когда использовать асинхронность для тяжёлых вычислений?
Как асинхронность позволяет обрабатывать больше запросов в одном потоке?
Как объяснить ребёнку, что такое асинхронность?
В каких случаях асинхронность может стать минусом архитектуры?
Рейтинг:
5
Сложность:
7
JavaScript выполняет код синхронно (по шагам), но может откладывать задачи с помощью:
setTimeout).Promise) и async/await.Рейтинг:
2
Сложность:
5
Асинхронность для тяжёлых вычислений полезна, когда нужно:
Не блокировать UI-поток,
Параллелить задачи на нескольких ядрах через Task.Run.
Но сама по себе async/await не ускоряет вычисления — для этого нужна многопоточность.
Рейтинг:
2
Сложность:
5
Асинхронность позволяет выполнять операции ввода-вывода (например, запросы к базе данных) без блокировки потока. Пока одна операция ждет завершения, event loop обрабатывает другие запросы, что увеличивает пропускную способность в одном потоке.
Рейтинг:
4
Сложность:
7
Асинхронность — это как повар на кухне, который не ждет готовки одного блюда, а начинает несколько задач и переключается между ними. Когда что-то нужно ждать (духовка, кипящая вода), он занимается другими делами, вместо простоя.
Рейтинг:
4
Сложность:
6
Асинхронность усложняет понимание системы и отладку. Она может привести к задержкам в получении результата. Повышается сложность обработки ошибок и согласованности данных. Не все бизнес-сценарии допускают eventual consistency. Иногда синхронные вызовы оказываются проще и надежнее.
Рейтинг:
3
Сложность:
8
Рейтинг:
3
Сложность:
6
Рейтинг:
3
Сложность:
6
Рейтинг:
3
Сложность:
6
Рейтинг:
2
Сложность:
5