Ace Software Engineer Interview like a Pro

Himanshu Patel
7 min readJan 5, 2021
Photo by Fotis Fotopoulos on Unsplash

This is a guide to help software graduate or anyone who wants to start their career in software industry.

I am Himanshu and I’m a Software Development Engineer at Amazon. In this blog, I would like to illustrate how I was able to start my Software Engineer career in Amazon. I completed my Master’s Degree from Syracuse University and in these two years, I learned a lot about the software industry.

I would like to describe how a software engineer interview would look like. Interviews could be of three different types :

  1. Coding Interview : Most of the interviews have a coding session, where your coding skill will be assessed.
  2. Behavioral Interview : This interview is important to gauge how the interviewee reacts to a different kind of situations in employment. The interviewer will look for how you approach to different kinds of circumstances.
  3. System Design Interview : This is a fascinating interview where you’ll be asked to design some architecture of the system which satisfies a specific need and business requirements.

Coding Interview :

This is the most important part of an interview. The coding interview isn’t just limited to find working solution, rather it involves how you approach to the solution while considering space and time complexity of an algorithm. In a phone interview you’ll be asked to code in a coder pad or a similar platform. You’ll be asked to code on the whiteboard in person interviews. No matter what type of interview you’re in you’ll be challenged with algorithms based coding problems.

The coding problems are asked to measure how well candidate knows the fundamentals of data structure, code design, and the efficiency. The interviewer primarily looks for time complexity and the space complexity of the algorithm. So, it’s a must to have a better understanding of data structure and popular algorithms like DFS(Depth First Search), BFS(Breath First Search), and Binary Search.

How to Start with the preparation for the coding section ?

First, I would like to suggest a book called Cracking the Coding Interview. It’s one of the best books to prepare the interview. It covers all concepts, from basics to advanced topics. There’s a chapter for all the data structures from the array, linked list to the tress. Moreover, there’s a chapter for all types of algorithms. The fascinating thing is that there are many activities in each chapter that further strengthen the awareness of the respective topics. So, one must try to complete all the exercises without looking at the answer beforehand. The books has also covered in depth chapter(5) on Big O (Space Complexity and Time Complexity).

What Programming language should I use for Interview?

If you ask me what programming language one can use, I’d say it depends on the individual’s experience. Though I would suggest picking any from Java, C++, or Python. These are the languages that are used most in the industry. Once you have decided the language, stick with the chosen language only while preparing for interviews.

Then, Next step Leetcode

This is the most exciting part for me. Leetcode is a big gem for software engineers. Leetcode has thousands of interview questions that cover all topics which are asked in the software interview. Another fascinating section is the discussion forum, which is very insightful. You’ll find interview experience of other people, which helps to understand how’s the process for individual companies.

Before going sideways I would like to share an easy way to get expertise in leetcode.

We’re going to practice leetcode with the concept called Space repetition.

  1. Find out any topics which you don’t understand or it’s hard(e.g. graph, trees, dynamic programming).
  2. Pick any one topic and start with solving one easy question a day or two depending on your skills.
  3. Once you’re comfortable start doing medium questions with the easy one (e.g. 1 easy + 1 medium per day). Don’t touch the hard questions yet. You can increase the number of question per day if you feel convenient, although solve as per your capacity and make sure not to get burned down.
  4. Moving to the next step, start doing 1 hard, and 2 medium questions per day ( or do 1 hard, medium, easy). Move to the next topic once you feel satisfied with the progress and do the same steps above.

This way it’ll be a kind of repetition but with the blend of the specific space between the repetition. The magic here is that you’ll be able to find patterns that will repeat when you keep solving questions, and as time goes you’ll be able to find the solutions efficiently.

You can track the progress using the spreadsheet with this format :

Leetcode Progress Sheet

There are few essential points to be taken care of while doing the leetcode.

If you encounter unfamiliar problems, try to solve them on your own without searching for a solution for at least 1 hour. If you are not able to find the solution even after 1 hour, then look in the discussion tab for the specific question and see what data structure or what algorithm others are using, and then try to find a solution using these two hints.

It’s okay if you don’t come to a solution at first. Don’t keep solving the same problem for many hours, this will burn you out. Instead, look at the solution after you have spent 1 hour on problem, and write down the concept in a note while coding the solution. Try to rephrase the same technique when you come around to this question next time.

Behavioral Interview :

This part of the interview is very crucial. The interviewer will look at your confidence and your soft skills. In certain circumstances, the interviewer will give you certain examples, and you need to show how you handled those conditions.

In most of the behavioral questions one should follow STAR Method, which is Situation, Task, Actions, and Result.

STAR technique :

Situation : Mention the situation or circumstance that you were involved in.

Task : Describe the tasks you had to complete.

Action : Define the actions which you took to complete the task. Point out research and innovative ideas behind the actions as well.

Result : Explain what was the outcome of your actions. Speak of great results which took place because of specific actions.

The interviewer likes to see what was the result of your actions, and this method will do wonders in the interview. Furthermore, The easiest way to approach this interview is to prepare a list of frequently asked questions, and write down the answers for each question from your experience and speak out the answer in front of the mirror. In this way, if you come around with similar questions you’ll have an idea of what you did when you encountered the situation. There might be some questions on teamwork, stress management, and problem-solving. So, prepare some of the questions covering all the sections.

The last suggestions would be Practice !! Practice !! and some more Practice !!

Do some practice interview with friends or go to Pramp to setup interview with other member in community for free.

System Design Interview :

The system design interview has become a very crucial part of software interview. This interview covers designing various systems like Instagram, Uber, Twitter, and many more. The company looks for how interviewees solve complex problems and it becomes a major deciding factor in hiring the interviewee.

The SDI is focused on various extensive concepts like how to take account of scalability when designing the architecture of the system, or how latency or throughput will take care of. More to that, one might need to design a system with the load balancer, cache implementation, and CDN (Content Delivery Networks).

In brief, one has to design a system like real-time applications and has to mitigate issues that could come up when the application is live in the world. This is a fascinating section of the whole software interview.

There are two elegant resources where you can study for the system design interview.

  1. System Design Premier — An Excellent resource freely available on GitHub.
  2. Grokking System Design — An Educative video course having covered many designs.

Few steps helps to keep up to date :

  1. Connect with other people who might be alumni / LinkedIn network and have few minutes of conversation with them about the software industry and ask for some tips / suggestions which can keep you on track.
  2. Keep track of your mistakes and write it down in the notebook, and make sure that you don’t repeat the same mistakes twice.
  3. Read online blogs about the Software Industry and keep learning new trends. Follow some Medium blogs like Better Programming.

Last One, Have a faith and be patient in the Interview process.

Remember, you build momentum through action, seldom through thinking. So, keep it moving.

For any questions, contact me on (contact) [AT] himanshuptl DOT me or Connect me on LinkedIn.

Photo by Pablo Heimplatz on Unsplash

--

--