Be prepared

EPI Ebook on Google Play

We’re happy to announce EPI is now available as an Ebook through Google Play!

Here’s the link, to the C++ version, which includes a sample. Here’s a link to the Java version.

You can read Google Play books on Android, IOS, and your computer:
Android instructions,
IOS instructions,
reading on your computer.

The Ebook is identical to the printed copy.

Read our post EPI in a nutshell to get a broader overview of our book.

Navigating the Ebook

The typographic quality of iBooks and Kindle is unacceptable for a book like EPI that has sophisticated tables, drawings, equations, code, etc. (The input to these formats is HTML and the result is hideous - trust us, we’ve tried.)

Google Play is the only ebook format that will render EPI perfectly. The PDF we provide Google includes hyperlinks that allow you to click on problems in the table of contents, and referenced page numbers. However, despite multiple attempts on our part, Google Play strips these links out, making the ebook slower to navigate and search.

With Google Play you buy the book, try it out, and ask for a refund within a certain time period, and we encourage you to take advantage of this facility.

Offline viewing
Some readers have had problems viewing the book offline. Here’s one reader’s experience, and his solution.

Last night when I disabled wifi, I noticed the book disappeared. Upon connecting to the wifi again I noticed the book eventually came back. I thought I had synced all pages manually, but I noticed I was missing a few pages in the middle. Apparently the app won’t let you view the book offline until all pages are synced. I noted that during all these times the blue circle with checkmark was to the bottom right of the book as if the book is synced, but that wasn’t the case.

I decided to sync those missing pages manually, but I noticed a weird thing after they were synced like a repetition of the same pages, like 65-68 couple of times in a row. I decided at that time to remove the book from downloads, and close the app altogether (double tap on home key and scroll up the app in the background). I thought about reinstalling the book app, but didn’t.

Then I started the download of the book again overnight…

This morning I noticed the blue checkmark, as if the book is synced. Upon opening it, I saw that the pages weren’t synced either. This time I went to the beginning of the book, and scroll to the end (faster if you put the device in horizontal/landscape/2pages mode). Making sure that all pages are synced. Then did a couple of tests relaunching the app after:

  • wifi disabled (app still in background)
  • wifi disabled, close app.
  • wifi disabled, rebooted ipad

and they all worked and I was able to read the book offline this time. Maybe the book was corrupted before ?

But I can tell that blue checkmark on the bottom right of the book doesn’t mean sync (at least not here)

Read More

Why we wrote EPI

We wrote EPI for you!

EPI began as a Google Doc which we prepared for our friends who wanted to join companies
like Google, Facebook, Amazon, Microsoft, as well as hot startups.

Like you, they had talent, but were not familiar with the interviewing style
at these companies, and often failed to land their dream job.

For example, many of our friends had engineering and science degrees, or had been out of college for a while,
and were not prepared for data structures and algorithms interview questions.

EPI evens the playing field. Combined with your hard work, it will enable you
to interview successfully at the best companies.

Read our post EPI in a nutshell to get a broader overview of our book.

Read More

EPI in a nutshell

Problem-driven approach

EPI includes over 300 solved problems
representative of those asked at leading software companies.

With the exception of approximately 20 design problems, the
problems are designed to be codable in a 60 minute interview.

For many problems, at the end of its solution,
we describe a large number of variants.

We include a hints section, which consists of 1-2 sentence
suggestions, similar to what your interviewer will give you when you are stuck.

The inside story

All three of us successfully made it through the Google interview process, and went on to
work at Google, where, among other things, we interviewed candidates for our teams.

We have complementary backgrounds (large company, startup, academia)
and have held multiple roles (individual contributor, tech lead, CTO, consultant, professor),
that gives us unparalleled insight into the job market.

In addition to Google, some of the other places we have worked at include
Facebook, Microsoft, IBM, Qualcomm, and Synopsys, as well as a number of start-ups.
We have studied and taught at leading universities in the US (Berkeley, Texas) and
internationally (IIT Kanpur, National Tsing Hua University).

Study guide

We specify subsets of problems to solve and to review on based on the amount of time you
can commit, ranging from a weekend hackathon (intense!), to an hour a day for a semester.

Commitment to excellence

We have used best-in-class practices in the development of EPI: LaTeX for document
preparation, GitHub for revision control, agile development, continuous integration, unit testing.

As a concrete example, we have close to 200 figures in our book. These
were prepared using the TikZ extensions to LaTeX, which allow us to programmatically
specify figures, leading to much clearer illustrations.

Tested programs

EPI solutions are mostly written in C++. (The programs illustrating concurrency
are in Java.)

We have developed Java equivalents to the C++ programs. Both
C++ and Java versions for all problems, including test cases,
available from Google Code and GitHub. See code link in the sidebar for details.

Nontechnical aspects of interviewing

In a seperate chapter, we present a set of 14 data structure, algorithm, and design patterns -
useful general problem solving techniques that you can apply when you are stumped. We
have suggestions on when and where to apply them, as well as examples illustrating their use.

We describe how to prepare for an interview, how to conduct yourself
during the interview, and what to do afterwards. This review covers the
technical (selecting variable names, memory management)
as well as nontechnical (what to wear, what not to say).
We present insights into
the different company cultures, and how it impacts how you need to present yourself.

We give a brief account of interviewing from the interviewer’s perspective.
In addition to being useful to anyone interviewing, this is useful for any
engineer conducting an interview.

Read More