← Meta Interview Insights

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

Senior
Apr 2026

Summary

Meta data engineering system design round, basically one massive question that covered everything from ingestion to SLAs. The scope was brutal and I kept second-guessing whether to go deep on one area or stay broad.

Questions Asked (8)

Q1

Design a complete data platform that handles both daily batch and near-real-time streaming for product analytics, covering everything from ingestion through to serving layer.

System DesignData ModelingTechnical Trade-offs
Author's notes

This was basically the whole interview compressed into one prompt.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and scale, then propose a unified architecture that handles both batch and streaming with a lambda or kappa design. Walk through each layer—ingestion, storage, processing, and serving—highlighting trade-offs and how you'd ensure consistency and low latency.

Pro tip: Emphasize the importance of a unified data model and metadata management to avoid divergence between batch and streaming paths. Also, discuss how you'd handle late-arriving data and exactly-once semantics in streaming.

1. Clarify Requirements and Scale

Ask about data volume, velocity, variety, latency requirements, and consistency needs. Understand what product analytics entails (e.g., user behavior, funnel analysis) and expected query patterns.

2. High-Level Architecture

Propose a layered architecture: ingestion (e.g., Kafka for streaming, batch ingestion for daily loads), storage (e.g., data lake for raw, data warehouse for processed), processing (e.g., Spark for batch, Flink for streaming), and serving (e.g., OLAP database, cache).

3. Deep Dive into Key Components

Detail the ingestion layer: how to handle both real-time and batch sources, schema management, and data quality. Discuss storage choices: Parquet for batch, Delta Lake for ACID, and how to unify batch and streaming storage.

4. Processing and Consistency

Explain batch processing (e.g., Spark) and stream processing (e.g., Flink) with windowing, watermarks, and exactly-once semantics. Address how to reconcile batch and streaming results (lambda vs kappa) and handle late data.

5. Serving Layer and Trade-offs

Describe serving options: pre-aggregated tables for batch, real-time dashboards from streaming, and a unified query layer (e.g., Presto). Discuss trade-offs: latency vs throughput, cost, complexity, and consistency.

Key Points to Mention

  • Lambda vs Kappa architecture: pros and cons, and when to choose each.
  • Exactly-once processing semantics in streaming and how to achieve it (e.g., idempotent writes, transactions).
  • Data partitioning and indexing strategies for efficient batch and real-time queries.
  • Schema evolution and metadata management across batch and streaming pipelines.
  • Handling late-arriving data and reprocessing for batch corrections.
  • Cost and operational complexity trade-offs between maintaining two pipelines vs a unified one.

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

Q2

How would you handle idempotency, deduplication, and late or out-of-order events in a streaming pipeline?

System DesignTechnical Trade-offs
Author's notes

Spent too long on deduplication and didn't get to late event handling until they prompted me.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the pipeline's requirements (exactly-once vs at-least-once, latency vs correctness) and then systematically address each concern: idempotency via deterministic keys and upserts, deduplication with stateful stores and TTLs, and late events with watermarks and allowed lateness. Emphasize trade-offs and how you'd validate the solution with metrics and testing.

Pro tip: Meta values practical, scalable solutions: mention how you'd leverage Flink's built-in exactly-once semantics and state management, but also discuss the cost of state and how you'd tune it. Show you understand that perfect exactly-once is often a trade-off with latency and complexity.

1. Clarify requirements and constraints

Ask about data volume, latency tolerance, correctness guarantees (exactly-once vs at-least-once), and downstream systems. This shapes the entire design.

2. Design for idempotency

Use deterministic event IDs and idempotent writes (e.g., upserts with versioning) so retries or duplicates don't corrupt state. Consider idempotent sinks like databases with unique constraints.

3. Implement deduplication

Maintain a stateful dedup store (e.g., RocksDB in Flink) with TTL to track seen event IDs. Discuss trade-offs between memory, storage, and accuracy.

4. Handle late and out-of-order events

Use event-time processing with watermarks and allowed lateness. For events beyond allowed lateness, route to a side output or dead-letter queue for later reconciliation.

5. Monitor, test, and iterate

Define metrics for duplicates, late events, and state size. Test with fault injection and replay scenarios to ensure correctness under failures.

Key Points to Mention

  • Exactly-once semantics via checkpointing and transactional sinks (e.g., Flink's two-phase commit)
  • Idempotent writes using unique keys and upserts (e.g., Kafka's idempotent producer, database MERGE)
  • Stateful deduplication with TTL and trade-offs between state size and accuracy
  • Event-time processing with watermarks and allowed lateness for out-of-order events
  • Side outputs or dead-letter queues for events that arrive too late
  • Monitoring and alerting on duplicate rates, late event counts, and state growth

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

Q3

Walk me through your approach to table partitioning and clustering for a large-scale analytics workload.

Data ModelingTechnical Trade-offs
Author's notes

Pretty comfortable here.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the workload characteristics (query patterns, data volume, update frequency) and then explain how you choose partitioning and clustering keys to optimize for the most common queries. Emphasize trade-offs between performance, storage, and maintenance, and give a concrete example from your experience.

Pro tip: Mention that you validate your design with real query patterns and monitor performance metrics, and be prepared to discuss how you handle schema evolution and backfilling. This shows you think about long-term operability, not just initial setup.

1. Clarify requirements

Ask about data volume, query patterns (filtering, aggregation, joins), latency SLAs, and update frequency to understand what partitioning and clustering should optimize for.

2. Choose partitioning strategy

Select a partition key (e.g., date, region) that aligns with common filters and enables partition pruning; discuss granularity and trade-offs like too many small partitions.

3. Choose clustering strategy

Pick clustering columns (e.g., user_id, event_type) to co-locate related data and speed up range scans and aggregations; explain how clustering complements partitioning.

4. Validate and iterate

Test with representative queries, measure performance, and adjust keys as needed; mention monitoring and handling skew or hot partitions.

5. Discuss operational considerations

Cover maintenance tasks like compaction, backfilling, and schema evolution, and how they impact the chosen design.

Key Points to Mention

  • Partition pruning and its impact on query performance
  • Clustering for efficient range scans and aggregations
  • Trade-offs between number of partitions and file size
  • Handling data skew and hot partitions
  • Schema evolution and backfilling strategies
  • Monitoring and iterating based on real query patterns

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

Q4

When would you use an append-only pattern versus an upsert or merge pattern, and how do you handle slowly changing dimensions?

Data ModelingTechnical Trade-offs
Author's notes

SCD2 vs SCD1 I know cold, but I fumbled the connection to append-only vs upsert in a streaming context.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by contrasting append-only and upsert/merge patterns in terms of data integrity, performance, and use cases. Then explain how slowly changing dimensions (SCDs) fit into these patterns, focusing on Types 1, 2, and 3, and when to use each. Emphasize trade-offs and give examples from your experience.

Pro tip: Mention that append-only is often used for immutable event logs (e.g., Kafka) while upsert/merge is for mutable state (e.g., user profiles). For SCDs, highlight that Type 2 is common for historical tracking but requires more storage and complex queries.

1. Define the patterns

Briefly explain append-only (immutable, event sourcing) and upsert/merge (mutable, current state) patterns, including their pros and cons.

2. When to use each

Discuss scenarios: append-only for audit trails, event streaming, and high write throughput; upsert/merge for maintaining current state, handling late-arriving data, and reducing storage.

3. Introduce SCDs

Explain that slowly changing dimensions manage changes in dimension attributes over time, and describe Types 1 (overwrite), 2 (add new row), and 3 (add new column).

4. Handling SCDs with patterns

Map SCD types to patterns: Type 1 often uses upsert; Type 2 uses append-only with effective dates; Type 3 uses upsert with additional columns.

5. Trade-offs and examples

Summarize trade-offs (storage, query complexity, performance) and provide a concrete example, such as user profile changes in a social network.

Key Points to Mention

  • Append-only ensures immutability and auditability, ideal for event sourcing and streaming.
  • Upsert/merge reduces storage and simplifies queries for current state but loses history.
  • SCD Type 1 overwrites old data, Type 2 preserves history with versioning, Type 3 tracks limited history with columns.
  • Type 2 SCDs are typically implemented with append-only and effective date ranges.
  • Consider performance implications: append-only writes are fast but reads may require aggregation; upserts can cause write contention.
  • At Meta, scale and real-time needs often influence the choice, e.g., using append-only for activity logs and upsert for user settings.

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

Q5

How do you approach backfills in a production data pipeline, especially when the pipeline has already been running for a while?

System DesignTechnical Trade-offs
Author's notes

Blanked for a second on this one.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the pipeline's architecture, data volume, and downstream dependencies to frame the backfill challenge. Then walk through a structured approach: assess impact, design an idempotent and isolated backfill process, execute incrementally with monitoring, and validate results. Emphasize trade-offs between correctness, performance, and operational risk.

Pro tip: Always design backfills to be idempotent and run them in a separate environment or with resource isolation to avoid impacting live traffic. Proactively communicate with downstream consumers about the backfill timeline and expected data changes.

1. Clarify Requirements and Impact

Understand why the backfill is needed, what data range is affected, and which downstream systems or SLAs might be impacted. Identify any compliance or data retention constraints.

2. Design for Idempotency and Isolation

Ensure the backfill logic is idempotent so it can be safely retried. Isolate the backfill from production traffic by using separate resources, rate limiting, or running during low-traffic windows.

3. Plan Incremental Execution

Break the backfill into smaller chunks (e.g., by time partitions) to limit blast radius and allow for progress tracking. Implement checkpointing to resume from failures without reprocessing everything.

4. Monitor and Validate

Set up monitoring for resource usage, error rates, and data quality. Validate the backfilled data against source systems or expected outputs, and compare with existing data to ensure consistency.

5. Communicate and Rollback

Notify stakeholders about the backfill schedule and potential data changes. Have a rollback plan in case of issues, such as reverting to a previous snapshot or disabling the backfill.

Key Points to Mention

  • Idempotency: ensuring repeated runs don't cause duplicates or inconsistencies
  • Isolation: using separate resources or rate limiting to avoid impacting production
  • Incremental processing: chunking by time or key ranges with checkpointing
  • Monitoring and validation: tracking progress, errors, and data quality
  • Downstream communication: informing consumers about data changes and timelines
  • Trade-offs: balancing speed, cost, and risk (e.g., full vs. partial backfill)

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

Q6

Describe how you'd handle orchestration, dependency management, and failure recovery across a complex multi-step pipeline.

System DesignTechnical Trade-offs
Author's notes

This felt like the most conversational part.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the pipeline's requirements and constraints, then propose a high-level architecture that separates orchestration, dependency management, and failure recovery concerns. Dive into specific mechanisms for each, emphasizing trade-offs and how you'd ensure reliability and scalability.

Pro tip: Demonstrate maturity by discussing how you'd balance simplicity and robustness—e.g., using managed services vs. custom solutions—and by highlighting observability and idempotency as foundational to failure recovery.

1. Clarify Requirements and Constraints

Ask about pipeline complexity, SLAs, data volume, latency requirements, and existing infrastructure to tailor your answer.

2. Design Orchestration Layer

Choose an orchestrator (e.g., Airflow, Argo, Step Functions) and explain how it schedules, triggers, and monitors tasks, considering scalability and fault tolerance.

3. Manage Dependencies

Define dependencies as a DAG, handle data and control dependencies, and discuss strategies for dynamic dependencies and versioning.

4. Implement Failure Recovery

Describe retry policies, idempotent tasks, checkpointing, dead-letter queues, and alerting; explain how to recover from partial failures and ensure exactly-once semantics if needed.

5. Discuss Trade-offs and Evolution

Compare approaches (e.g., centralized vs. decentralized orchestration) and explain how the design can evolve with scale and changing requirements.

Key Points to Mention

  • DAG-based orchestration and tools like Airflow, Argo, or AWS Step Functions
  • Idempotency and exactly-once processing for reliable retries
  • Retry policies with exponential backoff and circuit breakers
  • Checkpointing and state management for long-running pipelines
  • Observability: logging, metrics, tracing, and alerting
  • Trade-offs between managed services and custom solutions

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

Q7

How would you compute daily, hourly, and rolling-window metrics efficiently at scale?

Product Analytics & MetricsTechnical Trade-offs
Author's notes

Talked about pre-aggregating at ingestion time for fixed windows and using approximate methods like HyperLogLog for cardinality in rolling windows.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the scale, latency requirements, and metric definitions, then propose a layered architecture that separates batch and stream processing. Emphasize trade-offs between accuracy, cost, and latency, and how you would handle late data and exactly-once semantics.

Pro tip: At Meta, metrics often need to be sliced by dimensions like user, region, and device; pre-aggregating with a lambda architecture or using a system like Druid or Pinot can drastically reduce query latency. Always discuss how you'd handle backfills and data reprocessing without disrupting live dashboards.

1. Clarify requirements and constraints

Ask about data volume, velocity, latency SLAs, accuracy needs, and whether metrics are for real-time monitoring or historical analysis. Understand the dimensions and granularity required.

2. Choose a processing architecture

Decide between batch, stream, or hybrid (lambda/kappa) based on latency and accuracy. For daily metrics, batch may suffice; for hourly and rolling windows, streaming with windowing is often needed.

3. Design storage and pre-aggregation

Use a time-series or OLAP store (e.g., Druid, Pinot, ClickHouse) and pre-aggregate at the finest granularity needed. Consider materialized views or rollups to speed up queries.

4. Handle late data and correctness

Implement watermarks, allowed lateness, and idempotent writes to ensure correctness. Discuss exactly-once semantics and how to reconcile batch and stream results.

5. Optimize for scale and cost

Partition and shard data appropriately, use columnar storage, and compress. Monitor and tune for cost-efficiency, and consider tiered storage for older data.

Key Points to Mention

  • Lambda vs. Kappa architecture and when to use each
  • Windowing strategies (tumbling, sliding, session) and watermarks for late data
  • Pre-aggregation and rollup techniques to reduce query latency
  • Exactly-once processing and idempotency in stream processing
  • Storage choices: OLAP vs. time-series databases and their trade-offs
  • Backfill and reprocessing strategies without impacting live metrics

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

Q8

What data quality checks would you implement and how do you define and enforce SLAs on a data platform?

Product Analytics & MetricsSystem Design
Author's notes

Talked about row count checks, null rate thresholds, schema drift detection, and freshness monitoring.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by framing data quality as a multi-layered system: preventive checks at ingestion, continuous monitoring in pipelines, and automated alerting. Then define SLAs as contracts with measurable metrics (freshness, completeness, accuracy) and describe enforcement via monitoring, alerting, and escalation. Emphasize how you balance rigor with scalability in a large-scale environment like Meta.

Pro tip: Tie data quality directly to business impact—e.g., 'a 1% drop in data completeness can skew ad targeting metrics by X%'—to show you understand the downstream consequences and can prioritize checks accordingly.

1. Define Data Quality Dimensions and Metrics

Identify key dimensions like accuracy, completeness, consistency, timeliness, and validity. For each, define measurable metrics (e.g., % nulls, latency, schema drift) that align with business needs.

2. Implement Checks at Multiple Stages

Apply checks at ingestion (schema validation, format checks), transformation (null checks, referential integrity), and serving (freshness, row counts). Use a mix of batch and streaming validations.

3. Define SLAs with Clear Ownership

Specify SLAs as contracts: e.g., 'data freshness < 15 min, 99.9% completeness'. Assign owners (data producers/consumers) and document consequences for violations.

4. Enforce SLAs via Monitoring and Alerting

Set up automated monitoring with thresholds, anomaly detection, and alerting (e.g., PagerDuty). Integrate with CI/CD to block bad data from propagating.

5. Iterate and Improve

Track SLA violations, conduct root-cause analysis, and refine checks. Use feedback loops to adjust thresholds and add new checks as data evolves.

Key Points to Mention

  • Data quality dimensions: accuracy, completeness, consistency, timeliness, validity, uniqueness.
  • Automated checks: schema validation, null checks, range checks, referential integrity, anomaly detection.
  • SLA definition: measurable metrics (freshness, completeness, latency), ownership, and escalation paths.
  • Enforcement: monitoring tools (e.g., Great Expectations, Monte Carlo), alerting, and CI/CD integration.
  • Trade-offs: balancing strictness with performance, and avoiding alert fatigue.
  • Scalability: designing checks that work across thousands of pipelines and petabytes of data.

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