Bird
Raised Fist0
LLDsystem_design~20 mins

Domain-Driven Design basics in LLD - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
Domain-Driven Design Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Understanding Bounded Context

In Domain-Driven Design, what best describes a Bounded Context?

AA clearly defined boundary within which a particular domain model applies and has consistent meaning.
BA database schema shared by all parts of the system to ensure data consistency.
CA user interface component that handles all user interactions for the domain.
DA network boundary that separates microservices physically.
Attempts:
2 left
💡 Hint

Think about where a domain model's rules and language stay consistent.

Architecture
intermediate
2:00remaining
Identifying Aggregates

Which of the following best represents an Aggregate in Domain-Driven Design?

AA UI form that collects user input for multiple entities.
BA database table that stores all entities of a domain.
CA cluster of domain objects treated as a single unit for data changes, with one root entity controlling access.
DA microservice that handles all domain logic.
Attempts:
2 left
💡 Hint

Think about grouping domain objects to maintain consistency.

scaling
advanced
2:30remaining
Scaling with Bounded Contexts

When scaling a large system using Domain-Driven Design, what is the best practice regarding Bounded Contexts?

ASplit the system into multiple Bounded Contexts that can be developed and deployed independently.
BCombine all domain models into one large Bounded Context to reduce communication overhead.
CUse Bounded Contexts only for UI components, not for backend services.
DIgnore Bounded Contexts and focus on database normalization for scaling.
Attempts:
2 left
💡 Hint

Think about how to reduce complexity and allow teams to work independently.

tradeoff
advanced
2:30remaining
Tradeoffs in Using Entities vs Value Objects

In Domain-Driven Design, what is a key tradeoff when choosing between Entities and Value Objects?

AEntities are used only in UI layers; Value Objects only in database layers.
BEntities have identity and lifecycle but add complexity; Value Objects are simpler but immutable and lack identity.
CEntities cannot be persisted; Value Objects must be stored in separate tables.
DEntities are always immutable; Value Objects always have a unique ID.
Attempts:
2 left
💡 Hint

Consider identity and mutability differences.

estimation
expert
3:00remaining
Estimating Capacity for Event-Driven Domain Model

You design a system using Domain-Driven Design with multiple Bounded Contexts communicating via events. If each context emits 1000 events per second and there are 5 contexts, what is the minimum event processing capacity your event bus must support to avoid bottlenecks?

AAt least 10000 events per second
BAt least 1000 events per second
CAt least 2000 events per second
DAt least 5000 events per second
Attempts:
2 left
💡 Hint

Multiply events per context by number of contexts.

Practice

(1/5)
1. What is the main purpose of Domain-Driven Design (DDD)?
easy
A. To model software closely around real business concepts
B. To optimize database queries for performance
C. To create user interfaces quickly
D. To write code without any documentation

Solution

  1. Step 1: Understand the goal of DDD

    DDD focuses on aligning software design with the core business domain and its logic.
  2. Step 2: Compare options with DDD purpose

    Only To model software closely around real business concepts describes modeling software around business concepts, which is the essence of DDD.
  3. Final Answer:

    To model software closely around real business concepts -> Option A
  4. Quick Check:

    DDD = model software on business concepts [OK]
Hint: DDD = software models business ideas clearly [OK]
Common Mistakes:
  • Confusing DDD with UI or database optimization
  • Thinking DDD is about coding speed only
  • Ignoring the business domain focus
2. Which of the following is the correct definition of an Entity in DDD?
easy
A. An object defined only by its attributes and no identity
B. A database table storing raw data
C. An object with a unique identity that persists over time
D. A service that performs calculations without state

Solution

  1. Step 1: Recall Entity characteristics in DDD

    Entities have a unique identity that remains constant even if attributes change.
  2. Step 2: Match definitions with Entity concept

    An object with a unique identity that persists over time correctly states that Entities have unique identity and persistence over time.
  3. Final Answer:

    An object with a unique identity that persists over time -> Option C
  4. Quick Check:

    Entity = unique identity object [OK]
Hint: Entity always has unique identity, not just attributes [OK]
Common Mistakes:
  • Confusing Entities with Value Objects
  • Thinking Entities have no identity
  • Mixing Entities with Services
3. Consider this simplified DDD code snippet in Python:
class Order:
    def __init__(self, order_id, items):
        self.order_id = order_id
        self.items = items

order1 = Order(1, ['apple', 'banana'])
order2 = Order(1, ['apple', 'banana'])

print(order1 == order2)

What will be the output?
medium
A. True
B. False
C. SyntaxError
D. None

Solution

  1. Step 1: Understand default equality in Python classes

    By default, Python compares object references, so two different instances with same data are not equal.
  2. Step 2: Analyze the code output

    order1 and order2 are different objects with same data, so order1 == order2 returns False.
  3. Final Answer:

    False -> Option B
  4. Quick Check:

    Default object equality compares references = False [OK]
Hint: Default == compares object identity, not data [OK]
Common Mistakes:
  • Assuming == compares data automatically
  • Expecting True because attributes match
  • Confusing syntax error with logic error
4. In a DDD model, a Value Object should be immutable. Which of the following code snippets violates this principle?
medium
A. class Money: def __init__(self, amount, currency): self.amount = amount self.currency = currency
B. class Money: def __init__(self, amount, currency): self._amount = amount self._currency = currency
C. class Money: def __init__(self, amount, currency): self._amount = amount self._currency = currency @property def amount(self): return self._amount
D. class Money: def __init__(self, amount, currency): self.amount = amount self.currency = currency def change_amount(self, new_amount): self.amount = new_amount

Solution

  1. Step 1: Recall immutability in Value Objects

    Value Objects should not allow changes after creation to keep consistency.
  2. Step 2: Identify mutable code

    class Money: def __init__(self, amount, currency): self.amount = amount self.currency = currency def change_amount(self, new_amount): self.amount = new_amount has a method that changes the amount, violating immutability.
  3. Final Answer:

    Code with method changing amount violates immutability -> Option D
  4. Quick Check:

    Value Object must be immutable = no setters [OK]
Hint: Value Objects cannot change state after creation [OK]
Common Mistakes:
  • Allowing setters or methods that modify attributes
  • Confusing immutability with read-only properties only
  • Ignoring methods that change internal state
5. You are designing a DDD model for an online store. Which of the following best represents an Aggregate?
hard
A. An Order object that contains multiple OrderItems and enforces business rules
B. A single Product object with price and description
C. A database table storing customer addresses
D. A utility service that calculates discounts

Solution

  1. Step 1: Understand Aggregate in DDD

    An Aggregate is a cluster of related objects treated as a single unit with a root entity controlling consistency.
  2. Step 2: Match options with Aggregate concept

    An Order object that contains multiple OrderItems and enforces business rules describes an Order with multiple OrderItems and business rules, fitting Aggregate definition.
  3. Final Answer:

    An Order object containing multiple OrderItems and enforcing business rules -> Option A
  4. Quick Check:

    Aggregate = root entity + related objects [OK]
Hint: Aggregate = root entity plus related objects as one unit [OK]
Common Mistakes:
  • Confusing single entities with aggregates
  • Thinking utility services are aggregates
  • Mixing database tables with domain aggregates