Подготовка к собеседованию
iOS-разработчик: вопросы и ответы на собеседовании
Вопросы по Swift, UIKit, SwiftUI, памяти, concurrency и архитектуре iOS-приложений.
Swift
3 вопросовЧем struct отличается от class в Swift?junior
Struct — value type и копируется при присваивании, class — reference type и имеет identity. Выбирают struct для данных без общей изменяемой ссылки, class — когда нужна идентичность или наследование.
Что такое optional?junior
Optional выражает наличие или отсутствие значения. Его безопасно раскрывают через if let, guard let, map или nil-coalescing, а принудительное раскрытие оставляют для доказанных инвариантов.
Что такое protocol-oriented programming?middle
Поведение описывают протоколами и расширениями, а конкретные типы реализуют только нужные требования. Это уменьшает связанность и часто лучше глубокой иерархии наследования.
UIKit и SwiftUI
3 вопросовКак SwiftUI обновляет экран?junior
View — легковесное описание UI. При изменении состояния SwiftUI вычисляет новое описание и применяет минимальные изменения к реальному представлению.
Что такое Auto Layout priority?middle
Priority определяет, какие ограничения важнее при конфликте. Content hugging не даёт элементу растягиваться, compression resistance не даёт ему сжиматься.
Как управлять состоянием в SwiftUI?middle
@State хранит локальное значение, @Binding передаёт двустороннюю связь, а ObservableObject или Observation делятся состоянием между экранами. Владельца состояния выбирают по жизненному циклу.
Память и concurrency
4 вопросовКак работает ARC?middle
ARC автоматически увеличивает и уменьшает счётчик сильных ссылок. Циклические ссылки нужно разрывать weak или unowned, выбирая unowned только при гарантированно более короткой жизни объекта.
Как обновлять UI из фоновой задачи?middle
Долгие операции выполняют вне main actor или main queue, а изменения UI возвращают на главный поток. Structured concurrency помогает отменять задачи вместе с жизненным циклом экрана.
Что такое retain cycle?junior
Это цикл сильных ссылок, из-за которого объекты не освобождаются ARC. Делегаты и замыкания часто требуют weak-ссылки, если не должны владеть объектом.
Как обрабатывать отмену async-задачи?middle
Проверяют Task.isCancelled или try Task.checkCancellation и освобождают ресурсы в defer. Отмена должна быть частью штатного сценария ухода пользователя со страницы.
Как использовать этот список
Сначала ответьте своими словами, затем раскройте пояснение. Отдельно подготовьте примеры из проектов: на собеседовании важно не только знать определение, но и объяснить, где вы применяли подход на практике.
Посмотреть другие профессии →