Diagnose I/O, Memory, and CPU Constraints
Company: Hudson
Role: Software Engineer
Category: Software Engineering Fundamentals
Difficulty: medium
Interview Round: Technical Screen
# Diagnose I/O, Memory, and CPU Constraints
Describe situations in which I/O, memory, and CPU were each the limiting resource. For each case, explain how you measured the bottleneck, which change you made, and how you established that performance improved without breaking correctness.
### Constraints & Assumptions
- Keep employers, systems, and customers anonymous where necessary.
- Do not infer a bottleneck from utilization alone; relate measurements to queueing, latency, throughput, and workload.
- Include at least one rejected hypothesis or trade-off.
### Clarifying Questions to Ask
- Is the interviewer asking for three separate examples or one system that moved between constraints?
- Which service-level or batch-completion target mattered?
```hint Describe the evidence chain
The strongest story connects a symptom to measurements, a falsifiable hypothesis, a bounded change, and a before/after result.
```
### What a Strong Answer Covers
- Correct signals for I/O wait, memory pressure, and CPU saturation.
- A concrete evidence chain, intervention, and measured outcome for each of the three limiting resources.
- Workload-aware profiling rather than premature optimization.
- A targeted mitigation with costs and capacity limits.
- Validation, regression safety, and monitoring after the change.
### Follow-up Questions
- How can adding concurrency make each of these constraints worse?
- What would you measure before deciding to scale horizontally?
Overview: Describe concrete I/O-, memory-, and CPU-bound situations, including the measurements, changes, correctness checks, and outcomes for each bottleneck.