Practice
1. In a bulkhead-isolated microservice architecture, at step 4 in the request trace, the Bulkhead Manager checks the thread pool status before dispatching a request. What happens if the thread pool is fully occupied?
easy
Solution
Step 1: Trace Bulkhead Manager behavior at Step 4
When the thread pool is full, queuing indefinitely (A) risks resource exhaustion. Dynamic resizing (D) breaks isolation guarantees. Forwarding to fallback (C) is a separate mechanism.Step 2: Understand bulkhead failure containment
Rejecting requests immediately (B) prevents overload and contains failure blast radius.Final Answer:
Option D -> Option DQuick Check:
Bulkhead rejects requests when resource limits reached [check]
Hint: Reject requests when bulkhead resources are exhausted [check]
Common Mistakes:
2. In a Cache Aside pattern, at step 3 the application checks the cache and finds a miss. What happens next at step 4?
easy
Solution
Step 1: Understand Cache Aside flow
On cache miss, application queries DB and updates cache explicitly.Step 2: Eliminate other options
Cache Aside does not auto-load cache (A); it does not return null or stale data (C, D).Final Answer:
Option A -> Option AQuick Check:
Application loads DB and updates cache on miss [check]
Hint: Cache Aside: app loads DB and updates cache on miss [check]
Common Mistakes:
3. In the payment system's request flow, at Step 5 the Settlement Service receives a batch of transactions marked as 'authorized'. What does the Settlement Service do when it encounters a transaction flagged as 'already settled' during this step?
easy
Solution
Step 1: Trace Settlement Service behavior at Step 5
The Settlement Service must avoid double settlement by skipping transactions already marked as settled.Step 2: Evaluate other options
Retrying settlement risks duplicate charges; marking as failed triggers unnecessary manual work; forwarding back to Authorization Service is redundant.Final Answer:
Option C -> Option CQuick Check:
Settlement skips duplicates -> prevents double charges [check]
Hint: Settlement skips already settled transactions [check]
Common Mistakes:
4. Without the Kafka message queue in the architecture, what exactly breaks during message delivery from Alice to Bob?
medium
Solution
Step 1: Understand Kafka's role in decoupling sender and receiver
Kafka buffers messages asynchronously, preventing sender blocking and enabling retries.Step 2: Trace failure without Kafka
Without Kafka, Alice's server must synchronously wait for Bob's server response; if Bob's server crashes, no retry occurs and message is lost. Encryption (A) and duplication (C) are unrelated; ordering (D) is guaranteed by Kafka partitions.Final Answer:
Option A -> Option AQuick Check:
Without Kafka, synchronous send blocks and message loss on Bob's crash [check]
Hint: Kafka decouples sender/receiver; without it, sender blocks and loses messages [check]
Common Mistakes:
5. At 10x scale, which component in a consistent hashing distributed cache system is most likely to fail first, and why?
hard
Solution
Step 1: Identify scaling bottlenecks
Cache nodes scale horizontally; memory limits can be increased. Client hashing logic is local and scales well. Network switches scale with infrastructure upgrades.Step 2: Consistent hashing ring metadata bottleneck
The ring metadata service must update and distribute node membership changes; at 10x scale, frequent updates cause high coordination overhead and latency, becoming the first failure point.Final Answer:
Option A -> Option AQuick Check:
Metadata service update overhead limits scaling first [check]
Hint: Metadata service update overhead limits scaling first [check]
Common Mistakes:
