18 вопросов
Практика
Можешь объяснить, что такое Grand Central Dispatch (GCD) и описать его основные компоненты, включая dispatch queues, модели выполнения задач и их типичные случаи использования в разработке для iOS?
Можешь объяснить ключевые различия между синхронным и асynchronous выполнением задач в Swift, и описать, как каждый подход влияет на производительность приложения и пользовательский опыт?
Можешь объяснить ключевые различия между serial и concurrent dispatch queues в Swift, включая то, как отличается порядок выполнения задач в каждом из них, и привести примеры обоих?
Можешь объяснить механизм и преимущества синтаксиса async/await в Swift, включая то, как он обрабатывает suspension функций и flow выполнения?
Как структурированная конкурентность в Swift управляет жизненным циклом асинхронных задач, и какие механизмы она использует для предотвращения утечек задач?
Как акторы в Swift предотвращают гонки данных и обеспечивают потокобезопасный доступ к изменяемому состоянию?
Какое назначение аннотации `@MainActor` в Swift и как она гарантирует выполнение кода в главном потоке?
Как `async let` обеспечивает конкурентное выполнение задач в Swift, и чем его поведение отличается от последовательного ожидания нескольких асинхронных операций?
Как ты выявляешь и предотвращаешь race conditions при конкурентном программировании на Swift, и какие механизмы синхронизации ты бы реализовал?
Как task groups в Swift позволяют управлять динамически создаваемыми конкурентными дочерними задачами, и какие основные различия между `withTaskGroup` и `withThrowingTaskGroup`?
Можешь объяснить, зачем нужен протокол `Sendable` в Swift и описать, какие типы могут безопасно ему соответствовать?
Как бы ты реализовал интеграцию устаревших callback-based API в современную архитектуру async/await в Swift?
Можешь объяснить, что такое DispatchGroup в Swift и описать сценарии, в которых ты бы использовал его в своём приложении?
Можешь объяснить, что такое OperationQueue в Swift и описать, чем она отличается от Grand Central Dispatch (GCD) с точки зрения функциональности и сценариев использования?
В контексте Grand Central Dispatch (GCD) в Swift, что такое deadlock и какие основные причины его возникновения и стратегии его предотвращения?
Как происходит инверсия приоритетов в многопоточном программировании и какие механизмы использует Grand Central Dispatch (GCD) для её предотвращения или смягчения?
Какие подходы существуют, чтобы убедиться, что API запросы выполняются последовательно, а не параллельно в Swift?
Можешь объяснить, что такое `AsyncSequence` и как она отличается от стандартного протокола `Sequence` в Swift?