Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Ask HN: Any good books on system design interviews?
36 points by estomagordo on Aug 24, 2018 | hide | past | favorite | 10 comments
I'm looking for books specifically, as I'm already familiar with plenty of good online resources.

I'm also looking for books specifically centered on interviews for companies such as Google or Amazon.

There are a few good books on the coding interviews, perhaps most notably Cracking the coding interview. But I have yet to come across a book that deals with system design and is also lauded.



The premise of a system design interview is ridiculously broad. You could spend half an hour talking about how to scale a system or design at a very high level; or it could be an excuse to get you to mock-up an API or to talk about some useful algorithm. You can and should expect to write code, but then again maybe you won't have to. It's a lucky dip question.

There are books which are tangentially useful, eg Designing Data Intensive Applications or Site Reliability Engineering. Even if you're not going for SRE, it's good to understand the problems that are involved with high availability.

Having a good overview of something like Code Complete is useful, if only because it has generic advice for designing large programs.

For case studies I don't think books are any good. Watch conference talks and read the company dev blogs.


I'll mimic what others are saying by saying that Designing Data-Intensive Applications is a superb book which you absolutely should read.

As for my second suggestion, I'll tell you one of the ways in which I go about researching certain kinds of programming topics. I pay for a Safari Books Online subscription [0], which lets me browse a massive amount of technical books without restrictions. Once I figure out the appropriate keywords, I'll perform a search and open all the relevant books in separate tabs. Then I filter the list down by looking through the index, or reading through a couple pages, to see if it actually covers what I'm looking for. By the time I've prepared this reduced list I usually have an idea of which books seem most interesting, and those are usually the ones I start with. Then it's just a matter of working my way through the list until satisfied. It has been my experience that most technical books are not worth reading cover-to-cover, so I just read through the few relevant chapters and move on. As with all things, there's definitely exceptions; I'd actually consider Designing Data-Intensive Applications one such example.

If you get a card from your local library you might also be able to get access to Safari Books Online for free, as well as tons of other resources. Although with my library card I only get access to a limited subset of their books, instead of the whole collection like with the paid subscription.

Another option, if you can't afford to spend that much money, is to just pirate a bunch of books or look em up on Google Books [1] in order to identify the ones which interest you the most, and then buy the ones that look useful, or try borrowing em from your local library (most likely through interlibrary loans). The market for technical books isn't very big and great authors are rare, so I think it's incredibly important that they be adequately compensated for their hard work, though. If you really can't afford to buy the books initially, be sure to at least keep track of the list so you can make the purchase after you've gotten your new job.

[0] https://www.safaribooksonline.com/

[1] https://books.google.com/


I second Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems. Rather than covering theoretical aspects in detail, it focuses on real-life problems that can be solved using various paradigms.

https://www.amazon.com/Designing-Data-Intensive-Applications...


Not a book, but this is an excellent resource on how top engineering talent in FANG approaches System Design.

https://www.educative.io/collection/5668639101419520/5649050...

Even after interviewing, I found it useful when thinking about designing for large scale growth.


I really like 'Web Scalability for Startup Engineers': https://www.amazon.com/Scalability-Startup-Engineers-Artur-E...

I haven't read 'Designing Data-Intensive Applications' yet, so not sure how much overlap there is or which one is better. But, according to Amazon.com, they're 'frequently bought together'.


If I had to appear for such an interview, I would read: The Architecture of Open Source Applications[0]

[0] http://aosabook.org/en/index.html


Both of the Google SRE books contain some chapters on this. I can highly recommend both of them.



The Amazon reviews are very divided. What did you like best about this book?


I didn't love it, but if you want a book about system design interviews this is probably your number one choice. Personally I think you'd be fine just with reading article like Martin Fowler's or if you work with Microsoft their documentation has suddenly improved a lot in this area especially in the area of cloud/micro services.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: