I’ve interviewed upwards of a hundred or so people for software engineering positions in our dev group these past few years. Candidates range from amazing, to just missing the cut, to not even close. A lot of candidates confuse me as to why they even came in for an interview. While we try our best to weed out those that aren’t prepared in a phone screen, it’s inevitable some people get through and we end up with a blank white board after a 45-minute coding interview. Sometimes I want to say, “You made it in the door! Why not do at least a little prep?”
I’ve seen articles online that offer extensive guides on how to prep for coding interviews that can take anywhere from 6 to 12 months (or longer) to go through. I think there are a lot of candidates that have a good foundation via an education and work experience, that all they have to do is go through a general refresher to be ready for a coding interview. This is a guide for those people. This is not a sure-fire guide to pass an interview, but going through this prep should help somebody that is in a time-crunch.
Delaying Your Interview
In general, recruiters and hiring managers want you to come in as soon as possible. If you think you get excited as a candidate to get the opportunity to interview at your dream job, managers/recruiters are just as excited to bring in a talented engineer. If you feel you aren’t ready for an interview, ask to delay your interview day. Personally, I’m alright with a candidate telling me that she or he must brush up on some fundamentals. The amount of time you can delay varies depending on the recruiter/manager/company, so discuss with the person with which you are speaking about the position.
Understand the Interview Structure
If the recruiter/manager doesn’t readily offer a guide on subjects covered in the interview, just ask! Most managers will share high-level information. Believe it or not, we really want you to succeed!
What To Study
In this guide, I’m assuming you’ll be going through the general coding interview:
- System Design
- Data Structures and Algorithms
- Personality-based Interview
I’ll share some do’s and don’ts in an interview (really important stuff). I apologize in advance, some of this is Java-specific.
So your current job has you coding in Java daily, do you think that makes you ready for a coding interview? Maybe, maybe not. I see it a lot: A developer has been coding in Java for the past 5 years but when put in front of a white board, it turns into a big failure.
In some cases, the candidate hasn’t coded without an IDE in years and forgot the basics. In other cases, the developer forgot how to create and use various data structures in their language of choice (most day-to-day coding jobs don’t require the developer to use data structures outside of lists).
Tips to Quickly Prep for a Coding Interview
- LeetCode – LeetCode is very easy to write and test your code against various problems. Get used to at the very least solving some of the easy problems. Most of them depend on using the correct data structures and knowing how to use them without an IDE.
This should be the easiest section of the interview, but this section seems to confuse a lot of candidates. There is a pattern on how to go about this section explained in much more detail on other sites, so I’ll just give some tips here:
- We like to see that the candidate was having a conversation with us and this is not just a one-way Q&A section. So ask a lot of questions, but also talk about where you might start.
- There is no right answer! There are many ways to solve these problems, we just want to understand your thought process about how you might solve this particular problem.
- Don’t just start throwing out guesses. For example, if you’re unsure about how to scale out multiple front-end web servers, let the interviewer know. The interviewer may change the question or define it differently based on your knowledge.
- Take feedback and adjust. Your interviewer may bring up reasons why your design may be optimal, so be sure to listen.
Tips to Quickly Prep for a System Design Interview
- HiredInTech’s training course for System Design – This training will take you less than a few hours to go through, but is the template on how to pass a system design interview.
- Harvard Course on Scalability – This is the best hour and forty-five minutes you’ll spend on youtube. If you’re unsure on how to scale websites in a general sense, this will cover that for you.
Data Structures and Algorithms
This will probably be the most difficult section of your interview prep. Algorithm studying can be very time consuming. My suggestion is to study data structures ahead of algorithms. If you graduated with a CS degree or equivalent, this should all be a refresher from your algorithms course. If you didn’t graduate with a CS degree, this may take some time to learn, so be prepared.
Tips to Quickly Prep for a Data Structures and Algorithms Interview
- LeetCode – Again, I’m going have to recommend LeetCode. Each of the questions has tags that allow you to search for specific algorithms or data structures that you’d like to brush up on.
- Cracking the Coding Interview – This is the most common interview prep book for a reason. The sections are short and concise. A very easy read if this is all familiar material.
- Collections in Java – If your interview is in Java, review the various collections in Java. Most coding questions in an interview that depend on data structures will expect the candidate to know how to use them.
It’s really cliché, but “be yourself” is probably the best advice I can give.
But if you need a little more in terms of tips, here are some do’s and don’ts:
- Be passionate about something! We love to hear candidates that are passionate about some area of technology.
- Tell us some of the things you’re looking for in the next step of your career.
- Ask plenty of questions about what it’s like to work in our group. We’ll gladly answer!
- I understand that you may be looking for a new position because you feel negative about your current group. That’s fine, but don’t dwell on it too much in an interview. When every comment about your current group is negative, it can turn the conversation a bit sour.
- Do NOT, I repeat, do NOT share anything with us that you are contractually obligated or ethically responsible to withhold. The worst case of this I have seen was a candidate that had code which he wrote for his work on his personal google drive account and offered to share it. Please don’t do that!
- Do not “steam roll” the interviewer with information. It’s important to remember that every interview section is a 2-way conversation.
Hopefully this guide has been helpful. The best way to prep for an interview is still to start your preparation months before you plan on interviewing, but sometimes you just don’t have that option. If you’re headed in for an interview in the near future, good luck!