How to prepare for a Software Developer Interview?

In this blog post, I’ve shared some tips to ace the software engineer interview based on my personal experience of being a candidate and an interviewer.

Disclaimer: This post doesn’t guarantee a selection in an interview and instead should be used to prepare yourself for the interview better.

I’ve divided this blog into two categories, one is Behavioral Questions and another is Technical Questions.

Behavioral Questions

The preparation for Behavioral questions is the most ignored by the interview candidates, and in most cases, it becomes a show stopper for them. The following are some tips to prepare for this section of the interview.

  • Experience Summary: Prepare a summary focusing on your work experience or academic project experience (in the case of a fresh graduate). Focus on your contributions instead of the overall project. Specify the most challenging part and your mindset while tackling the challenge. Remember, the interview is about yourself and your contributions, not the company you are coming from.
  • Situational Questions: The interviewer is looking for your attitude in a specific situation. Every company is looking for employees who can operate independently and take themselves out of challenging situations. The following are some situational questions. (1) A task taking more time than expected, (2) Responding to unreasonable requests from your client/customer/stakeholder, (3) Addressing unexpected system behavior, (4) Deciding priority on multiple tasks, and (5)Meeting deadlines in an unrealistic timeline.

The following are some general tips for the behavioral section.

  • Unless explicitly asked, try to cover things not part of your resume. It is because, in most cases, the interviewer would have gone through your resume before the interview.
  • For every project experience, think about what you will do differently if allowed to start from scratch. It reflects that you learn from your experiences.
  • A couple of don’ts in your responses are (1) Working additional hours to cover for misestimation instead of being strategic in handling the situation by cutting down the scope or prioritizing essential features first, (2) Accepting requirements blindly before heading into the implementation or design of the project.

Coding Questions

This is the section for which every individual invests most time in preparation. Unfortunately, there is no correct answer to ace the coding question, but below is what I used and revised over time based on my own interview experiences.

  • Understand why Algorithm Complexity is needed and how it is calculated. It is the key to a coding interview as it will be asked 100% and will be used to evaluate your solution. You can refer to my blog post on Algorithm Complexity for getting started.
  • Thoroughly understand and learn the data structures including Queue, Stack, Sorting Algorithms, Trees, Graphs, Linked List, Doubly Linked List, and Map. In addition, you must know their runtime complexities with reasoning.
  • Pick one online coding platform (some examples are HackerRank, LeetCode, and CodeChef) and start solving problems. Do not focus on submitting the working solution; instead, begin with a naive solution (brute-force in some cases) and work incrementally towards an optimized solution. Irrespective of your submission, look for the approved solution and learn from it. It will build your ability to solve problems and give you different perspectives. Over time, you’ll have different weapons to mix and match in different scenarios.

The following are some resources and additional tips.

  • Do read Cracking the Coding Interview. It is the Bible for coding interviews.
  • Publish all your projects to the public GitHub repository and add them to your resume. Working projects stand you out from the crowd.
  • While practicing coding questions is essential, do spend time working on projects. Don’t undertake generic projects like book library, student management system, etc. Don’t do projects for resumes; instead, be innovative and solve real-world problems. You don’t need to write thousands of lines of code to make an impactful project. You are an engineer, be smart!
  • Once you practice enough, you should identify the best runtime possible for the given problem by just looking at it. For example, the best runtime for sorting algorithms is O(N log N). In an interview, even if you cannot think about the best runtime solution, start with a naïve approach and be loud in your thinking. Being loud will make the interview interactive; you’ll be able to think of new solutions quickly.

Resume

I’m not an expert on Resume writing, but below are some tips.

  • Do not include generic lines like “I’m a self-motivated individual.” Such lines don’t add value, and there is no data point or examples which demonstrate that you are self-motivated.
  • While explaining the project, highlight your contributions and make it data-driven. Whenever applicable, specify the impact/result of the project. For example, don’t add sentences like “Contributed to XYZ project as a lead engineer,” but instead use a sentence like “I lead the team of N engineers in reducing the latency of the website by 100%. In addition to improved customer, it resulted in 10X traffic on the website, bumping the revenue by X%”.
  • Try to limit your resume to 1-page. In most cases, important stuff can be easily fit into 1-page (unless you have multiple experiences).
  • Do not add your photo. It is not relevant in your resume as what matters is your work experience and not how you look.
  • Do add links to GitHub, LinkedIn profile, etc.

Mock Interviews

Nowadays, there is a good amount of online platform which provide mock interviews for free. I highly recommend those to fresh graduates or someone who is not feeling confident while going into an interview. No practice will teach you things that an actual interview will. In mock interviews, you can make mistakes and learn from them, but in the real world, a small mistake means a lost opportunity, and most companies do not allow you to re-interview immediately. Some online interview platforms are Pramp, TechMockInterview, and Interviewing.io.

Closing Note: I’ve deliberately kept the blog post short. If you feel you need more details around a particular point, feel free to comment below, and I’ll be more than happy to address them.