Written by: Stefan Bradstreet
You’ve put in the hard work to either get your computer science degree, coding bootcamp certificate, improve your skills on an existing job and want to see what else is out there, or just contributed to a few open source projects and now you want to make a career out of your desire to contribute awesome code to cool projects. Then you went ahead and made your linked in profile show that you are a serious coder, you’ve submitted resumes to hired or monster, and all your favorite tech firms in the places you want to live in. Now you’ve gotten some call backs saying one of those companies wants to give you an interview and give you a chance to show your stuff and ensure you’re a right fit for the culture of the firm.
If this is your first or twentieth interview it’s’ normal to be a little bit nervous, but if you’ve done the necessary preparation this is an exciting moment to show that not only does your resume talk the talk but you can walk the walk and make meaningful contributions to the teams code bases and atmosphere.
In this article I will describe how to prepare the weeks before your interview, the days before your interview, and what to expect the day of your interview. And I will give examples of how to prepare for behavior questions, tips for coding questions, and discuss the value of doing mock interviews.
Apple AirPods with Charging Case (Latest Model)
Please help support this site by purchasing items after clicking through our Amazon links
The weeks before
The few weeks leading up to your interview is your chance to get back into interview mode. You can use this time to reflect on the experiences you had and how you will use these to answer the questions that will inevitably be asked to you. Also practice answering some of these questions in STAR format where you explain the:
- Situation: What business challenge came up?
- Task: What was your responsibility in this?
- Action: What did you do to resolve the situation?
- Result: What was the measurable outcome?
Ex: Tell me about your a recent improvement you made?
I observed my teams software was running inefficiently after it grew to a larger user base. I investigated the part of the code that was gathering all the products for our main homepage and realized it was using an inefficient algorithm to parse the results based on customers recent viewing history. I refactored this code to use an N log N algorithm instead of the existing O(N^2) processing and obtained a 30% increase in the homepage load times which I measured using a benchmarking test I also added into the source code.
Using that example try writing your own STAR solutions to the below 10 questions:
- Tell me about the project you are most proud of, and what your contribution was.
- Tell me about a time you went above and beyond a customers expectations
- How have you previously managed and deployed your code?
- What improvements have you made to a previous teams daily work?
- Have you ever had a disagreement with a co-worker that caused delays to a deadline? How did you reach a resolution?
- Why do you want to work here?
- Describe a time where you’ve made a mistake? What kind of setbacks did this cause? How did you overcome it?
- How do you typically balance work and life?
- Describe your dream job?
- Give me an example of a time you’ve been disappointed in your work?
Additionally, research the company you are interviewing for and write some meaningful questions to ask the interviewer as well such as what do you enjoy about working on product A, or whats the culture like at company B. Don’t use that time to ask “How much free food can I get here?” or some other random question that asks what can your company do for me, instead of what can I do for your company. This should also be one of your main motivations in working at the company you applied for and not just getting a paycheck, otherwise you will find yourself getting easily burned out.
As well as the behavior questions above, a lot of companies will also ask you basic computer science questions or to do a coding question. If you are familiar with hacker rank, or leet code, or the cracking the coding interview book then this section of the interview should be fairly easy for you. If not then use this time to get the book and practice the problems, or to grind out leet code problems and study their optimizations and discussion forums.
And since coding in front of someone is different than yourself remember these tips while working out a solution:
- State your assumptions
- Think through edge cases that come up from the inputs
- Describe what your initial thinking is for solving the problem and remember to keep talking through your solution. If you stand in front of the board motionless the interviewer likely doesn’t know if you are thinking or if you have given up.
- Implement your brute force solution. Interviewers are more impressed by working code then an over engineered solution that is only 50% evolved in the time allotted for the question.
- Write clean code but state you will be using shorthand names to save on time writing but normally you’d use descriptive names. This is perfectly acceptable
- If you reach a stumbling point, mock out running your code and walk some data through your algorithm. Write down an example array that you need to shift and show what happens after an iteration of a for loop.
- If you’ve reached a working solution what can you optimize?
- Can your code be split out into discrete testable functions?
- Does your code need error handling?
- Is it important to notify anyone if it breaks?
Remember the interviewer is there to evaluate if he or she would like to be your coworker so stay energetic and positive throughout the experience. They know coding on a white board is different then day to day coding and because of this they may give hints or be eager to work with you provided you communicate you are stumbling on this problem. Say what steps you would take to solve the problem if this was your daily assignment.
To add some more realism to your preparation ask a friend to give you a mock interview. This will help give you a sense of how well your have been preparing for your interview. Also pick a person you know that will give you honest feedback, if you ask a parent or significant other who’s not from a technical background to just ask you the questions they likely won’t know if your answers demonstrate your technical aptitude. As an interviewer, I also give mock interviews where I provide my honest feedback and suggestions on how to improve and further prepare for your interview. View my services page for more information.
The day before
The day before your interview is your last chance to prepare. Assuming you haven’t procrastinated this should just be another typical day to practice your behavioral questions and finish another coding problem or two. Remember to eat well, stay relaxed, and get a good nights sleep. Practice some meditation where you envision yourself in the interview room with a person that has experience working at the company you want to work for, and envision yourself confidently responding to their questions while clearly communicating the Situation, Task, Action, and Result.
At one point in time your interviewer was you, sitting on your side of the interview table and excited to show off their achievements. And a few years down the road it may be you giving the interview. Also remember, the company gave you this chance because your resume showed you were qualified but yet according to this quora answer only 1/5th of candidates coming in get an offer. Don’t let this metric intimate you; if you have done the necessary preparation you can be one of the 20% to get an offer but I bring this up to emphasize how important this preparation is.
By exuding confidence in the interview room from your interview prep you will communicate to the interviewers that you are dedicated and that you are driven to be a part of the company. But also don’t get too over confident because this may give an impression that you are difficult to work and collaborate with.
Lastly, if you need to travel for your interview do so in a timely manner. Allow yourself to get familiar with your surroundings so you appear onsite with a comfortable and energetic attitude.
The day of your interview
This is the day we’ve been preparing for and you’ve come a long way even to just get this far. This is an achievement in itself and you should be proud of the work you’ve put in so far! No matter what happens during the interview, treat it as an opportunity to grow and learn. Ensure you wake up at a good time to allow yourself to shower, get a good breakfast, exercise to get the endorphins going if that is your thing. Be careful eating lots of simple sugars or caffeine because while these may help you be more alert for the first two interviews if it is a panel, they have a crashing effect latter in the day which could result in you being unfocused and have a deprecated experience. Wear something that communicates your purpose but still allows you to be yourself and be comfortable. Many interviewers have given hundreds of interviews and have a good instinct when someone is over compensating for a lack of skill in other areas.
Now, get to the interview site on time. If the interview is in an unfamiliar large city give yourself time to adjust for traffic and not knowing your way around. If you are really prepared and got a hotel across the street from the interview site then good for you! You likely already have a leg up on the other candidates for this same position. You didn’t think you were the only one did you? Luckily the supply of tech jobs is plentiful if you don’t land this position, so don’t take a “no” as a defeat since maybe this team was just looking for something a little stronger in one software discipline where you excel at another. When you get in the room answer the questions with pride in the work you’ve done before because even in the above scenario the interviewers may know other teams or companies that would love to have someone just like you. Treat this interview as a typical meeting and keep good eye contact. This meeting is for you and take the opportunity to show your leadership and friendliness, while still being mindful of the interviewers questions and objective to get a feel for who you are.
After all the interviews are done now it’s time for what may be the hardest part. Wait for their judgement. If they say we want you to work for our team, do you have a strategy for compensation negotiations or even know what your current skillset is worth? That is a whole other topic I won’t cover here.
If the interview didn’t go so well, reflect on the interview and the process and iterate to improve for next time! Steady progress in my interests is what has driven me to where I am from a 18 year old biology college drop out and many other numerous set backs. Treat a set back as an opportunity to stand up a wiser and stronger person and you will get the position you deserve! Thank you for making it this far, you will do great, and let me know what interview you are preparing for below in the comments.
About Stefan Bradstreet
Stefan is a Senior Software Developer at Amazon with 8+ years of experience in tech. He is passionate about helping people become better coders and climbing the ranks in their careers, as well as his own, through continued learning of leadership techniques and software best practices.
One thought on “How to Prepare For Your Technical Programming Interview”