Design document-tag classes with concurrency safety
Quick Overview
Design document-tag classes with concurrency safety evaluates requirements, scale assumptions, API/data design, architecture, trade-offs, failure modes, and rollout in a realistic interview setting. A strong answer states assumptions, handles edge cases, explains trade-offs, and shows how to validate the result clearly.
Design document-tag classes with concurrency safety
Company: Amazon
Role: Software Engineer
Category: System Design
Difficulty: hard
Interview Round: Onsite
Design classes to manage documents and tags. Support operations: create/delete document; create/delete tag; add/remove a tag on a document; list all documents for a given tag; list all tags for a given document; and query documents by the intersection of multiple tags. Specify class interfaces, core data structures and indices, handling of duplicates/normalization (e.g., case sensitivity), and complexity of key operations. Then extend the design to be thread-safe under concurrent reads/writes: discuss concurrency control (locking granularity, immutable data, copy-on-write, or concurrent maps), consistency guarantees, deadlock avoidance, and approaches to testing concurrency correctness.
Quick Answer: Design document-tag classes with concurrency safety evaluates requirements, scale assumptions, API/data design, architecture, trade-offs, failure modes, and rollout in a realistic interview setting. A strong answer states assumptions, handles edge cases, explains trade-offs, and shows how to validate the result clearly.
Design document-tag classes with concurrency safety
Amazon
Jul 31, 2025, 12:00 AM
hardSoftware EngineerOnsiteSystem Design
4
0
Design document-tag classes with concurrency safety
System Design: In‑Memory Document–Tag Manager (Single Node)
Context
You are designing an in-memory component that manages documents and tags. The component should expose a clear class interface, maintain efficient indices, and provide well-defined behavior regarding duplicates and normalization (e.g., case sensitivity). Later, extend the design to support safe concurrent reads and writes.
Assume documents and tags are small (e.g., IDs/strings and lightweight metadata), and the system runs on a single node process. Persistence, sharding, and distributed coordination are out of scope.
Requirements
Core operations
Create/Delete document
Create/Delete tag
Add/Remove a tag on a document
List all documents for a given tag
List all tags for a given document
Query documents by intersection of multiple tags (logical AND)
Deliverables
Class interfaces (public API) and core internal data structures/indices
Duplicate handling and normalization policy (e.g., case sensitivity for tags)