Swift — Вопросы для собеседований
Акторы и гонки данных
Изоляция акторов и реентерабельность, `Sendable`, `@MainActor` и глобальные акторы, и правила строгой конкурентности Swift 6 / 6.2, превращающие гонки данных в ошибки компиляции.
12 вопросов
Жизненный цикл и система
Состояния приложения и последовательность запуска, фоновое выполнение и push, диплинки и App Group'ы, разрешения, локализация и доступность.
11 вопросов
Архитектура
MVC, MVVM, VIPER/Clean и однонаправленный поток; паттерны Coordinator и Repository, внедрение зависимостей, SOLID и разбиение приложения на пакеты.
14 вопросов
Async/await и структурированная конкурентность
Как `await` приостанавливает без блокировки, структурированные и неструктурированные задачи, task group'ы, кооперативная отмена, continuation'ы и async-последовательности.
13 вопросов
Auto Layout и отрисовка
Intrinsic content size и приоритеты ограничений, отладка конфликтов constraint'ов, саморазмерящиеся ячейки и что ломает отрисовку при прокрутке (offscreen-проходы).
9 вопросов
Замыкания и функции
Замыкания и семантика захвата — escaping против non-escaping, списки захвата, `@autoclosure`, функции высшего порядка, `inout` и result builder'ы.
12 вопросов
Combine
Реактивный фреймворк Apple — publisher'ы, подписчики, операторы и связывание во MVVM.
13 вопросов
Многопоточность и GCD
Dispatch-очереди, QoS, взаимоблокировки, барьеры, группы и семафоры, `Operation` и гонки данных, которые эти средства призваны предотвращать.
13 вопросов
Обработка ошибок
Выбор между `throws`, `Result` и optional'ами; варианты `try`, `rethrows`, типизированные throws и проектирование типов ошибок, пригодных для UI.
8 вопросов
Память и ARC
Как ARC освобождает объекты, как возникают циклы удержания и как их разрывают через `weak`/`unowned`, и как искать утечку инструментами анализа памяти.
12 вопросов
Сетевой слой
Задачи `URLSession` и кэширование, декодирование `Codable`, обновление токена и пиннинг сертификата, повтор с backoff и выбор транспорта для живого экрана.
12 вопросов
Производительность
Профилирование через Instruments, время запуска и hitch'и, стоимость декодирования изображений, размер бинарника, санитайзеры и отсечение регрессий в CI.
13 вопросов
Хранение данных
Выбор между UserDefaults, файлами, Keychain, Core Data и SwiftData; стек Core Data, его правила многопоточности и миграции, и защита данных на диске.
14 вопросов
Обёртки свойств и макросы
Во что компилируется обёртка свойства, наблюдатели свойств и `lazy`, KeyPath и чем макрос Swift вроде `@Observable` отличается от обёртки.
10 вопросов
Протоколы и дженерики
Протокол-ориентированное программирование, associated type, ограничения дженериков, `some` против `any` и как диспетчеризуются требования протоколов.
13 вопросов
Основы Swift
Optional'ы, `let`/`var`, перечисления, коллекции, `guard`/`defer` и сопоставление с образцом — языковой фундамент, с которого начинается любое iOS-собеседование.
13 вопросов
SwiftUI
Декларативный UI-фреймворк — состояние, связывания и композиция представлений.
18 вопросов
Систем-дизайн iOS
Проектирование iOS-модулей и библиотек — многопоточность, офлайн-режим, сеть и расширяемость.
16 вопросов
Тестирование
Что проверяет модульный тест, тестовые двойники, тестирование async- и actor-изолированного кода, фреймворк Swift Testing, снапшоты и о чём умалчивает покрытие.
10 вопросов
Инструменты и релиз
Менеджеры зависимостей и XCFramework, подпись кода и provisioning, `.xcconfig` и секреты, символикация крашей, выбор линковки и безопасный выпуск.
9 вопросов
Основы UIKit
Жизненный цикл view controller, `frame` против `bounds`, переиспользование ячеек, цепочка ответчиков и hit-testing, `CALayer` и распознаватели жестов.
12 вопросов
Значимые и ссылочные типы
Чем значимая семантика struct отличается от ссылочной семантики class во время выполнения — копирование, мутация, идентичность, copy-on-write и где живёт каждый тип.
11 вопросов