Skip to main content

Software Engineer System Design Interview Questions

Review this list of 110 System Design Software Engineer interview questions and answers verified by hiring managers and candidates.
  • Anthropic logoAsked at Anthropic 
    2 answers

    "Constrain is the inbound link, so the solution is to download the file once and then distribute it internally, rather than having every machine hit that link independently. So this may call for a central staging node and p2p distribution (bit torrent style)"

    Joshua K. - "Constrain is the inbound link, so the solution is to download the file once and then distribute it internally, rather than having every machine hit that link independently. So this may call for a central staging node and p2p distribution (bit torrent style)"See full answer

    Software Engineer
    System Design
    +1 more
  • "Functional requirements: user can send an input and wait for the result Group up to 100 individual requests in to single GPU The system should should send results back to the user who requested it when done Non functional requirements: Minimize the waiting between two batches of execution/ reduce idle time error message if a batch faiils Scale to support multiple GPUs Core Entities: Request Batch Result API Design: POST /predict -> {requestid: "", response: ""} req"

    Alok S. - "Functional requirements: user can send an input and wait for the result Group up to 100 individual requests in to single GPU The system should should send results back to the user who requested it when done Non functional requirements: Minimize the waiting between two batches of execution/ reduce idle time error message if a batch faiils Scale to support multiple GPUs Core Entities: Request Batch Result API Design: POST /predict -> {requestid: "", response: ""} req"See full answer

    Software Engineer
    System Design
    +5 more
  • 4 answers
    Video answer for 'Design Google Docs.'
    +1

    "Designing a web-based word processor like Google Docs requires a robust system capable of handling real-time collaboration, high availability, and massive data consistency. 1. High-Level Architecture The system follows a microservices architecture to manage different concerns independently: Client Side: A web or mobile application that handles the UI and local state. Load Balancer: Distributes incoming traffic across multiple web servers to ensure high availability. **Web Serve"

    Divya G. - "Designing a web-based word processor like Google Docs requires a robust system capable of handling real-time collaboration, high availability, and massive data consistency. 1. High-Level Architecture The system follows a microservices architecture to manage different concerns independently: Client Side: A web or mobile application that handles the UI and local state. Load Balancer: Distributes incoming traffic across multiple web servers to ensure high availability. **Web Serve"See full answer

    Software Engineer
    System Design
  • Google logoAsked at Google 
    12 answers
    +8

    "So here is what I would do if I had to designing a system to log messages in order involves several considerations, including the choice of software, hardware, storage mechanisms, and scalability. Here’s how I would approach this: 1. Requirements Analysis: Message Format: Define the structure of the messages to log (e.g., text, JSON). Volume: Estimate the expected volume of messages per second. This will help in determining the infrastructure requirements. **Order Guarantee"

    Theodore (teddy) W. - "So here is what I would do if I had to designing a system to log messages in order involves several considerations, including the choice of software, hardware, storage mechanisms, and scalability. Here’s how I would approach this: 1. Requirements Analysis: Message Format: Define the structure of the messages to log (e.g., text, JSON). Volume: Estimate the expected volume of messages per second. This will help in determining the infrastructure requirements. **Order Guarantee"See full answer

    Software Engineer
    System Design
  • Databricks logoAsked at Databricks 
    6 answers
    +3

    "ingestion, processing & storage layer to handle document processing client ->API gateway/entry point->object storage-> queue-> worker-> database data flow: client initiates document upload + status processing API gateway (upload endpoint: authenticates & authorizes request, creates pre-assigned url to upload document); status endpoint object storage - stores uploaded document unstructured data (images, pdfs, docx etc) via preassigned url Message queue to decouple ingestion from proc"

    Tracy M. - "ingestion, processing & storage layer to handle document processing client ->API gateway/entry point->object storage-> queue-> worker-> database data flow: client initiates document upload + status processing API gateway (upload endpoint: authenticates & authorizes request, creates pre-assigned url to upload document); status endpoint object storage - stores uploaded document unstructured data (images, pdfs, docx etc) via preassigned url Message queue to decouple ingestion from proc"See full answer

    Software Engineer
    System Design
    +2 more
  • 🧠 Want an expert answer to a question? Saving questions lets us know what content to make next.

  • Amazon logoAsked at Amazon 
    Add answer
    Software Engineer
    System Design
  • Amazon logoAsked at Amazon 
    59 answers
    Video answer for 'Design Instagram.'
    +53

    "Very well done."

    Vijay M. - "Very well done."See full answer

    Software Engineer
    System Design
    +3 more
  • Amazon logoAsked at Amazon 
    1 answer

    "The below system design addresses the requirements for a scalable distributed onboarding service, focusing on robust data validation, asynchronous processing, real-time aggregation, and efficient querying of metadata. Core Principles: Asynchronous Processing: Decouple components to ensure high throughput and responsiveness. Scalability & Elasticity: Utilize technologies that can scale horizontally to handle varying loads. Data Durability & Integrity: Ensure no data l"

    Anonymous Mongoose - "The below system design addresses the requirements for a scalable distributed onboarding service, focusing on robust data validation, asynchronous processing, real-time aggregation, and efficient querying of metadata. Core Principles: Asynchronous Processing: Decouple components to ensure high throughput and responsiveness. Scalability & Elasticity: Utilize technologies that can scale horizontally to handle varying loads. Data Durability & Integrity: Ensure no data l"See full answer

    Software Engineer
    System Design
    +1 more
  • Google logoAsked at Google 
    13 answers
    +9

    "Designing a system to deny services to requests from banned IPs involves integrating real-time IP checking with your service architecture. Here’s a detailed outline of how you can design such a system: System Design Overview The goal is to ensure that your service can efficiently check incoming requests against a list of banned IPs and deny access when necessary. The system will leverage an external API, security.gov.x, to determine if an IP address is blocked or allowed. **Key Compone"

    Palak A. - "Designing a system to deny services to requests from banned IPs involves integrating real-time IP checking with your service architecture. Here’s a detailed outline of how you can design such a system: System Design Overview The goal is to ensure that your service can efficiently check incoming requests against a list of banned IPs and deny access when necessary. The system will leverage an external API, security.gov.x, to determine if an IP address is blocked or allowed. **Key Compone"See full answer

    Software Engineer
    System Design
    +2 more
  • Stripe logoAsked at Stripe 
    10 answers
    Video answer for 'Design a Distributed LRU Cache'
    +7

    "One good reason for using the doubly linked list is that to remove an accessed item in the list from its existing position say in the middle of the list and move it to the head, you need to update the previous node's next pointer and the next node's previous pointer. A singly linked list only has next pointers, so removing from the middle would require traversing from the head to find the previous node which requires O(n) time. A doubly linked list allows O(1) removal from any position because w"

    Javed S. - "One good reason for using the doubly linked list is that to remove an accessed item in the list from its existing position say in the middle of the list and move it to the head, you need to update the previous node's next pointer and the next node's previous pointer. A singly linked list only has next pointers, so removing from the middle would require traversing from the head to find the previous node which requires O(n) time. A doubly linked list allows O(1) removal from any position because w"See full answer

    Software Engineer
    System Design
    +1 more
  • Microsoft logoAsked at Microsoft 
    1 answer

    "I confirmed with the interviewer that its about how slave replaces primary when primary node when suddenly shuts down. It was very tough question for me i felt. i told, we need to maintain schema of primary, secondary instances with their URL's and posts. There should be heartbeat service which always pings the actual microservices to get to know their instances health."

    Sreenath P. - "I confirmed with the interviewer that its about how slave replaces primary when primary node when suddenly shuts down. It was very tough question for me i felt. i told, we need to maintain schema of primary, secondary instances with their URL's and posts. There should be heartbeat service which always pings the actual microservices to get to know their instances health."See full answer

    Software Engineer
    System Design
  • xAI logoAsked at xAI 
    1 answer

    "=>user => window {addfile(void * file, userID, chatID) => add to fileList=> Display(file pointer)} => file=> pointer to DB, thumbnail => file will stores in database, pointer to the file+ thumbnail to be visible to chat => file is associated with chat => chat : users list, notepad: post { , user posted} class file{ void * buffer = nullptr; string fileName = nullptr; public: file( void content, string filename ):fileName ("

    Ankush G. - "=>user => window {addfile(void * file, userID, chatID) => add to fileList=> Display(file pointer)} => file=> pointer to DB, thumbnail => file will stores in database, pointer to the file+ thumbnail to be visible to chat => file is associated with chat => chat : users list, notepad: post { , user posted} class file{ void * buffer = nullptr; string fileName = nullptr; public: file( void content, string filename ):fileName ("See full answer

    Software Engineer
    System Design
    +1 more
  • Anthropic logoAsked at Anthropic 
    Add answer
    Software Engineer
    System Design
  • Amazon logoAsked at Amazon 
    4 answers
    +1

    "1. Requirements Analysis Functional Requirements Video streaming with multiple quality levels Content browsing and search Continue watching functionality Content recommendations Non-Functional Requirements Low latency video delivery (<2s startup time) High availability (99.99% uptime) Scalability to handle millions of concurrent streams API response time < 100ms 2. Microservices Architecture Core Microservices Content Service Content metadata mana"

    Reno S. - "1. Requirements Analysis Functional Requirements Video streaming with multiple quality levels Content browsing and search Continue watching functionality Content recommendations Non-Functional Requirements Low latency video delivery (<2s startup time) High availability (99.99% uptime) Scalability to handle millions of concurrent streams API response time < 100ms 2. Microservices Architecture Core Microservices Content Service Content metadata mana"See full answer

    Software Engineer
    System Design
  • Google logoAsked at Google 
    23 answers
    Video answer for 'Design TikTok.'
    +18

    "I watched a couple of videos like this, one of them by Exponent staff (I think). It was disappointing that the architecture diagram and the walkthrough was a general layered architecture that you can apply to any backend system. I was wondering if there are videos that can be considered a reference material to watch, learn and improve on the tech (sys design) skills, and not so much about the soft skills."

    BriskD - "I watched a couple of videos like this, one of them by Exponent staff (I think). It was disappointing that the architecture diagram and the walkthrough was a general layered architecture that you can apply to any backend system. I was wondering if there are videos that can be considered a reference material to watch, learn and improve on the tech (sys design) skills, and not so much about the soft skills."See full answer

    Software Engineer
    System Design
    +2 more
  • American Express logoAsked at American Express 
    3 answers

    "Thanks you for sharing insight about the app which I would liek to summarize in 2 structures: functional 2 technical requirement. Requirements: Functional requirement: Able to share messages, siles , and other content like photos, sounds Create groups for conversaion Size: 500 million users, 50m DAU -> 500M active chats daily Files not stored in the system but is can be shared.. Integaration with other APPs Technical requirement: Availability: Can you help me to understand the a"

    Istvan K. - "Thanks you for sharing insight about the app which I would liek to summarize in 2 structures: functional 2 technical requirement. Requirements: Functional requirement: Able to share messages, siles , and other content like photos, sounds Create groups for conversaion Size: 500 million users, 50m DAU -> 500M active chats daily Files not stored in the system but is can be shared.. Integaration with other APPs Technical requirement: Availability: Can you help me to understand the a"See full answer

    Software Engineer
    System Design
    +2 more
  • Amazon logoAsked at Amazon 
    5 answers
    +2

    " To clarify on what we are trying to solve for and get the definition of a distributed scheduler straight . So A Distributed Scheduler refers to a system that can handle job scheduling and execution in a scalable and fault-tolerant manner by distributing the workload across multiple servers or nodes. we will make some assumptions with the design , as follows: we will assume 10,000 QPS for job submissions and should be able query for jobs status . Job execution should have minimal latency"

    Scott S. - " To clarify on what we are trying to solve for and get the definition of a distributed scheduler straight . So A Distributed Scheduler refers to a system that can handle job scheduling and execution in a scalable and fault-tolerant manner by distributing the workload across multiple servers or nodes. we will make some assumptions with the design , as follows: we will assume 10,000 QPS for job submissions and should be able query for jobs status . Job execution should have minimal latency"See full answer

    Software Engineer
    System Design
    +1 more
  • Amazon logoAsked at Amazon 
    15 answers
    Video answer for 'Design a reservation and payment system for a parking garage.'
    +12

    "Since there is a need for the data to be accurate and consistent without any latency to allocate a spot, can't the data be synchronously synced to replicas after every write as the number of writes are not many per min, instead of read lock phenomena Let me know if i am on a wrong thought here."

    Chitapuram N. - "Since there is a need for the data to be accurate and consistent without any latency to allocate a spot, can't the data be synchronously synced to replicas after every write as the number of writes are not many per min, instead of read lock phenomena Let me know if i am on a wrong thought here."See full answer

    Software Engineer
    System Design
    +2 more
  • Freshworks logoAsked at Freshworks 
    12 answers
    Video answer for 'Design Twitter.'
    +9

    "In the API design, the interviewer is switching between RPC style (operation based endpoints) and REST style (resource oriented). Sticking to one convention and explaining why it is preferred over the other e.g. REST if the twitter domain maps nicely to resources e.g. /tweet or /follower or /user would help to create a more consistent and unified API. It would make it easier for clients to integrate with the API as well."

    dreamingincode - "In the API design, the interviewer is switching between RPC style (operation based endpoints) and REST style (resource oriented). Sticking to one convention and explaining why it is preferred over the other e.g. REST if the twitter domain maps nicely to resources e.g. /tweet or /follower or /user would help to create a more consistent and unified API. It would make it easier for clients to integrate with the API as well."See full answer

    Software Engineer
    System Design
    +2 more
Showing 1-20 of 110