Preparing for software engineering interviews can be tiring and stressful, but careful planning made the process much easier for me. Below, I’ve outlined the steps I took to prepare and succeed in my interviews.
When I was going into the mindset of preparing for a new job, I had various criterias I was looking for:
Working for a tech company.
Working on a rewarding project.
Maximizing my salary.
I was also very much interested in Marketplaces (this is probably from my bias working on RTB).
Being someone that was also working full time and had other obligations, I personally wanted interviews that had coding exercises and not take home (build a mini system) interview. In my opinion, leetcode style interviews are more straighfotward and after the ~2hrs interview you are done, and also that knowledge would help you for other interviews, in comparison to take home exams where you might be building systems for 3 different companies with various tech stacks all at the same time.
To help me prepare I came up with a spreadsheet of the companies I was interested in and updated it with the status of each interview.
After narrowing down which companies I was interested in, I started preparing. Leetcode.io was really helpful. I was able to go through different topics, practise and also understand the solutions. One thing I also did that I recommend was get the premium version, it gave me full access to the platform, all questions and topics used by various companies. I was then able to prepare properly.
I also came across neetcode.io which sorts out leetcode questions into different topics. This helped me study better, because I could see what topics I was more comfortable in, and focus more on other topics I wasn’t as comfortable in.
Another thing that also helped was reading the book: cracking the coding interview. I mostly focused on the chapters that talked about time and space complexities as I was a bit rusty on these topics.
For system design, I really enjoy designing systems and also had prior knowledge from designing other platforms e.g RTB and Votali. So, I just picked different platforms e.g Instagram and went through the process of designing these. I also found a very useful Youtube channel.
I started going through more interviews, because nothing prepares you better than being in an actual interview.
In the end I got various offers and tried negotiating to the best of my ability (I’m still learning how to negotiate). But I decided to go with a company that I’m really excited about in terms of what we are building, working with various awesome people and also learning.
Something to note, the programming language you use for technical interview doesn’t matter, especially in big tech companies. Because what interviewers are looking for is just basic understanding of the programming principles and algorithms, once you’re in the company you can always learn new languages and frameworks. In my case, I did all my interviews in Java but right now I work in Ruby.
Prepare appropriately, practise and don't be nervous. You'll probably fail some interviews and not every company would call you back for an interview, but as long as, at the end of the day you get a new and better position, it'll all be worth it. Goodluck with your applications and interviews!!