When I started preparing for technical interviews, it was challenging to figure out where to start. I created a routine that helped me stay organized and true to myself as I learned how to pass one. I’m going to share with you how I prepared for and passed technical interviews with multiple companies including Facebook, Microsoft, Oracle, Disney and Uber!
Note: All the positions I’ve interviewed for have been for a Software Engineering position.
Cracking the Coding Interview by Gayle Laakmann McDowell
When I first looked at this book, I was intimidated to open it. When I finally opened it and looked at all the topics it covers, I felt discouraged because I didn’t know any of them. Well, at least I knew one thing – I had a lot to learn. I decided to take it step by step to avoid feeling overwhelmed by the size of the book or all skills I needed to learn.
I started by focusing on the data structures chapters (1 – 4). I placed sticky notes to separate the pages by data structure. The first data structure the book goes over is a hash table (page 88). So, I read about hash tables and took notes. Then, to make sure I fully understood what a hash table was, I went on to leetcode.
Leetcode
Leetcode is an online platform to help you practice and prepare for technical interviews. I would filter the problems by the topic I just read about to put it into practice. You can filter problems on leetcode by clicking the Tags dropdown and searching a topic.
You can also filter by difficulty, which can be useful if you’re barely starting out – like I was. You can also do mock interviews, discuss problems with others and so much more. People ask me if I “grinded leetcode” or “solved every single problem on leetcode” and the answer is no. I only did as many problems as I needed to fully understand what I was reading in the CCI book. You do not need to do every single problem on leetcode to pass a technical interview and memorizing the solutions won’t help. If you look up the solution to a problem on leetcode, focus on how the problem was solved and why was it solved like that. Then, try it yourself! I was once told by a Microsoft engineer that there is no secret to passing a technical interview – it’s all about practice and mental horsepower.
I kept a notebook for when I studied for technical interviews. I filled it with notes from the CCI book and problems I would solve on leetcode, which later on helped me to go back and review.
Take it step by step
The most important thing I hope you’re getting out of this is to not be intimidated by the size of the Cracking the Coding Interview book or the number of problems on Leetcode. I can tell you right now, I didn’t read the entire book and I’ve only solved about 15% of the problems on leetcode. The most important thing you need to focus on is learning. Pick up the book, look at the table of contents, highlight what you don’t know and what you plan to learn. Throw in some sticky notes to break it into steps. Don’t move forward to the next topic until you fully understand the previous one. Be honest with yourself about what you don’t know. When I first picked up the Cracking the Coding Interview book, I didn’t know squat about data structures – and that’s okay! The important thing is that I picked up the book and I was ready to learn everything I didn’t know to get my dream job.
There is no other secret to passing a technical interview than simply knowing these topics. But don’t rush, take it step by step, practice a data structure a day. Make sure you understand and can implement them. Then, move on to algorithms and put your knowledge to practice – mix learning with doing.
From my experience, these are the most important topics to know and study for a technical interview.
- Data Structures (CCI chapters 1-4)
- Arrays & Strings
- Stacks & Queues
- Linked Lists
- Trees & Graphs
- Hash Tables
- Algorithms (CCI chapters 9 & 11)
- Recursion
- Sorting & Searching
- Bubble sort
- Selection sort
- Merge sort
- Quick sort
- Binary search
- Complexity
- Time complexity
- Space complexity
- Testing (CCI chapter 12)
- Use cases
- Expected output
I have the 5th version of the CCI book, but any version works. I also filled my study notebook with sticky notes to be able to go back and review, I still look over it today.
By the time I got an interview at Facebook, all I did was review my technical interview notebook. Looking back at it, I found a note I wrote to myself, “After many rejections… you’re prepared,” which takes me to my next tip.
Interview as much as possible
Whether it’s a mock interview or a real interview. The more you interview, just like anything else, the better you become at it. Every interview you walk out of, whether you got the job or not, is shaping you into the person you want to become. I failed many technical interviews before I passed my first one. But, the amount of failed interviews never discouraged me because they only taught me what I needed to improve on for the next one. I believe that there is no failure, only feedback. So, at the end of every interview, I would ask for feedback.
We all need people who will give us feedback. That’s how we improve.
Bill Gates
That’s how I prepared for and what helped me pass technical interviews with major tech companies. I didn’t pass my first interview or learn all the skills in one day. It took time, practice and many failures. Keep in mind that failing is part of the journey and each failure is an opportunity to grow.
I also get many questions about what to do in the interview and I will share a list of key things to always do during your technical interview in my next blog. Be sure to subscribe so you don’t miss it!