Design Saved Places

Easy25 min
1 / 30
understanding8 min read

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.

PhaseunderstandingSectionsec-01
Mechanismcanonical 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.

javaOne Dark Pro
1public record SavedPlaceId(String value) { static SavedPlaceId parse(String raw) { return new SavedPlaceId(raw); } }
pythonOne Dark Pro
1PlaceId = NewType("PlaceId", str)
2
3def merge_places(local: list[Place], remote: list[Place]) -> list[Place]:
4 """canonical place_id + user overlay merge for sec-01."""
5 return remote
typescriptOne Dark Pro
1export type PlaceId = string & { readonly brand: unique symbol };
2export 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
Interviewer signal
sec-01: Mention canonical place_id + user overlay with numbers (list_p95 45ms).
Common mistake
sec-01: Treating saved places like a high-QPS write system—reads dominate 40:1.
Pro tip
sec-01: Draw Home/Work slot uniqueness before microservices boxes.

Section Rescue Kit

Buzzwords to use:

provider_place_idcanonical

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."
Design Saved Places - System Design | WinJob | WinJob