This book is one of those books that you need when you want to prepare for a coding interview process. The reason is because knowing how to solve these kinds of algorithms, type of problems and how to use data structures and algorithms effectively is really critical to passing a coding interview.
You might not like coding interviews. But the Big Tech companies are going to use these coding interviews and that is the reality, you need to know how to solve these types of problems or if you are given one of these scenarios, you must be able to solve the problems in front of you.
Cracking the Coding Interview has a lot of good advice. It starts with talking about soft stuff that you might find useful for learning how to conduct yourself in an interview, the types of interviews and how to format your resume.
After that, it goes into the technical aspects of it, so it covers everything that I could think of that you need to know from data structures, the diverse types of algorithms. There are not many of them, but once you know how to solve those problems which this book shows you how to do then you are going to be confident and be able to go into the interviews and solve those exercises. No matter what they throw at you because there are only many variations of those.
This last part, the OO programming and design questions, and their solutions, is the most important in the book, and it really is a good collection of programming questions.
Big O notation is my favorite part of the book. The very concrete way in which it describes what this concept is seems truly clear to me. “Big O time is the language and metric we use to describe the efficiency of algorithms.”
This made me very clear about what this notation is. The way they explain logarithmic complexity is poetic.
If you see a tree data structure, you see that depending on the elements is the height of the data structure. Logarithmic means that you will go through each level of a tree once, and the height of the tree is log2 n. This is a graphical and simple reason to understand this complexity.
Finally, this book is incredibly good to prepare, but for better results we must rely on some other material. For example, what I did was take a course on algorithms (MIT 6.006 Introduction to Algorithms, Fall 2011) and after that, reinforce the knowledge with the concepts and exercises that Cracking the Coding Interview handles.