Interviews can be daunting, especially when you do not know what to expect from them. Here, I will share with you what a typical interview looks like for someone applying to a developer job. There are obviously many types of development, but questions are generally very similar across the board. Developer interviews are unique in that the interviewer will most likely present you with a problem, and ask you to solve it on the spot. This looks very different for a developer than it would for someone applying for a job in marketing or business development. Regardless of the developer interview you are going into, we will cover the most common questions and topics you can expect.
Questions to expect
So what types of questions should you expect in your interview? The reality is there is no way to know exactly what you will be asked, but you can read about the most common topics that are asked about.
If you are a front-end developer, expect the following topics.
- Framework-specific questions depending on the role you apply for (React, Angular, Vue)
- Some basic Algorithms and Data Structures
- Pair coding challenge via video chat
- Behavioral Questions
If you are a developer in any other category, you can expect slightly more broad topics in your interview.
- More heavy on Algorithms and Data Structures
- System Design Questions
- Pair coding challenge via video chat
- Behavioral Questions
What to expect from whiteboarding
If you are a first time interviewee, you may have no idea what whiteboarding is. Whiteboarding is an interview technique used by interviewers during interviews for developer roles. It involves the interviewer providing a problem, and then the interviewee solving the problem in code and writing it all out on a whiteboard. It can be very intimidating given that all of your thoughts are being written down and evaluated on the spot, but it is important to stay calm and trust your instincts. The reality is that no one enjoys whiteboarding. However, that it really is a good test of how one performs under pressure, as well as how one communicates to others when they are designing and developing their code. You will only be expected to do it during the final rounds of an interview, so take a step back and relax for the first couple rounds.
The 3 most important aspects of your answer are readability, time complexity, and space complexity. Here are some common problems an interviewer will present you with.
Write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”. For numbers which are multiples of both three and five print “FizzBuzz”.
- Fibonacci – Given a number n, print n-th Fibonacci Number.
- Linked List Reversal – Reverse a linked list
- Subarray sum equals k
- Given an array of integers and an integer k, you need to find the total number of continuous subarrays whose sum equals to k.
- BST Validation – Given a list of values, determine whether they are a valid Binary Search Tree
This is not the point to freak out. Take a breath and trust that the information, skills, and applications you learned during courses, classes, and presentations will help you deliver the best answers.
Strategize for the whiteboard
Never start writing code immediately once you receive the problem. Ask clarifying questions, consider edge cases, think about time and space complexity, and pseudocode out your thoughts and possible solutions. If you cannot think of the faster/more complex approach, start with the more naive approach.
If you are lost in the question, do NOT be afraid to ask your interviewer for help/guidance. Although this may dock some points off your interview, it will also show that you are willing to communicate with the interviewer. Plus, it will help lead you down the right path in the question.
ALWAYS communicate. The interviewer doesn’t only want to see you get the right answer, but they also want to see your process. After you reach your answer, consider time/space complexity and optimizing your answer. Interviewers love this because they love candidates who can talk about performance and scalability within an application.
How to prepare
There are certain skills that the interviewer will look for in your answers no matter the type of interview. Not sure what those are? No problem! Take a look at the list below that dives into the types of skills that should shine through in your answers.
Analytical skills: Can you think through the problem and analyze it? Start by trying to understand what the questions or problem presented mean, what it is asking, and how you can approach it. If needed, break it down into smaller parts. This will help you compartmentalize each step you need to take. Then, work to define what the goal is.
Coding Skills: Do you code well, and write clean, simple, organized, and readable code? Make sure that your code is concise and easy to read. The beauty of the whiteboard is that everything is erasable. Make changes if you need to!
Technical Knowledge: Do you know the fundamentals of the job you are interviewing for? Be sure to read the job description thoroughly to ensure you know all they key roles of what you will be expected to know. From there, you can hone in on certain skills during your preparation period.
Communication Skills: Does your personality match with the companies’ culture? 80% of an in-person interview is to test if you will mesh well with the team. Be sure to put your best foot forward and respond to questions with enthusiasm.
In addition to these, it is vital that you prepare yourself for whiteboarding if you make it to a final round of a developer interview. Let’s be real… most developers dread this part of the interview process. The truth is, it is a really good test of how one performs under pressure, as well as how one communicates to others when they are designing and developing their code.
Present previous work
The best way to show that you are the right person for the job is to show the interviewer work you have done in the past. This can be in the form of a personal project, work projects, a portfolio, and any other relevant work you have. Personal Projects are extremely important for anyone transitioning into the field or for recent graduates. Have personal projects that stand out and that utilize whichever tech stack you are using in a creative and intellectual way.
Personal projects are extremely important for anyone transitioning into the field or for recent graduates. Have personal projects that stand out and that utilize whichever tech stack you are using in a creative and intellectual way.
Previous work projects and pages can also show your potential employer how you work with direction. Be comfortable talking about your previous work projects and pages that you’ve built (as much as you can under NDA). Be able to quantify the effect that your work has had on the success of a product. If you have no prior professional experience, look to be active in the coding community, either through volunteering, teaching, or making open source contributions on GitHub.
If you are a Frontend or UI Designer, a portfolio is a great way to exhibit your talent. You can display your web design skills, responsive web and mobile design skills, and your projects. Most Frontend and UI engineering roles have the option to submit a portfolio, and having one definitely sets you apart from the crowd. Look to code your own portfolio from scratch!
Finally, any other relevant work experience can help you land the job. Not all of the work you can talk about or show has to be engineering-related! If you believe that there were qualities and skills that you gained in your previous work experiences that are critical for the engineering role that you want to apply for, talk about it! Soft skills are just as important as technical skills, and most often they are harder to teach than technical skills.
Employers appreciate a developer with soft skills!