A comprehensive guide to mastering technical coding interviews, covering data structures, algorithms, and problem-solving strategies.
This book is designed to help developers at all levels prepare for coding interviews. Whether you're a recent graduate or an experienced developer, you'll find practical examples, clear explanations, and actionable strategies to succeed in technical interviews.
- Fundamentals: Big O notation, time and space complexity
- Data Structures: Arrays, strings, linked lists, stacks, queues, heaps, hash tables, trees, and graphs
- Algorithms: Searching, sorting, recursion, dynamic programming, and greedy algorithms
- Interview Strategies: How to approach problems, communicate your thinking, and handle different interview formats
- Practice: Real interview questions with detailed solutions
Visit the book website: https://codinginterviewsbook.davekanter.com/
Code examples are embedded throughout the chapters. The code/ directory structure is available for organizing standalone examples as the project evolves. Most examples are provided in Python, with additional examples in JavaScript where relevant.
This book is built using Jupyter Book, which allows for:
- Beautiful, searchable documentation
- Executable code examples
- Interactive learning experiences
- Multiple output formats (HTML, PDF, EPUB)
# Clone the repository
git clone https://github.com/raydot/nailing-the-coding-interview.git
cd nailing-the-coding-interview
# Create conda environment
conda env create -f environment.yml
# Activate environment
conda activate coding-interview-book
# Build the book
jupyter-book build .
# Open in browser
open _build/html/index.htmlSee SETUP.md for detailed setup instructions.
- Preface
- Chapter 1: Preparing for the Coding Interview
- Chapter 2: Big O Notation
- Chapter 3: Strings
- Chapter 4: Arrays
- Chapter 5: Linked Lists
- Chapter 6: Stacks and Queues
- Chapter 7: Heaps
- Chapter 8: Hashes
- Chapter 9: Trees
- Chapter 10: Graphs
- Chapter 11: Functions and Recursion
- Chapter 12: Search and Sort
- Chapter 13: Dynamic Programming and Greedy Algorithms
- Chapter 14: Parallel Thinking Questions
- Chapter 15: Using Generative AI to Study
Found an error? Have a suggestion? Contributions are welcome!
- Report Issues: GitHub Issues
- Discussions: GitHub Discussions
- Pull Requests: Feel free to submit PRs for typos, corrections, or improvements
© 2025 Dave Kanter. CC BY-NC-SA 4.0
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
This means you're free to:
- ✅ Share — Copy and redistribute the material
- ✅ Adapt — Remix, transform, and build upon the material
- ✅ Use for learning — Personal and educational use
Under these conditions:
- 📝 Attribution — Give appropriate credit and link to license
- 🚫 NonCommercial — No commercial use or monetization
- 🔄 ShareAlike — Distribute modifications under the same license
See the LICENSE file for full details.
Dave Kanter
- GitHub: @raydot
To Momma and the Boy, because they know why. Also thanks Dad, for getting me on the plinth in the first place.
- Content: Markdown with MyST extensions
- Build System: Jupyter Book
- Hosting: GitHub Pages
- Version Control: Git/GitHub
- Environment: Python 3.11 + Conda
- ✅ Content converted from AsciiDoc to Markdown
- ✅ Website deployed and live at codinginterviewsbook.davekanter.com
- ✅ Chapters 0–13 drafted with code examples
⚠️ Chapter 14 (Parallel Thinking) needs expansion⚠️ Chapter 15 (Generative AI) not yet started- 🚧 Visual assets (diagrams) for chapters 4–12 in progress
- 🚧 Interactive code examples coming soon
- Convert content to Markdown
- Remove O'Reilly branding
- Set up Jupyter Book
- Deploy website to production
- Complete Chapter 14 (Parallel Thinking Questions)
- Write Chapter 15 (Using Generative AI to Study)
- Create visual assets (30+ diagrams for chapters 4–12)
- Add interactive code examples
- Expand practice problems and exercises
- Add video tutorials (maybe)
- Publish PDF/EPUB versions
Star this repo ⭐ if you find it helpful!