Katkat

Design deduplicated file storage on filesystem

GoogleSoftware Engineer · Technical Screen

Last updated

This question evaluates system design and storage engineering competencies, including multi-tenant isolation, authentication and authorization models, content-addressable storage and deduplication, reference counting and garbage collection, concurrency control, API surface design, and scaling across nodes using only filesystem primitives.

Design a multi-tenant file storage service where users can upload, get, and delete files. Identical files should be deduplicated; users must be isolated from each other. You may not use a database—only OS filesystem APIs. Define authentication and authorization (who can upload), object naming, APIs, content-addressed storage, reference counting and garbage collection, consistency under concurrent updates and deletes, and scaling across multiple storage nodes.