Problem Statement: Saved Places & Address Book
Problem Statement: Saved Places & Address Book — saved places interview depth
Problem Statement: Saved Places & Address Book
Uber, Google Maps, and Apple Wallet interviews treat saved places as a read-heavy personalization layer—not a maps CDN clone. Riders pin Home, Work, gym, and airport terminals; couriers reuse drop-off bays; fleet admins maintain depot shortcuts. The hard parts are geocode normalization, deduplicating pins within ~15 meters, multi-device sync with offline edits, and never leaking another user's exact coordinates in APIs.
| Phase | understanding | Section | sec-01 |
|---|---|---|---|
| Mechanism | canonical place_id + user overlay |
Operational metrics
- list_p95 45ms
- writes 800/s peak
- 500M rows
Failure modes to mention aloud
- Duplicate pins after GPS drift—dedup by geohash7 within 15 meters.
- Mobile retry without Idempotency-Key creates twin favorites—return original 200 body.
- Stale etag after cross-device delete—client must accept 200 with new etag header.
Deep dive
When Uber or Google interviewers press on problem statement: saved places & address book, anchor on canonical place_id + user overlay rather than drawing unrelated microservices. Cite list p95 45ms and shard-by-user_id before naming cloud SKUs.
1 public record SavedPlaceId(String value) { static SavedPlaceId parse(String raw) { return new SavedPlaceId(raw); } }
1 PlaceId = NewType("PlaceId", str) 2 3 def merge_places(local: list[Place], remote: list[Place]) -> list[Place]: 4 """canonical place_id + user overlay merge for sec-01.""" 5 return remote
1 export type PlaceId = string & { readonly brand: unique symbol }; 2 export function etagForPlaces(places: readonly SavedPlace[]): string { 3 return places.map((p) => p.version).join(":"); 4 }
Why interviewers care
Saved Places interviews reward crisp scope, explicit trade-offs, and failure stories—not generic microservice diagrams.
Interview checkpoint
Name one failure story for Problem Statement: Saved Places & Address Book that proves you understand real outages, not happy-path diagrams.
Key Highlights
- •canonical place_id + user overlay
- •list_p95 45ms
- •writes 800/s peak
- •500M rows
- •understanding phase checkpoint
Section Rescue Kit
Buzzwords to use:
Safe statements:
- "Let me quantify read:write ratio before picking databases for Problem Statement: Saved Places & Address Book."
- "Places are PII—I'll separate list cache from geocode audit logs."