Practice this topic in a realistic system design interview
Distributed systems fail in pieces.
One service times out while the rest of the request is still running. One replica falls behind while another keeps serving reads. One region loses a dependency while another stays healthy. A deployment breaks only the new version. A retry succeeds twice.
Good distributed systems are not systems that never fail. They are systems that limit the damage, preserve the invariants that matter, recover predictably, and give operators enough visibility to understand what happened.
The hard part is not memorizing patterns; it is knowing which failure you are handling, which invariant must be protected, and what trade-off you are making.