Interview Prep

Why Prep?
Interview prep is essential for any young ambitious CS major to land a job. Those shiny, glamorous, well-paying internships with their free Surface Pros and smoothie bars are only accessible to you if you can pass multiple rounds of technical interviews without breaking a sweat and keep your cool while multiple interviewers scrutinize you from across the table. Therefore, interview prep involves two crucial components: knowledge of data structures/algorithms and the ability to recall this knowledge in a timed setting.

Knowing Your Shit
If you've taken 223 and 365, go back and review those notes. If you haven't, The Algorithm Design Manual is a great surface-level guide that can you a nice overview of all the common data structures asked about in interviews. This book won't be anything new to people who've taken 223 and 365, but it offers some good big-picture ideas that may not have been covered in class.

For people starting out, Programming Interviews Exposed is also a great read. It's very comprehensive and covers various interview topics, like logical puzzles, working with strings and arrays, tree traversal, networking, etc.

Another cult classic is Cracking the Coding Interview, which you probably have already heard of because everyone and their mother has read it. This book will give you a lot of basic/common interview questions and covers more than just data structures and algorithms. It has a vast array of questions about everything from SQL to operating systems, and no matter how prepared you are, you can probably still stand to gain something from it.

For the more advanced programmers, Elements of Programming Interviews is the go-to resource for more commentary on interview topics. The author has written a number of programming prep books aimed at preparing people for interviews at companies with the most stringent interview processes, like Google, Amazon, etc.

The first three books listed are more suited for phone/Skype/online interviews, whereas the last will help you prepare for on-site better.

Performing Under Pressure
Everyone knows the excruciating, prickling feeling of giving a presentation or taking a test and having absolutely no idea what to do next. It's easy to fall into that trap during a technical interview, when you're in front of strangers who have no interest in you beyond what you can spit out in the next 45 minutes. So, to circumvent that, do mock interviews with people who can help you simulate that timed, pressurized environment. Ask your fellow CS majors to act as interviewers and have them force you to speak about your thought process and solutions clearly and succinctly.

Independently, you can use websites like LeetCode and Hacker Rank to practice problems and simulate interviews. LeetCode also has categories of the most popular questions asked by Amazon, Facebook, Google, and LinkedIn (you don't have to pay for this--click on the Lists filter while you're browsing problems). LeetCode tends to have better problems (in my humble opinion), but Hacker Rank is commonly used by companies to conduct their actual coding interviews, so it's worth familiarizing yourself with the Hacker Rank environment.

Conclusion
There is no class that can absolutely prepare you for CS internship interviews, so you have to take the initiative and equip yourself with the tools you need to pass those interviews on your own time. Knowledge, glory, and amazing summers in big cities await. Go forth and conquer!