Preparing for a technical interview in the field of software development is challenging. It is even more challenging if you are applying at a company like Google, Apple, Facebook, Microsoft, or Twitter. They recruit the top talent from around the world and have a huge labor pool to find quality software developers. In order to get a job at one of these places you will need to refine and hone your technical abilities. Typically these companies put an emphasis on understanding computer science fundamentals. Common topics include data structures, algorithms, algorithmic complexity, and dynamic programming. If you are stumped looking for good resources to study look no further. Here are the top ten best resources for technical interviews for software developers:
Candidate Coaching Session: Tech Interviewing
If you are the type of person who learns better visually than by reading, check out Google’s YouTube video Hangout on Air: Candidate Coaching Session: Tech Interviewing. The video goes over Google’s entire hiring process for software engineers. This informative video is about 45 minutes long and features two software engineers who work at Google. The video covers everything from the initial phone interview to how the job offer process works and everything inbetween.
Introduction to Algorithms
Introduction to Algorithms by Thomas H. Cormen et al
There are many great books on the subject of algorithms, but most aren’t as rigorous or as complete as Introduction to Algorithms. This book introduces readers to just about any algorithm they’d be asked out during a technical software development job interview. Not only does it introduce the readers to a number of different algorithms, it provides implementation examples, and provides an in depth look at why each algorithms behaves the way it does. If you need to brush up on your algorithms skills, look no further.
Founded in June 2009, Quora is a question-and-answer site edited and organized by its community of users. Although not geared toward software development, there are hundreds of useful answers about technical job interviews. The other great thing about Quora is, if you have a specific question you want answered you will likely get a response within a day.
Cracking the Coding Interview
Cracking the Coding Interview by Gayle Laakmann McDowell
The book, Cracking The Coding Interview by Gayle Laakmann McDowell is considered a definitive resource on the subject of technical software engineering interview preparation. Gayle Laakmann McDowell is also the founder of the site, Career Cup, mentioned later in this article. This book helps readers take their understanding of computer science fundamentals to the next level and covers every major topic necessary to succeed during the interview.
Steve Yegge’s Blog
Steve Yegge’s classic “Get that job at Google” blog post is one of the best reads for preparing for what to expect out of a technical software engineering job interview, especially at Google. His article does a great job at putting you in the mindset of what to expect out the interview process as a whole and what to do if later find out you didn’t get the job you wanted. Although the article is geared toward people who are interviewing with Google, the axioms hold true at just about any major technology company. He covers what you need to know from various topics in computer science including algorithmic complexity, math, data structures, operating system concepts, and coding tips.
Big O Cheat Sheet
If you are looking for a quick, simple, and easy to understand resource to use as a quick reference to brush up on algorithmic complexities Big O Cheat Sheet is a great source to check out. It is a single page site that provides information about the algorithmic complexity of various algorithms and data structures. It is a handy page to have open during any technical software phone interview… just in case you confused your mergesort and select sort complexities.
Over the years, Stack Overflow has evolved into one of the premier question and answer sites in the realm of software development. Pretty much any intelligent question will receive a number of responses from people participating in the Stack Overflow community. Among those questions, are archives of thousands of interview questions asked throughout the years by a number of different companies. It is a great place to start if you aren’t sure what to expect in a technical software engineering interview.
The primary goal of Career Cup is to be the world’s biggest and best source for information about software engineering interview preparation. It is a source of questions and answers from people who have interviewed at a number of the big companies out there. It is a community driven site which encourages collaboration, discussion, and learning.
Although relatively new, our affiliate, Algorithmic Complexity provides answers, all in one location, about many basic technical interview concepts. The site focuses around the idea of algorithmic complexity, hence the name, and provides information about many of the most common algorithms including searching, sorting, string searching, tree traversal, and graphs. The site isn’t currently finished, but in the future, it will also include implementation examples for a number of the most common algorithms. This is definitely a great site to remember if you are looking for a quick reference.
Glassdoor is an amazing resource for preparing for a technical software job interview. Not only does Glassdoor provide user submitted interview questions sorted by company, position, and location, it provides a host of other information such as salary information, employee satisfaction, and job reviews. When going into a technical software job interview it is always a good idea to have a basic understanding of the typical types of questions asked, how much you can expect to be paid if you receive an offer, and whether or not you even want to work for the company. The great thing about Glassdoor is it aggregates all this information in one place from real employees.