AO
Back
Snowflake Common Problems

Distributed Job Scheduler

System DesignmediumLast reported August 2026
By AceOffer · Updated August 2026 · Reported 5× across 125+ reports

Understanding the Problem

Design a distributed job scheduler system. The base problem asks you to design a scalable, fault-tolerant job scheduling service. Variants include: (1) A general-purpose distributed job scheduler supporting cronjobs (scheduled/recurring execution), pause (allow currently running jobs to finish), and resume operations — assuming unlimited worker resources. (2) An ML-specialized variant tailored to ML workloads (e.g., GPU-aware scheduling, training job dependencies, resource heterogeneity). Key requirements typically include: job submission and queuing, priority-based scheduling, job state management (pending, running, paused, completed, failed), at-least-once or exactly-once execution semantics, horizontal scalability of workers, and fault tolerance. The interviewer may expect differentiated, non-textbook solutions beyond standard references (e.g., hello interview).

Functional Requirements

Structured requirements coming soon. For now, see the full problem statement above and the deep-dive prompts below.

Non-Functional Requirements

Latency, throughput, availability, consistency targets — being authored.

The Set Up

Defining the Core Entities

Core entities (Request, Batch, Worker, Cache, etc.) — being authored.

The API

POST /endpoint → describe request shape GET /endpoint → describe response shape (API spec being authored)

High-Level Design

Component diagram + walkthrough mapping each functional requirement to a system flow — being authored.

Potential Deep Dives

These are the directions the interviewer is likely to push you. Each one has multiple valid solutions at different quality tiers.

1)How would you handle pause and resume? Specifically, if a job is currently running, how do you pause it safely? (when: Candidate completes base design)

Bad

Naive approach with serious trade-off — being authored.

Good

Solid baseline with reasonable trade-offs — being authored.

Great

Production-grade approach with explicit trade-off rationale — being authored.

2)What happens if the scheduler goes down? How do you ensure jobs aren't lost or duplicated? (when: Candidate proposes single scheduler node)

Bad

Naive approach with serious trade-off — being authored.

Good

Solid baseline with reasonable trade-offs — being authored.

Great

Production-grade approach with explicit trade-off rationale — being authored.

3)How do you handle job priority? What if a high-priority job arrives while the queue is full of low-priority jobs? (when: Candidate uses simple FIFO queue)

Bad

Naive approach with serious trade-off — being authored.

Good

Solid baseline with reasonable trade-offs — being authored.

Great

Production-grade approach with explicit trade-off rationale — being authored.

4)How would you adapt this scheduler for ML training jobs that require GPUs and have multi-step dependencies? (when: ML variant is introduced)

Bad

Naive approach with serious trade-off — being authored.

Good

Solid baseline with reasonable trade-offs — being authored.

Great

Production-grade approach with explicit trade-off rationale — being authored.

5)What's unique or non-obvious about your design compared to off-the-shelf schedulers? (when: Candidate proposes standard/textbook design)

Bad

Naive approach with serious trade-off — being authored.

Good

Solid baseline with reasonable trade-offs — being authored.

Great

Production-grade approach with explicit trade-off rationale — being authored.

What is Expected at Each Level?

L4 / Mid-level

Cover happy path. Clarify scope. Identify the obvious bottleneck. Pick a reasonable storage and reasonable scaling approach.

L5 / SeniorTarget

All of the above plus: explicit failure handling, durability vs latency trade-offs, choose the right batching/caching strategy, articulate why.

L6 / Staff+

All of the above plus: organizational concerns (rollout, migration, on-call), quantitative analysis, multi-region considerations, what could go wrong with the proposed solution at 10x scale.

Insider Notes

Common mistakes: Copying standard hello-interview design verbatim without adding novel insights or differentiation; Not handling pause semantics correctly (e.g., hard-killing running jobs instead of draining); Ignoring idempotency — not handling duplicate job execution after worker failure; Forgetting distributed lock / leader election for the scheduler itself; Not discussing cron expression parsing and next-execution-time computation; Overlooking ML-specific requirements (GPU affinity, gang scheduling, DAG dependencies) in ML variant

Interviewer hints: Interviewer noted candidate's design lacked differentiation from standard references (hello interview) and pushed for 'something different'; Implied that going beyond textbook solutions is required to pass at current bar

What passers do: Clearly articulated job state machine with well-defined transitions; Addressed fault tolerance proactively (leader election, idempotency, heartbeats); Brought up differentiated design elements without being prompted; Covered ML-specific nuances (GPU-aware scheduling, DAGs) when variant was introduced; Asked clarifying questions to scope the problem before diving in

Why people fail: Presented textbook design with no differentiation — interviewer explicitly flagged this as insufficient; Could not articulate a clear stance when interviewer pushed back on design choices; Did not run/discuss test cases during the associated coding portion (noted as contributing factor in one fail); Stalled under probing questions about fault tolerance or priority handling

Edge cases probed: Same job submitted multiple times at different timestamps — deduplication handling; Worker dies mid-execution — re-queue without double execution; Cronjob fires while previous execution is still running — allow overlap vs. skip policy; Pause requested during job execution — drain vs. hard stop semantics; Clock skew between scheduler nodes causing duplicate or missed fires; Priority inversion / starvation of low-priority jobs

Alternative approaches: Centralized Scheduler with DB polling (Simple to implement; single point of failure; polling introduces latency and DB load at scale.); Message queue-based (Kafka/SQS) with consumer workers (Good decoupling and scalability; harder to implement priority preemption and fine-grained pause/resume semantics.); Time-wheel based in-memory scheduler (Very efficient for large numbers of timed jobs; loses state on restart without persistence layer; needs complementary durable store.); Existing OSS frameworks (Airflow, Quartz, Celery) (Operational overhead; interviewer may want a ground-up design to demonstrate deeper understanding; flagged as 'no differentiation' in at least one report.)

More Snowflake Questions

Free preview

Every question in the Snowflake catalog gets this depth

What you just read — canonical solution, follow-up arc, what passing candidates actually did — exists for all 103 Snowflake questions, refreshed monthly from new candidate reports.

$59/mo — or $50/mo with the 3-month pass · cancel anytime
Snowflake · System Design · Last reported August 2026
Is this helpful?