Design a job scheduler
Company: Applied Intuition
Role: Software Engineer
Category: System Design
Difficulty: hard
Interview Round: Onsite
Design a scalable job scheduler that supports immediate and delayed execution, recurring (cron-like) jobs, priorities, retries with backoff, and job dependencies. Specify the system components (API layer, scheduler/dispatcher, queues, workers/executors, metadata store), data models, and core APIs (submit, cancel, pause, resume, status). Discuss execution semantics (at-least-once vs exactly-once), idempotency, failure handling and deduplication, monitoring and alerting, multi-tenant isolation, and horizontal scaling to high throughput. Consider persistence, durability, and strategies for multi-region deployment.
Quick Answer: This question evaluates competency in designing scalable, durable distributed job schedulers, covering multi-tenant architecture, queuing and metadata persistence, execution semantics, idempotency, retries/dead-lettering, failure handling, and observability.