System Design Interviews 2022

System design interviews are the most difficult to tackle among all the technical interviews especially in big technology companies like "MAANG". System design round is more focused on the infrastructure knowledge and over all knowledge of candidate regarding his experience working on projects if candidate focused or keen to have high level idea of the overall software project which was created.
System design questions are intimidating, and no certain pattern to follow. The questions may have bigger scope and vague as processes are open-ended without a standard or correct answer.

In order to approach system design questions would be understanding the requirements and narrow it down to the technology stack interviewer is looking for. If I want to build a system which will provide support to millions of users requests and gradually scale it up to serve based on the users traffic or more users, focus in this scenario would be more towards web application, low latency, high throughput, caching server, No SQL database. Now usually candidate forget to consider other means of accessing systems like mobile devices (i.e mobile phone, tablets and other devices) which makes an impression of limited knowledge of multiple client interfaces connectivity and traffic which means candidate may have limited knowledge of load balancing from multiple client interfaces and only knows about one interface.

Most commonly asked system design questions in "MAANG" :
  • News feed : 
    • Two major APIs : 
      • News-feed  publishing API primarily connect clients to the servers via HTTP to send posts like any new post created or updated which will show it to the friends or subscribers.
      • News-feed retrieval API will be focused on sending Get request to see the news posted by friends or subscribers.
  • Considerations:
    • Authentication and Authorization
    • DDOS attack prevention
    • Load Balancer 
      • Algorithms to distribute loads to the multiple data centers/availability zones:
        • Round robin
        • Hashing
    • API Gateway 
      • Service discovery and service registration 
      • Create API Rate limiter and integration 
    • Microservices :
      • Create few microservices using S.O.L.I.D principles.
      • Apply few design patterns:
        • Decomposition pattern
        • Integration pattern
        • Database patterns
        • Observability patterns
        • Cross-cutting concerns patterns
    • Integrate Caching technologies for repeating News-feed :
      • Memcache
      • Redis
    • Storage : 
      • User may have many friends and updates from friends, integrate Graph Database for quick search.
      • NoSQL database will be better choice to create or update news-feed collections to improve agility and distributed scalable instances to avoid latency and delayed responses.
Similar to above explained system design, you should have an idea to approach any system design interview question with the knowledge of few infrastructure technologies. 
Following are few more cases to practice :
  • Design Spotify (music application installed in Android phones and also has web interface)
  • Design database based on key value storage (No SQL approach) 
  • Design an autocomplete system (this would need backend service details of Algorithms i.e Trie)
  • Design cloud storage system ( refer to AWS S3 or Google Drive)
  • Design video streaming platform with high video quality and no buffering.
  • Design Rate limiter (to limit rests from user in certain time period and prevent requests from Bot)
These would provide some insights to the system design interviews and you will have better idea to apply infrastructure technologies with few design patterns will provide some solution to the requirement.

Best of luck.

Comments

Popular posts from this blog

Concurrency in Software Architecture