← HarveyAI Interview Insights

HarveyAI·Software Engineer·Onsite - System Design / Architecture·Intermediate

Intermediate
Apr 2026

Summary

System design round at HarveyAI for a software engineer role. One question, pretty focused, and the interviewer was encouraging the whole way through which honestly made it easier to think out loud.

Questions Asked (1)

Q1

Design a file storage system like Google Drive. How would you handle very large files that need to be split into chunks?

System DesignData ModelingTechnical Trade-offs
Author's notes

The core of it was separating metadata from actual file content.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements (file sizes, access patterns, consistency needs) and then present a high-level architecture covering storage, metadata, and chunking. Focus on how chunking enables parallel uploads/downloads, deduplication, and fault tolerance, and discuss trade-offs like chunk size and metadata overhead.

Pro tip: Emphasize that chunk size is a critical trade-off: smaller chunks improve parallelism and deduplication but increase metadata and request overhead; larger chunks reduce overhead but limit parallelism. Mention that real systems like Dropbox use 4MB chunks, and consider content-defined chunking for deduplication.

1. Clarify Requirements and Constraints

Ask about expected file sizes, upload/download patterns, consistency requirements, and budget. This scopes the design and shows you avoid over-engineering.

2. High-Level Architecture

Outline components: client, API gateway, metadata service, chunk storage (e.g., object store like S3), and a database for metadata. Explain how they interact.

3. Chunking Strategy

Describe how files are split into chunks (fixed-size vs. content-defined), chunk size selection, and how chunks are named and stored. Discuss deduplication and integrity checks (hashing).

4. Upload/Download Flow

Detail the process: client requests upload, receives chunk URLs, uploads chunks in parallel, and finalizes with metadata commit. For download, client fetches metadata and chunks in parallel.

5. Trade-offs and Scalability

Discuss trade-offs (chunk size, consistency vs. availability, cost) and how the system scales (sharding metadata, CDN for downloads, garbage collection for orphaned chunks).

Key Points to Mention

  • Chunk size trade-offs: smaller chunks enable better parallelism and deduplication but increase metadata overhead; larger chunks reduce overhead but limit parallelism.
  • Content-defined chunking (CDC) for efficient deduplication, especially for similar files.
  • Metadata management: storing chunk lists, file versions, and access control; using a scalable database like Cassandra or DynamoDB.
  • Parallel upload/download of chunks to improve throughput and resilience.
  • Integrity checks: checksums (e.g., SHA-256) per chunk to detect corruption.
  • Garbage collection and lifecycle policies for orphaned chunks and old versions.

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