Whenever you're ready, walk me through how you'd approach this.
Explain the core architectural differences between MVC, MVVM, and VIPER/MVI, and when you would apply each.
Discuss the responsibilities of each component, the direction of dependencies, state ownership, event and data flow, testability, and the trade-offs between simplicity and separation of concerns. Relate your answer to structuring a mobile feature, and include which pattern you would choose for a small feature versus a complex, stateful feature.