System design interviews
In system design interviews, you are usually given a very vague design problem (like design Twitter), and you need to share your approach in about 45 minutes. The purpose of this interview is to test your experience working with real software systems, and how much you know about these systems in general. Usually, interns and new grads don't get this type of interviews, but otherwise you may expect it at every big tech company.
Here is a list of material you absolutely need to check:
- Intro to system design interviews with Jackson Gabbard - really helpful video on the topic. I watched it twice.
- System design course on educative.io - good collection of solutions for common system design problems. It's not free, but well worth it. Several lessons are also available for free preview.
- Harvard lecture on scalability.
- Read at least several chapters in Designing Data-Intensive Applications.
- Building Microservices has nice chapters on security, deployment and other topics you may want to review.
Here are some videos that I found helpful:
- How We've Scaled Dropbox – fascinating story of Dropbox going from one server to massive infrastructure supporting millions of users.
- What I Wish I Had Known Before Scaling Uber to 1000 Services.
- Building Software Systems At Google and Lessons Learned by Jeff Dean.
- Facebook and memcached
- Oversubscribing Apache Spark Resource Usage for Fun and $$$ featuring my good friend Sergey :)
I think one of the best ways to prepare for system design interviews is to expose yourself to as much information about designs of the real systems as possible, so here are lots of links to the blog posts, articles, videos and papers I found useful:
- Highscalability.com - a nice website with articles on the real scalable systems, though I found the quality of some of the articles to be quite mediocre.
- System design primer - huge collection of materials and links on system design.
- Nginx book on microservices.
- Gainlo has a nice blog on system design and generally interview preparation.
- Uber tech stack
- How Uber Engineers an Efficient Route
- A Look at WhatsApp: Engineering for Success at Scale
- How WhatsApp Reduced Spam for Over 1 Billion People
- One Year Designing at WhatsApp
- MySQL at Yelp
- Quizlet Tests Cloud Spanner
- Google book on SRE
- Command-line Tools can be 235x Faster than your Hadoop Cluster
- The biggest smallest website
- Why the Hell Would You Use Node.js
- How Twitter is fighting spam and malicious automation
- CAP Twelve Years Later: How the “Rules” Have Changed
- Spanner: Google’s Globally-Distributed Database
- Spanner, TrueTime & The CAP Theorem
- Big Data and Google's Three Papers I - GFS and MapReduce
- Designing Schemaless, Uber Engineering’s Scalable Datastore Using MySQL
- How does HTTPS actually work?
- BlueGreenDeployment
- Under the hood: MySQL Pool Scanner (MPS)
- (Re)Introducing Edgestore
- How We Partitioned Airbnb’s Main Database in Two Weeks
- Evernote migration to Google Cloud Platform
- Jepsen: On the perils of network partitions
- The Google Technical Interview. How to Get Your Dream Job
- Introducing "Testing on the Toilet"
- Tape Rescues Google in Lost Email Scare and Gmail back soon for everyone
- Google Project Zero
- How to Solve Google's Crazy Open-Ended Interview Questions
- Google’s Site Reliability Engineering Podcast with Todd Underwood
- The Design Interview From the Interviewer's Perspective
- Computer System Engineering MIT course
- Awesome public Google postmortem
- Java concurrent package
- What’s different about the new Google Docs: Conflict resolution
- Bunch of Wikipedia articles
- Some StackOverflow questions
No comments:
Post a Comment