Design a Twitter-like microblogging service
Company: Asana
Role: Software Engineer
Category: System Design
Difficulty: medium
Interview Round: Technical Screen
Design a Twitter-like microblogging system. You can describe it verbally and with structured notes.
Requirements:
- Users can post short messages.
- Users can follow/unfollow others.
- Users can view a home timeline/feed with recent posts from accounts they follow.
- Support high read volume and write volume.
Clarify and address:
- Core APIs and data models.
- Feed generation approach (fan-out on write vs fan-out on read, or hybrid).
- Storage choices, caching, pagination, and ranking.
- Consistency expectations (e.g., how quickly a new post should appear).
- Operational concerns: rate limiting, abuse/spam, and observability.
Overview: This question evaluates system design competencies including scalable architecture, data and API modeling, feed generation trade-offs, storage and caching strategies, consistency expectations, and operational concerns such as rate limiting, abuse mitigation, and observability.
Read the full Asana Software Engineer interview experience this question came from