Skip to main content

Command Palette

Search for a command to run...

Software developer interview preparation guide

Published
10 min read
Software developer interview preparation guide
S

I am a Full-stack developer with cloud infrastructure, analytical software, and operating system development skills. I am passionate about solving real-life problems using technology.

Software engineer interviews are challenging and require lots of preparation. Internet is filled with content that can help with the preparation. But, what should be your strategy for the preparation? What steps you should take if you need to find a new job? What are some tricks to cracking these interviews? These problems are even more prominent when you have limited time to find a new job.

I recently faced a similar challenge. It was even more significant for me because I had to find a new job in a limited time. Every challenge comes with lots of learnings, and this one too. I am sharing all my learnings in this blog to accelerate someone’s interview success and future reference. You never know, haha.

This blog aims to guide you through different challenges faced while preparing for software engineer interviews. References to comprehensive materials and websites are out of the scope of this blog. Stop here and save your time if you are looking for that.

Resume

To land a new job essential part is to receive interview calls. To get interview calls resume plays an important role. After applying for 100s of different jobs, multiple reviews from friends, company’s, and career counselors, I have learned few things:

  1. Select a cleaner resume template. Nowadays, a soft copy of your resume is used, which allows you to use different colors, hyperlinks, font sizes, etc. A good resume template makes use of this and makes it easier to understand your background at a glance. I have provided the template that I used. Credit goes to a friend who created this; I got a lot more interview calls after this.
  2. Write a resume from the perspective of a technical recruiter. That means, write in a way even your civil engineer friend can understand :).
  3. Describe your past work experience in a format that is easier for others to follow. It becomes hard to follow if you provide internal jargon about your project. I have found the format "Did X using Y to achieve Z" easier for anyone to understand. Look for examples in the resume template.
  4. Recruiters spend ~30 secs on a resume. Therefore, highlight things in your resume that would help the recruiter select your resume. Generally, people highlight the technology; there is a separate technical skills section for that. Most of the time, you want to highlight the achievement. However, there can be an important technical problem that you might want to highlight in some cases.
  5. Most companies filters resume using ATS (Application Tracking Software). Therefore, make sure your resume format is compatible with ATS. I have found Jobscan.co useful to match my resume to a job description.

Resume Template Download

ResumePreview.png

Job Applications:

It is important to start applying immediately. It takes some time from application to first recruiter calls to actual interviews, which should give you ample time to prepare for the interviews. If you would like some more time to prepare, just ask your recruiter. Recruiters are always on your side; they have benefits if you are selected. So, ask all the questions and help that you need.

Below are some things that I learned about job applications:

  1. Companies value referrals from existing employees. Make sure to get referrals for most of your applications. Try to reach out to your LinkedIn connections for the referral. I also got many of my referrals from Blind. You can send DMs to people on it. People are willing to help, you just need to ask for it.
  2. Referrals are limited, so use them wisely. Use websites like Jobscan.co to check your resume against the Job description and apply accordingly.
  3. Apply to recently posted jobs. Applying to older jobs will waste your referral.
  4. Try to reach out to recruiters on LinkedIn using direct messages. I have got some of my interviews from there too.
  5. Change your LinkedIn status open to work and buy a premium subscription. Like you, recruiters are also looking for people relevant to the job. Many recruiters directly reached out to me with an open job position.

Interview:

Unfortunately, software developer interviews focus on things you rarely need during your actual work. Even if there is a need, you will refer to some internet implementation instead of your code. However, it is also challenging to design an interview process that is metrics-driven, deterministic, and unbiased for all the candidates. So, instead of cursing the process, accept the reality and start doing what is required.

To get myself up to the speed for interviews, I always start by quickly scanning Cracking the Coding Interview: 189 Programming Questions and Solutions book. Based on the role you are applying for, your interview will have zero to multiple interviews in the below areas.

Algorithms:

This round focuses on data structures and algorithms. It is important to know how candidates are judged in this round to devise a strategy for preparation. In this round, interviewers judge on below four criteria in most companies.

  1. Problem Understanding: Interview questions are kept vague on purpose so that interviewers can judge whether the candidate clearly understands the problem before jumping to solving it. Focus on asking lots of questions to understand the problem and stating all the assumptions related to the problem even though it seems obvious.
  2. Problem Solving: You are judged on how you reach the solution, how optimized your solution is, your thinking style. It is important to talk through your thought process. Interviewers are evaluating not only your technical abilities but also how you approach problems and how you try to solve them. General practice is that you should describe your solution before writing code. However, everyone has their style of thinking and solving a problem. If you prefer to write some pseudo-code while thinking, mention it to your interviewer and clarify that you prefer to write some code to think, and you would be writing complete code once you are clear of the algorithm. It is important to know interviewers are also developers, and they understand everyone has their style.
  3. Communication: Judging criteria here is how clearly you can express your thought process and not how good is your English. Clear communication is essential while working in a team.
  4. Quality: You should walk through your code with a sample example after writing the code. Describe all the test cases and explain how your code handles them. Concentrate on any corner cases that you have missed.

Keeping the above judging criteria in mind, below is some of the strategy:

  1. Everyone has heard of Leetcode. I would recommend taking a premium subscription and focusing only on company-specific problems once closer to the interview date.
  2. Watch some mock coding interview videos on Youtube; I have found Exponent channel to be useful. The mock interview gives a clear perspective of answering based on the above four judging criteria.
  3. Take some mock interviews from Interviewing.io. It is okay to spend some money here if you want to improve specific interviewing skills.

Behavioral:

This round focuses on understanding your past work experience and judging whether you will be a good fit in the team. It's hard to understand the judging criteria for this round. Below are some of the strategies to prepare for this round:

  1. Create a document that lists all the possible behavioral questions asked and your answers to them. The same situation can fit multiple questions so that you won't require lots of them. No question should be a surprise to you during the interview.
  2. Answer in STAR (Situation, Task, Action and Result) format is recommended. But, sometimes, it becomes challenging to align your thoughts to provide your answer. The trick here is to answer in bullet points; it helps align your thoughts simultaneously, making it easier for the interviewer to follow. For example, "In my past company, there was a situation with two problems: problem 1, and problem 2. To address it, I split it into three tasks: Task1, Task 2, and Task 3 and took two actions: action1 and action 2. Because of this, there were three benefits/improvements/learnings."
  3. Learn about the company's cultural values and mention them in your answers wherever relevant.
  4. Prepare to answer some tough questions like, why are you leaving your current job? Your strengths and weaknesses. Do not try to disguise your weakness. You must understand your weaknesses and take the necessary steps to improve them.

System Design:

In this round, you and the interviewer work together in designing a solution to a problem. There is no one correct answer here. Interviewers generally check if you can identify problems, various systems that can help solve them, and the pros/cons of using one over another. Learning about the solution to various system design problems can provide knowledge of different approaches and when to use them. For example, when to use SQL vs. NO-SQL ?.

General practice is to describe your system design solution in the below format. Note you don't need to cover all the points for each system design interview. It depends on the problem and what the interviewer wants to focus on.

  1. Functional Requirements: The goal is to list down all the features that will be supported by asking questions to the interviewer.
  2. Non-functional Requirements: The goal is to list down system attributes such as security, reliability, performance, maintainability, scalability, and usability requirements for your system.
  3. Capacity estimation: The goal here is to estimate the total traffic Number Request/sec or Number of User/sec, total space requirement, etc.
  4. API Endpoints: List down all the public and private API endpoints with their parameter that your system will expose.
  5. Database Schema: Write some table schema to give an overview of how data is stored.
  6. Architecture Diagram: Finally, draw a block diagram of how different components will interact and provide a user request flow.

Below is some strategy on how to prepare for this round:

  1. Watch mock system design interviews on Youtube to understand how to answer in the above format. I found this helpful, but many more on Youtube.
  2. Watch some system design tutorials on youtube and read system-design-primer on GitHub. The goal is to learn about different systems and their usage/trade-offs.

Focus:

Keep calm and do not panic. Know that interviewers are there to help you out. If you're feeling nervous, let them know, take a few seconds, take a deep breath, and clear your mind of all fear. Take rejection as a process of learning. Ask recruiters for feedback on each round and focus on weaknesses. Remember to ask for feedback on a call and never on an email.

Job Offer:

Time to negotiate your offers.

  1. Use Levels.fyi to understand the average salary for each role.
  2. Watch some mock negotiation videos to understand the different questions asked and how to answer them. I have found this video helpful.
  3. Do not first quote numbers from your side. Instead, try to ask the pay bracket for this role. If forced, ask for more time to think and evaluate the number to quote.
  4. The easiest way to negotiate is with a competing offer. If you have multiple interviews lined up, notify them you might soon get an offer and request them to move faster with the interview process. At the same time, delay your offer and negotiation by asking for more time to consult a family member or a mentor.

Conclusion:

Finally, it is important to believe in yourself. Sometimes you cannot anticipate a fall or do anything to fix it. All you can do is learn from it and move forward. May be future has something better for you, like in my case.

I want to thank all my friends and colleagues for the referrals and support. Special thanks to a friend (anonymous) for the proper guidance and teaching some of the interview skills listed above.

You never know when you will be under the clock to search for a new job. It is good to be always prepared. Solving leetCode problems once in a while keeps you relevant for interviews. You should always be prepared for system design because it is helpful at work. Reading some system design books/blogs will also help you grow in your current job.

If you have some learnings of your own, do let me know in the comments. I am happy to learn from others and improve my interviewing skills. I could also add them to the blog. Also, feel free to provide feedback, good or bad, in the comments. You can also drop me a mail at shaileshgothiece@gmail.com

D
Db4y ago

The article is profoundly accurate. It could not have been summarized any better. After perusing through innumerable web articles and videos, I decided to follow the approaches suggested in this article in my recent job interviews, as it touched every nook and corner of the interview process right from the nascent "where do I begin?" stage to the offer negotiations. I am delighted to have landed an amazing SDE offer in silicon valley using this article as my 'go-to' reference. Cheers!

S

Thanks a lot for the feedback. I am glad it was helpful.