Специализация
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 в телеграм
В чём разница между многопоточностью (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 без блокировки текущего потока.
Какой класс в asyncio используется для CPU-bound задач?
Для CPU-bound задач используйте loop.run_in_executor() с ThreadPoolExecutor или ProcessPoolExecutor. Сам asyncio не подходит для тяжёлых вычислений.
Приведи пример: как решить 10 CPU-bound и 10 IO-bound задач на Python?
Для CPU-bound задач используйте многопроцессность (модуль multiprocessing), чтобы обойти GIL и задействовать несколько ядер. Для IO-bound задач используйте многопоточность (модуль threading) или асинхронное программирование (модуль asyncio), чтобы эффективно ждать завершения операций ввода-вывода.
Что будет, если смешать асинхронный код с CPU-bound задачей?
Если смешать асинхронный код с CPU-bound задачей, это заблокирует event loop, потому что CPU-bound задача не отпускает управление и не дает event loop переключаться между задачами. Это приведет к снижению производительности и отзывчивости асинхронного приложения
Что известно про CPU Cache в контексте ECS? Почему это важно?
В ECS данные компонентов организованы в плотные массивы в памяти (Archetype Chunks). Когда система обрабатывает сущности, она работает с этим непрерывным блоком данных. Такой подход обеспечивает локальность данных: процессор загружает в свой быстрый кэш сразу много нужных данных и может обрабатывать их без простоев на ожидание медленной оперативной памяти. Это главный источник производительности ECS.
Какие задачи относятся к I/O-bound и CPU-bound
Если тормозят запросы в БД и CPU на БД высокий — какими способами оптимизировать
Почему многопоточность в Python обычно не ускоряет CPU-bound задачи?
Что произойдёт, если в event loop выполнить блокирующую CPU-bound операцию?
Почему CPU-bound задачи неэффективно распараллеливать потоками в Python?
Рейтинг:
5
Сложность:
4
I/O-bound задачи ограничены скоростью ввода-вывода: сеть, диск, база данных. CPU-bound задачи упираются в вычисления и загрузку процессора. Для I/O-bound задач хорошо подходит асинхронность и многопоточность, а для CPU-bound — распараллеливание по процессам. Неправильный выбор подхода приводит к потере производительности.
Рейтинг:
5
Сложность:
9
Начинают с анализа медленных запросов и EXPLAIN. Добавляют или корректируют индексы. Уменьшают объём данных и количество запросов. В сложных случаях применяют кеширование и денормализацию.
Рейтинг:
5
Сложность:
6
Многопоточность в Python ограничена Global Interpreter Lock (GIL), который позволяет выполнять байткод только одному потоку одновременно. Поэтому CPU-bound задачи не получают реального параллелизма. Потоки полезны для IO-bound задач, где поток ожидает ввода-вывода. Для CPU-bound задач чаще используют multiprocessing.
Рейтинг:
5
Сложность:
6
Если в event loop выполнить блокирующую CPU-bound операцию, весь цикл событий остановится до её завершения. В это время другие корутины не будут выполняться, а запросы не будут обрабатываться. Это приводит к задержкам и падению производительности. Поэтому CPU-bound задачи выносят в отдельные процессы или executors.
Рейтинг:
5
Сложность:
7
CPU-bound — это задачи, где время уходит на вычисления, а не на ожидание ввода-вывода. В CPython есть GIL, который позволяет исполнять Python-код только одному потоку одновременно в пределах процесса. Поэтому несколько потоков чаще дают накладные расходы, но не прирост скорости. Потоки хорошо подходят для I/O-bound задач, где много ожидания сети или диска.
Рейтинг:
2
Сложность:
5
Рейтинг:
1
Сложность:
4
Рейтинг:
2
Сложность:
7
Рейтинг:
2
Сложность:
7
Рейтинг:
5
Сложность:
9