Skip to main content

Overview

  • System design is all about building robust, functional, scalable applications.
  • Where the coding interview serves primarily as an assessment of your problem-solving ability, the systems design interview is a test of your engineering knowledge veiled behind the facade of an open-ended design question.
  • Systems design is the process of defining the architecture, product design, modules, interfaces, and data for a system to satisfy specified requirements. Systems design could be seen as the application of systems theory to product development.

Design Fundamentals

  • System design interview questions are intentionally unclear(vague).
  • It could be just stated in few words (design Uber, Facebook) and the interviewee should take that discussion to 45 mins interview.
    • We should able to answer how the system should behave.
    • Type of the system you're really building.
    • What kind of functionality the system supports.
    • Characteristics we're gonna value in our system.
  • Performing investigations requires lot of design systems fundamental knowledge
  • System designs is lot more subjectivity. A proposed solution may or may not 100% correct.
  • It's invterviewee job to explain why the proposed solution is the potential one.
  • Using client server model to be able to design any modern day system.
  • Network protocols, we need to have some understanding of how machines communicate each other in order to be able to design a system properly.
  • We'r talking about design fundamentals like
    • availability,
    • wait and see,
    • throughput
    • redundancy
    • consistency
  • Components of a system
    • load balancers,
    • proxies,
    • caches,
    • rate limiting,
    • leader election,
  • Real tech/services uses in a system
    • Zookeeper,
    • XCD,
    • Nginx,
    • Redis
    • AWS,
    • GCP