Additional Resources
After going through this module and the challenges, you should be pretty well-prepared for the programming and algorithms challenges on actual interviews. As mentioned, you should still brush up on behavioral, knowledge and design interview questions. If you've completed all of Learneroo's Algorithms Tutorials and still want to learn more, check out the additional resources on this page.
Algorithms
If you want to learn Algorithms in-depth, you can browse through a textbook on the topic. You don't need the theoretical-focused CLRS book, but can instead check out one of these textbooks or courses:
- The Algorithm Design Manual, - This book consists of 2 parts:
- A guide to design and analysis of Algorithms
- A catalog of problems and how to solve them (See also this book's online Algorithm Repository)
- Algorithms (Sedgewick & Wayne) - Java-based textbook, which also has an accompanying booksite and Coursera course.
- To learn Algorithms with Python, check out this interactive ebook or Udacity's Algorithms course.
Programming Interview Books
If you're focused on preparing for an interview, check out one of these books. They each focus on practicing for technical interviews, but also cover some other aspects of the interview process.
- Cracking the Coding Interview - Lots of practice questions, with short explanations in the back.
- Programming Interviews Exposed - Less questions, but longer explanations accompany each one.
Software Design
To learn or review the basics of object-oriented design, you can read the relevant chapters from a more general book. Beginners can go through Chapters 6 and 13 in Objects First with Java, while more experienced developers can read chapters 5 and 6 from Code Complete.
If you want to study design in more detail, check out these books:
- Head First Object-Oriented Analysis and Design - If you're into random pictures, get this book.
- Building Skills in Object-Oriented Design - Free online textbook for both Java and Python, with long examples for designing casino games.
(Note that some companies may be more interested in other approaches, such as test-driven design.)
Online OOP-Design examples:
- ATM Machine - A detailed walk-through of the standard CRC method for designing software (for an ATM machine).
- Coffee Maker - Argues that people design software (for a coffee maker) poorly, and presents a better way.
Courses
- Foundations of Programming: Object-Oriented Design - Basic Java course on Lynda
- Design of Computer Programs - Python-based course on Udacity