Interviewing 101–5 Tips for Conquering Tech Interviews
Interviewing is no joke! It seems daunting, but I guarantee that there is a method for dealing with the madness.
I have been fortunate enough to have recently been on both sides of the table — as an interviewer and an interviewee for both Intern and New Graduate roles. Combining my and my peers’ experiences interviewing candidates and being an interviewee with multiple companies and startups in the past few years including Google, Adobe, Salesforce, and ServiceNow, I’ve narrowed down to five points that have helped me in the interview process.
Note — these are my experiences in New Graduate and Intern roles, but some of the resources can apply to other positions.
Quick Introduction
For those who are not familiar with the process, here is a quick introduction to how tech interviews work. Note that depending on the type of position you are interviewing for, this may change.
Intern and New Grad interviews roughly follow this process:
With a few exceptions — the coding challenge might not be present in some companies. Additionally, Intern Interviews might not have an onsite component, while New Grad ones usually always do.
Now for the juicy part! How did I approach these interviews?
Start Studying Early
It seems like it will be easy, but once you get into studying, you’ll realize that it is an on-going process. No matter how much you study, it seems like there will always be material left to review or problems left to finish.
I started studying with Cracking the Coding Interview by Gayle Laakmann McDowell. It was especially helpful in reviewing data structures and algorithms, strategies for optimization, and applying those concepts in practice questions. It even goes over the interview steps for more insight into the process for companies like Google and Facebook.
As a whole, you want to focus on reviewing the following areas for technical interviews:
- Data Structures (LinkedLists, String Operations, Hashmaps, Queues, etc.)
- Algorithms (Sorting, BFS/DFS, etc.)
- Complexity (Time & Space Complexity)
- How to Optimize a Solution
Some additional resources that I’ve found helpful in targeting those areas:
- Technical Interview Cheat Sheet — Quick review of all the concepts — data structures, algorithms, etc.
- Time Complexity Cheat Sheet — Review of Time & Space Complexity for data structures, operations, and algorithms.
Now for the Programming Language! One question that I’ve always had was what programming language to choose. I would recommend choosing one that you are extremely comfortable with that can be used to program data structures and OOP concepts. Personally coming from a data science background, my primary preference is for Python, then Java depending on the question (I usually like doing some of the more complex data structures questions in Java).
One more thing to note is that depending on the position you are applying for, you may need to prepare for additional types of questions. Here are some great interview resources for other positions (not all-encompassing):
Front-end:
- 10 Interview Questions Every JavaScript Developer Should Know from Eric Elliott
- Front-End Developer Interview Questions — Has general, HTML, CSS, and Javascript questions
- Interview Questions for Front-End-Developer — Good medley of questions and answers
- Front End Interview Handbook — Comes in different languages as well!
Data Science:
Do your Research
Always do your research! Research your interviewers, your team, and most importantly, the company, and its values. I’ve been notoriously known to LinkedIn stalk my interviewers, skim team blogs, etc.
The more you know in these areas before the interview the better you can understand their background, the company, and its values and structure your answers to their questions and even ask more relevant questions.
The Approach
Sure, in the interview, finishing the programming problem is a priority, but how you approach solving the problem is most important.
First, Refine your thinking so you are coming to a solution ASAP (even if it turns out to be brute force). Then, you can focus on optimizing your answer later. If your interviewers are not interested in the brute force method, they will let you know. But they will only know if you communicate!
This brings me to my next point — Throughout this process, remember to communicate your thinking process. As an interviewer, this was helpful, as I was able to pitch in and give hints if I saw the candidate struggling or going off-track in their approach.
Finally, always ask questions before jumping into coding. It helps you better understand the question and shows the interviewer that you are thorough in your thinking process.
My favorite questions to ask are:
- Clarifying questions (so I know exactly what the expectations are)
- Edge cases
If time permits, always write test cases to test your answer. Bonus points if you can run through your test cases step-by-step.
Prepare!
Luckily not everything needs to be on-the-spot, there are parts of the interview you can prepare for before the big day.
One area is behavioral questions. As an interviewer, I usually asked these questions to learn more about the candidate, their experiences, and gauge their interest. My favorite answers are ones that tell a story with a moral or message. I would recommend starting with the message and then weaving the story afterward.
Choose stories where you’ve demonstrated a quality that you want to highlight (i.e. mention a story where you worked with a team and focus on your time management, leadership, etc). Not every experience has to be a positive one, but you need to mention what you learned from it! Here are some examples of commonly asked questions. Be sure to be able to answer questions like why you interested in the position/company.
Now it is your time to question! You’ve probably heard this before, but interviews are a 2-way street. While the interviewers are evaluating you, you are also evaluating them and trying to figure out if this is the right place for you. Spectra’s co-founder, Christina Cook says, “Having no questions at the end shows you don’t care about the company and you’re not curious” (Medium). You always want to show that you are enthusiastic about the company!
For help on coming up with questions to ask, here are some resources you can reference:
PRACTICE. PRACTICE. PRACTICE.
Yes, this requires all-caps and repetition. Remember, this is not the same as studying for exams. Practice speaking your thoughts and approach out loud!
Here are some resources you can use to practice coding. Remember to treat it like the real deal — talk through your answers and approach, find the time complexity, etc:
Finally, don’t be afraid to jump into interviews, sometimes the best practice is on the go. Initially, I was afraid to start interviewing as I felt that I was not ready, but I realized that there will always be material to review and problems to finish. Once I started, I learned from each interview — my strong points, what I needed to work on, etc.
Let me know in the comments below if you have any additional strategies or resources that you’ve used to prepare for Technical Interviews.
Feel free to reach out to me via LinkedIn or Twitter.
Good Luck and Happy Interviewing!
Prathyusha Charagondla is a Site Reliability Engineer @ Adobe, engaging with core internal platforms to improve their reliability. She recently graduated from University of California, Berkeley with a double major in Data Science and Cognitive Science, with an emphasis in Computing. She is passionate about technology and its trends. In her free time, she enjoys teaching yoga, traveling and trying new food. Follow me on Twitter at @pcharagondla.