Technical Interview Materials

1 minute read


My most popular GitHub project: C++ and Python solutions to Cracking the Coding Interview.


When speaking to me about the Silicon Valley interview process, people are surprised to hear that I struggle greatly with technical whiteboard interviews that are common in my industry. In fact, the situation affected me so much that in 2016 I decided - regardless of where I am employed - to always practice fundamental techniques in computer science.

I created this GitHub repository where I write solutions to every problem in the computer science interview bible, Cracking the Coding Interview, in Python and C++. Furthermore, I produce the solutions with the highest level of engineering rigor I can attain: they have > 90% unit test coverage and an automatic build and testing system that verifies every solution any time code is changed.

This project has gained the most public attention of any of my work on GitHub by an order of magnitude: it has over 320 stars, > 100 forks, and a place in the first page GitHub search results for the title of the textbook. Clearly, many people struggle with the same interview challenges.

I highly recommend this exercise to others in my industry. Some argue that solving this type of problems is a waste of time for a professional: problems from an interview textbook almost never appear in real life. I myself have made similar arguments in the past. Counterintuitively, I consider this project to be central to who I am as an engineer today. This project gave me the opporunity to design a medium sized codebase, create a automated test system, support multiple programming languages, support multiple operating systems, support multiple compilers, implement hundreds of algorithms, and write hundreds of unit tests. In other words, by doing this labor of solving toy problems that “never appear in real life”, I gained more practical experience than the majority of projects in my actual career.

Snapshot of a Problem Solving Session:

CTCI Teaser Image