While domain-specific software engineering interviews might require, say, a deep knowledge of a framework like Angular, others focus on the overall programming approach. For these types of interviews or questions, it's beneficial to show you have a keen problem-solving ability and the drive to build something optimal, rather than that you can finish a test quickly.
The key to demonstrating your strengths isn’t hiding behind a veil of flawless technical knowledge, but rather explaining what wisdom you’ve gathered from past mistakes. While every company takes a slightly different approach to software engineering interviews and coding tests, there are quite a few tools candidates can utilize to prepare themselves as best as possible. We asked eight experts about how they’ve prepared for — and tackled — some of their toughest software engineer interview questions.
Preparing For Software Engineering Interview Questions
- Work on practice problems
- Review technologies used by the company
- Write it out. Utilize a white board and step away from the text editor
- Brush up on algorithms, main data structures and anything else related to the position
YOU’VE FOUND A POSTING FOR YOUR DREAM JOB AND LANDED AN INTERVIEW. HOW WOULD YOU PREPARE FOR THE CODING TEST?
At IllFonic we look for two key things during a technical interview: A deep understanding of the language and the ability to reason out problems in real-time. Take some time and review the C++ standard and keywords to ensure that you understand them all (even the most rarely used ones). There are only 30 total.
Second, practice working through interview questions on a whiteboard to get used to the feel of coding outside of a text editor. Talking through the code out loud while you work on a whiteboard challenge is also important for us to understand your thought process. If you get stuck for too long, ask for help. They are challenging on purpose and can have several solutions.
CONVOSO
TRAVIS GLOVER, FULL-STACK SOFTWARE DEVELOPER
Travis Glover, full-stack software developer at Convoso, comes to interviews prepared. Specifically, he recommends having a constantly updated portfolio of side-projects handy to reference over the course of a conversation. Proof of game or app development, he said, underlines your dedication to the work and, consequently, the role.
And if you get a technical question about a subject you’re unfamiliar with? Honesty is the best policy.
First, I would think about what technology the company uses so I could focus on studying the languages and concepts that might be on the test. Then, I would search for free coding tests that cover these technologies. Hackerrank, leetcode and the like are a good source for common technical and algorithmic interview questions.
"Hackerrank, leetcode and the like are a good source for common technical and algorithmic interview questions.’’
I would also make sure I had the algorithms fresh in my mind. It’s always a good idea to have a well-fleshed-out portfolio of side projects. This allows me to easily show off my ability to build an app or product from the ground up.
MYTHICAL GAMES
ALEX MOIR, SENIOR SOFTWARE ENGINEER
For Alex Moir, senior software engineer at Mythical Games, college didn’t prepare him for all engineering challenges, especially in terms of iteration. Brushing up on main data structures and algorithms and re-reading “Cracking the Code Interview” are how he preps for future interviews.
Read “Cracking the Coding Interview” by Gayle Laakmann McDowell (again). Pull out my portable little whiteboard and start answering problems. Google “software interview questions.” Brush up on the main data structures and algorithms like binary search. Practice system design. Remind myself to stay calm and things will be fine!
ZWIFT
LUKE YEN, GAME ENGINEERING LEAD
Zwift’s Game Engineering Lead Luke Yen sees software engineering interviews just as much a company evaluation as a test of the candidate’s individual skill. If an employer seems condescending or competitive, it could be your cue to cut your losses.
Yen also recommends swaying difficult questions in your favor by focusing on specific strengths, like individual communication style or attention to detail despite unfamiliarity with a certain program.
Read the skills requirement and make sure you brush up on anything related to the position. I’ve seen engineers claim they’re familiar with algorithms, C++ or 3D math and then have difficulty providing the definition of some of the more basic terms. Most importantly, however, control your nerves and keep an open mind going into the interview. It’s not the interviewer’s job to defeat the interviewees by asking incredibly difficult questions or to show that they’re the smartest person in the room. At previous companies, I’ve seen interviewers come back from interviews boasting to the rest of the team that they “broke” the interviewees. If you ever interview at a company that conducts high-stress interviews like this, it speaks volumes to the culture. That’s probably not the place you want to dedicate your time for the next couple of years.
The right questions should allow interviewers to work with the interviewees to evaluate their logical thought process and ability to communicate ideas. So the best way to prepare is by knowing that you probably won’t have all the answers off the bat. Make sure you fully understand the problem by asking questions before you start to work on it. Communicate throughout the process so interviewers can continue to guide you. And always check your algorithm and look for edge cases once you arrive at a solution.
WEVR
SYLVIE SHERMAN, SENIOR SOFTWARE ENGINEER
Partial credit isn’t reserved for seventh grade math exams; many coding tests are designed with the thought process behind the final response in mind.
According to Sylvie Sherman, senior software engineer at WEVR, showing your thought process can make all the difference in an interview. For difficult questions about previous roadblocks, Sherman comes prepared with a coherent answer format that speaks to her problem-solving ability.
Find out as much information as you can about the format of the test. How many questions will there be? How will you be answering them? Will it be done on your own time or with an interviewer?
Do practice tests online and read up on anything you struggle with or any particular language features you think might be important. If your test is going to be with an interviewer, it’s important to talk about your thought process during your practice tests, even if you’re talking to yourself. Correctly answering a coding test is great. But explaining your thought process and approach is the part that really counts.
RAPID7
MICHAEL HUFFMAN, PRINCIPAL SOFTWARE ENGINEER
While it's beneficial to go into a blind date with no preconceived notions of the other party, the same guidelines do not apply to interviews. Michael Huffman, principal software engineer at Rapid7, recommends learning the names of not only the company founders but any employees you might be directly working with or whose work you admire.
First, I would learn as much about the company as possible. During an interview, a company wants to hear why they are a good fit for you and that you are genuinely interested in their domain, technologies and solutions. Learn the names of founders and CTOs and for extra credit, ask questions during the interview about how certain employees in the company grew and evolved during their careers. An interview should not be a blind date.
RIBBON
SASHA TAILOR, SOFTWARE ENGINEER
Sasha Tailor, software engineer at Ribbon, has found that the most helpful thing you can do before and during an interview is to ask questions. If you’re not comfortable going directly to your interviewer, make use of the ample resources available online. This includes working through practice problems and having a prior understanding of everything from question layout to dress code. The fewer surprises you have going in, the more you can focus on showing off your skill set, Tailor said.
If you’re using a headhunter, ask them about previous applicants’ interviews and see if there is any information about the process on Glassdoor. Most companies are fairly open about their interviewing processes and will give you information about the type of coding challenge you’re going to get, as well as whether you will be coding in a Google doc, screen share or something like CodePen. I’ve found that almost every company has been willing to give more detailed information when asked.
Use resources such as Hackerrank, CTCI and GeeksforGeeks for practice problems and become familiar with whichever code editor you will be using in the interview, including how to debug, compile and run test cases.
THESKIMM
CHRISTIE RAMSARAN, SOFTWARE ENGINEER
In previous interviews, Software Engineer Christie Ramsaran said she focuses on not allowing the stressful environment to distract her from gathering the information she needs to generate thoughtful responses. Taking your time to provide informed, insightful answers, theSkimm coder said, is not only perfectly acceptable. It’s responsible.
I always start by researching the company to better understand the interview process. Every company approaches coding interviews in a different way. The recruiter is a great resource. I ask if I’ll be whiteboarding or using a laptop, and whether I’ll be pairing with a developer at the company. I also ask if the recruiter can share a list of common topics. From there, I study any topics that feel particularly rusty and reread “Cracking the Coding Interview” by Gayle Laakmann McDowell.
"I study any topics that feel particularly rusty and reread ‘Cracking the Coding Interview’ by Gayle Laakmann McDowell.’’
Finally, practice questions. I usually source questions from the same book or one of the many online coding challenges banks. I recommend finding a buddy to simulate an interview.
WHAT ARE THE TOUGHEST OR MOST CHALLENGING INTERVIEW QUESTIONS THAT YOU'VE BEEN ASKED, AND HOW DID YOU RESPOND?
CHANCE LYON, ILLFONIC
I was once interviewed at a large company known for its logic puzzle interview questions. For instance, “If you had an infinite supply of water and a 5-quart and a 3-quart pail, how would you measure exactly 4 quarts? And what is the least number of steps you need?”
These types of questions can be quite difficult until you have the “epiphany” moment, and are not very useful for determining programming talent. In another interview, I was simply told to “code Tic-Tac-Toe,” and they let me go at it on a whiteboard for a few hours. A very large task with not much instruction. I didn't take the job.
TRAVIS GLOVER, CONVOSO
The toughest questions I’ve been asked have always related to subject matter where I have little expertise. Whenever this happens, I try to answer the question as accurately and honestly as possible.
In my experience, however, non-technical interview questions are not particularly difficult. The trick is remembering that honesty will always guide you to the best answer. Furthermore, hypothetical questions do not necessarily have a right and wrong answer and can offer room for thought leadership.
ALEX MOIR, MYTHICAL GAMES
Knowing the right scenario and when to use recursion is a helpful interview skill. Early in my career, I was asked a pretty challenging algorithm question that I tried to solve without doing recursion, which was a bad move. I was taught in college to always try iterative first, which just isn’t practical for interviews. Even if you are told that you need recursion, this stumps people; trying to do it iteratively is impossible and you run out of room on the whiteboard.
Staying calm and composed goes a long way because it is easy to get sidetracked worrying about time limits or feeling pressured by the various life changes you may have to consider when getting a new job.
LUKE YEN, ZWIFT
“How would you rate yourself from 1-10, one being the worst and 10 being the best, at [skill sets]?”
This is a simple yet incredibly difficult question to answer. Although most of the time the interviewer is genuinely curious how an interviewee rates themselves at a certain skill set, the question might be maliciously intended or create an unconscious bias. If an interviewee answers anything less than five, the follow-up question is usually along the lines of, “Why so subpar?” Conversely, if an interviewee answers anything greater than seven, get ready for tougher questions to follow. If you answer with anything between six and seven, you run the risk of appearing mediocre.
When I run into a question like this, I usually point out that it’s difficult to answer. It largely depends on my day-to-day condition. I have good days and I have bad days. On days where I feel like I am at the top of my game, I usually rate myself higher overall. But if I woke up on the wrong side of the bed, I usually rate myself lower. In addition, as technical knowledge like C/C++ contains a broad scope of different fields, I might rate myself higher in areas I am familiar with and lower where I don’t have as much exposure. This response usually garners follow-up questions geared toward the fields of familiarity. Alter the questioning strategy to your advantage.
SYLVIE SHERMAN, WEVR
I think questions about the biggest problems one has encountered in the past are really important to answer well, but can be difficult to speak about effectively. For questions like these, I try to follow a format in my answers.
First, I explain the issue clearly, showing that I understand what the root of it was. Then, I explain what I tried that didn’t work and why. Finally, I explain how I ended up fixing it, the process that led me to that solution and how I’ve used knowledge gained from that experience moving forward. I want to show understanding above all, rather than stress the magnitude or difficulty of the problem.
MICHAEL HUFFMAN, RAPID7
Unanswerable questions or questions that ask you to judge, guess or hypothesize an answer in a non-technical domain. Examples include, “How many tons of metal were used to construct the Eiffel Tower?” and “How many cars are in Los Angeles?” These pressure you to use creative thinking skills, interpolation and intuition. Great candidates will confidently ask questions, make sound judgement calls when guessing and come much closer than they expect.
SASHA TAILOR, RIBBON
I had an in-person interview scheduled and not a lot of prep time, and there was going to be a refactoring exercise in a language and framework that I had no experience in. To prepare, I practiced using CodeAcademy and I researched common refactoring problems and best practices. It was clear from my resume that I didn’t know this language. But to manage expectations, I also let them know ahead of time by email, and brought it up in person to my interviewer. I wasn’t able to do the exercise as quickly as I would have liked, but I was able to clearly talk through my thought process and show understanding of the framework. It showed I could communicate and had a steep learning curve, which are valuable assets in an employee.
CHRISTIE RAMSARAN, THESKIMM
I often find vague interview questions the most challenging. For example, I was once asked how I would replicate a feature from the interviewer’s code editor. Unfamiliar with the feature, I struggled to find an answer. I asked clarifying questions and ultimately responded with the data structure that would best suit the task. In hindsight, I should have spent more time understanding the problem before diving into a response.