Skip to main content
Cloud Interviews beginner Lesson 1 of 10

What Cloud Interviews Test That Certifications Do Not

Cert prep drills service trivia; interviews ask you to size, cost, and defend a design. The five things being scored, and a costing script you can run.

A certification asks “which service provides managed message queuing?”. An interview asks “this queue is backing up at 40,000 messages a second and costing $9,000 a month — what do you do?”. Preparing for the first does not prepare you for the second.

What is actually being scored

1. SIZING          Can you turn "10,000 users" into requests per second,
                   gigabytes stored, and instances needed — with the arithmetic
                   visible?

2. COST            Do you know roughly what things cost, and which line item
                   dominates? Egress and idle compute are the two that surprise
                   people in production.

3. FAILURE         For each component: what happens when it dies, who notices,
                   and how long until it recovers?

4. TRADEOFFS       Did you name what you gave up? Every design choice costs
                   something — an answer with no downside stated is incomplete.

5. OPERABILITY     How is it deployed, monitored, and rolled back? A design that
                   cannot be operated is not a design.

Certification study covers none of these. It is not wasted — it gives you the vocabulary — but the round is a different exercise.

Set up the substrate

Two tools. The AWS CLI for real API output, and Python for the arithmetic that every answer in this track rests on.

aws --version
python --version
$ aws --version
aws-cli/2.31.6 Python/3.13.9 source/x86_64

$ python --version
Python 3.13.2

You do not need an AWS account for most of this track. Where an account would be needed, the output is shown so you can read it. For hands-on practice without a bill, LocalStack emulates the common services:

pip install localstack awscli-local
localstack start -d
awslocal s3 mb s3://interview-practice
awslocal s3 ls
$ awslocal s3 ls
2026-09-10 11:42:18 interview-practice

Sizing: the arithmetic they want to see

The question is never “how many servers”. It is a chain of estimates, and showing the chain is the answer.

# sizing.py
DAU = 10_000_000            # daily active users
ACTIONS_PER_USER = 20       # requests each, per day
PEAK_MULTIPLIER = 3         # peak is ~3x the daily average
SECONDS_PER_DAY = 86_400

daily_requests = DAU * ACTIONS_PER_USER
avg_rps = daily_requests / SECONDS_PER_DAY
peak_rps = avg_rps * PEAK_MULTIPLIER

RPS_PER_INSTANCE = 500      # measured, not guessed — see note below
instances_needed = peak_rps / RPS_PER_INSTANCE

print(f"daily requests   {daily_requests:>15,}")
print(f"average RPS      {avg_rps:>15,.0f}")
print(f"peak RPS         {peak_rps:>15,.0f}")
print(f"instances @ {RPS_PER_INSTANCE}/s  {instances_needed:>12,.0f}")
print(f"with N+2 spare   {instances_needed + 2:>15,.0f}")
$ python sizing.py
daily requests       200,000,000
average RPS                2,315
peak RPS                   6,944
instances @ 500/s             14
with N+2 spare                16

Four numbers, each derived from the one above it. The interviewer can challenge any step, and that is the point — an answer of “about fifteen instances” with no chain cannot be examined.

RPS_PER_INSTANCE is the one to flag. It is the number you do not know:

“500 requests per second per instance is a placeholder. In practice I’d load test one instance and measure it, because it depends entirely on what the request does — a cache read might be 5,000, a request that hits the database and renders a template might be 50. That single number moves the answer by two orders of magnitude, so I’d want it measured before committing.”

Cost: the arithmetic that decides designs

# cost.py
GB = 1
TB = 1024

# on-demand list prices, US East, as of publication — verify before quoting
PRICES = {
    "compute_hour":       0.0832,   # m7g.large, per hour
    "storage_gb_month":   0.023,    # standard object storage
    "egress_gb":          0.09,     # internet egress, first tier
    "cross_az_gb":        0.01,     # per direction
    "cross_region_gb":    0.02,
    "nat_gateway_hour":   0.045,
    "nat_gateway_gb":     0.045,
}

HOURS = 730                          # hours in an average month

def monthly(instances, storage_gb, egress_gb, cross_az_gb, nat=True):
    compute  = instances * PRICES["compute_hour"] * HOURS
    storage  = storage_gb * PRICES["storage_gb_month"]
    egress   = egress_gb * PRICES["egress_gb"]
    az       = cross_az_gb * PRICES["cross_az_gb"]
    natcost  = (PRICES["nat_gateway_hour"] * HOURS
                + egress_gb * PRICES["nat_gateway_gb"]) if nat else 0
    total    = compute + storage + egress + az + natcost
    return {"compute": compute, "storage": storage, "egress": egress,
            "cross_az": az, "nat": natcost, "TOTAL": total}

bill = monthly(instances=16, storage_gb=50 * TB, egress_gb=20 * TB, cross_az_gb=100 * TB)
for k, v in bill.items():
    print(f"{k:<10} ${v:>12,.2f}   {100*v/bill['TOTAL']:>5.1f}%")
$ python cost.py
compute    $      971.78    16.3%
storage    $    1,177.60    19.7%
egress     $    1,843.20    30.9%
cross_az   $    1,024.00    17.2%
nat        $      954.45    16.0%
TOTAL      $    5,971.03   100.0%

Read the percentages, not the total. Compute is 16% of this bill. Data movement — egress plus cross-AZ plus NAT — is 64%.

That inversion is the single most useful thing to internalise about cloud cost, and it is where cert prep leaves you blind — the exams test which service does what, not which line dominates.

Three consequences that turn into interview answers:

  • Egress is the tax on leaving. Serving 20 TB to the internet costs $1,843 — nearly twice the $972 fleet that served it. A CDN in front changes this line item by an order of magnitude.
  • NAT gateways charge per gigabyte processed on top of an hourly rate. Traffic to object storage through a NAT gateway is the classic accidental six-figure line; a VPC endpoint removes it.
  • Cross-AZ traffic is not free. It is small per gigabyte and large at volume, and it is the hidden cost of a chatty microservice mesh spread across zones.

Estimating without a price list

You will not have the calculator open. These anchors are enough:

Small VM (2 vCPU, 8 GB)         ~$60/month on demand, ~$25 reserved
Object storage                  ~$0.02 per GB-month  → 1 TB ≈ $20/month
Internet egress                 ~$0.09 per GB        → 1 TB ≈ $90
Cross-region transfer           ~$0.02 per GB        → 1 TB ≈ $20
Managed relational DB           roughly 2x the equivalent raw VM
Serverless function             ~$0.20 per million invocations + memory-time
Managed Kubernetes control plane ~$70/month per cluster

“Roughly two cents a gigabyte-month to store and nine cents a gigabyte to serve out. So a terabyte sitting still is about twenty dollars a month, and a terabyte leaving is about ninety dollars once. That ratio is why caching and CDNs pay for themselves — I’d check the calculator before committing to a number, but that’s the shape.”

Being within 2x and saying you would verify is a correct answer. “I don’t know” is not.

The failure question

For every component in your design, three answers:

COMPONENT       WHEN IT DIES              WHO NOTICES        RECOVERY
load balancer   managed, multi-AZ         nobody             automatic
app instance    ASG replaces it           nobody             ~2 min
whole AZ        capacity drops by 1/3     latency alarm      ASG scales in others
database primary  writes fail             error rate alarm   failover, 30-120s
whole region    total outage              everyone           depends on your DR plan
cache           latency spikes, DB load   DB CPU alarm       warms back over minutes

The row people forget is the cache. “The cache goes down” is not a small event — it is a thundering herd against a database sized on the assumption that the cache absorbs 95% of reads. Naming that unprompted is a strong signal.

The clarifying questions worth asking

"How many users, and what's the read/write ratio?"      → sizing
"What's the acceptable downtime — minutes, or hours?"   → single vs multi-region
"How much data loss is tolerable on failover?"          → RPO, sync vs async replication
"Is this greenfield, or migrating something running?"   → completely different answers
"Is there a budget constraint I should design against?" → the FinOps framing
"Which cloud, and is multi-cloud a requirement?"        → managed vs portable services
"Is there a compliance or data residency constraint?"   → region choice, encryption

Two of these before you draw anything. The most common way to fail an architecture round is to design a correct system for a problem nobody asked about.

How the round runs

1. CLARIFY      Two or three questions. Scale, availability target, constraints.
2. SIZE         Do the arithmetic out loud. Requests, storage, instances.
3. SKETCH       Boxes and arrows. Name the services, and where state lives.
4. FAIL IT      Walk each component and say what happens when it dies.
5. COST IT      Rough monthly number, and which line item dominates.
6. TRADE OFF    "This is more expensive than X because Y. Here's when I'd
                choose X instead."

Steps 4, 5, and 6 are what most candidates skip and what most interviewers are actually scoring.

Practice

1. Turn 10M daily users into instances, showing every step.
200M requests/day → 2,315 avg RPS → 6,944 peak RPS → 14 instances → 16 with spares

Each number derives from the one above. Flag RPS_PER_INSTANCE as the one you’d measure — it moves the answer by two orders of magnitude.

2. Break a monthly bill into line items and read the percentages.
compute 16.3%    storage 19.7%    egress 30.9%    cross-AZ 17.2%    NAT 16.0%

Data movement is 64% of that bill and compute is 16%. Cost intuition built on instance pricing alone is wrong in the direction that matters.

3. Estimate the cost of 1 TB stored versus 1 TB served.
stored: ~$20/month      served out: ~$90 once

Roughly 2 cents per GB-month, 9 cents per GB egress. That ratio is the whole argument for caching and CDNs.

4. List what breaks when the cache goes down.
Thundering herd against a database sized assuming 95% cache hit rate.

The row most candidates skip. Naming it unprompted is a strong signal.

Next: compute choices — VM, container, or serverless, with the break-even calculation that decides between them.

Frequently Asked Questions

Does having a cloud certification help in interviews?
It gets you past a resume screen and gives you vocabulary. It does not prepare you for the round itself, because certs test recall of service capabilities while interviews test sizing, cost reasoning, and failure analysis — questions with no single correct answer that a multiple-choice format cannot ask.
Do I need to memorise instance types and prices?
No. You need order-of-magnitude anchors — that a small VM is tens of dollars a month, cross-region egress is around two cents a gigabyte, and object storage is around two cents a gigabyte-month. Being within 2x and saying you would check the calculator is a correct answer; being unable to estimate at all is not.
Which cloud should I prepare for?
The one in the job description. The concepts transfer almost entirely — every provider has object storage, managed queues, autoscaling groups, and IAM — so learn one deeply and name the equivalents. Saying "S3, or Cloud Storage on GCP, or Blob Storage on Azure" reads as fluency, not hedging.
How much detail should an architecture answer have?
Enough that someone could start building. Name the services, the data flow, where state lives, what happens when each component fails, and roughly what it costs at the stated scale. A diagram with no numbers and no failure story is the most common form of a weak answer.