← Meta Interview Insights

Meta·Software Engineer·Onsite - System Design / Architecture·Senior

SeniorPrefer not to say
Jun 2026

Summary

Meta system design round for a software engineer role, single question about building a news aggregation service on top of RSS feeds. The question had a lot of surface area and I felt like I was racing the clock the entire time.

Questions Asked (1)

Q1

Design a system that pulls news items from RSS feeds across many companies and lets users query the top X most recent articles per company.

System DesignTechnical Trade-offsAPI & Integrations
Author's notes

I started with requirements which felt right, but I spent way too long on the ingestion side and barely got to the serving path before they nudged me along.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements (number of companies, feed update frequency, query latency, consistency) and then design a scalable ingestion pipeline that fetches and parses RSS feeds, stores articles in a database optimized for per-company recency queries, and exposes a simple API. Focus on trade-offs between push vs pull ingestion, storage choices, and caching to meet low-latency reads.

Pro tip: Emphasize idempotency and deduplication in the ingestion pipeline—RSS feeds often republish or update items, so using a unique article ID (e.g., GUID or hash of link+title) prevents duplicates and ensures accurate 'top X' results.

1. Clarify Requirements and Scale

Ask about number of companies, articles per day, query QPS, latency SLA, and whether 'top X' means strictly most recent or ranked by relevance. This shapes the entire design.

2. Design Ingestion Pipeline

Decide on a pull-based scheduler (e.g., cron or distributed queue) that periodically fetches RSS feeds, parses them, and normalizes articles. Use a message queue to decouple fetching from processing and handle failures with retries.

3. Choose Storage and Indexing

Select a database that supports efficient per-company recency queries. For example, a wide-column store like Cassandra with clustering by company and descending timestamp, or a relational DB with proper indexing. Consider caching hot companies in Redis.

4. Design Query API and Caching

Define a REST endpoint like GET /articles?company_id=123&limit=X that returns the X most recent articles. Implement caching (e.g., Redis) for frequent queries and consider precomputing top X per company if X is small and fixed.

5. Address Scalability, Consistency, and Monitoring

Discuss partitioning by company, handling feed failures, ensuring eventual consistency, and monitoring lag and error rates. Also consider rate limiting and backpressure.

Key Points to Mention

  • Deduplication strategy using article GUID or hash to avoid duplicates from feed updates.
  • Choice of database (e.g., Cassandra, DynamoDB) with partition key = company_id and sort key = published_at descending for efficient top-X queries.
  • Caching layer (Redis) for low-latency reads and reducing database load.
  • Asynchronous ingestion with message queues (e.g., Kafka, SQS) to handle spikes and failures.
  • API design with pagination and limit parameter, and possibly a separate endpoint for top X per company.
  • Trade-offs between push (webhooks) vs pull (polling) ingestion, and between strong vs eventual consistency.

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.