Design a recursive distributed file crawler

Read the full interview experience this question came from →

Quick Overview

This prompt evaluates expertise in distributed systems, asynchronous task orchestration, recursive job scheduling, data modeling for job and file metadata, and reliability concerns such as retries, idempotency, deduplication, and partial failure handling.

Design a recursive distributed file crawler

Company: Dropbox

Role: Software Engineer

Category: System Design

Difficulty: medium

Interview Round: Onsite

Design a distributed service that crawls a large file system starting from a root path. A client should be able to call an API to start a crawl job, and background workers should traverse directories and files asynchronously. While processing a directory, a worker may split the work into smaller tasks and enqueue additional async jobs, so the async service can recursively trigger more of its own jobs. Discuss: - APIs for creating a crawl job and checking job status - the data model for crawl jobs, crawl tasks, and discovered file metadata - how workers recursively schedule child tasks - how to handle retries, idempotency, deduplication, and partial failures - how to scale to very large directory trees - the role of the database, message queue, and async workers - how to expose progress and final results to clients

Overview: This prompt evaluates expertise in distributed systems, asynchronous task orchestration, recursive job scheduling, data modeling for job and file metadata, and reliability concerns such as retries, idempotency, deduplication, and partial failure handling.

Read the full Dropbox Software Engineer interview experience this question came from

|Home/System Design/Dropbox
Dropbox logo
Dropbox
Jan 25, 2026
mediumSoftware EngineerOnsiteSystem Design
8
0

Design a distributed service that crawls a large file system starting from a root path. A client should be able to call an API to start a crawl job, and background workers should traverse directories and files asynchronously. While processing a directory, a worker may split the work into smaller tasks and enqueue additional async jobs, so the async service can recursively trigger more of its own jobs.

Discuss:

  • APIs for creating a crawl job and checking job status
  • the data model for crawl jobs, crawl tasks, and discovered file metadata
  • how workers recursively schedule child tasks
  • how to handle retries, idempotency, deduplication, and partial failures
  • how to scale to very large directory trees
  • the role of the database, message queue, and async workers
  • how to expose progress and final results to clients

Submit Your Answer to Earn 20XP

Sign in to leave a comment

Loading comments...