banner



Question Answer Video Cover Design

The complete guide to crack the System Design interview

Template to answer any system design question & links to all the system design questions attached.

Harshith

Image by Ben kolde on Unsplash

The article consists of 3 parts — A preparation guide, a System design template, and Design questions with links.

For my system design interview with Amazon, I watched video lectures, read blog posts, and discussed with my friends' various approaches to design a system. After my extensive preparation, I came up with a template that I followed during my interview and wanted to share and hoping it would help anyone preparing for a system design interview.

Preparation

Firstly it is important to learn the fundamental concepts before designing a system. Knowing all the concepts helps you in making the right decisions while designing a system.

This curated Yo u Tube playlist covers all the required concepts to understand the steps in designing a system.

System design concepts playlist

(Optional) For more comprehensive concepts, refer to the below Github repo.

After learning all the fundamental concepts, it is now time for designing. First of all, you have to think of a use case (example: Instagram) and try designing all the components. Mainly think about how can you make your system, fault-tolerant(system is up and running at all times), and Scalable(to handle a growing amount of traffic). Brainstorm how the bottlenecks can be resolved. This entire process helps you to apply the concepts you learned in designing a system. If you face any difficulties with the steps to design a system then refer to the design template provided below.

My advice to you would be to use the system and explore all the features

Questions to ask yourself

  • What are the different architectural components that can be used?
  • How do these components interact with each other?
  • How can we best utilize these components: what are the right tradeoffs?

Tip : The more questions you ask your interviewer the more inputs you'll receive from the interviewer and the better your design will be.

Key points for the interview:
Don't use any buzz words (tech stack), Don't get into details prematurely, Justify your design decisions

System design template for interviews

1. Requirements

Functional

What functionalities can the system or application provider to the user? Example: In Twitter, a user can follow another user, tweet, like a tweet, retweet other's tweet, and share a tweet (focus on the essential features and do not delve into the complex features of twitters)

Non-functional

Mandatory to know CAP theorem : Blog

For any distributed system, the following are the fundamental concepts to consider:

  • High availability: Most of the systems must be highly available.
  • Consistency: The systems with high availability will have eventual consistency. Any banking system favors consistency over availability as there cannot be discrepancies in data (account balance).
  • Reliability: No loss of user data.
  • Latency: Response time of a user action such as loading a web page, liking a post, etc.

2. Storage estimation

  • Based on the data modality: A rough estimate of how much data must be stored — To know what type of database can be used and file storage for storing images/videos.
  • The number of requests to the service — To know how to scale the services. A service that is read-heavy can be scaled to handle high traffic of requests.
  • Read Write ratio — Determines whether the system is read-heavy or not.

3. Database design

After discussing the data and the actions that a user can perform to interact with the system. The next step would be to talk about which type of DB will you use and why. For detailed differences SQL Vs NoSQL — Read

4. High-level system design

Initially start with a very basic design

Photo by author

Extending the design — Creating specific components

  • Isolating the services — for easier scaling and traffic control

Photo by author
  • Replicate the services and databases- mention about a single point of failure — Video
  • Load balancer — Application side & Database side if needed — Video, Blog
  • Message Queues — Tight coupling to loose coupling / Synchronous to Asynchronous communication — Read Message queues, Benefits of MQ
  • Data Partitioning— Location-based, UserID based — Video, Blog
  • Content Delivery network — To avoid round trips to the main server (reduces latency). Video, InterviewQs
  • Cache — Distributed cache and client-side cache (For faster read access) — Video, Blog, Primer

5. Additional components (optional)

These components can be added to the design if you have time left in the interview. Knowing about these components helps you answer any in-depth follow-up questions. Generally, the components mentioned above will suffice and also take most of your time in the interview.

  • Encryption (msgs) — for messaging services to secure data — Blog
  • Analytics service — for analyzing requests and user data
  • ML service — recommendation/ news feed ranking ( if use case (Netflix) demands then add it to the basic components) — talk about the data needed for your recommendation/ranking model.
  • API gateway — Video, detailed micro services, and API gateway — Playlist
  • Service discovery — to dynamically identify micro services — Video

By following this template, any system can be designed in an interview.

Disclaimer: The video links provided below are a detailed design of a system and can be referred to for an in-depth design of a real system. The educative blog links are succinct and cover the usage of the design concepts for a particular system.

Design Questions

General services

  1. Tiny URL: Video, Blog
  2. PasteBin: Video, Blog
  3. Search service: Video, Blog
  4. Type-ahead suggestion service: Video, Blog
  5. Web crawler: Video, Blog
  6. API rate limiter: Video, Blog

Social media systems

  1. Instagram: Video, Blog
  2. Twitter: Video, Blog
  3. Facebook news feed: Blog

Cloud services

  1. Google drive: Video, Blog
  2. Google docs: Video
  3. Amazon S3: Video

Video streaming

Video is the main data and different formats of a video have to be stored. Recommendation service is key here.

  1. Netflix: Video, Blog,
  2. How Netflix onboards new movies: Video.

Similar systems: YouTube, Prime Video.

Online shopping

  1. Amazon: Video

Similar systems: Walmart, Airbnb, eBay

Messaging system

The difference between HTTP, long pooling, and WebSockets is important to know for a messaging system — Video

  1. WhatsApp: Video

Cab use cases

  1. Uber: Video, Blog

Similar systems: Lyft

Video conferencing

  1. Zoom: Video

Similar systems: Skype, Google Meet

Restaurants review system

  1. Yelp: Video, Blog

Dating apps

  1. Tinder: Video

Payment services

What is a payment gateway: Video

  1. PayPal

Gaming

  1. Online multiplayer: Videos part1, part2

Management systems

  1. Ticket master: Video, Blog

Similar systems: Library management system, Movie booking, Hotel booking, & Flight booking.

Google maps: Video

Conclusion: I've written this blog from my own understanding and after preparing for the system design interview. This blog is to help software engineers with their interview preparation by consolidating all the important resources related to System design.

Resources

Question Answer Video Cover Design

Source: https://towardsdatascience.com/the-complete-guide-to-the-system-design-interview-ba118f48bdfc

Posted by: cifuentestheigh1992.blogspot.com

0 Response to "Question Answer Video Cover Design"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel