New features

EPI is a community book - its content, quality, and very existence, are a testament to the engagement and enthusiasm of its readers.

In this spirit, we are asking readers to help us by providing feedback on some new material we’ve been working on. Specifically, based on your feedback, we are adding the following features to EPI:

  • Expanded introductions for each chapter. These introductions include
    • An example that illustrates the key data structures and algorithms for that chapter, e.g., how to use binary search with a custom comparator.
    • A table of top-tips for the chapter, e.g., consider reversing arrays of digits to operate on the least-significant digit first.
    • A review of the most important library methods, e.g., Arrays.asList(1,3,5).
  • More domain specific questions. Specifically, in addition to the existing chapter on system design problems, we are adding the following chapters.
    • Programming language questions, e.g., the difference between final and finally.
      a Object-oriented principles, e.g., explain the difference between a class adapter and an object adapter.
    • Tool questions, e.g., describe the role of merging in a version control system.

By acting as a reviewer, you will get

  • a chance to perfect your interviewing skills,
  • an early look at the book,
  • our undying gratitude, and,
  • a free hardcopy of the book, if you are one of the first 25 reviewers or make great contributions to this review.

If you are interested, please sign up via this Google form.

We expect reviewers to spend one to two afternoons going through the assigned material, and identify an issue every 1 to 2 pages.

The perfect is the enemy of the good - please send us your inputs as soon as you can. (We are hoping to have a substantial amount of feedback by mid April.

Issues can be typos, language that is misleading, suboptimum solutions, bad programming practices - in short anything that can improve the quality of the book. Every individual issue you identify should be reported through a Google form, which you can view here.

Here are some examples of issues reported by readers. Note how specific these suggestions are - they have details on where the issue was, what the problem was, what the right wording should be, etc.

  • Suggestion: Solution 12.14: I feel that the limitations of the template method particularly in C++ should be addressed.
  • Typo: The account of HTTPS consistently spells certificate as sertificate.
  • Suggestion: Drop Variant 10.16.1, as it is effectively the same as Problem 10.18.
  • Clarification: I don’t see how it’s possible to sort in O(n) time, as suggested by the writeup at the start of Chapter 13.