← Dropbox Interview Insights

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

SeniorPrefer not to say
Apr 2026

Summary

Dropbox system design round, one big question about building an object storage service from scratch at S3 scale. Went deep on a lot of subsystems and honestly felt like the interview could've gone on for another hour.

Questions Asked (6)

Q1

Design a large-scale object storage service similar to Amazon S3, supporting PUT, GET, DELETE, and LIST operations on buckets and objects, with objects ranging from a few KB to multiple terabytes.

System DesignTechnical Trade-offsData Modeling
Author's notes

This question is massive and I underestimated how much ground they'd want to cover.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and constraints, then design a scalable architecture that separates metadata and data planes, using partitioning and replication for scalability and durability. Focus on trade-offs between consistency, latency, and cost, and explain how each component handles the range of object sizes.

Pro tip: Emphasize how you would handle large objects (e.g., multipart uploads) and the metadata layer's role in enabling efficient LIST operations, as these are often overlooked but critical for S3-like systems.

1. Clarify Requirements and Constraints

Ask about scale (number of objects, requests per second), consistency requirements, durability targets, and cost constraints. Confirm the operations and object size range.

2. High-Level Architecture

Propose a separation of metadata and data planes. Use a distributed metadata store (e.g., sharded RDBMS or NoSQL) and a scalable object store (e.g., chunked blobs on distributed file system or cloud storage).

3. Data Model and Partitioning

Design the metadata schema (buckets, objects, versions) and partition by bucket and object key hash to distribute load. Discuss indexing for efficient LIST operations.

4. Handling Object Sizes and Operations

Detail how PUT/GET/DELETE work for small and large objects, including multipart uploads for large objects, chunking, and parallel transfers. Explain how LIST is implemented with pagination.

5. Scalability, Durability, and Consistency

Describe replication (e.g., cross-AZ), erasure coding for durability, and consistency model (e.g., eventual for LIST, strong for GET after PUT). Discuss trade-offs and failure handling.

Key Points to Mention

  • Separation of metadata and data planes for independent scalability
  • Partitioning strategies (e.g., consistent hashing) for even load distribution
  • Multipart uploads and chunking for large objects to enable parallelism and resumability
  • Erasure coding or replication for durability and availability
  • Consistency trade-offs: strong consistency for individual object operations vs. eventual consistency for LIST
  • Efficient LIST operations using metadata indexes and pagination

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

Q2

How would you handle metadata storage and partitioning for trillions of objects across a distributed system?

System DesignTechnical Trade-offs
Author's notes

Jumped to consistent hashing too fast without acknowledging the hot-bucket problem.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements like object size, access patterns, and consistency needs. Then propose a scalable metadata architecture using sharded, distributed databases with a hierarchical namespace, and discuss partitioning strategies such as consistent hashing or range-based sharding. Finally, address trade-offs around consistency, availability, and operational complexity.

Pro tip: Emphasize that metadata operations are often the bottleneck in object storage systems, so design for low-latency lookups and high-throughput writes by decoupling metadata from data and using caching layers.

1. Clarify Requirements and Constraints

Ask about object size distribution, read/write ratio, latency SLAs, consistency requirements, and geographic distribution to scope the problem.

2. Design Metadata Storage Layer

Propose a distributed, sharded database (e.g., a NoSQL store like Cassandra or a custom system) that stores object metadata (ID, path, size, checksums, ACLs) and supports efficient range and point queries.

3. Choose Partitioning Strategy

Discuss partitioning by hash of object ID for even distribution, or by hierarchical path for range scans; consider consistent hashing to minimize rebalancing when scaling.

4. Address Scalability and Fault Tolerance

Explain replication for durability, sharding for horizontal scale, and techniques like caching, bloom filters, and asynchronous replication to handle trillions of objects.

5. Evaluate Trade-offs and Optimizations

Compare consistency vs. availability (e.g., eventual consistency for metadata), discuss indexing strategies, and mention monitoring and rebalancing mechanisms.

Key Points to Mention

  • Sharding and consistent hashing for even distribution and minimal data movement during scaling
  • Hierarchical namespace vs. flat namespace and their impact on listing and access patterns
  • Consistency models (strong vs. eventual) and their implications for metadata operations
  • Caching layers (e.g., Memcached, Redis) to reduce latency for hot metadata
  • Replication and fault tolerance to ensure durability and high availability
  • Handling hot spots and rebalancing strategies as the system grows

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

Q3

What approach would you take to achieve eleven nines of durability for stored data?

System DesignTechnical Trade-offs
Author's notes

Talked through erasure coding across availability zones and why pure replication gets expensive at exabyte scale.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying that eleven nines (99.999999999%) durability means an annual failure probability of 10^-11, which is beyond what any single system can achieve. Then describe a multi-layered strategy combining erasure coding, replication across fault domains, and continuous integrity verification, while acknowledging the trade-offs between durability, cost, and availability.

Pro tip: Emphasize that durability is about preventing data loss, not just achieving uptime—distinguish it from availability, and mention that at this scale, even rare correlated failures (e.g., software bugs, operator errors) must be mitigated through techniques like immutable backups and formal verification.

1. Clarify the requirement and constraints

Define what eleven nines means in terms of annual failure probability and ask about data volume, access patterns, and cost constraints. This shows you understand the magnitude and can tailor the solution.

2. Design for redundancy across fault domains

Use erasure coding (e.g., Reed-Solomon) with high redundancy factors and distribute fragments across multiple availability zones, regions, and possibly cloud providers. Ensure no single fault domain can cause data loss.

3. Implement continuous integrity verification and repair

Continuously checksum data, scrub for bit rot, and automatically repair corrupted fragments using surviving redundancy. This prevents silent data corruption from degrading durability over time.

4. Address correlated failures and human errors

Mitigate software bugs, operator mistakes, and malicious attacks through immutable backups, versioning, and strict access controls. Consider formal verification for critical components.

5. Quantify and monitor durability

Model durability using probability theory (e.g., Markov models) and monitor real-world failure rates. Use this to validate that the design meets the target and to adjust redundancy as needed.

Key Points to Mention

  • Erasure coding vs. replication: erasure coding offers higher durability per byte stored but adds computational overhead.
  • Fault isolation: distributing data across independent failure domains (racks, data centers, regions, providers) to avoid correlated failures.
  • Bit rot and silent corruption: need for periodic scrubbing and checksums to detect and repair data degradation.
  • Durability vs. availability: durability is about data not being lost, while availability is about data being accessible; they require different design considerations.
  • Cost and performance trade-offs: achieving eleven nines likely requires significant redundancy and may increase latency and cost, so balancing these is key.
  • Real-world examples: reference systems like Amazon S3 (designed for 11 nines) and how they achieve it through redundancy and verification.

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

Q4

Walk me through how multipart upload would work for very large objects, including how you'd handle failures mid-upload.

System DesignAPI & Integrations
Author's notes

Actually felt like the strongest part of my interview.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by outlining the multipart upload flow at a high level: initiate, upload parts in parallel, and complete. Then dive into failure handling by discussing retries, idempotency, and resumability. Emphasize how you'd design for reliability and efficiency at scale.

Pro tip: Mention that you'd use checksums per part and for the final object to detect corruption, and that you'd store upload state persistently to allow resumption after client or server failures.

1. Initiate Upload

Describe how the client requests an upload session from the server, which returns an upload ID and possibly pre-signed URLs for each part.

2. Partition and Upload Parts

Explain how the large object is split into smaller parts (e.g., 5-10 MB) that are uploaded independently, potentially in parallel, each with a part number and checksum.

3. Handle Failures and Retries

Discuss how to detect failed part uploads (e.g., via timeouts or error responses) and retry them with exponential backoff, ensuring idempotency to avoid duplicate parts.

4. Complete Upload

Once all parts are uploaded, the client sends a complete request with the list of part numbers and ETags; the server assembles the parts into the final object and verifies integrity.

5. Cleanup and Resumption

Mention aborting incomplete uploads to free resources, and how clients can resume by querying the server for uploaded parts if the upload is interrupted.

Key Points to Mention

  • Parallel uploads to improve throughput and reduce time
  • Retry logic with exponential backoff and jitter
  • Idempotency of part uploads to handle retries safely
  • Checksums (e.g., MD5, SHA) per part and for final object to ensure integrity
  • Persistent storage of upload state (e.g., in a database) to enable resumption
  • Abort multipart upload API to clean up incomplete uploads and avoid storage costs

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

Q5

How would you design access control for objects and buckets, including both authentication and authorization?

System DesignTechnical Trade-offs
Author's notes

Kept it relatively high level: request signing for authn, policy evaluation for authz with bucket-level and object-level ACLs.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and scale, then separate authentication (identity verification) from authorization (permission enforcement). Propose a design that uses centralized identity management (e.g., OAuth, SSO) and a scalable authorization model (e.g., RBAC or ABAC) with policy enforcement points at the API gateway and object storage layer. Discuss trade-offs between simplicity, flexibility, and performance.

Pro tip: Emphasize the principle of least privilege and how you would handle cross-team or external sharing scenarios, as Dropbox deals with complex sharing permissions. Also mention the importance of auditing and logging for security and compliance.

1. Clarify Requirements

Ask about scale (number of users, objects, buckets), types of access (internal, external, public), and compliance needs. This shows you understand the problem context before diving into solutions.

2. Design Authentication

Describe how users and services authenticate, e.g., using OAuth 2.0, SAML, or API keys. Mention token validation, session management, and integration with identity providers.

3. Design Authorization Model

Choose an authorization model (RBAC, ABAC, or ReBAC) and explain how permissions are defined and evaluated. Discuss how to represent objects, buckets, and actions, and how policies are stored and updated.

4. Enforce Access Control

Explain where enforcement happens: at the API gateway, service layer, and storage layer. Describe how to ensure consistent enforcement and handle caching for performance.

5. Address Trade-offs and Edge Cases

Discuss trade-offs between centralized vs. decentralized enforcement, latency vs. consistency, and how to handle sharing, delegation, and revocation. Mention auditing and monitoring.

Key Points to Mention

  • Separation of authentication and authorization concerns
  • Use of standard protocols like OAuth 2.0 and OpenID Connect for authentication
  • RBAC vs. ABAC vs. ReBAC and when to use each
  • Policy enforcement points and centralized policy decision points
  • Caching strategies for authorization decisions to reduce latency
  • Auditing, logging, and compliance considerations

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

Q6

How would you handle caching and CDN integration for frequently accessed objects, including hot-key scenarios?

System DesignTechnical Trade-offs
Author's notes

Short discussion at the end of the interview when time was running low.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the workload characteristics (read/write ratio, object size, access patterns) and then propose a multi-tier caching architecture with CDN at the edge, regional caches, and origin storage. Address hot-key scenarios by discussing techniques like request coalescing, key sharding, and local in-memory caches, while balancing consistency, latency, and cost trade-offs.

Pro tip: Mention that hot keys often indicate a suboptimal key design or a need for application-level caching, and propose monitoring cache hit ratios and hot-key detection to dynamically adjust TTLs and shard counts.

1. Clarify Requirements and Constraints

Ask about object size, read/write ratio, latency SLOs, consistency requirements, and geographic distribution to tailor the caching strategy.

2. Design Multi-Tier Caching Architecture

Propose a hierarchy: CDN edge caches for static content, regional Redis/Memcached clusters for dynamic objects, and an origin store like S3. Explain cache invalidation and TTL policies.

3. Address Hot-Key Scenarios

Discuss techniques such as request coalescing (singleflight), key sharding (adding a random suffix), local in-memory caches on application servers, and rate limiting to prevent overload.

4. Handle Consistency and Invalidation

Describe strategies for cache invalidation (TTL, write-through, write-behind, versioning) and how to balance consistency with performance, especially for mutable objects.

5. Monitor, Measure, and Optimize

Explain how to track cache hit ratio, latency, and hot keys using metrics and logging, and how to use that data to auto-scale caches and adjust TTLs.

Key Points to Mention

  • CDN integration: edge caching, cache-control headers, and purging strategies.
  • Hot-key mitigation: request coalescing, key sharding, local caches, and rate limiting.
  • Cache invalidation: TTL, write-through vs. write-behind, and versioned keys.
  • Consistency trade-offs: eventual consistency vs. strong consistency and their impact on user experience.
  • Monitoring and observability: cache hit ratio, latency percentiles, and hot-key detection.
  • Cost optimization: balancing cache size, TTL, and origin offload to reduce egress costs.

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