Специализация
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 в телеграм
Чем отличаются синхронные и асинхронные задачи в GCD?
Синхронная задача (sync) блокирует текущий поток до завершения работы в указанной очереди. Асинхронная (async) ставит задачу в очередь и сразу возвращает управление, не дожидаясь выполнения. Это позволяет не блокировать главный поток для тяжёлых операций.
Как отменить задачу, отправленную в GCD-очередь?
GCD по умолчанию не поддерживает отмену обычных async задач, но можно использовать DispatchWorkItem — он позволяет вызвать метод cancel(), а в самом блоке проверять isCancelled и досрочно выходить.
Чем NSOperation удобнее GCD для управления задачами?
NSOperation (теперь Operation) предоставляет возможности: отмена с поддержкой флагов, зависимость задач (addDependency), приоритеты, KVO-отслеживание состояний, а OperationQueue упрощает управление максимальным числом одновременных операций и очередью выполнения.
В чём разница между async/await и GCD?
GCD (Grand Central Dispatch) предоставляет низкоуровневые очереди и синхронизированные вызовы sync/async, требуя явного управления задачами и колбэками. async/await — новый синтаксис на основе Swift Concurrency с Task и Actor, упрощает чтение асинхронного кода, позволяет писать его как последовательный, автоматически управляет жизненным циклом задач.
Какие типы очередей предоставляет GCD?
Main: Главная очередь (UI).
Global: Фоновые очереди с приоритетами.
Private: Кастомные очереди (серийные/конкурентные).
Какие дополнительные возможности предоставляет OperationQueue по сравнению с GCD?
Над чем является обёрткой GCD?
Расскажите про инструменты GCD (Grand Central Dispatch), которые вы использовали.
В каких случаях GCD может быть предпочтительнее async/await?
Какими способами можно синхронизировать доступ к общим данным в GCD?
Рейтинг:
2
Сложность:
8
Зависимости между операциями.
Отмена операций.
Ограничение количества параллельных операций.
Приоритеты и качество сервиса (QoS).
Рейтинг:
2
Сложность:
7
GCD является обёрткой над низкоуровневыми механизмами потоков операционной системы (например, pthreads в Unix-системах). Она абстрагирует управление потоками, предоставляя простой API для работы с очередями и задачами.
Рейтинг:
2
Сложность:
8
GCD — это низкоуровневый API для управления параллельными операциями. DispatchQueue — очередь для выполнения задач (главная main и фоновые). DispatchGroup — для отслеживания завершения группы задач. DispatchSemaphore — для контроля доступа к ограниченному ресурсу из нескольких потоков. DispatchBarrier — для создания точки синхронизации в concurrent очереди, обеспечивая эксклюзивный доступ к ресурсу.
Рейтинг:
4
Сложность:
6
GCD предпочтительнее, когда нужен низкоуровневый контроль над очередями. Он хорошо подходит для простых задач без сложной логики отмены. В легаси-проектах GCD часто уже используется повсеместно. Также GCD удобен для синхронизации и работы с shared state. async/await не всегда легко интегрируется в старый код.
Рейтинг:
5
Сложность:
7
В GCD для синхронизации используют serial queue, DispatchBarrier, семафоры и синхронные блоки. Каждый способ подходит для разных сценариев и имеет свои ограничения. Наиболее безопасный и рекомендуемый вариант — изоляция состояния через serial queue.
Рейтинг:
2
Сложность:
6
Рейтинг:
2
Сложность:
6
Рейтинг:
2
Сложность:
6
Рейтинг:
2
Сложность:
6
Рейтинг:
2
Сложность:
5