Honest roadmap

Coding interview prep, by company tier.

Most prep guides assume you’re aiming at FAANG. Most students aren’t. Here’s what to actually grind for the tier you’re interviewing at, and what to safely skip.

By tier

Pick your target tier first. Don’t over-prep for FAANG if you don’t want to work at FAANG.

Tier 1, FAANG / quant / Citadel

Hard-mode bar. Plan for 250+ LeetCode + system design + behavioral. 3-4 month grind if starting cold.

Bar

  • 150+ Mediums solved cold (no hints)
  • 30+ Hards seen, 10+ solved
  • System design, 1 mid-level service end-to-end
  • 2-3 STAR stories tied to real impact

Patterns to lock in

Sliding windowTwo pointersBinary searchBFS/DFSGraph traversalTopological sortDynamic programming (knapsack + LIS + LCS)Heap / priority queueTriesUnion-findBacktracking

Tier 2, strong public companies, hot Series B+

Real bar but human. 100-150 LeetCode + 1 design round + behavioral. 2-3 months if starting from intermediate.

Bar

  • 60+ Mediums solved, 20+ Easys re-solved fast
  • 5-10 Hards exposed
  • Light system design, REST + DB + caching
  • 2 STAR stories with metrics

Patterns to lock in

Sliding windowTwo pointersBFS/DFSHash mapsDynamic programming (basic)HeapTrees + graphsSorting variants

Tier 3, startups, mid-market, agencies

More well-rounded. Project work and code-quality round > LeetCode. ~30 LeetCode for warm-up, lots of takehomes.

Bar

  • 30+ Easys + Mediums for warm-up
  • 1-2 takehome projects polished
  • Comfort with Git + reading code
  • 1-2 STAR stories about shipping

Patterns to lock in

Hash mapsTwo pointersBFS/DFS basicsSortingRecursion fundamentals

12-week study plan

For someone starting at intermediate. Compress to 6 weeks if your foundations are strong; stretch to 16 if cold.

Week 1-2

Foundations refresh

Arrays, strings, hash maps, two pointers. Solve 30 Easys to remember syntax + warm muscle memory.

Week 3-4

Trees + graphs

BFS, DFS, level-order, recursion. Solve 25 Mediums. The pattern recognition matters more than the code.

Week 5-6

Dynamic programming

Climbing stairs → coin change → knapsack → LIS → LCS. Hardest week. Plan for slowness.

Week 7-8

Advanced patterns

Tries, union-find, monotonic stack, heap. ~30 Mediums + 5 Hards. By now you can read most LeetCode discussions.

Week 9-10

Mock interviews + system design

Pramp, Interviewing.io, or pair with a friend. Time-box to 45 min. System design once a week.

Week 11-12

Company-specific + behavioral

LeetCode company tags. Practice 2-3 hardest. Polish 4-5 STAR stories. Sleep more.

Things prep guides don’t tell you

Don't grind 500+ problems

After ~150 quality problems with deliberate review, you're getting diminishing returns. Spend the time on system design, mocks, and behavioral instead.

Quality > quantity by a lot

20 problems where you understand WHY > 100 where you copied a solution. Always do the "what did I learn" 1-line note after each problem.

Mock interviews are 80% of the gap

You can solve in your IDE in silence. Can you solve while talking, on a whiteboard / shared editor, with someone watching? That's the actual interview. Mock 10+ times before you interview for real.

System design is mandatory at every tier

Even Tier 3 asks something. Read "Designing Data-Intensive Applications" intro chapters. Watch 5 system design YouTube videos. You need pattern vocabulary, not deep expertise.

Behavioral kills more candidates than code

You might solve the algo and still lose. Write 6 STAR stories: a failure, a conflict, a leadership moment, a technical decision, a customer/user moment, a learning moment. Practice them spoken.

Behavioral > Code at every tier.

SundayApply builds STAR stories tied to your actual resume bullets. Plus per-round interview prep, specific likely questions for the company + role + interviewer level. First 3 free.