A product team is about to ship a feature that lets users export their entire account as a large file. How would you design the upload-and-download path so a multi-gigabyte file never streams through your application servers?

system-design · Senior level · software-engineering

What the interviewer is really asking

Probes whether the candidate keeps large-file transfer off the application tier using pre-signed/direct-to-object-storage uploads and signed download URLs, handles multipart/resumable transfer and access control, rather than proxying gigabytes of bytes through stateless app servers.

What to say

What to avoid

Example answers

Strong: For uploads I'd have the client request a pre-signed PUT URL from the app, scoped to a specific key under that user's prefix and valid for a few minutes. The bytes go directly from client to S3 — my app never touches them — and for multi-gig files I'd use multipart upload so parts upload in parallel and a dropped part retries on its own. The app just records the upload job and the resulting object key against the user.

Weak: I'd add an endpoint that accepts the file upload, holds it in memory or a temp file, and then writes it to S3 from the server. It's straightforward and the server controls the whole flow.

Want questions matched to your role? Paste a job title, job description, or CV and get a personalized set, or go Pro to unlock the full bank.