Here's a list of links and references that could help in preparing for System design interviews. I have tried to compile a working list from various sources. Good Luck!
For a very broad overview please go through these lectures, really useful (Ref: https://github.com/shashank88/system_design):
-
This link gives a broad overview of what to expect (Ref: http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/)
-
How to succeed in a system design interview (Ref: https://blog.pramp.com/how-to-succeed-in-a-system-design-interview-27b35de0df26)
-
System design cheat sheet (Ref: https://gist.github.com/vasanthk/485d1c25737e8e72759f)
-
Article about logs and tradeoffs (Ref: https://engineering.linkedin.com/distributed-systems/log-what-every-software-engineer-should-know-about-real-time-datas-unifying)
-
Blogs about designing high scalable applications (Ref: http://highscalability.com)
-
Distributed System Reading list - has a links to lot of other articles (Ref: http://dancres.github.io/Pages/)
-
Another nice article about scalable web architecture - (Ref: http://www.aosabook.org/en/distsys.html)
-
Jason Gabbard's introduction to System design - (Ref: https://www.youtube.com/watch?v=ZgdS0EUmn70)
-
Gaurav Sen - playlist for System design - (Ref: https://www.youtube.com/watch?v=quLrc3PbuIw&list=PLMCXHnjXnTnvo6alSjVkgxV-VH6EPyvoX)
-
Tushar Roy - Preparation for System design - (Ref: https://www.youtube.com/watch?v=UzLMhqg3_Wc)
-
HiredInTech - Tiny Url Design - (Ref: https://www.hiredintech.com/system-design/the-system-design-process)
-
Narendra L - TechDummies - (Ref: https://www.youtube.com/playlist?list=PLkQkbY7JNJuBoTemzQfjym0sqbOHt5fnV)
-
Anatomy of System Design - (Ref: https://hackernoon.com/anatomy-of-a-system-design-interview-4cb57d75a53f)
-
Walking through System Design - (Ref: https://medium.com/better-programming/walking-through-the-system-design-interview-679a408c048f)
-
More System Design links- (Ref: https://github.com/checkcheckzz/system-design-interview#toc)
How to approach the system design questions in interviews (Ref: https://github.com/shashank88/system_design)
These are the steps to go through in the interviews:
- a) Be absolutely sure you understand the problem being asked, clarify on the onset rather than assuming anything
- b) Use-cases. This is critical, you MUST know what is the system going to be used for, what is the scale it is going to be used for. Also, constraints like requests per second, requests types, data written per second, data read per second.
- c) Solve the problem for a very small set, say, 100 users. This will broadly help you figure out the data structures, components, abstract design of the overall model.
- d) Write down the various components figured out so far and how will they interact with each other.
- e) As a rule of thumb remember at least these :
-
- processing and servers
-
- storage
-
- caching
-
- concurrency and communication
-
- security
-
- load balancing and proxy
-
- CDN
-
- Monetization: if relevant, how will you monetize? eg. What kind of DB (Is Postgres enough, if not why?), do you need caching and how much, is security a prime concern?
- f) Special cases for the question asked. Say designing a system for storing thumbnails, will a file system be enough? What if you have to scale for facebook or google? Will a nosql based database work?
- g) After I have my components in place, what I generally try to do is look for minor optimization in various places according to the use-cases, various tradeoffs that will help in better scaling in 99% cases.
- h) [Scaling out or up] (http://highscalability.com/blog/2014/5/12/4-architecture-issues-when-scaling-web-applications-bottlene.html)
- i) Check with the interviewer is there any other special case he is looking to solve? Also, it really helps if you know about the company you are interviewing with, what its architecture is, what will the interviewer have more interest in based on the company and what he works on?
- j) Some good answers on Quora - (Ref: https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview)
A collection of topics to enhance the breadth of knowlegde (Ref https://www.mariogerard.com/interview-questions-for-a-technical-program-manager-tpm/)
Caching | ||
Memcache | Link | High |
Memcached or Redis | Link | Low |
Redis | Link1, Link2 | High |
Memcached or Riak | Link | Medium |
Persistent & Ephemeral Data | Link | Low |
CDN | Link | High |
Http Caching | Link | Medium |
API | ||
Basic HTTP Response Codes | Link | High |
REST Standards | Link | High |
REST II | Link | High |
RESTful.Web.Services Book | Link | High |
Rest vs SOAP | Link | High |
API Idempotence – I | Link | Medium |
API Idempotence – II | Link | Medium |
Immutable Services | Link | Low |
Semaphore and Mutex Simplified | Link | High |
Microservices | Link | High |
Understanding REST Headers and Parameters | Link | Medium |
One API, Many Facades? | Link | Medium |
Pattern: Backends For Frontends | Link | Low |
BFF @ SoundCloud | Link | Low |
Scalability | ||
Throughput vs latency | Link | High |
Capacity Planning | Link | High |
Fault Tolerance, Redundant systems vs High Availability Systems | Link | High |
Apache Mesos & Docker | Link | Medium |
Ring pop I | Link | Low |
Ring pop II | Link | Low |
Architecture In General | ||
OAUTH | Blog | High |
Certificates and HTTPS | Link 1, Link 2 | High |
Starvation and Deadlock I | Link | High |
Starvation and Deadlock II | Link | High |
Why stateless applications are always the way to go | Link | High |
Processes, Synchronization & Deadlock | Link | Medium |
Computer Networking | Link | Medium |
Stateless by Stan Hanks | Link | Medium |
Big Data | ||
MapReduce | Link | High |
Hadoop Basics | Link | High |
Machine Learning | Link | Medium |
Apache Spark (Real Time Processing of data) | Link | Low |
Parquet | Link | Low |
Queuing | ||
Kafka I | Link | High |
Kafka II | Link | High |
Kafka II | Link | High |
Building a Real-time Data Pipeline: Apache Kafka at LinkedIn | Link | High |
ActiveMQ | Link | Medium |
Kafka vs Rabbitmq vs Activemq vs Redis | Link | Medium |
MQueue | Link | Low |
Two strategies for Feed systems | Link | Medium |
Spotify’s Event Delivery – The Road to the Cloud | Link | Low |
HTTP Long poll Socket | Link | Low |
Pub-Sub | Link | Low |
Pub-Sub with Websphere | Link | Low |
Databases | ||
Cassandra | High | |
mongo DB | High | |
Graph DB | High | |
CAP Theorem | High | |
Introduction to NoSQL by Martin Fowler | Link | High |
Other | ||
JASON Formats and Documentation | Link | Low |
Operating systems | Link | Low |
RPC protocol | Link | Low |
Types of pagination – Offset and cursor | Link | Medium |
Design Patterns | Link | Low |
Design Patterns Pluralsight Course | Link | Low |
Algorithms and Data Structures – Part 1 | Link | Low |
Big O | Link | Medium |
Video | ||
Video Scalability | Link | Low |
SPI H.323 (Video Protocols) | Link | Low |
SPI H.323 (Video Protocols) | Link | Low |
SPI H.323 (Video Protocols) | Link | Low |
Recommendations Systems | ||
Global Recommendations | Link | Medium |
Recommendations Systems | Link | Medium |
Netflix launching in various countries & What it takes | Link | Medium |
Hash Table | ||
Hash Table – I | Link | High |
Hash Table – II | Link | High |
Hash Table – III | Link | Medium |
Hash Table – IV | Link | Medium |
Hash Table – V | Link | Medium |
Perfect Universal Hashing | Link | Low |
Cross Datacenter | ||
Inter Datacenter usage? Cassandra | Link | Medium |
Transactions Across Datacenters | Link | Medium |
Distributed Transaction Layer: App Engine | Link | Medium |
Other Interesting Things | ||
Twitter by Hired in tech | Link | High |
DropBox scaling | Link | High |
Interviewing at Google | Link | Low |
System Design topics to enhance depth of knowledge (Ref https://www.mariogerard.com/interview-questions-for-a-technical-program-manager-tpm/)
- Cloud Architecture: A Guide To Design & Architect Your Cloud
- Learn the A to Z of Amazon Web Services (AWS)
- System Design II
- System Design – Design Patterns
- The Art of Scalability: Scalable Web Architecture, and Organizations for the Modern Enterprise
System Design Questions (Ref https://www.mariogerard.com/interview-questions-for-a-technical-program-manager-tpm/)
- Designing an elevator system
- Design a Parking lot system
- Shopping cart – How do you store this information when you use multiple servers that are load balanced.
- How would you design a Twitter Feed? –Grokking the System Design Interview
- Recommendation system for fashion/clothes and accessories – Fundamentals here.
- How does Uber Store & retrieve lat &long for a cab driver?
- If a user is at x,y give me five of the closest drivers. – Grokking the System Design Interview
- Extend the product page X and add the auction capability.
- How are your ensuring security or localization on a mobile device?
- Design a web-based email system.
- Describes pieces, components, design, large scale, and use case
- Design an application like Siri, Cortana or Alexa
- Design Facebook or the privacy features in Facebook.
- Explain different performance scenarios for Instagram architecture.
- Explain the different places you have caching in OneDrive.
- Designing an activity feed system – Grokking the System Design Interview
- Design WhatsApp / Facebook Messenger: Issues of each, scaling problems, offline/online users and availability, notification etc – Grokking the System Design Interview” & Link-1 & Link 2
- An airline carrier is losing a lot of bags – Design a solution.
- Design Dropbox etc. – Grokking the System Design Interview
- Design X’s frequently viewed product page shows the last 5 items you viewed.
- Design the product recommendation feature based on a user’s purchase history.
- Design an online poker game or Tick Tack Toe for multi-players.
- Solve for persistence, concurrency, scale.
- Instagram –Grokking the System Design Interview
- Design a URL compression system – Bitly – Link 1, Link 2
- Search engine: basic crawling, collection, hashing etc. (Depends on your expertise on this topic).
- Autocomplete / Typeahead Search- Link
- Design a coupon system for a website like Peach or Uber.
- Design a picture sharing website. How will you store thumbnails, photos? Usage of CDNS? Caching at various layers etc.
- Design a push and inbox messaging platform.
- Design a product based on maps, eg Hotel / ATM finder given a location.
- Design malloc, free and garbage collection system. What data structures to use? Decorator pattern over malloc etc.
- Design a site like www.Pronto.com (price comparison, availability on eCommerce websites)
- When and will you cache, how often would you query, crawl efficiency, etc?
- Design a system for collaborating over a document simultaneously (e.g.: google docs)?
- Design an electronic election / Ballot machine architecture
- Design a logging system – Splunk or ELK
- Design Netflix, Youtube, Spotify –Grokking the System Design Interview
- Build a machine learning system to detect if a fake user.
- How do you design a system with 99.999% availability
- Design an amusement Park Ticketing system for user ride efficiency
- Design Uber –Grokking the System Design Interview
- Design an Inventory Management System
- Design a Video Conferencing application. – InfoQ Solution
- Design any of the above architectures only using AWS, GPC or Azure- For Any cloud team.
- Troubleshoot a slow website or a slow e-reading device.
- Exploratory Data Analysis (Ref: https://www.youtube.com/playlist?list=PLNS1xA6wihC0EuRXQlBJYb-qyMpiWfcl- )
- Understanding Commonly used Machine Learning algorithms (Ref:https://www.analyticsvidhya.com/blog/2017/09/common-machine-learning-algorithms/)
- Topics Every Computer Science Engineer should know (Ref: http://matt.might.net/articles/what-cs-majors-should-know/)
- What Every Web developer should know about Networking (Ref: https://hpbn.co/)
- Numbers Every Programmer should know (Ref: https://gist.github.com/jboner/2841832)