Чем @StateObject отличается от @ObservedObject на практике?
Суть (API до iOS 17, ObservableObject)
@StateObject создаёт объект один раз на время жизни view и хранит его в SwiftUI-хранилище, поэтому он переживает любые пересчёты body родителя. @ObservedObject только подписывает view на объект, который кто-то передал; если создать его в самой view, то каждый раз, когда родитель пересобирает эту view, объект создаётся заново и состояние теряется.
Правило: кто владеет — @StateObject; кому передали — @ObservedObject.
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep