SwiftUI: вопросы на собеседовании
Вопросы и ответы по SwiftUI: подготовка, примеры и типичные ошибки.
Проверьте себя по SwiftUI: 5 вопросов, ~10 минут
Вопросов: 40. Частые идут первыми, сложные возвращаются на повторение.
- Что такое SwiftUI и чем его декларативный подход отличается от императивного подхода UIKit?Junior· спрашивают почти всегда
- Как работает
NavigationStackв SwiftUI и чем он отличается отNavigationView?Senior· спрашивают почти всегда· полный разбор — Jobs/Boost - Каковы лучшие практики производительности в SwiftUI (избежание лишних re-render)?Senior· спрашивают почти всегда· полный разбор — Jobs/Boost
- В чём разница между
@State,@Binding,@ObservedObjectи@StateObject?Junior· спрашивают почти всегда - Как
async/awaitинтегрируется с представлениями SwiftUI через модификатор.task?Senior· спрашивают почти всегда· полный разбор — Jobs/Boost - Как SwiftUI перерисовывает (re-render) представления и что вызывает обновление view?Senior· спрашивают почти всегда· полный разбор — Jobs/Boost
- Как обрабатывать deep linking и universal links в приложении SwiftUI?Senior· полный разбор — Jobs/Boost
- Что такое
@Environmentи какие встроенные environment values используются чаще всего?Junior - Что такое
@FocusStateи как управлять фокусом клавиатуры в SwiftUI?Junior· полный разбор — Jobs/Boost - Как использовать
GeometryReaderв SwiftUI и каковы его подводные камни?Middle - Что такое протокол
Identifiableи почему он требуется дляForEach?Junior· полный разбор — Jobs/Boost - В чём разница между
ListиLazyVStackв SwiftUI?Junior· полный разбор — Jobs/Boost - Что такое
matchedGeometryEffectи как он используется?Middle - Что такое
NavigationSplitViewи когда его стоит использовать?Middle· полный разбор — Jobs/Boost - Что такое протокол
PreferenceKeyи как он используется для передачи данных вверх по иерархии представлений?Middle· полный разбор — Jobs/Boost - Что такое паттерн
CoordinatorвUIViewRepresentableиUIViewControllerRepresentable?Middle· полный разбор — Jobs/Boost - Как
SwiftDataинтегрируется со SwiftUI (представлен в iOS 17)?Senior· полный разбор — Jobs/Boost - В каких mobile-проектах SwiftUI является сильным выбором, а где лучше выбрать native или другую cross-platform альтернативу?Middle· полный разбор — Jobs/Boost
- Как сравнить SwiftUI с альтернативами по performance, UX, доступу к platform APIs, найму и долгосрочной поддержке?Middle
- Как понять, что проблема в приложении связана с SwiftUI, а не с backend, сетью, дизайном состояния или платформой?Senior· полный разбор — Jobs/Boost
- Представьте, экран на SwiftUI тормозит, теряет состояние или ведёт себя по-разному на разных платформах. Как вы будете искать причину?Senior· полный разбор — Jobs/Boost
- Какие ошибки делают команды, когда строят приложение на SwiftUI как web/backend-проект без учёта mobile constraints?Middle
- Какие архитектурные решения SwiftUI задаёт вокруг UI state, lifecycle, navigation, threading и platform integration?Middle· полный разбор — Jobs/Boost
- Какие production-риски есть у SwiftUI: memory, lifecycle bugs, accessibility, offline mode, app size или platform-specific behavior?Senior· полный разбор — Jobs/Boost
- Как тестировать SwiftUI-представления?Middle
- Как интегрировать UIKit-компоненты в SwiftUI с помощью
UIViewRepresentable?Middle - Как реализовать пользовательский
ViewModifierв SwiftUI?Junior - Что такое
@EnvironmentObjectи когда его следует использовать?Middle· полный разбор — Jobs/Boost - В чём разница между модификаторами
.onAppearи.task?Middle - Как реализовать пользовательские анимации в SwiftUI?Middle· полный разбор — Jobs/Boost
- Расскажите о случае, когда вы решали проблему с SwiftUI: lifecycle, performance, testing, release или platform integration.Middle· полный разбор — Jobs/Boost
- Как обрабатывать формы и валидацию пользовательского ввода в SwiftUI?Middle
- Каковы ограничения SwiftUI по сравнению с UIKit и когда всё ещё стоит выбирать UIKit?Senior· полный разбор — Jobs/Boost
- Как тестировать navigation/deep links и accessibility в SwiftUI?Middle· полный разбор — Jobs/Boost
- Как работают
@Observable/ Observation framework и чем он отличается отObservableObject?Middle - Что такое
ViewBuilderи атрибут@ViewBuilder?Junior· полный разбор — Jobs/Boost - Как реализовать пользовательский layout с помощью протокола
Layoutв SwiftUI?Middle· полный разбор — Jobs/Boost - Как реализовать drag and drop в SwiftUI?Middle· полный разбор — Jobs/Boost
- Что такое
Canvasв SwiftUI и когда его стоит использовать?Middle - Что такое
TipKitи другие новые SwiftUI API, представленные в последних версиях iOS?Middle· полный разбор — Jobs/Boost