I've been through interview loops at Amazon, Google, and startups. After trying every resource out there, here's what I actually use now.
For DSA: Pattern-based, not random
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
How to know which pattern to use
| 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.
For System Design: Fixed structure, every time
Most people watch 2-hour YouTube videos and forget everything the next day. What works is following the same steps every time:
- Clarify scope (3 min) — top 3 requirements only
- Core entities (2 min) — nouns from the problem
- API design (3 min) — one endpoint per requirement
- Build incrementally (20 min) — start with 3 boxes, add complexity only when forced
- Deep dives (15 min) — Bad → Good → Great for 2-3 hard parts
The key: don't dump a 15-service architecture in the first 5 minutes. Start simple, add one piece at a time, explain WHY.
The patterns that repeat across every design
| 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.
What I use
I've been documenting everything as I study:
- DSA: 150 problems mapped by pattern with one-line approach + complexity. Quick-Fire 50 for 1-week prep, The 75 for 4-week, The 150 for full coverage.
- System Design: 20 designs (Uber, WhatsApp, Netflix, Zerodha, Zomato, etc) built incrementally with diagrams and deep dives.
- Company-specific: Problems tagged by company (Amazon, Google, PhonePe, Flipkart) so you know exactly what they ask.
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.


