Какая идеальная архитектура
Что проверяют
Вопрос с подвохом: идеальной архитектуры нет, и интервьюер ждёт, что вы это скажете и сразу назовёте критерии выбора. Следом обычно просят рассказать, на чём построен ваш текущий проект и что бы вы в нём поменяли.
Как отвечать
Начните с того, что архитектуру выбирают под условия: размер команды, срок жизни продукта, требования к тестам, UIKit или SwiftUI. Затем пройдитесь по вариантам с их ценой:
- MVC: стандарт UIKit. Быстро стартует, но на живом проекте
UIViewControllerобрастает сетью, валидацией и навигацией и превращается в Massive View Controller; - MVVM: логика экрана уходит во ViewModel, которая не импортирует UIKit и покрывается обычными юнит-тестами. Привязка через Combine, замыкания или
@Observableиз фреймворка Observation (iOS 17+). Для SwiftUI это самый естественный вариант; - VIPER и Clean Swift (VIP): жёсткое разделение ролей и протоколы между слоями. Окупается в большой команде с десятками похожих экранов, в маленьком приложении даёт пять файлов на экран;
- TCA (The Composable Architecture): однонаправленный поток из состояния, действий и редьюсера. Отлично тестируется, но это сторонняя библиотека со своим порогом входа.
Дальше скажите, что важнее выбора буквы: зависимости через протоколы и внедрение через инициализатор, навигация вынесена из экранов (координаторы в UIKit, NavigationStack с моделью пути в SwiftUI), фичи разложены по модулям Swift Package Manager. Такой код легко тестировать и развивать при любом паттерне.
Закончите своим примером: что выбрали, почему, что получилось и где упёрлись.
Где спотыкаются
Называют один паттерн идеальным. Это выглядит как отсутствие опыта сопровождения: у каждого подхода есть проекты, где он лишний.
Перечисляют SOLID, Singleton, Factory и Observer как архитектуру. Это принципы и приёмы проектирования, они живут внутри любой архитектуры, а синглтоны часто сами мешают тестам.
Не могут объяснить, как в выбранной схеме устроены навигация и передача зависимостей. Именно на этом обычно и выясняется, работали ли вы с ней на самом деле.