← Headway Interview Insights

Headway·Software Engineer·Onsite - System Design / Architecture·Senior

Senior
Apr 2026

Summary

System design round at Headway for a software engineering role. The whole thing was basically one big capacity estimation problem, which I wasn't fully prepared for in terms of how rigorous they wanted the math to be.

Questions Asked (1)

Q1

Given a number of users and how active each one is, estimate the server capacity needed: CPU, memory, disk IOPS, and network bandwidth. Walk through the full calculation from scratch.

System DesignTechnical Trade-offs
Author's notes

I started with DAU and per-user request rate to get QPS, which felt fine, but then they wanted me to explicitly cost out CPU and memory per request and I fumbled around for a bit.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying assumptions about user activity patterns and system architecture, then break down the workload into per-user resource consumption for each component. Use a bottom-up calculation with peak-to-average ratios and add redundancy for high availability.

Pro tip: Always state your assumptions explicitly and show how you'd validate them with real metrics (e.g., load testing or monitoring). This demonstrates practical experience and avoids over-engineering.

1. Clarify Requirements and Assumptions

Ask about user activity distribution, peak concurrency, data retention, and SLAs. Assume typical values if not provided, such as 10% daily active users and 5x peak-to-average ratio.

2. Model Per-User Resource Consumption

Estimate CPU, memory, disk IOPS, and network bandwidth per active user based on the application's operations (e.g., API calls, database queries). Use benchmarks or analogous systems.

3. Calculate Aggregate Demand

Multiply per-user consumption by the number of concurrent users (peak) to get total resource requirements. Include overhead for OS, middleware, and replication.

4. Add Redundancy and Future Growth

Apply a safety factor (e.g., 2x) for redundancy, failover, and expected growth. Consider horizontal scaling and sharding strategies.

5. Validate and Iterate

Propose a validation plan using load testing, monitoring, and capacity planning tools. Highlight that estimates should be refined with real data.

Key Points to Mention

  • Peak vs. average load and concurrency modeling
  • Resource consumption per user for CPU, memory, disk IOPS, and network
  • Overhead from replication, caching, and background processes
  • Safety factors for redundancy and future growth
  • Validation through load testing and monitoring
  • Cost implications and trade-offs between performance and cost

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.