← Applied intuition Interview Insights

Applied intuition·Software Engineer·Onsite - System Design / Architecture·Senior

Senior
Apr 2026

Summary

System design round at Applied Intuition focused entirely on building a distributed job scheduler from scratch. The scope was massive and they clearly wanted to see how you'd prioritize under pressure.

Questions Asked (5)

Q1

Design a scalable job scheduler that supports immediate and delayed execution, recurring jobs, priorities, retries with backoff, and job dependencies.

System DesignTechnical Trade-offsData Modeling
Author's notes

This question ate up the whole session.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and scale, then propose a high-level architecture using a distributed queue and worker pool. Dive into data modeling for jobs, scheduling mechanisms for delayed and recurring jobs, and handling priorities, retries, and dependencies. Discuss trade-offs and scalability considerations throughout.

Pro tip: Emphasize idempotency and exactly-once semantics for job execution, as this is critical in real-world schedulers. Also, discuss how to handle failures gracefully, such as using a dead-letter queue and monitoring.

1. Clarify Requirements and Scale

Ask questions to understand expected job volume, latency requirements, and consistency needs. This will guide your design decisions.

2. High-Level Architecture

Propose a distributed system with a scheduler service, a job queue (e.g., Kafka, RabbitMQ), and worker nodes. Mention using a database for job metadata and a distributed lock for coordination.

3. Data Modeling and Scheduling

Design a job schema including fields like id, type, payload, schedule time, recurrence rule, priority, retry policy, and dependencies. Explain how to store and query jobs efficiently.

4. Handling Execution Features

Describe how to implement immediate/delayed execution (using delay queues), recurring jobs (cron-like scheduler), priorities (priority queues), retries with backoff (exponential backoff with jitter), and dependencies (DAG execution).

5. Scalability and Reliability

Discuss partitioning, sharding, and replication for scalability. Cover failure handling, monitoring, and ensuring idempotency and exactly-once processing.

Key Points to Mention

  • Use of a distributed message queue (e.g., Kafka, RabbitMQ) for decoupling and scalability.
  • Data model for jobs: include status, priority, schedule time, recurrence, retry count, dependencies.
  • Scheduling mechanisms: delayed jobs via time-based queues, recurring jobs via cron expressions or periodic scans.
  • Priority handling: multiple queues with different priorities or a priority queue data structure.
  • Retry with backoff: exponential backoff with jitter, max retries, and dead-letter queue.
  • Job dependencies: DAG representation and topological sorting for execution order.

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

Q2

What are the tradeoffs between at-least-once and exactly-once execution semantics in a distributed job system, and how do you handle idempotency and deduplication?

System DesignTechnical Trade-offs
Author's notes

I leaned heavily on at-least-once with idempotency keys and a dedup table, which I think was the right call, but I oversimplified the dedup TTL question.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by defining both semantics and their core tradeoffs: at-least-once offers simplicity and availability at the cost of duplicates, while exactly-once provides stronger guarantees but requires coordination and often reduces throughput. Then explain how you achieve idempotency and deduplication in practice, emphasizing that exactly-once is typically implemented as at-least-once plus deduplication. Finally, tie your answer to real-world systems and the business impact of your choices.

Pro tip: Acknowledge that true exactly-once delivery is impossible in distributed systems without assumptions; instead, focus on exactly-once processing via idempotent operations and deduplication. This shows you understand the theoretical limits and practical workarounds.

1. Define the semantics

Clearly explain what at-least-once and exactly-once mean in terms of message delivery and processing guarantees. Mention that at-most-once also exists but is rarely used for critical jobs.

2. Compare tradeoffs

Discuss the tradeoffs in terms of complexity, performance, fault tolerance, and cost. At-least-once is simpler and more available but can cause duplicate side effects; exactly-once is more complex and can introduce latency and coordination overhead.

3. Explain idempotency

Describe how to make operations idempotent so that repeated execution has the same effect as a single execution. Give examples like using unique request IDs, upserts, or conditional writes.

4. Describe deduplication strategies

Outline techniques for deduplication, such as storing processed message IDs in a durable store, using a deduplication window, or leveraging exactly-once processing features in stream processors.

5. Tie to system design

Connect the concepts to a concrete system design, explaining when you would choose each semantic and how you would implement idempotency and deduplication in that context.

Key Points to Mention

  • At-least-once can lead to duplicate processing, requiring idempotent consumers or deduplication.
  • Exactly-once is often achieved via at-least-once delivery plus deduplication, not true end-to-end exactly-once.
  • Idempotency can be implemented using unique keys, versioning, or transactional writes.
  • Deduplication requires a persistent store of processed message IDs and a strategy to handle out-of-order or late messages.
  • Tradeoffs include latency, throughput, complexity, and cost; exactly-once typically has higher overhead.
  • Real-world systems like Kafka, Flink, and Spark provide exactly-once semantics within their processing frameworks, but end-to-end exactly-once requires careful design.

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

Q3

How would you design multi-tenant isolation and horizontal scaling to handle high job throughput across tenants?

System DesignTechnical Trade-offs
Author's notes

Talked through per-tenant queue partitioning and rate limiting at the dispatcher layer.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements like tenant scale, job types, and isolation levels, then propose a layered architecture that separates control plane (tenant management, scheduling) from data plane (job execution, storage). Discuss trade-offs between isolation models (silo, pool, bridge) and scaling strategies (sharding, partitioning, autoscaling) to balance performance, cost, and compliance.

Pro tip: Emphasize that isolation is not binary; propose a hybrid model where noisy-neighbor risk is mitigated via per-tenant queues and resource quotas, while still sharing infrastructure for cost efficiency. Also, mention that horizontal scaling must consider stateful components like job queues and databases, not just stateless workers.

1. Clarify Requirements and Constraints

Ask about tenant count, job volume, latency SLAs, data residency, and compliance needs to determine isolation and scaling priorities.

2. Choose an Isolation Model

Evaluate silo (dedicated resources per tenant), pool (shared resources with logical separation), and bridge (hybrid) models, and justify a choice based on trade-offs.

3. Design the Architecture

Propose a multi-tenant job processing system with a control plane for tenant management and a data plane with partitioned queues, workers, and storage.

4. Plan Horizontal Scaling

Describe how to scale each component: shard queues by tenant, autoscale workers based on queue depth, and scale databases via partitioning or read replicas.

5. Address Trade-offs and Failure Modes

Discuss trade-offs like cost vs. isolation, and failure scenarios such as noisy neighbors, hot shards, and cross-tenant data leaks, with mitigation strategies.

Key Points to Mention

  • Tenant isolation models: silo, pool, bridge, and their trade-offs (cost, complexity, compliance).
  • Partitioning strategies: sharding by tenant ID, consistent hashing, and avoiding hot partitions.
  • Resource quotas and rate limiting per tenant to prevent noisy-neighbor effects.
  • Autoscaling mechanisms for workers and queues based on metrics like queue depth and latency.
  • Data isolation and security: encryption, access controls, and tenant-aware storage schemas.
  • Observability: per-tenant metrics, tracing, and logging for debugging and capacity planning.

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

Q4

What strategies would you use for multi-region deployment of a job scheduler, considering persistence and durability?

System DesignTechnical Trade-offs
Author's notes

Blanked for a second here.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements such as scale, consistency needs, and failure tolerance. Then propose a multi-region architecture that ensures high availability and durability, discussing trade-offs between consistency and latency. Conclude with a specific strategy for persistence and failover.

Pro tip: Emphasize that the scheduler's state must be durable and consistent; consider using a distributed consensus protocol like Raft for leader election and state replication. Also, mention the importance of idempotent job execution to handle retries safely.

1. Clarify Requirements

Ask about expected scale, job types, consistency requirements, and recovery point objective (RPO) / recovery time objective (RTO).

2. Choose a Multi-Region Architecture

Decide between active-active or active-passive, and select a data replication strategy (synchronous vs asynchronous) based on consistency needs.

3. Design for Persistence and Durability

Use a distributed, replicated datastore (e.g., etcd, Cassandra) for job metadata and state, ensuring data is durably stored across regions.

4. Implement Failover and Recovery

Define leader election and failover mechanisms, and ensure jobs are idempotent and can be retried without side effects.

5. Discuss Trade-offs

Acknowledge trade-offs between consistency, availability, and latency (CAP theorem), and explain how your design addresses them.

Key Points to Mention

  • CAP theorem and consistency vs availability trade-offs
  • Distributed consensus (e.g., Raft, Paxos) for leader election and state replication
  • Data replication strategies: synchronous vs asynchronous, and their impact on durability and latency
  • Idempotent job execution and exactly-once semantics
  • Disaster recovery: backup and restore, cross-region replication
  • Monitoring and alerting for regional failures and job execution

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

Q5

How would you approach monitoring, alerting, and failure handling for a job scheduler at scale?

System DesignRoot Cause Analysis
Author's notes

Easier than the rest.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the scale and requirements, then outline a layered monitoring strategy covering infrastructure, scheduler internals, and job-level metrics. Describe alerting with tiered severity and failure handling with retries, dead-letter queues, and idempotency. Emphasize observability, automation, and continuous improvement.

Pro tip: Highlight the importance of monitoring the scheduler's own health (e.g., leader election, queue depth) and not just job outcomes, as scheduler failures can cascade. Also, mention that alerting should be actionable and include runbooks to reduce mean time to recovery (MTTR).

1. Clarify Requirements and Scale

Ask questions to understand the scale (jobs per second, number of workers), criticality, and existing infrastructure. This ensures your answer is tailored and demonstrates thoughtfulness.

2. Define Monitoring Strategy

Outline what to monitor: infrastructure (CPU, memory), scheduler health (queue depth, leader election), and job metrics (success rate, latency, retries). Use tools like Prometheus for metrics and ELK for logs.

3. Design Alerting

Set up tiered alerts (e.g., warning, critical) based on thresholds and anomalies. Ensure alerts are actionable, routed to the right teams, and include context via runbooks.

4. Implement Failure Handling

Describe retry policies with exponential backoff, dead-letter queues for poison messages, idempotent job design, and circuit breakers to prevent cascading failures.

5. Iterate and Improve

Emphasize post-mortems, chaos engineering, and using monitoring data to refine thresholds and failure handling. Highlight automation for self-healing where possible.

Key Points to Mention

  • Use of metrics, logs, and traces for observability (e.g., Prometheus, Grafana, Jaeger).
  • Monitoring scheduler-specific metrics like queue depth, job latency, and worker health.
  • Alerting best practices: avoid alert fatigue, use dynamic thresholds, and include runbooks.
  • Failure handling: retries with backoff, dead-letter queues, idempotency, and circuit breakers.
  • Scalability considerations: distributed tracing, sharding, and leader election for high availability.
  • Continuous improvement: post-mortems, chaos testing, and automation for self-healing.

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