about this book
Despite the motivating anecdote in the preface, my aim here isn’t to provide yet another book designed to help readers get past the gatekeepers who pose coding problems in interviews. If this book helps you do well in a coding interview, I’d be thrilled, of course, but that’s not what this book is for. Neither is it intended to be an academic textbook. You won’t find formal proofs, difficult equations, or exercises at the end of each chapter.
Almost all the algorithms and data structures I cover in this book are ones I had to learn about to solve real, practical problems when building developer tools. One of the secrets of my success was taking ideas from academic computer science that weren’t covered in the undergraduate curriculum and applying them to practical problems. Having these tools in my toolbox was very helpful.
The few algorithms that were not germane to a specific work-related problem are included here because they’re fun. Most of you reading this book started programming for the thrill that comes from having an idea, writing it down in a special language, and seeing that idea comes to life as a running program you can interact with. I’ve been writing programs for more than 45 years, and I still get joy from making a thing that works. I learned a lot from that practice; I hope that you do too.