In an ideal world, you would be perfectly prepared for technical interviews before having to go through them and you would know exactly what to say. For most people (myself included), however, that first interview is a complete mystery — you have no idea what to say or do or expect. I wanted to compile my personal list of preparation reminders so that I have a semi-permanent reference for people who ask me for advice!
First, understand yourself and how you want to be portrayed. Find an empty room and ask (or get a trusted friend to ask you) this question: Tell me about yourself. It’s an incredibly open-ended question, but it’s one that interviewers love for some reason. You would be surprised by how difficult it is to actually answer this question, but you don’t know what you’ll say until you say it out loud. Things that sound great in your head will sound completely embarrassing when you say them out loud. Prevent some hindsight regret and “Did I really just say that?” by thinking about your answer to this question before your interview. What do you want the interviewer to know about you? What are you trying to convey?
Along the same lines, know which projects and technical challenges you want to talk about. Once, during a phone screen for a software test internship, I was asked about a favorite recent project and what I had done to debug it. My answer went something along the lines of I dunno it just worked? Maybe it’s just me, but I don’t think that’s what you want to say when you’re interviewing for a job where you test software. The point is that you need to be prepared to talk about the technical challenges and interesting aspects of the projects that you list in your resume or that you bring up during your interview. Choose something that excites you and that excitement will show, even in a phone interview. If applicable or possible, you should also be ready to talk about teamwork / leadership challenges associated with working with other people on technical projects.
In terms of technical preparation, it depends on how much time you have. If you have a couple of weeks, check out Cracking the Coding Interview or Programming Interviews Exposed. The latter is recommended by Google and free online for Stanford students! If you look at preparation books and your immediate reaction is ain’t nobody got time for that, that’s okay too — I honestly haven’t even read those books myself. (People just keep recommending them to me over and over and over, so I assume they have some value.) In terms of short-notice preparation, you can check out sites like Career Cup and Interview Cake. For specific topics, my broad list is: data structures, big-O runtimes, general algorithms, favorite programming language syntax, bits and binary logic, and maybe throw in some hashing wherever it seems appropriate. I also highly recommend this Reddit post titled “Here’s How to Prepare for Tech Interviews” and I think it has an excellent list of tips and topics for interviewing. /r/cscareerquestions is a generally good resource for — you guessed it — CS career questions.
During the interview itself, just remember to breathe. Plan out your algorithm before you start coding it. Don’t go completely silent on your interviewer (especially during a phone interview) — they want to know how you think and solve problems, not that you can solve this specific problem. Talk out loud. When you’re completely stuck, just run through all the tools you have (see the bolded sentence above) and see if any of them could be applied.
Other than that, there isn’t much else you have to do to prepare for a technical interview — you honestly just have to bring your most relaxed self and hope for the best. The most important thing to keep in mind is that even if you don’t do as well as you expected, it’s still great practice for the next one. I cannot blindly say to you, anonymous reader, that you will ace your interviews, but I can say that one interview will not destroy your career. Well, probably.