User Privacy has been a critical topic currently for most tech companies.
On Facebook, you may have noticed that you can set different privacy levels for the posts you publish so that they are only visible to a specific set of users like Public, Friends, Friends of friends, etc.
The privacy implementation design can be fairly complex, so we will limit it to a few core features that can be covered in a 45-minute interview round. In this question, you will be asked to develop the backend of a system with the following key features:
- Enable a user to specify the different levels of privacy for a post so that it is only visible to a particular set of users on Facebook.
- To keep the discussion simple, implement two levels of privacy, Public and Friends.
- More complex levels like Friends of friends and Custom groups can be discussed towards the end of the interview if the time remains.
You can use the following framework to better answer the Design Facebook Privacy Settings question in the interview. It will help you to maintain focus and answer it better.
- Key Features
- As discussed above
- Design Goals
- Minimum Latency
- High Consistency
- Partition Tolerance
- We will tolerate lower availability in the interest of high consistency (CAP Theorem)
- Read vs. Write Heavy
- Scale Estimation
- Daily Active Users (DAUs)
- Read QPS
- Write QPS
- Data generated each day and over 10 years (Storage Utilization)
- Approximate number of servers required
- REST APIs
- /setPrivacyLevel (Write API)
- /canView (Read API)
- High-Level Design
- Discuss different privacy levels & data structure to define them.
- Explain how the system will determine whether the post can be displayed to a specific user or not.
- How to build the key-value store to persist the friends data of the users.
- Database Design (Data Layer)
- Schema design
- SQL vs. No-SQL
- Hash-based sharding
- Consistent Hashing
- Replication (for Fault Tolerance)
- Read + Write Consistency
- Application Layer
- Multiple Stateless Servers with Load Balancer (Round-Robin)
- Caching for Fast Retrieval
- Eviction Policy - LRU
- Detailed Architecture Diagram
If time permits, you can also discuss the following towards the end of the interview:
- Complex Privacy Levels
- Friends of Friends
- Custom Groups
- Security, for example, ACL (Access Control List)
Learn more about the Key Features, Design Goals, Scale Estimations, REST APIs, High-Level Design, Detailed Architecture Diagram, and Framework to effectively prepare and answer this top question asked in the System Design Interviews at Facebook.
If you have not read our first article on Top Facebook System Design Interview Questions, we recommend reading it by clicking the below link:
In case if you have not read our series on Cracking the Facebook Behavioral Interview, we recommend reading it by clicking the below link:
👩💻 Best System Design Interview Course
🚀 Complete SWE Interview Course [💰 Limited Time 10% offer]
🙋♀️ Behavioral Interview Guide [💰 Special Discount]
📚 Recommended Interview Preparation Book (on Amazon)
☕️ Buy us a Coffee at BuyMeACoffee.com/InterviewSage
To stay updated about new posts, Subscribe & Follow Us!
This article is part of the series on System Design Interviews at Facebook. So, follow us to get notified when our next article in this series is published. Thanks for reading!