How To Ace A Technical Interview

Andrei Smirnov
6 min readApr 28, 2023

Intro

I have conducted more than 500 coding interviews over the last ten years, for many different companies: from small startups to large IT giants. I learned a lot about how to ace and how to fail a coding interview. Needless to say, I’ve been on the other side too, throughout the last twenty years of my software engineering career. In this article I will tell you what you need to pay attention to and how to ace a technical interview. In the end of the article I will give you a complete “take-away” checklist for your preparation.

High Level Interview Structure

Regardless of the interview type (coding, algorithms, system design, etc.), your interview will be structured as follow:

  • Welcome, introduction, ice-breaking questions
  • Reviewing prior background from your CV
  • Receiving initial input for a given challenge
  • Working on the challenge
  • You ask questions about the company

Let’s review every section.

Welcome, introduction, ice-breaking questions

This may seem not very important, but the first impression you make is vital to success. These days, vast majority of the interviews are held online, so we will be focusing on online interviews.

So, what to look for:

  • Be friendly and polite, keep eye contact
  • Make sure your room is quiet, background is clear
  • Never smoke/vape/eat during the interview
  • Do not allow your children/pets to distract you

Believe it or not, but I met candidates who smoked during the interview, who was unable to keep eye contact or who was simply rude. Within the first five minutes I realized the interview was failed even though I had to proceed the ceremony.

Reviewing prior background from your CV

An interviewer will likely ask you to describe a specific case from your career mentioned in your CV. For example: “How exactly you achieved that low-latency message transfer for project X?” This is an introduction to start diving deeper to know more about what exactly you did, what challenges you had and… whether you are lying or not. So many CVs are lying…

  • Never put into your CV anything that you cannot prove later.
  • Be prepared to describe every point in your CV.
  • Never lie. This is so easy to determine.

Receiving initial input for a given challenge

Let your interviewer to describe the interview process and to describe the challenge. Carefully listen to every detail and make your notes. Why? Later you will need to ask clarifying questions for every unclear point. Some points will be left vague on purpose!

  • Make notes during the interview.

Working on the challenge

This section consists of several sub-sections, depends on the interview type, so we will review this later in this article.

You ask questions about the company

At the end of the interview you will be prompted to ask any questions you may have. This is not a formality. You don’t ask any question you will likely fail the interview despite your great coding skills.

  • Do your research about the company prior to the interview.
  • Ask one or more questions about the position or the company.
  • Show your interest about the position and the company.

I know that many software engineers are applying to many positions at the same time and participate in several interview loops. That’s fine. But, before you go to an interview, do your home work: research what company is, what products/services are, etc. This will make a great impression.

Working on the challenge

What Interviewers Are Looking For?

Most interviewers follow a checklist provided by the company. All the checklists I saw have the following points in common:

  • A candidate must clarify requirements, even for dead-simple exercises like:
function sum(a, b) { return a + b }
  • A candidate must communicate the solution or algorithm prior and during the coding process
  • A candidate must test the solution: either by writing tests, or by evaluating algorithm in their mind for selected edge cases
  • For algorithmic challenges, a candidate must be able to discuss complexity

This is not a comprehensive list of course, but this is the baseline. Failing to meet any of these will most likely fail the entire interview.

Always ask clarifying questions

Let’s consider the above example. You are giving the goal: “write a function that sum numbers”. You can immediately write that code in any programming language, what else to discuss here you think?

However, try answer these questions:

  • How much numbers shall the function sum? Do they fit memory?
  • How those numbers are passed to the function? As arguments? As an array?
  • What numbers are meant here? Real? Natural? Complex?
  • How to handle arithmetic overflow? What the function does in case of overflow?

Always ask clarifying questions regardless of requirements seem clear or vague.

Never start coding immediately without confirming with the interviewer what exactly you are going to do.

Keep talking while thinking and coding

So many talented engineers prefer to focus on coding instead of talking. But technical interview is a different challenge: it is a test for your ability to maintain a constructive dialog.

Always communicate your thoughts, ideas, assumptions, implementation and testing plans. You will likely be receiving feedback from the interviewer, setting you on the right track.

Always consider complexity

If you don’t know what is the runtime complexity, space complexity and “big-O”, then go and learn it before applying for a software engineering job.

After you proposed an algorithm, evaluate and discuss its complexity. Do this before you start coding. Most likely the interviewer will ask you to find a better algorithm.

If you cannot come up with a better algorithm: ask for help. Your interviewer is your friend here. It is better to ask for help and work together than keep thinking for minutes in a silence.

Always test your solution

The goal here is to prove the interviewer your code is bug-free. This is usually done by:

  • Writing tests and executing them (if you are using a computer)
  • Executing your code line-by-line in your mind, like a regular debugging session

Do not forget to communicate all this process verbally.

Needless to mention you have to know how to use debugger for your toolchain.

Control your Ego

In your opinion, the interviewer has to guess you are a rock-star engineer, and, of course, the interviewer shall trust everything you put in your CV.

No matter how much of experience you have. You will have to play this “hiring” game and obey the process.

I know how many engineers get angry if asked to “reverse a linked list”. But, if you really want to get this job, you will have to overcome your Ego. Or, someone else will get this job.

Ask if you can use Google

As an interviewer, I always allow candidate to use Google Search, Stack Overflow, even GitHub to find a pattern, API usage, solution, etc.

This is not a cheating. Ability to search and pick the right answers is critical in our industry.

So, ask your interviewer if you can leverage any of the resources. This will not decrease your score if you justify the need.

Think broad on system design interviews

System design interviews test for different skills, that’s true. What to pay attention for here:

  • Print and have a system design checklist on your table.
  • Always consider faults, edge cases, system abuse.
  • Always consider performance, latencies, load factor.
  • Be familiar with UML, know basic diagram types.
  • Do not reinvent a wheel: refer to existing technologies.

Pick single instrument for coding design interviews

Many engineers can code in various programming languages. However, for the purpose of a coding interview, it is important to pick one and ace this instrument: from syntax to debugging. Say, if you were not coding in C++ for last two years and now decided to apply for a position needed C++, then please brush up your knowledge: try code a few simple challenges, debug them, write tests, etc.

It is always better to demonstrate excellent knowledge of a single instrument than advertising your know many programming languages not being able to “reverse a linked list” with any of them.

Take-Away Checklist

  1. Rewrite your CV: be prepared to prove every point, do not lie. You ideal CV needs to be written from scratch for the specific position, emphasizing details important for the position.
  2. Home-work: research for the company and the position. Try finding current employees feedback about the company.
  3. Take a mock-interview, if possible.
  4. During the interview: keep eye contact, keep talking all the time.
  5. Make notes about everything said by the interviewer.
  6. Always ask clarifying questions about the challenge and requirements.
  7. Prove your solution is working by running tests. Never say “I am done” until you test your solution and the interviewer is happy with the complexity.
  8. Control your Ego: be prepared to “reverse a linked list”.
  9. Be friendly, make the interviewer to be your friend, do not hesitate to ask for a piece of advice when you are stuck.
  10. Always have several opportunities in your queue to increase your bargain power.

--

--