How to Crush Your Coding Interview
Do you have a big interview for your dream tech job? Not sure what to expect? Interviews can be stressful, but it helps to know how to prepare, especially when it’s for a job you really want. After all, landing your dream job after a series of challenging interviews is a great feeling! So how do you get there? Let’s set you up for interview success.
Before we dive in, it’s important to remember that interviewing is a skill. It’s okay if you feel shaky or uncertain about your tech interviewing abilities. It’s something that takes practice! Even people who are the very best in their fields often do trial rounds to make sure they’re as confident as they can be.
When it comes to coding jobs, you need to understand the different stages of the interview process. Most companies will test you on a variety of skills, from technical abilities like machine coding, to logical thinking, to soft skills like clear communication and personality fit.
So keep in mind that while different companies might have similar interview stages, there are ways that each company's process will also be different. Some might include system design, while others might leave that out and include a section on algorithms. A lot of this also has to do with what type of job you’re applying for, although it’s not uncommon to be tested on skills that aren’t 100% relevant to the position you want. Let’s cover the essentials.
Technical Challenges—Rules of Thumb
Before testing you on anything else, a company will make sure that you have the technical qualifications for the job. Things like coding challenges, problem solving tests, and design tasks often come first in the process.
Before going over what some of these technical challenges will look like, let’s talk about best practices. When in doubt, rely on these strategies.
When you get a question…
It can be tempting to instantly start thinking of your solution, mid-question. Avoid this. You should listen to the prompt in its entirety first. It's always possible that you'll miss some crucial information if you stop paying attention halfway through the prompt.
You also want to make sure you understand the problem correctly. Repeat the prompt back to the interviewer to confirm that your understanding is accurate. You don't want to miss any crucial details!
And speaking of crucial details, chances are the interviewer in the technical round has not given you all of the information you need in order to come up with a great solution. You need to ask clarifying questions and seek out more details. It's possible that this interview process will look more like a dialogue, with you getting clarification, proposing a course of action, and getting feedback from the interviewer. This isn't always the case, but it might be for you.
Once you've listened to the prompt in its entirety, confirmed your understanding of the question, and sought any other details you might need in order to come up with a solid plan of attack… then you can begin!
Communicate your process
As you work, communicate your process to the interviewer. They're not a mindreader! It's possible that you’re approaching the problem differently than they would, so explaining your process can help give them clarity and give you credit, even if your plan of attack is different or unexpected.
Double-check your work
Once you've finished your work—no, you haven’t! Be sure to double-check your process before telling the interviewer you’re done. You don't want a small mistake to get between you and landing this great job. You won’t regret taking a little bit of extra time to review your steps.
Technical Challenges—What You’ll Face
Now that we've talked about how to approach any technical challenge, let’s discuss some examples of technical challenges you might face.
Coding challenges—online vs. machine
You will probably be presented with a timed coding challenge. You might be able to choose which scripting language to code in, or the interviewer might require a specific language (depending on the position you applied for). These challenges can include online coding or machine coding, or both. Practice your skills with tools like HackerRank for online coding, and refresh your knowledge of things like OOP principles and design patterns for machine coding.
Problem solving—algorithms & data structures
You'll also be tested on your problem solving, or logic abilities. This can involve working with algorithms or data structures. Some challenges might not feel relevant to your job (e.g. if you're applying for a front-end staff position but are tested on algorithms). But you should still brush up on these types of exercises because they can come up regardless of the position you applied for. To practice for this round, try out LeetCode or CodeChef.
You’ll likely face a design challenge, since system design is an essential skill for software developers. Be encouraged by the fact that these rounds don’t have a single correct answer! There’s lots of room for creativity. But this means it’s especially important to ask clarifying questions about scope.
For recommendations on how to practice high level design vs low level design, check out this article.
Vetting Your Soft Skills
Now that we've talked about technical challenges, let's talk about how the company will evaluate your soft skills.
After making sure your qualifications match the company's job posting, you’ll meet with the hiring manager. This conversation will help the hiring manager get a sense of your communication skills, professionalism, and work style.
Before this interview, try to brainstorm questions that you’ll be asked, and practice your answers. You can have a friend help you out with this! If you’re struggling to think of interview questions, check out this list for inspiration.
Some companies might also test your personality fit with the team. This can involve a group interview with several staff members you’d be working with. This interview might also take longer than the one-on-one interview you had with the hiring manager. You might go in for an entire work day and possibly have lunch with your future colleagues. Seeing how you interact with the company team will give them a sense of who you are as a person, and whether your personality traits jive with the existing team. Don't neglect your people skills!
Now that you have a sense of what to expect for your coding job interviews, you can prepare with confidence! Remember: be an active listener, communicate clearly, practice your technical skills, and be friendly. You’re going to crush it!