Meta System Design Interview (questions, process, prep)

the meta logo in blue on black background

Today we’re going to go over the Meta system design interview, with 37 recent Meta system design interview questions, plus sample answers to the top 3 most common.

The information in this guide comes in part from an analysis of nearly 100 real system design interview reports collected from Meta software engineer, engineering manager, and technical program manager candidates. 

The first thing you’ll need to know: Meta interviewers like to base questions on Meta products, so research the main ones thoroughly beforehand.

Let’s get started.

  1. Meta system design interview basics
  2. Meta system design interview questions
  3. Preparing for Meta system design interviews
Click here to practice system design interviews 1-on-1 with a Meta ex-interviewer

1. Meta system design interview basics

Meta system design interviews are typically given to software engineer, engineering manager, and technical program manager candidates at levels L4 and up.

Depending on your role and level, you can expect 1-3 system design interviews, each lasting 45 minutes, as part of your onsite interview.

Your system design interview(s) might take place in person at a Meta office, or virtually. If you interview in person, you might be asked to draw out your design on a whiteboard, but most candidates use an online drawing tool such as Excalidraw.

1.1 System vs Product

While you’ll find that most guides and resources usually refer only to '"system design" interviews, Meta makes a distinction and will often offer you the choice between a system design interview and a product design interview. 

What’s the difference?

  • System design interviews ask you to deal with distributed systems on a very large scale. Think availability, scalability, partition tolerance, reliability, storage, databases, core systems, etc.
  • Product design interviews may be more appropriate for candidates who are used to working on a user-facing product. Think APIs, data modeling, how the client and server interact, how a user may interact with it, etc.

Whether you face a system or product design interview, the questions will be very open-ended and feel more like a discussion. You'll therefore want to show that you can both be creative and structured at the same time.

In the rest of the article, we'll refer to just "system design questions" at Meta but these will include product design questions also.

1.2 Topics

If you're a software engineer or engineering manager, Meta expects you to be familiar with the areas below (though you don't need to be an expert in all of them):

  • Concurrency (threads, deadlock, starvation, consistency, coherence)
  • Caching
  • Database partitioning, replication, sharding, CAP Theorem
  • Networking (IPC, TCP/IP)
  • Real-world performance (relative performance RAM, disk, your network, SSD), availability, and reliability (types of failures, failure units, how failures may manifest, mitigations, etc.)
  • Data storage and data aggregation
  • QPS capacity/machine estimation (back of the envelope estimates), byte size estimation

System design interviews at Meta are focused on one complex problem such as “Build video distribution for Facebook video”.

Meta emphasizes that you must be able to reflect on the tradeoffs in your design:

  • Performance vs. scalability
  • Latency vs. throughput
  • Availability vs. consistency

As you progress in your design, you'll need to consider the following:

  • How would you build your backend storage? How does that scale to Facebook’s size?
  • How would you lay out the application server layer? What are the responsibilities of the various services?
  • How would you design your mobile API? What are the hard problems in representing the data being sent from server to client?
  • How would you structure your mobile client? How do low-end devices and poor network conditions affect your design?
  • As you’re designing these systems, run through the list of things we’re looking for and make sure you’re able to answer them all for each piece of each app.

The information above is taken from Meta's guide to the onsite interview for software engineers.

2. Meta system design interview questions

Now you have an idea of how system design interviews work at Meta, let’s get into the complete list of system design questions that have been asked in real Meta interviews, according to data from Glassdoor.

Out of all the Meta system design interview questions that we collected from Glassdoor, these first three questions were repeated multiple times across different roles. We've laid out an answer outline for each.

Below each question, you’ll find a repeatable framework that you can use to answer any system design interview question. For a full explanation of the framework, consult our system design question guide

2.1 Design Instagram

From what we've seen, this is probably the most common system design interview question at Meta.

“Design Instagram” requires candidates to tackle an incredibly complex task— building a social media app— in 45 minutes.

Below, take a look at some points of consideration and questions to keep in mind when tackling this problem.

Sample answer: Design Instagram

Ask clarifying questions

Before outlining your design, narrow the scope of the question and seek clarity on the functional and non-functional requirements:

  • Are we designing the whole of Instagram, or focusing on one particular part?
  • What features are expected? (image sharing, comments, likes, etc.)
  • What scale are we talking about? (daily active users, uploads per second, etc.)

Design high-level:

Lay out the main components of your design, considering:

  • How will your system handle image uploads and efficiently serve them to users?
  • What kind of database will you use to store images and user data?
  • How will you ensure a seamless user experience while maintaining scalability?

Drill down:

Dig deeper into the architecture and components:

  • Define the architecture for image storage and retrieval.
  • Discuss the use of caching mechanisms to enhance performance.
  • Explore the choice of databases (SQL, NoSQL) and justify your decision.
  • Break down the handling of user interactions (likes, comments) and notifications.

Bring it all together: Conclude by addressing potential improvements and optimizations:

  • Identify possible bottlenecks in your design and propose solutions.
  • Discuss how you could enhance the system's scalability and responsiveness.
  • Consider future features or technologies that could be integrated for improvement.

For a more complete answer, see this post by Nikhil Guptag or watch the Gaurav Sen video below.

 

2.2 Design X part of Facebook

Varying versions of this question came up frequently in the interview reports from Meta, asking candidates to design a particular feature of Facebook or design a made-up feature.

The most common was 'Design the Facebook Newsfeed' (now called just "Feed") so let's take a look at how you could approach it.

Sample answer: Design the Facebook Feed

Ask clarifying questions:

  • What content types are featured in the Feed? (text posts, images, videos)
  • How do you prioritize content? (algorithmic sorting, user engagement, etc.)

Design high-level:

  • Lay out the key components of your system.
  • How will your system curate and present content to users?
  • Discuss the storage and retrieval mechanisms for diverse content types.
  • How will you handle real-time updates and user interactions?

Drill down:

  • Outline the architecture for content storage and retrieval.
  • Discuss strategies for efficient content delivery and rendering.
  • Address scalability concerns and potential tech stack choices (databases, caching mechanisms).

Bring it all together:

  • Identify potential bottlenecks and propose solutions.
  • Discuss how you could enhance the algorithm for content personalization.
  • Consider features or technologies that could be integrated to enrich the user experience

For a more detailed look at the problem, check out this answer walk-through to "Design the Facebook news feed" from systemdesignprep.com

2.3 Design a messaging app

This is another common question in system design interviews at Meta, as it is at other FAANG companies. You might be asked to design a generic messaging app, WhatsApp, or Facebook Messenger. Let's take a look at a way of approaching it.

Sample answer: Design a messaging app

Ask clarifying questions:

  • What features should the messaging app support? (text, images, videos, voice messages)
  • Are there specific security or privacy requirements?
  • Seek information on the expected user base, message volume, and any specific constraints.

Design high-level:

  • Lay out the core components: API servers, DynamoDB, and the Message Distributor.
  • Define how the messaging app will handle the sending and receiving of messages.
  • Discuss the storage and retrieval mechanisms for various media types.
  • Address considerations for real-time message delivery and notifications.

Drill Down:

  • Outline the architecture for the messaging app, including server-client communication.
  • Discuss potential database choices for storing messages and user data.
  • Explore strategies for handling multimedia content and ensuring efficient delivery.

Bring It All Together:

  • Identify potential security measures for protecting user privacy.
  • Propose features like message synchronization across devices.
  • Discuss potential integrations with other apps or services to enhance user experience.

Come up with your own solution to "design a messaging app" then watch the video below to see how an ex-Google engineering manager does it.

 

3. More Meta system design interview questions

Now, let’s get into the complete list of system design interview questions asked in interviews for different roles at Meta.

Keep in mind that, in most cases, your interviewer will adapt the question to your background. For instance, if you've worked on an API product they're more likely to ask you to design an API. But that won't always be the case, so practice with the questions below to be ready to design any type of product or system at a high level.

We’ve divided the questions by role: software engineer, engineering manager, and technical program manager. 

Note that for each role, interviewers ask similar questions to test different skills. For example, engineering managers will be expected to give more in-depth answers than software engineers, including a discussion of how the system would play into the larger business context of the company. TPMs must be able to discuss the merits of different architectures in order to work with engineers.

Test out your skills using the questions below.

3.1 Meta system design interview questions (for software engineers)

  1. Design Instagram
  2. Design X new feature for the Facebook app (e.g a "where are my friends?" tool)
  3. How would you design an auto-complete service for a search engine?
  4. Design the Facebook news feed
  5. Design Facebook Messenger or WhatsApp
  6. Design the Instagram Stories iOS app.
  7. Questions about Linux internals and how to troubleshoot the servers.
  8. Building minesweeper board on NxM
  9. Implement minesweeper game on a whiteboard.
  10. Large-scale proximity service design
  11. Design Facebook Chat
  12. Design HackerRank
  13. Build a key-value database
  14. Design a micro-kernel
  15. Design an auction system on Instagram
  16. Design a chat-like app in FB infrastructure
  17. Design a file system
  18. Design an online bulletin board where people can add comment
  19. Design a search and recSys system
  20. To create a mobile application that represented a simple task.
  21. Design Twitter
  22. Design Facebook
  23. Design a cinema ticket booking service
  24. Design Facebook Status Search
  25. Design Live Commenting

3.2 Meta system design interview questions (for engineering managers)

  1. Architect a drive-through system
  2. Design a video upload and sharing app.
  3. Design the architecture of a cloud application
  4. Design APIs layer to Facebook Chat
  5. Design Instagram
  6. Design Instagram’s newsfeed

3.3 Meta system design interview questions (for technical program managers)

  1. Design a messaging platform
  2. Design a flight app
  3. Design a weight-loss app
  4. Design an app that promotes vaccination against COVID-19
  5. Design a travel app

4. Preparing for Meta system design interviews

Now that you know what questions to expect, let’s focus on preparation. Below are links to free resources and four steps to help you prepare for your Meta system design interviews.

For extra tips and resources, take a look at our system design interview prep guide and our list of 19 system design interview tips from ex-interviewers.

4.1 Learn the interview process

Of course, your system design interviews at Meta will be part of a larger interview process. For help understanding the overall interview process and practice questions for every type of question you’ll be asked, use one of the guides below.

Now, let’s dig deeper into system design interview prep.

4.2 Learn the concepts

There is a base level of knowledge required to be able to speak intelligently about system design. You don't need to know EVERYTHING about sharding, load balancing, queues, etc. 

However, you will need to understand the high-level function of typical system components. You'll also want to know how these components relate to each other, and any relevant industry standards or major tradeoffs. 

To help you get the foundational knowledge you need, we've put together a series of 9 system design concept guides. Here's the full list:

  1. Network protocols and proxies, which make it possible for any networked computers to talk to each other, no matter where they are or what hardware or software they’re running.
  2. Databases, integral components of the world’s biggest technology systems.
  3. Latency, throughput, and availability, three common metrics for measuring system performance.
  4. Load balancing, the process of distributing tasks over a set of computing nodes to improve the performance and reliability of the system.
  5. Leader election algorithms, which describe how a cluster of nodes without a leader can communicate with each other to choose exactly one of themselves to become the leader. 
  6. Caching, a technique that stores copies of frequently used application data in a layer of smaller, faster memory in order to compute costs and to improve data retrieval times and throughput.
  7. Sharding, the horizontal scaling of a database system that is accomplished by breaking the database up into smaller “shards,” which are separate database servers that all contain a subset of the overall dataset.
  8. Polling, SSE, and WebSockets, techniques for streaming high volumes of data to or from a server.
  9. Queues and pub-sub, mechanisms that allow a system to process messages asynchronously, which can eliminate bottlenecks and help the system to operate more efficiently.

We’d encourage you to begin by studying these topics, and once you understand the basics, you can begin practicing system design questions.

4.3 Work through system design interview questions

We recommend using a repeatable answer framework when answering system design interview questions. You can learn more about that framework here, but in the meantime, here is a summary:

Step 1: Ask clarifying questions

First, spend about five minutes checking in with your interviewer about the functional and non-functional requirements of what you’re going to design. Ask about the system’s goals and how they will be measured. Be sure that you fully understand the question before moving forward.

Call out any assumptions you’re making that will influence your design approach. If applicable, ask about non-functional requirements such as availability, consistency, scalability, etc.

Step 2: Design high-level

Start the high-level design by specifying one to two metrics (e.g. number of users added, products sold before vs after a feature launch, etc.). Then use these metrics to do some simple calculations in order to find the optimal usage pool of the system.

Once you’ve defined your metrics, map out only the most functional components of the system (e.g. front end, web server, database, etc.).

Finally, before getting into the more detailed aspects of your system, make some decisions on how you will design its database. Choose whether it will be a relational or a no-SQL database, as well as its metadata and table structure.

Step 3: Drill down on your design

If you haven’t already, start mapping out the system on your whiteboard. Speak through your diagram so that your interviewer can follow along and ask questions when necessary.

Consider any bottlenecks that may arise when it comes to the system’s scalability, performance, or flexibility.

To finalize your design, play to your strengths by choosing a component you’re more familiar with and drilling down on it. If you’re not sure which component would be best to explore, ask your interviewer.

Step 4: Bring it all together

Before wrapping up the round, take about five minutes to re-examine what you’ve designed. Does it meet the objectives you laid out with the interviewer at the beginning of the session? It is okay to change some components at this stage if you think it will improve the system, but you must explain to the interviewer what you are doing and why.

Apply this framework to practice questions like those we’ve provided above. Use it on different types of questions in a variety of subjects, so that you learn how to adapt it to different situations and respond to unpredictable questions on the fly.

4.4 Practice with mock interviews

The first step is always to practice by yourself, as we touched on above. Once you’ve got the framework down, start interviewing yourself out loud as you practice. Play both the role of the interviewer and the candidate, asking and answering questions. This will help you develop your communication skills and process for breaking down problems.

Practice with someone else

Once you've done some individual practice, we recommend that you practice solving system design questions with someone interviewing you.

A great place to start is to practice with friends or family if you can. This can help you get some preliminary feedback on your approach, which will be especially helpful if your partner is familiar with system design interviews. 

Practice with ex-interviewers

Finally, you should also try to practice system design mock interviews with expert ex-interviewers, as they’ll be able to give you much more accurate feedback than friends and peers.

If you know someone who has experience running system design interviews at Meta, then that's fantastic. But for most of us, it's tough to find the right connections to make this happen. 

Here's the good news. We've already made the connections for you. We’ve created a coaching service where you can practice system design interviews 1-on-1 with ex-interviewers from Meta. Learn more and start scheduling sessions today.