muthu-cs / System-Design-Interview-Preparation

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

SYSTEM DESIGN PREPARATION

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):

Thought Process for System design interviews

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 :
    1. processing and servers
    1. storage
    1. caching
    1. concurrency and communication
    1. security
    1. load balancing and proxy
    1. CDN
    1. 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/)

Terminologies & Technologies

Link

Priority

Caching
MemcacheLinkHigh
Memcached or RedisLinkLow
RedisLink1Link2High
Memcached or RiakLinkMedium
Persistent & Ephemeral DataLinkLow
CDNLinkHigh
Http CachingLinkMedium
API
Basic HTTP Response CodesLinkHigh
REST StandardsLinkHigh
REST IILinkHigh
RESTful.Web.Services BookLinkHigh
Rest vs SOAPLinkHigh
API Idempotence – ILinkMedium
API Idempotence – IILinkMedium
Immutable ServicesLinkLow
Semaphore and Mutex SimplifiedLinkHigh
MicroservicesLinkHigh
Understanding REST Headers and ParametersLinkMedium
One API, Many Facades?LinkMedium
Pattern: Backends For FrontendsLinkLow
BFF @ SoundCloudLinkLow
Scalability
Throughput vs latencyLinkHigh
Capacity PlanningLinkHigh
Fault Tolerance, Redundant systems vs High Availability SystemsLinkHigh
Apache Mesos & DockerLinkMedium
Ring pop ILinkLow
Ring pop IILinkLow
Architecture In General
OAUTHBlogHigh
Certificates and HTTPSLink 1, Link 2High
Starvation and Deadlock ILinkHigh
Starvation and Deadlock IILinkHigh
Why stateless applications are always the way to goLinkHigh
Processes, Synchronization & DeadlockLinkMedium
Computer NetworkingLinkMedium
Stateless by Stan HanksLinkMedium
Big Data
MapReduceLinkHigh
Hadoop BasicsLinkHigh
Machine LearningLinkMedium
Apache Spark (Real Time Processing of data)LinkLow
ParquetLinkLow
Queuing
Kafka ILinkHigh
Kafka IILinkHigh
Kafka IILinkHigh
Building a Real-time Data Pipeline: Apache Kafka at LinkedInLinkHigh
ActiveMQLinkMedium
Kafka vs Rabbitmq vs Activemq vs RedisLinkMedium
MQueueLinkLow
Two strategies for Feed systemsLinkMedium
Spotify’s Event Delivery – The Road to the CloudLinkLow
HTTP Long poll SocketLinkLow
Pub-SubLinkLow
Pub-Sub with WebsphereLinkLow
Databases
CassandraHigh
mongo DBHigh
Graph DBHigh
CAP TheoremHigh
Introduction to NoSQL by Martin FowlerLinkHigh
Other
JASON Formats and DocumentationLinkLow
Operating systemsLinkLow
RPC protocolLinkLow
Types of pagination – Offset and cursorLinkMedium
Design PatternsLinkLow
Design Patterns Pluralsight CourseLinkLow
Algorithms and Data Structures – Part 1LinkLow
Big OLinkMedium
Video
Video ScalabilityLinkLow
SPI H.323 (Video Protocols)LinkLow
SPI H.323 (Video Protocols)LinkLow
SPI H.323 (Video Protocols)LinkLow
Recommendations Systems
Global RecommendationsLinkMedium
Recommendations SystemsLinkMedium
Netflix launching in various countries & What it takesLinkMedium
Hash Table
Hash Table – ILinkHigh
Hash Table – IILinkHigh
Hash Table – IIILinkMedium
Hash Table – IVLinkMedium
Hash Table – VLinkMedium
Perfect Universal HashingLinkLow
Cross Datacenter
Inter Datacenter usage? CassandraLinkMedium
Transactions Across DatacentersLinkMedium
Distributed Transaction Layer: App EngineLinkMedium
Other Interesting Things
Twitter by Hired in techLinkHigh
DropBox scalingLinkHigh
Interviewing at GoogleLinkLow

System Design topics to enhance depth of knowledge (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 1Link 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.

Machine Learning

Miscellaneous

About