PracHub
QuestionsLearningGuidesInterview Prep
|Home/System Design/Meta

Design a Dropbox-like file storage and sync service

Last updated: Jun 15, 2026

Quick Overview

Design a Dropbox-like file storage and sync service evaluates requirements, scale assumptions, API/data design, architecture, trade-offs, failure modes, and rollout in a realistic interview setting. A strong answer states assumptions, handles edge cases, explains trade-offs, and shows how to validate the result clearly.

  • hard
  • Meta
  • System Design
  • Software Engineer

Design a Dropbox-like file storage and sync service

Company: Meta

Role: Software Engineer

Category: System Design

Difficulty: hard

Interview Round: Onsite

##### Question Design a cloud file storage and synchronization service like Dropbox / Google Drive. The system should let users store files and folders, keep them in sync across multiple devices, share them, and recover previous versions — at internet scale (hundreds of millions of users). Work through the following: 1. **Core sync** — Upload/download files and folders; client-side folder monitoring (inotify/FSEvents/ReadDirectoryChangesW); propagate changes across all of a user's devices. 2. **Large-file handling** — Chunked, resumable uploads/downloads; delta sync so an edit only transfers the changed bytes; deduplication and compression. 3. **Versioning & restore** — Per-file version history, tombstones for deletes, and the ability to restore or undelete. 4. **Conflict resolution** — Detect and resolve concurrent edits from multiple devices (including offline edits replayed on reconnect). 5. **Offline support** — Offline-first client with a local index and a write-ahead journal of pending operations. 6. **Sharing & permissions** — Share folders/files with specific users or groups, and via capability/share links with scope and expiry; ACLs with inheritance. 7. **Change notification** — Push change events to devices in near real time (APNs/FCM/WebPush) with long-poll/WebSocket fallback. 8. **Encryption** — In transit and at rest; discuss server-side encryption (SSE) vs. client-side / end-to-end encryption (CSE) and the dedup trade-offs of each. 9. **Mobile constraints** — Battery-, network-, and background-execution-aware scheduling; selective / on-demand sync. 10. **Quota & billing** — Logical vs. billed (post-dedup/compression) bytes, enforcement, and usage accounting. 11. **Architecture & data model** — Clients and sync engine, metadata service, blob/object storage and CDN; model files, chunks, versions, ACLs, tombstones, and a change journal. 12. **Consistency model** — What guarantees do readers and writers get within and across devices? 13. **Scale & operations** — Sharding/partitioning, hotspots, observability, disaster recovery, and online migrations/backfills (e.g., changing chunk size or rotating crypto keys). Out of scope: real-time collaborative editing (Google Docs / OT/CRDT co-editing).

Quick Answer: Design a Dropbox-like file storage and sync service evaluates requirements, scale assumptions, API/data design, architecture, trade-offs, failure modes, and rollout in a realistic interview setting. A strong answer states assumptions, handles edge cases, explains trade-offs, and shows how to validate the result clearly.

Related Interview Questions

  • Design Top-K, Crawler, and Chess Systems - Meta (hard)
  • Design Search And Web Crawling Systems - Meta (medium)
  • Design an Instagram-Style Social Feed - Meta (medium)
  • Design an Online Game Leaderboard - Meta (hard)
  • Design an On-Demand Delivery Platform - Meta (medium)
|Home/System Design/Meta

Design a Dropbox-like file storage and sync service

Meta logo
Meta
Jul 15, 2025, 12:00 AM
hardSoftware EngineerOnsiteSystem Design
6
0

Design a Dropbox-like file storage and sync service

Design a cloud file storage and synchronization service like Dropbox / Google Drive. The system should let users store files and folders, keep them in sync across multiple devices, share them, and recover previous versions — at internet scale (hundreds of millions of users).

Work through the following:

  1. Core sync — Upload/download files and folders; client-side folder monitoring (inotify/FSEvents/ReadDirectoryChangesW); propagate changes across all of a user's devices.
  2. Large-file handling — Chunked, resumable uploads/downloads; delta sync so an edit only transfers the changed bytes; deduplication and compression.
  3. Versioning & restore — Per-file version history, tombstones for deletes, and the ability to restore or undelete.
  4. Conflict resolution — Detect and resolve concurrent edits from multiple devices (including offline edits replayed on reconnect).
  5. Offline support — Offline-first client with a local index and a write-ahead journal of pending operations.
  6. Sharing & permissions — Share folders/files with specific users or groups, and via capability/share links with scope and expiry; ACLs with inheritance.
  7. Change notification — Push change events to devices in near real time (APNs/FCM/WebPush) with long-poll/WebSocket fallback.
  8. Encryption — In transit and at rest; discuss server-side encryption (SSE) vs. client-side / end-to-end encryption (CSE) and the dedup trade-offs of each.
  9. Mobile constraints — Battery-, network-, and background-execution-aware scheduling; selective / on-demand sync.
  10. Quota & billing — Logical vs. billed (post-dedup/compression) bytes, enforcement, and usage accounting.
  11. Architecture & data model — Clients and sync engine, metadata service, blob/object storage and CDN; model files, chunks, versions, ACLs, tombstones, and a change journal.
  12. Consistency model — What guarantees do readers and writers get within and across devices?
  13. Scale & operations — Sharding/partitioning, hotspots, observability, disaster recovery, and online migrations/backfills (e.g., changing chunk size or rotating crypto keys).

Out of scope: real-time collaborative editing (Google Docs / OT/CRDT co-editing).

Constraints & Assumptions

  • Preserve the scope, facts, inputs, and requested outputs from the prompt above.
  • If the prompt leaves a detail unspecified, state a reasonable assumption before relying on it.
  • Keep the answer interview-ready: concise enough to present, but concrete enough to implement or evaluate.

Clarifying Questions to Ask Guidance

  • Clarify users, core use cases, read/write patterns, scale, latency, availability, and data retention.
  • State explicit assumptions before making sizing or architecture decisions.
  • Prioritize the functional path first, then address reliability, security, observability, and rollout.

What a Strong Answer Covers Guidance

  • A scoped requirements summary with concrete non-goals and success metrics.
  • API, data model, architecture, consistency, capacity, and operations.
  • Reasoned trade-offs among simple and scalable designs, including bottlenecks and failure modes.
  • A validation, monitoring, migration, and launch plan appropriate for the risk level.

Follow-up Questions Guidance

  • What breaks first at 10x traffic or data volume?
  • How would you degrade gracefully during dependency failures?
  • What metrics and alerts would prove the design is healthy after launch?

Submit Your Answer to Earn 20XP

Sign in to leave a comment

Loading comments...

Browse More Questions

More System Design•More Meta•More Software Engineer•Meta Software Engineer•Meta System Design•Software Engineer System Design

Your design canvas — auto-saved

PracHub

Master your tech interviews with 9,000+ real questions from top companies.

Product

  • Questions
  • Learning Tracks
  • Interview Guides
  • Resources
  • Premium
  • For Universities

Browse

  • By Company
  • By Role
  • By Category
  • Topic Hubs
  • SQL Questions
  • AI Coding Questions
  • Compare Platforms
  • Discord Community

Support

  • support@prachub.com
  • (916) 541-4762

Legal

  • Privacy Policy
  • Terms of Service
  • About Us

© 2026 PracHub. All rights reserved.