Что делает @Published?
Суть
@Published — property wrapper, который к свойству класса добавляет Publisher: $property имеет тип Published<Value>.Publisher с Failure == Never. Он эмитит новое значение на willSet — то есть до того, как свойство реально изменилось. Работает в любом классе (в struct нельзя: обёртка держит внутренний publisher по ссылке), а не только в ObservableObject. ObservableObject лишь добавляет сверху синтез objectWillChange: компилятор пробрасывает в него события всех @Published-свойств, и SwiftUI на это перерисовывает view.
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep