Nothing strikes more fear into a tech professional than the prospect of a technical interview. Being challenged by the blank slate of a whiteboard while an interviewer waits for you to prove you’re a 10x-er is enough to make any developer consider switching careers to an artisan cheesemaker.
In this article, we will explore how to prepare for a technical interview, so you don’t have to move out to the country (where Netflix still has to buffer before each episode).
Whether you have an opportunity lined up or are merely considering a career change, properly preparing is essential to ensure a successful technical interview. Not only are you competing against the test, but also the other applicants who are taking it, so it is essential to stand out and perform well.
As an experienced full-stack developer who has participated in technical interviews on both sides of the table, I’ll discuss lessons learned from bombing out of Facebook’s tech screening and give you insights from an interviewer’s perspective. We’ll also cover the technical aspects of interviewing at Scalable Path.
Since this topic has been explored in depth before, we’ll take a more modern approach by providing universal advice that applies to candidates interviewing at a tech giant like Google, a fast-moving startup, or a run-of-the-mill SMB far outside of the valley. I’ll explain why memorizing algorithms and practicing coding are only part of the picture, and ultimately help you focus on the blind spots that often trip candidates up and potentially cost you an offer.
Now, let’s now take the time to dive in and get prepared for that coding interview.
Table Of Contents
Types of Technical Interviews
The tech industry is known for having one of the most varied and challenging sets of technical interview formats. These formats can generally be broken down into two categories, academic and practical:
Academic formats test fundamentals and concepts via abstract challenges, similar to testing in a school setting. Practical interviews evaluate candidates against more real-world problems, indicative of what they may be faced with in their actual job role.
As the industry improves its processes, it has begun shifting towards more practical formats. However, academic-style evaluations are not uncommon, especially among tech giants aiming to hire only the best and brightest.
Let’s take a look at the different ways that technical interviews are administered and what classification they commonly fall under:
Due to the variance in formats, it’s important to identify what you’re up against to properly prepare. As a general rule, startups and SMBs are more practical-focused and will test you on language specifics based on the tech stack they use. Industry giants are more likely to administer primarily academic-style evaluations.
When given the opportunity to ask questions during the initial screening process (or via follow-up email), get as much information as you can about how the technical assessment is conducted. Ask about the format and how it’s administered, whether it’s practiced using a specific language or pseudocode, and whether the focus leans more towards practical or academic questions. Companies generally have no problem sharing this information and want you to be prepared, so you’re comfortable throughout the process.
Once armed with this information, you can focus your preparation to match the format.
Academic Technical Interview Preparation
It’s time to brush the cobwebs off the university textbooks propping up your computer monitor. If you want to land a job at a place like Google, Apple, or Amazon, you’re going to have to nail your fundamentals. Even if you’re just out of school, it’s time for a refresher on your building blocks for whiteboard and coding exercises. This means covering the following topics:
Once you’ve reacquainted yourself with these concepts and addressed any knowledge gaps you may have (hello, Wikipedia!), it’s time to put them into practice by doing some programming challenges. Try to pick some problems that cover the pure fundamentals, such as array and substring manipulation, then move on to more detailed, less abstract challenges.
Are you looking for sample questions to test your skills? In the resources section at the end of this article, you’ll find sites and tools that offer programming exercises to help you practice for the theoretical topics featured in the more academic-focused interviews.
Technical Interview Questions
If you are looking for technical interview question samples to test your skills:
In the resources section at the end of this article, you’ll find sites and tools for the theoretical topics featured in the more academic focused interviews.
In addition, here are some very basic tips for approaching things:
How much time you spend on this area of study is a judgment call depending on the type of organization and role you’re applying for. Remember to ask your recruiter or hiring contact about the format to inform your decision. Academic exercises are only one aspect of preparation, so they shouldn’t be your sole focus.
Practical Technical Interview Preparation
Less arduous and more straightforward, practical evaluations involve testing applicants on the subject matter most relevant to their would-be role. We all know (interviewers included) that in the real world, Google and Stack Overflow are at your fingertips, and you will never have to build a red-black tree with nothing but a fistful of whiteboard markers and vague memories of your Algorithms 101 class. Instead, interviewers simply want to see that you know how to code (preferably in the language they use) and how to design solutions to practical problems.
By now, you should be familiar with the company and the role you are applying for, and the technology relevant to your position. This will guide you while preparing for the practical aspect of the technical interview.
For entry-level positions or unfamiliar technology, start with the tutorials on the official website of the language, library, framework, or technology you are studying. From there, and for more experienced individuals, seek out advanced tutorials and exercises from other sources. Then graduate to building projects you have designed. Think of an idea for a basic app using an appropriate technology stack, then wire up its views, data model, endpoints, and storage. Not only is this valuable coding practice, but it can also bolster your portfolio and GitHub pages.
Vendor sites (and other sources) cover the core principles behind their language, library, or framework. This also includes advanced topics specific to the subject matter, which can be important to know during an interview. If you are trying to become a React developer, you better know the flow of properties and state, and the dogma of immutability, before walking in the door. Take time to review this material prior to the interview.
Nice to have: For ancillary tech that you have never used before but is listed as “nice to have” on the job posting, consider giving yourself an introduction to it. A little effort along these lines can go a long way during an interview. It shows initiative and that you are serious about landing an offer. Just be sure to mention it if it doesn’t come up!
This flows into the field of Systems Design, which is especially relevant when applying for more senior roles. Be prepared to answer questions about tech stacks, architecture, and scalability, particularly relating to challenges the company has faced in the past or may currently be facing. Have an elevator pitch ready on how you would design an app for “the Uber of Lawn Maintenance” or “like Facebook but for Concert Musicians.” Consider what challenges there would be during development and how you would address them. This is a common style of question that comes up during practical interviews.
Ultimately, you need to tailor your preparation for your experience level versus the job requirements. Try to reach a point where you aren’t searching or copy/pasting from reference materials much when coding, especially while bootstrapping a language-specific project. Be ready to explain how you would architect a system from the ground up, making design decisions that cover edge cases and plan for growth. Demonstrating your competence with the subject matter is key to getting through the interview and on to the next phase.
Scalable Path’s Process
At Scalable Path, we take a more modern and practical approach to technical interviews. Our focus on remote work and close relationship with our freelance developers led us to put aside the infamous whiteboard coding and replace it with a format we view as more approachable and indicative of a candidate’s fit for the role.
These interviews are virtual but should be treated in a similar way to an in-person one. Dress appropriately, and be attentive to your body language, audience, and environment. Do a tech test ahead of time to ensure that your internet connection is stable and that your microphone and webcam are working properly, with little to no choppiness. Take a look at what is in the frame of your camera and tidy up as necessary, while also minimizing any sources of background noise. Having a clear line of communication and professional engagement with your interviewer is essential to advancing forwards.
Once a candidate has reached the technical phase of the interview process, they can expect to engage in an online interactive coding session for approximately an hour. During the session, applicants use their own development environment and reference material to complete a task as similar to a real-world scenario as possible. Reference material can include a previous project the candidate has worked on, documentation, and online developer learning resources such as Stack Overflow and Google.
Basically, think of it as an open-book exam. I don’t know about you, but these were always my favorites during school.
The candidate is evaluated on their ability to do something typical, like connecting a basic front end to a set of REST endpoints and the underlying database. They may find themselves wiring up typical GET, PUT, and POST calls to cement the foundation of a basic web app, all common activities for a web developer.
Throughout the session, the interviewer observes the individual’s development process, aptitude for the task, and details like how they utilize their reference material. To conclude, they recap the result and ask a few questions about the process and design decisions the candidate made. In some cases, this may lead to a take-home component for certain positions.
We have found that this method of interviewing is a strong indicator of a candidate’s suitability for their targeted role and gives them the opportunity to perform at their best. There are no trick questions or esoteric algorithms, just straightforward and (hopefully) familiar tasks. Most developers have a story or two about coding interviews, myself included.
My Interview with Facebook
Many years ago, out of the blue, I was contacted by Facebook to see whether I would consider relocating to California for a job opportunity. I hadn’t applied, and to be honest, I think they found me via some bot that was scraping Facebook profiles for keywords like “PHP,” which I had previously posted about. Although employed at the time, I decided to move forward with their interview process to see where it led.
Things moved quickly, and after passing a typical HR and tech screening call consisting of trivia-style questions, I was faced with the first real test in the form of a remote interactive coding interview, which would happen a few days later. I scrambled to prepare, cramming my head with algorithms and hacking through as many programming challenges as I could find. Soon enough, it was time for the interview.
On the call, we launched into the questions almost straight away. A series of problems were pasted into a shared editor one at a time, which I had to mentally parse and solve before moving on. Stressed and conscious of time, I quickly read each question and jumped to coding, trying to reach a solution as fast as possible. I muddled through some problems, froze up or passed on others, and before I knew it, the interview was over.
Off the call, my mental fog gradually cleared. I realized that I had missed things in the initial problem statements, made silly mistakes, and produced a poor interview result. I had also failed to listen to hints posed as questions by the interviewers, treating it more like a one-sided academic exam with real-time observers than a collaborative exercise and dialogue.
Ultimately, I missed out on the opportunity by failing to properly prepare. By this, I don’t mean that I hadn’t studied hard enough or done enough practice problems, but I had been too focused on the raw academic aspect. I had overlooked the fact that there is a bigger picture and a lot more going on during an interview than just solving problems, which is something that all candidates should consider before a technical interview.
The Softer Side
Like with relationships, the key to acing a technical interview is communication. You have to demonstrate to the interviewer your process of approaching a problem, clarifying requirements, engaging with stakeholders, and only then producing a solution. Think of it as a microcosm for the day-to-day life of a professional developer. This may seem obvious, but it’s easy to forget, especially coming from an academic environment, where there is often no direct engagement during exams.
Although I had the fundamentals needed to answer the questions during my Facebook interview, I overlooked the above in preparing for the format. What I should’ve done, and what I recommend to you for similar formats, is the following:
Basically, I’m saying you need to simulate the environment of the technical interview as closely as possible, but more importantly, you need to engage and communicate along the way. Speaking from experience on the other side of the table, this is key to setting yourself apart from other candidates.
As a Technical Interviewer
After bombing my technical interview with Facebook, I stayed with the company I was at for several more years while it grew. I found myself becoming the go-to person to perform technical assessments as we looked to hire more developers, which also informed my perspective of interviews.
As an interviewer, I’m looking to judge a candidate’s general fit for the role, as demonstrated by the communication skills discussed earlier. Beyond that, I want them to exhibit a solid understanding of the subject matter and the ability to tackle the kind of problems they will face in their prospective position. It also helps when candidates show that they are passionate about technology and involved with it beyond a purely professional level.
I want you to know that the interviewer is on your side. Everyone finds this process stressful and shows up nervous, and we’re empathetic to that. Don’t think of stress as a disadvantage unique to you, because it’s something that affects every applicant’s performance. Everyone is out of their comfort zone during an interview.
If your nerves are a significant concern or you just want to be especially prepared, there are services that offer mock interviews (listed in the references section) that can help on this front. Also, keep in mind that even if you don’t get an offer, you are building a muscle that will serve you during your next interview. Try to separate your performance during the experience from how you perceive your capabilities as a tech professional. Even the strongest candidates can get caught off guard, have a bad day, and produce poor results. These outcomes are not failures but simply learning opportunities to serve you in the future.
And don’t forget, it’s okay to ask questions leading up to a technical interview — we want you to be prepared so you can perform at your best.
Let’s recap. The most important preparation isn’t memorizing algorithms; it’s being mindful of how you conduct yourself and engage with the interviewer. Being able to nail the subject matter is a given, but what sets you apart as a candidate is demonstrating your suitability for the role beyond simply producing the requested output.
When you’re practicing technical challenges, practice in a way that mirrors how questions are likely to be administered during the interview.
Be sure to inquire about the format of the technical portion, and take time to research the employer and role. Are they a startup focused on hiring a language expert who can deliver quality code quickly? Are they an established company that may care more about fundamentals, system design, and your ability to unravel problems? This will focus your studies and prepare you to offer relevant answers to their questions.
Remember to keep the interviewer’s perspective in mind. Communicate with them during the process, ask questions, and be clear on your approach to the problem.
Now it’s time to get studying. Be sure to check out the list of resources to help you prepare, and good luck! Do you have an interesting story about your experience with technical interviews or advice to offer our readers? If so, consider leaving a comment on this article below.
Resources for Your Technical Interview