The probe
Two-sided marketplace matching with asymmetric information (you don’t know who liked you until you match). The interesting system design problem is the “like” storage — when user A likes user B, how do you efficiently detect that B has also liked A (a mutual match)?
Step 1 — Data Model
profiles: user_id, age, gender, location (geohash), photos[], bio, preferences{...} likes: liker_id, liked_id, created_at
UNIQUE INDEX: (liker_id, liked_id)
matches: match_id, user_id_1, user_id_2, created_at
52 FAANG Question Vault — $299 one-time (or $249 for paid subscribers)
All 52 walkthroughs + 52 drill cards + 6 framework cheatsheets + the Senior+ System Design Playbook. Everything, immediately. Lifetime access with all future updates included. → [VAULT CHECKOUT LINK]
Step 2 — Match detection
When user A likes user B:
INSERT INTO likes (liker_id, liked_id) VALUES (A, B);
-- Check if B already liked A
SELECT 1 FROM likes WHERE liker_id=B AND liked_id=A LIMIT 1;
-- If found: create a match record and notify both users
INSERT INTO matches (user_id_1, user_id_2) VALUES (LEAST(A,B), GREATEST(A,B));
At scale: the mutual-like check is a hot query path. Cache it in Redis: SET likes:{B}:{A} 1 on every like. Match detection = GET likes:{B}:{A} — O(1), < 1ms.

