Interview Preparation That Helped Me Get Multiple Offers During the Lockdown
Preparing for interviews can be overwhelming, especially when you have a full-time job alongside. While there are plenty of resources available online to prepare for software engineering interviews, it is hard to decide where to begin, how to cover different aspects of interviewing and know whether you are ready to face the real interview. After almost five years at my first job, I felt it is time for me to embark on a different challenge. When I started preparing for interviews, I got nervous just to see how many questions Leetcode now has in all different categories. Also, coding was not the only thing I had to focus on, there were systems design and domain specific interviews as well. Soon I knew that I needed a better strategy.
I am writing this post with the intention of sharing my experience of preparing for software engineering interviews and the resources that proved to be highly useful and time saving. My approach was to have a checklist so that interview preparation does not feel like a never ending effort. This approach helped me stay focused and get three offers (Netflix, Facebook and Lyft) during the lockdown. I hope it helps some of you to find a dream job as it did to me. This post is most helpful for interviews of mid level software engineering positions (e.g. E5/E4 position at Facebook).
Additionally, I have briefly covered interviewing over VC and my experience of the Netflix interview.
A typical interview process consists of three focus areas — coding, system design and cultural fit. There can be a domain specific interview depending on the job profile.
The significant part of the interview process assesses the candidate based on coding skills. The more you practice, the more confidence you will have to solve a problem during an actual interview. So the question is how to practice the maximum number of problems without actually targeting a number? Well, the key is to solve problems that cover different data structures, algorithms and coding patterns. Here is a way to approach it :
- Covering data structures: Topics from Cracking the Coding Interviews are very helpful here. For each data structure, revisit the concepts that you do not remember, check sample questions and solve a few frequently asked questions from Leetcode. Leetcode offers filtering questions based on a tag and sorting by frequency or difficulty. Start with the data structure that you are most comfortable with and then move to more difficult ones. Depending on how comfortable you are, you can solve 5 to 15 questions per data structure.
- Covering algorithms: This post from Geeksforgeeks is a great resource when it comes to covering different algorithms. With minimal efforts, you can find these questions in Leetcode to practice coding.
- Covering coding patterns: Focus on problems with similar patterns. Leetcode has tags for coding patterns e.g. Two Pointers, Sliding Window, etc. You can also refer to this course from educative.io
Don’t walk away from Leetcode hard questions. Make sure you solve at least a few frequently asked hard questions. Practice the medium level questions the most. It is okay to refer to a given solution if you are stuck for too long. Focus on problem solving, not memorizing the solution.
As per my experience, the difficulty level of coding questions for telephonic round and the final on-site round was very similar.
To practice further, check Top Interview Questions from Leetcode. Slowly you may start identifying coding patterns and be comfortable with solving a problem in limited time. Following this overall strategy, one can easily cover 100 to150 coding questions. This can be a good time to start scheduling the telephonic interviews. Few days before the scheduled interview, focus on frequently asked questions for that particular company. Leetcode lists questions by the company too.
My next task was to update my resume to share it with recruiters or use it for online applications. Deep down in my heart, I hated my old style resume with stacked sections. I came across a Google resume template named ‘Serif’ that I felt was clean, professional and elegant. Resume templates are available on Google Drive for free.
Our 5 Favorite Google Docs Resume Templates
I remember the first time I had to write a resume. I was 16 and applying to a role at American Eagle (yes, I made a…
A couple of thoughts on the content of the resume:
- Stick to a one-page resume.
- When it comes to describing a job role, it is worth to use the right keywords. One way to go about it is, go through the online job listings and shortlist the positions that interest you. Check the description for these positions, find the common keywords and skills. If those apply to you, include them in your job description. Be honest.
As you start scheduling final rounds of interviews, start preparing for distributed system design questions.
- Github Primer lists primitive concepts and topics for system design. It has sample questions and solutions too.
- Grokking the System Design Interview is a great course that includes a glossary of distributed systems basics and design problems. It walks you through the entire thought process of system design and trade-offs between several solutions.
- Youtube has a variety of useful videos as well.
Every company has certain cultural values that are at the core of its operating principles. The cultural fit (or behavioral) round aims to see whether a candidate reflects these values. While approaching this interview, it is essential to understand these values and decide whether you want to be a part of such a culture or not. Find which values resonate with you and how can you best reflect it in your answers. Remember that the interviewer does not know you, so your answers represent what it is like to work with you.
To support my answers with real experiences, I did an exercise. I created a list of the most significant tasks and experiences from my professional life. For each experience, I retrospected what it taught me, what was its significance, what went well, what did not, what I could improve, etc. The list was just a few keywords, not really a story. This preparation helped me answer the questions genuinely. I highly recommend doing such an exercise. Think of the stories of failures too, no one is perfect. Failures teach valuable lessons.
Listen to Reed Hastings in the Podcast talking about the significance of company culture.
Masters of Scale with Reid Hoffman — Netflix’s Reed Hastings in Culture Shock
I believe strong company cultures only emerge when every employee feels they own the culture — and this begins even…
Interview focused on domain knowledge
Depending on the position you are applying for, there can be a domain specific interview. I applied for software engineering positions in Security. Considering my personal experience and the details of a Machine Learning interview from this post on Medium, the domain interviews may focus on theoretical knowledge and product design expertise.
This interview incorporated some primitive concepts in Cryptography like Encryption, HMAC, Digital Signatures, TLS, key types, and discussions around how to develop a platform security product at the scale of a big company — the design considerations, challenges, common solutions and the next generation of solutions.
Interviewing over VC
Given the current situation of COVID-19, on-site interviews are replaced by interviews over video conferencing. One of the biggest advantages of the VC interviews was it helped me save commute time in the bay area and I could schedule four interviews in a week! I would highly emphasize not to get stressed about the online nature of the interviews. Below are a few things to consider
- No commute, as I already mentioned.
- Coding on a document is more convenient than whiteboard coding. It is easy to modify or rearrange the code as needed.
- Make sure you have a reliable internet connection and possibly a quiet corner in your house where you can sit from roughly 10 am to 4 pm (of course, there will be breaks). During the video call, you may blur the background and enable noise cancelation if the platform supports it.
- For system design, if using Jamboard, you can use an iPad with a stylus or Apple pencil. For Google drawings, you can keep some shapes with the title ready for use to save some time. Typically you will be drawing an application block, database, messaging queue, cache, etc.
- If available, consider using two screens. On one screen, you can do the coding or design. On another one, you can pin the video allowing you to see the interviewer. I did not have a second screen at the time, so I feel it’s optional but worth considering.
I managed to secure seven on-site interviews that I scheduled over two weeks. Three of those got canceled because of the hiring freeze and the rest moved to online. While I was lucky to even get interview calls in these unprecedented times, these unknowns added anxiety in the overall picture. Things may not go as per the plan, but make sure you stay focused and give your best!
My experience of interviewing at Netflix
At Netflix, it is up to the hiring team to decide what interview structure suits the position and the team. Many people have asked me about my experience of the interview, thus I have decided to share it here as well. The interview process that I went through was very similar to the one described in this blog post.
I came across a security software engineering position on Netflix’s careers website, which aligned well with what I was looking for. After applying online, the next day I heard from the hiring manager. Getting a chance to interact with the hiring manager at a very early stage helped me understand the team well and ensure that I wanted to pursue this. After initial rounds, I got a call for the final round of interviews (on-site equivalent) over Video Conferencing (since there are no in person interviews given the current situation with COVID-19). Here are a few things I would like to share about the overall process.
- Netflix is well known for its culture and it is highly valued at the company. The interview process has a significant focus to see whether you are a cultural fit, is it something that you value and want to be a part of. While going through the cultural values of different companies, the Netflix Culture Memo is the one that stood out the most for me. Irrespective of whether you are applying for Netflix or not, I highly recommend reading it.
- The interview was team specific. Throughout the process, I interacted with the hiring manager and team members. I got to know about the interesting projects the team was working on, some challenges that are yet to be solved, and what would the experience be like if I eventually work for this very team at Netflix. It is rewarding to get a chance to interact with the team members when you are looking forward to joining the team!
- What team specific interview also meant was, it was catered for me and the questions aligned with my skill set and the overall domain. Though the questions were challenging, they were related to what anyone with this job profile would deal with.
- The overall process was very organic and non-traditional as compared to most of the other interviews I have personally given so far. There were design discussions, domain specific questions and a coding assignment but no whiteboard coding (although this decision depends on the hiring team, it is not a general rule).
Thanks for taking the time to read this post. I hope you find it helpful. Good luck! Listing a few great articles here for additional read.