Design a basic task management system

Quick Overview

This question evaluates a candidate's ability to design a simple task management service, covering competencies in data modeling, API and class design, storage selection, concurrency and consistency control, ID generation strategies, performance considerations (indexing, pagination), and testing approaches.

Design a basic task management system

Company: Amazon

Role: Software Engineer

Category: System Design

Difficulty: medium

Interview Round: Technical Screen

Design a simple task management system that supports: ( 1) Add a new task with a unique ID and description, ( 2) Mark a task as completed by ID, ( 3) Get all incomplete tasks, ( 4) Get all completed tasks, and ( 5) Get a task by ID. Specify the data model and core APIs/classes, choose in-memory vs. persistent storage, and describe how you'd ensure thread safety and consistency. Discuss ID generation strategies (auto-increment, UUID, or timestamp plus attributes hash) and their trade-offs (ordering, collisions, sharding). Outline performance considerations and a brief testing strategy.

Overview: This question evaluates a candidate's ability to design a simple task management service, covering competencies in data modeling, API and class design, storage selection, concurrency and consistency control, ID generation strategies, performance considerations (indexing, pagination), and testing approaches.

|Home/System Design/Amazon
Amazon logo
Amazon
Sep 6, 2025
mediumSoftware EngineerTechnical ScreenSystem Design
9
0

Design a Simple Task Management Service

Requirements

Design a simple task management system that supports:

  1. Add a new task with a unique ID and description.
  2. Mark a task as completed by ID.
  3. Get all incomplete tasks.
  4. Get all completed tasks.
  5. Get a task by ID.

What to Deliver

  • Data model (entities, fields, and indexes).
  • Core APIs/classes (language-agnostic or your preferred language).
  • Choose in-memory vs. persistent storage and justify.
  • How you ensure thread safety and consistency.
  • ID generation strategies (auto-increment, UUID, timestamp-based/Snowflake-like): trade-offs for ordering, collisions, and sharding.
  • Performance considerations (time/space complexity, pagination, indexing).
  • Brief testing strategy (functional, concurrency, and performance).

Assume this is a single service used by multiple threads/clients. You may make minimal assumptions explicit to keep the design coherent.

Submit Your Answer to Earn 20XP

Sign in to leave a comment

Loading comments...