Какие основные архитектурные принципы важны при написании комплексного кода
Что проверяют
Вопрос открытый намеренно: смотрят, назовёте ли вы принципы списком из учебника или свяжете их с решениями в своём проекте. Интервьюер ищет умение объяснить цену: что вы упростили и чем за это заплатили. Следом обычно просят пример, когда принцип пришлось нарушить осознанно.
Как отвечать
Стройте ответ вокруг границ, а не вокруг букв SOLID:
- разделение ответственности: у типа одна причина для изменения. Экран не ходит в сеть, не разбирает JSON и не решает, куда навигировать;
- зависимость от абстракций: зависимости приходят в
initпротоколом, а не берутся из синглтона внутри. Это главный рычаг тестируемости, стаб наURLProtocolили фейковый репозиторий подставляются одной строкой; - слои: domain на чистом Swift без
UIKitиSwiftUI, data со своими DTO и мапперами, presentation с состоянием экрана. Зависимости направлены внутрь, domain про интерфейс не знает; - однонаправленный поток данных: состояние одно, вью его отображает, события идут обратно. В SwiftUI это
@Observableиз фреймворка Observation, в UIKit привычный MVVM с байндингом; - модульность: локальные пакеты Swift Package Manager с явными зависимостями, отдельные таргеты на фичи. Приятный побочный эффект: инкрементальная сборка ускоряется, а циклическая связь становится ошибкой компоновки;
- конкурентность как часть архитектуры: строгий режим Swift 6,
@MainActorна слое интерфейса,Sendableна пересечении границ, изоляция состояния в акторах вместо ручных блокировок.
Обязательно скажите про соразмерность. VIPER на трёх экранах это оверинжиниринг, а тонкий контроллер поверх сервисов на большом продукте превращается в кашу. Расскажите, по каким признакам вы понимаете, что пора выносить модуль.
Где спотыкаются
Отвечают определениями SOLID без единого примера из своего кода, и разговор заканчивается на первом «а как это выглядело у вас?».
Держат зависимости в синглтонах. Тесты начинают влиять друг на друга через общее состояние, а подмена реализации требует правок в десятке файлов.
Строят слои ради слоёв: три модели и два маппера на экран со списком, а на вопрос «зачем» отвечают «так правильно».