Design LinkedIn.
MediumLet's refine the design of a simplified LinkedIn. This isn't about building a full-fledged social network, but rather focusing on the core interaction: the connection network and the feed. We'll model users, their connections, and how they consume and publish content in their feed. The key is to design this with a focus on scalability, extensibility (imagine adding new content types or feed filtering options), and thread safety (many users interacting concurrently).
Think about the core actions a user performs: connecting with other users, posting different types of content (text, image, video), and viewing a personalized feed. The system needs to efficiently manage these connections and generate feeds based on user preferences and network activity. We aim for a design that minimizes coupling between components and promotes code reusability.
Requirements
Think like an Architect
Before revealing the requirements, imagine you're in the interview right now."How would you clarify the scope with your interviewer?"