What are KVC and KVO?
KVC — Key-Value Coding
Accessing properties by a string key: [obj valueForKey:@"name"], setValue:forKey:, key paths valueForKeyPath:@"address.city". The runtime looks for an accessor name/isName/setName:, and if there is none and accessInstanceVariablesDirectly = YES — the ivar _name/name. Scalars are wrapped in NSNumber/NSValue automatically. Collection operators: @"items.@sum.price", @count, @max, @distinctUnionOfObjects. Core Data, AppKit bindings and NSPredicate/NSSortDescriptor are built on KVC.
The rest of this answer, with code and interview follow-ups, is in the DevPrep app.
Read the full answer in DevPrep