Специализация
Python Backend Developer
Java Backend Developer
Node.js Backend Developer
Golang Backend Developer
React Frontend Developer
Выберите навыки
Networks
Swift
Git
CI/CD
Docker
Сложность
1-3
4-6
7-8
9-10
Рейтинг вопросов
1
2
3
4
5
Подпишись на iOS Developer в телеграм
Что такое цикл сильных ссылок и как его избежать?
Цикл сильных ссылок возникает, когда два или более объектов удерживают друг друга сильными ссылками, и счётчики не обнуляются. Такое «замыкание» блокирует освобождение памяти. Чтобы избежать, используют слабые (weak) или безвладельческие (unowned) ссылки для «обрыва» цикла.
В чём разница между weak и unowned? Где предпочтительнее использовать unowned?
weak хранит ссылку, которая автоматически обнуляется, когда объект деинициализируется, и требует опционального типа. unowned — неконтролируемая ссылка, не обнуляется и объявляется не-опциональным. unowned используют, когда зависимый объект гарантированно живет дольше или так же долго, как и владелец.
Как реализовать нативный WebSocket-клиент без использования SignalR?
В iOS 13+ используют URLSessionWebSocketTask из URLSession. Создают задачу с URL ws://..., вызывают resume(), затем запускают циклические receive и send для обмена сообщениями.
Расскажите о паттернах MVP и MVVM.
MVP разделяет представление (View) и логику (Presenter), где Presenter обновляет View через интерфейс. MVVM добавляет слой ViewModel, связывающий Model и View через биндинги или реактивность (Combine), избавляя контроллер от логики и уменьшая тесную связанность.
Какой минимальный таргет iOS используется для SwiftUI?
SwiftUI появился в iOS 13, поэтому минимальный таргет для использования базовых возможностей — iOS 13. Некоторые новые фичи SwiftUI требуют iOS 14, 15 или 16, но для базового UI достаточно iOS 13.
Как оптимизировать потребление памяти при загрузке изображений?
В какой коллекции поиск происходит быстрее?
Какие есть уровни приоритетов (QoS)?
Какие проблемы многопоточности встречаются на iOS?
Какие существуют способы сохранения данных в iOS?
Рейтинг:
2
Сложность:
6
Для экономии памяти при загрузке изображений используют ленивую загрузку (lazy loading), масштабирование под размер экрана (downsampling), кеширование через NSCache или сторонние библиотеки и освобождение неиспользуемых ресурсов. При этом важно загружать изображения в фоновых потоках и отображать их уже готовыми.
Рейтинг:
2
Сложность:
6
В Set и Dictionary поиск работает быстрее, чем в Array. Это связано с использованием хеширования, которое позволяет найти элементы за константное время.
Рейтинг:
2
Сложность:
7
Основные уровни:
.userInteractive
.userInitiated
.default
.utility
.background
.unspecified
Рейтинг:
3
Сложность:
6
Типичные проблемы:
Состояние гонки
Взаимные блокировки
Неправильный доступ к UI
Утечки памяти из-за циклов удержания
Рейтинг:
2
Сложность:
6
Основные способы:
UserDefaults
FileManager
Keychain
Core Data
SQLite
Codable + JSON
Рейтинг:
2
Сложность:
6
Рейтинг:
2
Сложность:
7
Рейтинг:
2
Сложность:
7
Рейтинг:
2
Сложность:
8
Рейтинг:
2
Сложность:
7