Что такое faulting и ленивая загрузка в Core Data?
Суть
Fault — объект-заглушка: NSManagedObject, у которого известен objectID и тип, но свойства ещё не загружены из хранилища. Fetch возвращает именно фолты (если не выставлен returnsObjectsAsFaults = false), а при первом обращении к атрибуту фолт «срабатывает» (fires): Core Data делает запрос к store (или берёт данные из row cache координатора) и заполняет объект. Связи тоже представлены фолтами: to-one — фолт на объект, to-many — фолт на Set.
Это и есть ленивая загрузка в Core Data: память расходуется только на то, к чему реально обратились.
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep