Design and Architecture
What this domain tests
Design questions ask you to choose among structures and justify the choice against quality attributes. Architecture is about boundaries, interfaces, and the trade-offs those create.
Concepts to master
Understand separation of concerns, modularity, abstraction, information hiding, and encapsulation. Be able to compare layered, event-driven, pipe-and-filter, microservice, and monolithic styles, and say which quality attribute each favours. Know coupling and cohesion as the core heuristic: low coupling, high cohesion. Understand design patterns by intent - creational, structural, behavioural - rather than by memorised class diagrams. Grasp single points of failure, statelessness, idempotency, and interface contracts. Recognise that quality attributes conflict: security versus usability, performance versus maintainability, availability versus consistency.
Traps in questions
Distractors often propose a pattern that solves the wrong problem - caching to fix a correctness bug, or a queue to fix a latency problem it would worsen. Another trap is the unqualified "best architecture": there is none; the answer depends on the stated drivers. Also watch for confusing a pattern's name with its consequence.
Worked rule of thumb
Before answering, name the dominant quality attribute in the stem (availability, modifiability, performance, security). Then eliminate any option that damages it, even if the option is otherwise elegant. Architecture answers are always for a context.
Interfaces and failure
Design every interface assuming the other side fails: define timeouts, retries with backoff, and idempotent operations so retries are safe. Document the contract - inputs, outputs, errors, and guarantees - because most integration defects are contract misunderstandings, not code bugs.