Representative interview topic

Data engineering interview: Design a data freshness SLO

DataHard
OfferCC Editorial TeamPublished Updated

Question

Design a data freshness SLO for a daily business dataset. Explain the freshness clock, lineage and quality signals, how to separate upstream delay from processing delay, and how to alert and recover from a breach.

Prompt and use cases

A dataset having values does not mean it is fresh. The answer should turn a business availability deadline into measurable indicators and locate delay in ingestion, transport, processing, or publication.

What the interviewer evaluates

  • Whether event, arrival, processing-complete, and serving times are distinct.
  • Whether datasets, partitions, and business uses get appropriate SLOs.
  • Whether lineage, run, quality, and freshness evidence are retained.
  • Whether a successful job is separated from usable data.
  • Whether alert suppression, escalation, backfill, and replay paths exist.
  • Whether a freshness breach is connected to downstream user impact.

Clarifications before answering

  • What are the business deadline, update cadence, and time zone?
  • Does freshness start at event creation, landing, or query availability?
  • Which partitions, fields, and reports are on the critical path?
  • What delay, gap, and backfill window is acceptable?
  • Can upstream provide event time, batch ID, and retry metadata?
  • On a breach, should reports freeze, show a data-status label, or continue?

30-second answer framework

“I would define queryable freshness against the business deadline and record event, landing, and serving times separately. For each critical dataset, I would calculate a partition-level freshness SLI and combine lineage, run state, row counts, and quality assertions to locate delay. Alerts would separate warning from breach so a successful job cannot hide a gap. Recovery would use retries, backfill, replay, and downstream labeling, with user impact and SLO budget guiding improvement.”

Step-by-step deep dive

Step 1: Define time semantics. State event time versus queryable time and handle late events, time zones, and daylight saving rather than relying only on job end time.

Step 2: Define SLI and SLO. For example, measure the fraction of partitions queryable before the deadline, with different targets for critical reports and exploratory data.

Step 3: Collect run evidence. Store run metadata, input and output partitions, lineage, row counts, null checks, and quality assertions linked to a dataset version.

Step 4: Localize delay. Break end-to-end delay into ingestion, transport, queueing, computation, and publication; distinguish upstream absence from downstream failure.

Step 5: Design alerts. Warnings use remaining time and trend, while breaches use actual impact. Deduplicate by dataset and partition and assign silence, escalation, and ownership.

Step 6: Recover and replay. Use idempotent batches, checkpoints, and bounded backfills, then rerun affected partitions and publish data status and update time.

Step 7: Improve the system. Track budget consumption, root-cause share, and false alerts, then change scheduling, capacity, partitioning, or product commitments.

Model high-quality answer

“The revenue report has an 08:00 local business deadline. I define fresh as the daily partition being queryable by 08:15 and separately measure event-to-landing delay. Monitoring reads input and output partitions, lineage, row counts, and quality assertions from run metadata; a successful run with a missing partition is still a freshness risk. Before 08:00 we warn on remaining time, and after 08:15 we escalate by report impact. Recovery backfills idempotently by batch ID and labels report status. Reviews break budget use down by ingestion, transport, and compute causes.”

Common mistakes

  • Monitor job success only → partition gaps stay hidden → check queryable partitions and the business deadline.
  • Use processing end time only → late events are misread → retain event, landing, and serving times.
  • Give every dataset one threshold → priorities disappear → tier by use and critical path.
  • Alert without owner or escalation → nobody acts → bind a window, owner, and recovery action.
  • Overwrite during backfill → duplicates or versions are unclear → record idempotent batch, range, and version.

Follow-up questions and responses

Follow-up 1: What if upstream has no event time?

Use landing time as a temporary, clearly limited metric and require upstream to add event time and batch metadata.

Follow-up 2: What if late data has no current user impact?

Track technical SLI and user impact together, and decide budget consumption against the business commitment.

Follow-up 3: How do you prevent alert storms?

Aggregate root causes through lineage, then apply warning windows, deduplication, silencing, and escalation.

Follow-up 4: What should downstream do during backfill?

Publish data status and update time, freeze or label critical reports, and prevent incomplete results from being treated as final.

Follow-up 5: How do you validate that the SLO reflects business needs?

Interview report users, compare breaches with decision delay or customer impact, and recalibrate the window regularly.

Follow-up 6: What if late data changes historical partitions?

Define a backfill window and version semantics, record the recomputation range, and notify downstream caches and incremental models.

Follow-up 7: What improvement matters most?

Fix the root cause consuming the most budget on critical user paths before adding more dashboards.

Public sources

Related questions

Resources

Product Comparison

Every comparison is based on official sources and includes a review date.

Open the full comparison