Специализация
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 в телеграм
Что такое Error Boundaries в React и как они помогают в обработке ошибок?
Error Boundaries — это специальные компоненты в React, которые позволяют перехватывать и обрабатывать ошибки, возникшие в их дочерних компонентах. Они предотвращают полное разрушение приложения, позволяя вместо этого отобразить запасной UI, когда происходит ошибка. Error Boundaries работают только для ошибок, возникающих во время рендеринга, а не для ошибок в обработчиках событий или асинхронном коде.
В чём разница между многопоточностью (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 без блокировки текущего потока.
В чём разница между frame и bounds?
frame — это прямоугольник в системе координат супервью (позиция и размер).bounds — прямоугольник в собственной координатной системе вью (обычно origin=(0,0), размер тот же).
Изменяя bounds.origin, вы как бы «скроллите» содержимое, а frame влияет на расположение самой вью в супервью.
Какой класс в 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), чтобы эффективно ждать завершения операций ввода-вывода.
Почему IO-bound задачи не блокируют поток из-за GIL?
Что будет, если смешать асинхронный код с CPU-bound задачей?
Что такое “database transaction boundary” и почему важно правильно выбирать границы транзакции?
Какие задачи относятся к I/O-bound и CPU-bound
В каком методе гарантированно известны финальные размеры frame и bounds?
Рейтинг:
2
Сложность:
7
IO-bound задачи не блокируют поток из-за GIL, потому что во время операций ввода-вывода (например, сетевых запросов или чтения файлов) поток отпускает GIL, позволяя другим потокам выполняться. Это делает многопоточность эффективной для IO-bound задач, даже несмотря на наличие GIL.
Рейтинг:
2
Сложность:
7
Если смешать асинхронный код с CPU-bound задачей, это заблокирует event loop, потому что CPU-bound задача не отпускает управление и не дает event loop переключаться между задачами. Это приведет к снижению производительности и отзывчивости асинхронного приложения
Рейтинг:
4
Сложность:
8
Граница транзакции — это отрезок кода, в котором данные читаются и изменяются атомарно. Если транзакция слишком длинная — растут блокировки и задержки; слишком короткая — нарушается консистентность. Нужно выбирать границы так, чтобы внутри транзакции были только операции, которые действительно должны быть атомарными.
Рейтинг:
5
Сложность:
4
I/O-bound задачи ограничены скоростью ввода-вывода: сеть, диск, база данных. CPU-bound задачи упираются в вычисления и загрузку процессора. Для I/O-bound задач хорошо подходит асинхронность и многопоточность, а для CPU-bound — распараллеливание по процессам. Неправильный выбор подхода приводит к потере производительности.
Рейтинг:
5
Сложность:
6
Финальные размеры frame и bounds гарантированно известны в viewDidLayoutSubviews. К этому моменту Auto Layout уже отработал и система применила все изменения геометрии. В более ранних методах размеры могут быть временными или нулевыми. Поэтому вся логика, зависящая от точных размеров, должна выполняться после layout.
Рейтинг:
4
Сложность:
6
Рейтинг:
2
Сложность:
5
Рейтинг:
2
Сложность:
5
Рейтинг:
1
Сложность:
4
Рейтинг:
2
Сложность:
7