Limited-time offer: 80% off every plan

See plans

File Storage Service System Design Interview: Narrate It

A narrated walkthrough of the file storage service system design interview: the exact sentences to say as you scope, sketch, choose a layout and defend trade-offs.

By Emily Miller11 min read

The file storage service system design interview rewards narration, not a perfect diagram. The interviewer is scoring three things: whether you scope requirements before drawing, whether your architecture hangs together, and whether you can defend each choice out loud. So treat the next 35 minutes as a spoken reasoning exercise. Say what you are assuming, say why each box exists, and name the trade-off you accepted. The walkthrough below gives you the sentences to say at every stage.

What does the interviewer actually want when they say "design a file storage service"?

They want to hear how you think under incomplete information. A tidy diagram with no reasoning scores lower than a rough sketch you can justify.

Open with a 30-second script that buys you structure:

"I'll restate the problem, ask a few clarifying questions, then spend the next half hour on requirements, a high-level architecture, a deep dive on storage and metadata, and the trade-offs. Stop me if you want to go deeper anywhere."

Compare a weak opening with a stronger one. Weak: "I'll put the files in S3 and the metadata in Postgres." Strong: "Before I draw anything, I want to separate two problems: storing the bytes and storing the information about them. They scale differently, so I'd expect different systems for each."

The second version tells the interviewer you have a mental model, and it earns you the right to ask questions before committing.

Which requirements should you pin down before drawing a box?

Confirm these out loud, one sentence each, and write the answers where you can see them:

  • File size ceiling — "What's the largest single file: a 1 MB document or a 5 GB video?"
  • Upload and download patterns — "Is this mostly uploads from many users, or heavy read traffic on shared files?"
  • Sharing and permissions — "Can users share files and folders with other users, and do permissions change often?"
  • Sync across devices — "Do we need to keep multiple devices in step, or is each file read on one device?"
  • Versioning — "Do we keep history, and how far back?"
  • Durability and consistency — "How bad is it if a file is briefly invisible after upload?"

Then make the numbers work for you. Pick illustrative figures out loud — a large user base, a much larger file count, a small average file size, and a meaningful share of files shared — and say why each one changes the design. A large user base means the API and metadata layer must scale horizontally from day one. A file count far above the user count is a huge volume of bytes, so the blob store is the cheap, horizontal part. A small average file size tells you the common case is a single small blob, so chunking is the exception, not the default. And a meaningful share of shared files is what makes permissions and caching a real design problem rather than an afterthought.

Finish scoping by stating non-goals: "I'll treat real-time collaborative editing as out of scope unless you want me to come back to it." Naming what you are not solving shows control and protects your time.

What does the high-level file storage service architecture look like?

Draw four layers and narrate each as you go:

  1. Client — the app or web client that uploads, downloads and syncs.
  2. API and gateway — authentication, rate limiting, request routing.
  3. Metadata service — file records, owners, paths, permissions, versions.
  4. Blob store — the bytes themselves, plus a queue for asynchronous work such as scanning and thumbnail generation.

Explain why metadata and bytes live apart: different access patterns, different size profiles, different scaling limits. Metadata is small rows read and written constantly; blobs are large objects written once and read whole. Mixing them in one database means one workload drags the other down.

Say where auth, rate limiting and deduplication sit, and say what you would defer. "I'd put auth in the gateway as a shared check. If I run short on time, I'd defer deduplication and keep it as a follow-up." The API design system design interview walkthrough is a useful companion for narrating that gateway contract.

How do you split metadata from blobs and choose a storage layout?

Walk through a metadata schema: file ID, owner, path, current version, content hash, chunk list, permissions. Keep it on one line of the whiteboard and say what each field is for.

Then compare single-blob storage with chunked storage using a concrete case. A 2 GB video upload that must resume after a dropped connection is the argument for chunking: you re-send only the missing chunk. Single-blob upload means starting over.

Say the trade-off sentence out loud:

"Chunking costs more metadata writes but buys resumability and parallel upload. For a 1 MB average file I'd only chunk above a threshold, say files over 10 MB, so the common case stays simple."

That sentence does three jobs: it names the cost, names the benefit, and shows you can apply a rule rather than a preference. If you want to go deeper on picking consistency levels for that metadata, the consistency models system design interview piece drills the same reasoning.

How do uploads, downloads and sync actually flow end to end?

For uploads, narrate the steps:

  1. Client asks the metadata service for a pre-signed upload URL.
  2. Client uploads chunks directly to the blob store.
  3. Client confirms completion to the metadata service, which records the chunk manifest.
  4. Metadata service enqueues post-processing: virus scan, thumbnails, indexing.

For downloads, put a CDN in front of the blob store and defend the cache-control choice: "I'd set a long cache lifetime on immutable versioned URLs because the content behind a given version never changes." The CDNs system design interview article covers that edge reasoning in more depth.

For sync, describe a change log per user, a cursor-based delta fetch so a device asks "what changed since my last cursor?", and conflict handling when two devices edit the same file. Say the rule: last write wins for simple files, and a conflict copy for anything the user would hate to lose.

Which system design trade-offs will the interviewer push on?

Start with the one they push hardest: strong versus eventual consistency for metadata. Here is a weak-then-stronger rewrite. Weak: "I'd use eventual consistency." Stronger:

"I'd make metadata reads eventually consistent within a few seconds because the usual reader is the user's own device just after upload. I'd keep permission checks strongly consistent, because a stale permission check is a security problem, not a refresh problem."

The stronger version names the delay, names the reader, and splits the decision by risk. In most system design interviews, that split is what the interviewer is listening for. Have the other three ready the same way: chunk size, deduplication versus privacy, and synchronous versus asynchronous virus scanning.

When you need a moment, buy it honestly. Keep a few lines ready: "Let me weigh that against the durability requirement." "Let me check that against the sharing requirement." "I want to separate the read path from the write path here." Each one signals you are reasoning, not stalling.

What are the most common mistakes in this interview?

Three mistakes show up often, and each has a correction you can say mid-interview.

  • Drawing before scoping. Correction: "Let me step back and confirm the requirements before I add more boxes."
  • Treating the blob store as a black box with no failure story. Correction: "I've been assuming the blob store is reliable; let me say what happens when an upload fails partway."
  • Never mentioning permissions or sharing. Correction: "I haven't covered sharing yet, and it changes the metadata design, so let me add it now."

If you notice you have drifted, say "I'd like to step back and re-check my assumptions" and do it. Interviewers usually respect the recovery more than the original slip. Keeping your sentences short helps here; the stop rambling interview plan is built for exactly this.

How should you handle follow-ups about sharing, versions and large files?

For "how do you share a folder with another user?", model permissions as a separate service with an ACL table and a cache in front of it, and say why: permission checks happen on every request, so they need to be fast and independently scalable.

For "how do you store versions without copying every byte?", use content-addressed chunks plus a version pointer. Unchanged chunks are shared; only the pointer moves.

For "what happens when a large upload fails near the end?", point to the resumable chunk manifest and an idempotent confirmation step, so a retried confirmation does not create a duplicate file. The respond to follow-up questions guide shows how to extend an answer rather than restart it.

How do you practise this walkthrough out loud before the interview?

Run a 35-minute routine with a timer: 5 minutes scoping, 10 minutes architecture, 10 minutes deep dive, 5 minutes trade-offs, 5 minutes follow-ups. Speak the whole time. The habit you are building is narrating reasoning, not reciting a script.

Record yourself and review against three checks:

  • Did you state your assumptions before drawing?
  • Did you name a trade-off for each major decision?
  • Did you finish a sentence before starting the next?

Practise with a timer and a written outline only. If you have never built a file storage system at work, say so plainly and reason from first principles; that is honest and it is what the exercise tests.

Before you walk in

The file storage service system design interview rewards the sentences between the boxes, not the boxes themselves. Every box you draw should come with a sentence that justifies it, and every trade-off should name both the cost and the benefit. Your next step is to set a 35-minute timer, pick the four-layer architecture, and say the whole walkthrough out loud once. Then do it again and cut a third of the words.

Frequently asked questions

Should I mention deduplication in a file storage service system design interview, and how do I justify it?

Mention it briefly and justify it with the trade-off. Deduplication saves storage by storing identical content once, keyed by a content hash, but it can leak information about whether a file already exists. Say you would apply it at the chunk level and treat privacy-sensitive cases as a reason to skip it.

How much detail on the blob store internals does the interviewer expect?

Usually less than candidates fear. Describe it as an object store with durability and availability guarantees, then spend your time on the parts you control: pre-signed URLs, chunk manifests, retries and failure handling. Say you are treating the internals as a managed service and move on.

What if the interviewer changes the requirements halfway through?

Adapt in place rather than restarting. Restate the new requirement, say which layer it touches, and adjust that layer out loud. For example, if files become much larger on average, say that it moves you from single-blob to chunked storage and explain what changes in the metadata schema.

Is it better to draw the diagram first or talk through requirements first?

If you have already started drawing, do not erase the board. Pause, say "before I go further, let me confirm the file sizes and sharing model", and ask your questions against the sketch you have. You keep your momentum and still catch a wrong assumption before it spreads through the design.

How do I answer if I've never built a file storage system at work?

Use a one-line admission and then a first-principles hook. Try: "I haven't run one of these in production, so I'll reason it from the access patterns." Then go straight to why bytes and metadata separate. The hook matters more than the disclaimer, because it shows you can build the model from scratch.

Practise the walkthrough out loud with a timer.