Short answer: it is not a real choice. LeetCode builds pattern recognition; mock interviews build the performance skill you are actually graded on. If you have to pick where your next 10 hours go, and you already have 100+ problems behind you, put them into mock interviews. The evidence on technical interviews points to the same conclusion we see running mock sessions all day: candidates rarely fail because they never saw the pattern. They fail because they froze, went silent, or could not explain their thinking out loud under a clock.
This article breaks down what each method trains, what the research says about interview performance, where LeetCode volume stops paying off, and a concrete weekly plan that combines both.
What each method actually trains
These are different skills, and conflating them is the most common prep mistake we see.
LeetCode grinding trains recall and pattern fluency. After enough reps you see a "count the ways to tile a board" prompt and immediately reach for dynamic programming, the way "Domino and Tromino Tiling" wants a 1D DP with a recurrence on n. You learn that "Find Duplicate Subtrees" is a serialize-plus-hash-table problem, and that "Minimum Amount of Time to Fill Cups" is a greedy problem hiding behind a story. This is genuinely valuable. Pattern libraries live in your head only after you build them by hand.
Mock interviews train delivery. That means talking through a brute force before you optimize, negotiating the approach with an interviewer, writing code while narrating, catching your own bugs, and handling the "what if the input is 10 million rows" follow-up without unraveling. None of that happens when you solve alone in a quiet room with the editor autocompleting for you.
Here is the trap: solving a problem privately and passing an interview on that same problem are not the same event. You can have "Integer to English Words" fully solved in your notes and still crater on it live, because the hard part in the room is managing the edge cases (zeros, hundreds, the "and" placement) while a stranger watches and time drains.
What the research says
The most cited finding here comes from a 2020 study by researchers at North Carolina State University and Microsoft, presented at the ACM ESEC/FSE conference. They put developers through technical interviews and found that traditional whiteboard-style interviews, where a candidate solves a problem while being watched, largely measure interview anxiety and performance stress rather than raw coding ability. Candidates who solved the same problems privately performed substantially better than those doing it under observation. ScienceDaily summarized the takeaway bluntly: tech interviews often assess anxiety, not software skills.
The practical implication is not "interviews are broken so ignore them." It is that the observed, think-out-loud condition is a trainable skill of its own, and the only way to train it is to reproduce it. Mock interviews are the reproduction. Grinding problems alone actively rehearses the wrong condition (silent, unobserved, untimed).
Cognitive science backs the format from a second angle. Decades of work on retrieval practice and spaced repetition show that the act of recalling and applying a skill under realistic conditions, spaced over time, produces far more durable learning than passive review or cramming. A mock interview is high-intensity retrieval practice: you have to produce the solution and the explanation from memory, on demand. That is closer to the exam than re-reading an editorial ever gets you.
The diminishing returns of LeetCode volume
LeetCode now hosts well over 3,000 problems, and the number keeps climbing. Nobody finishes it, and finishing it is not the goal. The "solve 500 problems" advice is mostly survivorship bias.
We think in terms of coverage, not count. Roughly 15 to 20 core patterns (two pointers, sliding window, BFS/DFS, binary search on the answer, backtracking, top-k with a heap, union-find, 1D and 2D DP, monotonic stack, prefix sums, and a handful more) cover the large majority of what companies ask. Once you can recognize and implement each of those on demand, additional problems in the same pattern add very little. Your 200th array problem teaches you less than your first mock interview on an array problem you have never seen.
A rough model of where your hours pay off:
| Stage | Highest-value activity | Why |
|---|---|---|
| 0 to ~80 problems | LeetCode, breadth across patterns | You are building the pattern library from scratch |
| ~80 to ~150 problems | LeetCode + first mocks | Patterns mostly known; start pressure-testing delivery |
| 150+ problems | Mostly mocks, targeted LeetCode | Gaps are now performance and communication, not knowledge |
The exception is difficulty. If you are targeting a bar-raising loop, staff-level graph and DP problems like "Find Critical and Pseudo-Critical Edges in Minimum Spanning Tree" or "Number of Ways to Stay in the Same Place After Some Steps" genuinely require more solo reps, because the ideas themselves are hard. Even then, do the mock afterward. Solving a hard problem and explaining a hard problem are different muscles.
A hybrid plan that works
Here is the split we recommend for a candidate about six weeks out, assuming roughly 10 hours a week.
Weeks 1 to 2: build the library (80% LeetCode, 20% mock). Work one pattern per session. Do 3 to 5 problems in a pattern, then immediately do one timed mock on a fresh problem in that same pattern so the knowledge gets tested, not just filed. Use company-tagged sets so you are practicing what your target actually asks; our company breakdowns show the pattern mix per employer, and you can filter by pattern on the concepts pages.
Weeks 3 to 4: shift the ratio (50/50). Now alternate. One day of targeted LeetCode on weak patterns (if your dynamic programming recall is shaky, that is the day for "Domino and Tromino Tiling" and "Maximum Number of Consecutive Values You Can Make"). Next day, a full 45-minute mock with think-aloud, from problem statement to complexity analysis.
Weeks 5 to 6: simulate the loop (30% LeetCode, 70% mock). Do mocks at the time of day your real interview is scheduled. Include the parts people skip: the two-minute intro, clarifying questions, and at least one follow-up per problem. Keep a small LeetCode warm-up (one easy or medium) before each mock to get your hands moving.
The point of the ratio shift is simple: your bottleneck moves. Early on it is knowledge, later it is nerves and articulation.
How to run mock interviews that count
A bad mock is just LeetCode with extra steps. A good one is uncomfortable on purpose.
- Narrate everything. If you go silent for 30 seconds, that is the exact failure mode the anxiety research describes. Practice keeping a running commentary even while stuck.
- State a brute force first, then optimize. Interviewers score the journey. Jumping straight to the optimal on "Minimum Moves to Spread Stones Over Grid" and getting it wrong reads worse than walking up from a clear brute-force baseline.
- Get feedback on communication, not just correctness. Did you explain the time complexity? Did you test your own code? Did you handle the follow-up? An AI interviewer that pushes back and asks follow-ups is the cheapest way to get reps here; you can run timed mock sessions on the same problems companies ask.
- Debrief in writing. After each mock, note the one thing that hurt your signal. Silence? Sloppy edge cases? Bad time management? Fix that specific thing next session.
Do this and the "vs" in the title dissolves. LeetCode loads the ammunition; mock interviews teach you to aim under fire.
FAQ
How many LeetCode problems should I do before starting mock interviews?
Around 50 to 80, enough to have seen the core patterns at least once. Do not wait until you feel "ready," because feeling ready in a quiet room is exactly the false confidence mock interviews are meant to break. Start mocks early and let them expose gaps.
Are mock interviews useful if I still fail the coding part?
Yes, arguably more so. A failed mock tells you precisely where you break down (silence, panic, missed edge cases, poor time management) while it still costs you nothing. That diagnostic is the entire value; a passed mock you found easy taught you less.
Is grinding LeetCode a waste of time then?
No. You cannot mock-interview your way to pattern knowledge you never built. LeetCode is how the patterns get into your head. The mistake is treating volume as the finish line instead of a means to coverage, then never pressure-testing that knowledge live.
Do AI mock interviews actually help versus practicing with a friend?
They help with availability and consistency: you can run one at 11pm, on the exact problem set your target company favors, with follow-ups every time. A strong human interviewer is still excellent, but most people cannot schedule five of those a week. Use AI for volume and a human for occasional calibration.
Sources
- Tech sector job interviews assess anxiety, not software skills (ScienceDaily)
- Does stress impact technical interview performance? (ACM ESEC/FSE 2020)
- Retrieval and Spaced Practice: Study Strategies That Must Be Combined (Evidence Based Education)
- How many LeetCode problems are sufficient? (DesignGurus)