In this blog post, I will describe my coding interview preparation process and lessons learned. I will also talk about what did not work in my previous prep, what I did this time that is different, and also what could be done better.
In 2021 I had an interview with Apple and did not really prepare much at Coding Interview. I did well enough during system interview but coding interview was quite a disaster.
Then I had another round of interviews in 2022. What I did in 2022 was better than 2021 but was still not enough.
At the 2022 interview rounds, I started studying for Google, Airbnb, Amazon, and Meta interview, and I used these strategies (not all at once):
- Leetcode
- Gather my own learning material
- AlgoMonster
I have tried to start from Leetcode but the questions overwhelmed me so much that I was not able to progress very much. Then I tried to gather my own learning and creating my own learning material. That was less stressful but I moved too slow and could not finish preparation before the interview. So I just cancelled on Google and Airbnb interview. Studying on top of a full-time job was just too much.
After cancelling on Google and Airbnb, I felt kind of discouraged and without much more preparation, I tried the Meta tech screening and know that I would prob bomb. And bomb I did. To this day, I remember the Meta interviewer’s disapproving stare (or he was just too close to the camera).
Not quite ready to give up, I decide to not quit on Amazon interview, which was scheduled the last. I worked very closely with my fabulous recruiter Jesse to prepare for leadership principles (learned so much). And at the coding interview front, I added AlgoMonster, a subscription-based interview prep site. This site provides a nice way to use the ROI of algorithm and focus on the most important algorithms first. In the chart below, the top three patterns are Basic DSA, DFS, and BFS
- Basic DSA – Basic Data Structure and Algorithm
- DFS – Depth First Search
- BFS – Breadth First Search
It does not mean that you don’t need to know about other patterns, but if your time is limited, then it’s recommended to start with patterns with highest ROI.
![](https://shallwelearn.com/wp-content/uploads/2024/07/image-1024x739.png)
Through site like AlgoMonster, I have learned that there is way to crack the Leetcode like coding questions, given enough time and determination. But I find that, though helpful, this site alone is not enough because it does not cover system design and some explanation is not in depth enough. It’s a great place to start but I need more materials. But at least after AlgoMonster, I felt more confident with LeetCode style questions.
The AlgoMonster site helped me feel confident enough to interview with Amazon in 2022 for a L6 position. Before that I almost always chickened out or ran out of time before interview and had to keep postponing and finally cancelled the interview altogether because I felt (and probably was) not ready. I went on to the final rounds of Amazon and was not extended an offer. I did feel that I have done my best but apparently my best was not enough. More adjustments were needed.
Though I later switched job after the failed Amazon interview to another company, but it was through referral, thus I have not had chance to “recalibrate” until 2024.
2024 Coding Interview Prep
This time, I did my research early. I found the material that most interviewees suggested:
- Grokking Grind 75 in Java: Mastery through Coding Patterns
- Grokking System Design Interview
I got both resources through educative, and I had been very satisfied with educative and the resources mentioned above and more. I felt this is the one of the best money I’ve ever spent. The material, the pace, the practice I got through the lesson, are all spectacular.
![](https://shallwelearn.com/wp-content/uploads/2024/07/image-2.png)
When going through the material, I would go through it slowly and not skip over any question or practice. I find the teaching style very easy to absorb. The lesson guide me through algorithm, concept, background, problem analysis, problem pattern, as well as solve-it-yourself section.
It took me about 2 month to go over the material about twice, but if I do it again (for my next move), I would probably give myself 4 month so that I can solve and show clean steps and explain every problem by myself. It does take time but I do enjoy the process. I’ve always like algorithm classes at school and I think studying algorithm and solving problems with patterns helps me become a better problem solver. The key is not to cram and to do it at a healthy pace. My brain thanks me because I did not gobble up the material in a hurry.
While going through the material, I make sure that I go through each problem like a mini-book:
- understand the algorithm pattern
- understand the problem
- understand the solution
- can solve it (after looking at the solution)
- solve it a few days later
- a few weeks later, resolve it
- be able to explain it out loud
- create problem card and be able to come up with the solution pattern by just reading problems
- practice identifying similar problems
I know it sounds like a lot of work (it was), but this is how I was able to move slowly but steadily. Guided by the Grokknig lesson, I started with the simplest, and slowly worked up to the more complex topics like Dynamic Programming (which is super fun once I got the hang of it).
At the interview, though the problems I got were easier than I expect, but because I know I have fully prepared, so I showed up to all coding rounds comfortable, confident, and ready to dive right in and engage in discussion. I would not change my study plan to study any less.
Several improvement I noticed I have made on my coding skills while preparing:
- Learn cleaner syntax (so it’s faster to write and often more effective, such as lambda, stream, etc)
- Able to formulate a solution pattern quickly
- More frequently think of time and space resource, and aim to improve the performance and reduce the resource usage
I also noticed these hurdles
- Got discouraged because sometimes I just seemed to not be able to get certain problems
- Overwhelmed by the amount of material left to digest when the interview is looming
- Lack of motivation (if no interview has been scheduled or they were too far off)
I combat it with these tactics:
- Take frequent breaks and allow my brain to relax, because exercising it again.
- Give myself grace and space. Understand that I am climbing a big mountain. One step at a time and it’s ok to slip a little but I should always move upward and onward, one problem at a time, one hour at a time.
- Create daily study plan and adjust it daily. Plan it to the granularity of problems and hours, especially one month before any interview. I created a spreadsheet that I reviewed and revised each day during my 2-3 month of interview prep. I find this invaluable because it grounds me to a data-driven and fact-driven evidence of progression, so I don’t fret. I also use the same spreadsheet to track when the interviews were, as well as the interview outcome.
All in all, I am so glad that I did not settle on the false perception that I can’t interview and decide to give myself a chance to be like a little kid agains and really learn.
If interested, check out related post: My Job Search 2024 and My Resume 2024