Все профессии

Подготовка к собеседованию

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. Отмена должна быть частью штатного сценария ухода пользователя со страницы.

Как использовать этот список

Сначала ответьте своими словами, затем раскройте пояснение. Отдельно подготовьте примеры из проектов: на собеседовании важно не только знать определение, но и объяснить, где вы применяли подход на практике.

Посмотреть другие профессии →