Over my 10 years as a senior software engineer and interviewer at Microsoft and Facebook, I’ve worked with hundreds of applicants as they solve different system design problems.
Developers tend to struggle with SDI questions because they are so open ended and often require a kind of critical thinking not practiced in other coding interview challenges.
While SDI questions change over time, some have remained popular in interviews across various top companies.
Today, we’ll explore the top 10 most commonly asked system design interview questions, common problems you’ll have to address in each, and some tools to help you do that.
Here’s what we’ll cover today:
Start each problem by stating what you know: List all required features of the system, common problems you expect to encounter with this sort of system, and the traffic you expect the system to handle. The listing process lets the interviewer see your planning skills and correct any possible misunderstandings before you begin the solution.
Narrate any trade-offs: Every system design choice matters. At each decision point, list at least one positive and negative effect of that choice.
Ask your interviewer to clarify: Most system design questions are purposefully vague. Ask clarifying questions to show the interviewer how you’re viewing the question and your knowledge of the system’s needs.
Discuss emerging technologies: Conclude each question with an overview of how and where the system could benefit from machine learning. This will demonstrate that you’re not just prepared for current solutions but future solutions as well.
For more information on how ML can improve your SDI performance, check out How Machine Learning gives you an edge in System Design.
For this question, you’ll design a service that allows users to chat with each other over the internet. Conversations can be one-on-one or can be group chats with many members. Messages should only be accessible by those included in the conversation.
This question asks you to create a ride-sharing service that matches users with nearby drivers. Users can input a destination and transmit their current location and nearby drivers are notified within seconds.
The app then tracks a route between the driver and user’s current locations, then from the user’s location to the destination.
Check out our guide to designing Uber’s backend for more information on Uber interview process.
This question asks you to create a program that shortens long URLs like TinyURL or
bit.ly. These programs take a long URL and generate a new and unique short URL. They can also intake a shortened URL and return the original full-length URL.
Learn how to solve this problem in our step-by-step guide Design TinyURl and Instagram
For this question, you’ll design a social media service used by my hundred thousand users like Instagram. Users should be able to view a newsfeed with posts by followed users and suggest new content the user may like.
Interviewers often want to hear you discuss the newsfeed in depth.
writefocused nodes? Are there likely to be more read requests (users viewing posts) or write requests (users creating posts)?
Learn how to solve this problem with our step-by-step guide Design TinyURL and Instagram
For this question, you’ll design a forum-like system where users can post questions and links.
Other users can view and comment on the questions. Questions have tags that represent their topic and users can follow tags to see questions on specific topics. Users have a newsfeed that highlights popular questions from their followed tags and related topics.
Get hands-on practice with all the top SDI questions. Educative’s courses are created by current developers to help you learn in half the time.
For this question, you’ll create a synchronous, cross-platform storage system like Dropbox. Users can store files and photos and access them from other devices.
This question asks you to create an online video streaming service like Youtube. The service will store and transmit hundreds of petabytes of video data. It must also store statistics (views, likes, number of views, etc.) and allow for users to post comments.
Your solution must be scalable to support thousands of concurrent users.
For this question, you’ll create an API Rate Limiter that limits the number of API calls a service can receive in a given time period to avoid an overload.
The interviewer can ask for this at various scales, from a single machine to an entire distributed network.
For this final question, you’ll design a proximity server that stores and reports the distance to places like restaurants. Users can search nearby places by distance or popularity. The database must store data for 500 million places across the globe but have low latency.
This service will partially complete search queries and display 5 suggestions to complete the query. It should adapt to highly searched content in real-time and suggest that to other users.
For example, “Seahawks win the Super Bowl” would be suggested within minutes of the event occurring.
These questions should help you understand what types of problems you’ll be expected to solve at a system design interview. Practicing solving and explaining questions like these is the most efficient way to prepare for your next interview.
To give you hands-on practice with these solutions, Educative has created Grokking the System Design Interview. This course will give you detailed walkthroughs on these and other questions, written by current industry interviewers.
By the end, you’ll know exactly what modern interviewers are looking for, what clarifying questions to ask for each question, and will have extensive practice in explaining your tradeoff decisions.
A free, bi-monthly email with a roundup of Educative's top articles and coding tips.