I've been through interview loops at Amazon, Google, and startups. After trying every resource out there, here's what I actually use now.
The biggest mistake I made early on was solving random problems. 500 problems solved, still freezing in interviews because I couldn't recognize patterns fast enough.
What fixed it: grouping problems by pattern and solving 5-6 per pattern before moving to the next.
The order that worked for me:
Week 1-2: Two Pointers, Sliding Window, HashMap/Frequency
Week 3-4: BFS, DFS, Topological Sort
Week 5-6: Binary Search (on answer space), DP (linear + 2D)
Week 7-8: Monotonic Stack, Heap, Backtracking
| You see this in the problem | Use this |
|---|---|
| "shortest path", "minimum steps" | BFS |
| "all possibilities", "generate all" | Backtracking |
| "substring with constraint" | Sliding Window |
| "sorted array + find target" | Binary Search |
| "min/max cost", "number of ways" | DP |
| "dependencies", "ordering" | Topological Sort |
| "next greater element" | Monotonic Stack |
Once you internalize this table, you recognize patterns within 30 seconds of reading a new problem.
Most people watch 2-hour YouTube videos and forget everything the next day. What works is following the same steps every time:
The key: don't dump a 15-service architecture in the first 5 minutes. Start simple, add one piece at a time, explain WHY.
| Pattern | Shows up in |
|---|---|
| Fan-out (write vs read) | Twitter, Instagram, Notifications |
| Pub-Sub / Event-driven | Chat, Payments, Notifications |
| CQRS + Event Sourcing | Stock Broker, Digital Wallet |
| Saga Pattern | Wallet, Food Delivery |
| Consistent Hashing | Key-Value Store, CDN |
| Rate Limiting | Any public-facing API |
| CDC (Change Data Capture) | Search sync, analytics |
Every "new" system design question is just 2-3 of these patterns combined.
I've been documenting everything as I study:
All free at systemcraft.in. No signup needed, no paywall. Built it because I couldn't find one place that covered both DSA patterns and system design in interview-ready format.
What does your prep process look like? Pattern-based or random grinding? Curious to hear what works for others.