Какая архитектура используется на текущем месте работы
Что проверяют
Реальный опыт, а не перечень аббревиатур. Интервьюер смотрит, может ли кандидат описать движение данных на конкретном экране своего проекта, назвать компромиссы и сказать, что бы он изменил.
Как отвечать
Структура ответа: назвать схему, показать поток данных на одном экране, объяснить причину выбора, честно перечислить минусы.
Про какие варианты обычно идёт речь:
- MVVM с координатором:
ViewModelготовит состояние дляView, координатор владеет навигацией и убирает переходы из вью-контроллеров. Рабочая база для UIKit-проектов. - Clean Architecture слоями: presentation, domain (сущности и юзкейсы), data (репозитории, сеть, кэш). Даёт независимость домена от фреймворков, платится количеством файлов и церемонией на простых экранах.
- VIPER: разнесение ответственности до предела, оправдано в больших командах с жёсткими границами, на маленьком экране превращается в пять файлов ради одной кнопки.
- TCA и вообще однонаправленный поток: состояние, экшены, редьюсер, эффекты. Отлично тестируется и воспроизводится, но добавляет внешнюю зависимость и заметную кривую обучения.
- SwiftUI без отдельного слоя ViewModel:
@Observable(iOS 17 и новее) вместоObservableObject, состояние живёт в модели и во вью. Осмысленно там, гдеViewModelне добавляет ничего, кроме прослойки.
Конкретика, которая отличает практика от теоретика:
- где живёт навигация: координаторы,
NavigationStackс типизированным путём, роутер; - как устроен слой данных: репозиторий поверх сети и кэша,
async/awaitили Combine, откуда берётся офлайн; - внедрение зависимостей: контейнер, инициализаторы,
Environmentв SwiftUI; - модуляризация: пакеты SPM по фичам, что это дало времени сборки;
- что покрыто тестами: юниты на юзкейсы, снапшоты, моки протоколов вместо синглтонов;
- миграция: часть экранов на UIKit, новые на SwiftUI, как они сосуществуют через
UIHostingController.
Хорошо закончить оценкой: что схема дала (тестируемость, параллельная работа нескольких человек, скорость сборки), где мешает (бойлерплейт на простом экране), и что сделали бы иначе на новом проекте.
Где спотыкаются
Пересказывают определение MVVM из статьи, а на уточнение «где у вас навигация и как тестируется ViewModel» отвечают общими словами. Второй провал: называют Clean Architecture, а описывают вью-контроллер на тысячу строк с сетевыми вызовами внутри.