Quick Answer
Use LeetCode by learning patterns, not memorising problems. Practise about an hour a day, work through topics in order (arrays, trees, recursion, graphs, dynamic programming), start from a curated list such as Blind 75 or NeetCode 150, read the editorial after an hour stuck, and practise explaining your approach out loud in English, because that is what the interviewer hears.
Start with consistency, not volume
Most people open LeetCode, pick random problems, binge for a weekend and try to memorise solutions. That doesn't build the skill interviews test, which is solving a problem you haven't seen before.
One focused hour a day beats seven hours once a week. Pattern recognition builds slowly, and it only builds while you're actively thinking. If you're tired, stop and come back later.
Focus on the right problems
For general software engineering roles, use the Algorithms problem set as your base. LeetCode also has database, shell and concurrency sets, but they're secondary unless the role asks for them.
Core topics
- Arrays and strings (two pointers, sliding window, hashing)
- Trees (DFS, BFS, recursion)
- Graphs (BFS, DFS, topological sort)
- Binary search
- Dynamic programming
Where to start
A simple setup
- Sort by difficulty: Easy, then Medium, then Hard
- Filter to problems you haven't solved
- Prefer problems with an official editorial
- Skip problems with a poor like-to-dislike ratio; they are often badly written
Skip questions that feel too easy. The goal is to stay challenged, not to tick boxes.
The most important rule: learn the pattern
This is the biggest difference between people who improve and people who don't. Instead of 'I solved Two Sum', think 'this is a hash map lookup'. Instead of 'I solved problem 3', think 'this is a sliding window'.
Key takeaway
If you only remember the problem, it won't help in the interview. If you understand the pattern, you can apply it to a problem you've never seen.
A topic order that builds up
| Week | Topic | Patterns to name out loud |
|---|---|---|
| 1–2 | Arrays and strings | Two pointers, sliding window, prefix sums, hashing |
| 3 | Trees | DFS (pre/in/post-order), BFS by level |
| 4 | Recursion and backtracking | Choose / explore / un-choose |
| 5 | Graphs | BFS for shortest path, DFS for connectivity, topological sort |
| 6+ | Dynamic programming | State, transition, base case; top-down then bottom-up |
| Summary | Adjust the pace to your schedule; the order matters more than the weeks. | |
What to do when you're stuck
You will get stuck, and that's normal. After about an hour without progress, stop pushing blindly. Read the editorial, then the Discuss tab, then another explanation online if you need one.
Then make the solution yours
- Go through it line by line
- Run it by hand on your own small example
- Write down why it works, in one or two sentences
- Re-solve it from scratch two or three days later
Use curated lists before random problems
LeetCode has thousands of problems and you don't need them all. Start with a curated list that covers the main patterns: Blind 75, NeetCode 150 or Grind 75. Move on to random problems once your foundations are solid.
How to improve faster
Three habits that make the biggest difference
- Practise out loud. Explain your thinking while you code, because that's what you'll do in the interview.
- Find the optimal solution. If yours works but isn't optimal, go back and improve it.
- Write the pattern down. After each problem, summarise it in your own words in a notes file.
Once you're comfortable, add time pressure: do the weekly contests and book mock interviews.
Explaining your solution in English
For non-native speakers, the coding is often not the hard part. Many interviews are lost because the candidate goes silent, or because the interviewer can't follow the explanation. Practise a simple spoken structure for every problem.
| Step | What to say |
|---|---|
| Clarify | "Can I assume the input is always sorted?" / "What should I return if the array is empty?" |
| Approach | "My first idea is a brute-force solution in O(n²). Then I'll try to improve it with a hash map." |
| While coding | "Here I'm storing each value's index, so the lookup is constant time." |
| Test | "Let me walk through a small example: [2, 7, 11] with a target of 9." |
| Complexity | "This runs in O(n) time and uses O(n) extra space." |
Interview tip
Record yourself solving one problem a week. Listen back for long silences and sentences you didn't finish.
FAQ
Questions
More questions? Email us at contact@mocklyenglish.com.