← DoorDash Interview Insights

DoorDash·Software Engineer·Technical Phone Screen·Intermediate

Intermediate
Jun 2026

Summary

DoorDash software engineering interview with a coding round built around file system design. The base problem is familiar from LeetCode but they extended it pretty significantly, so going in expecting a straightforward solve would've been a mistake.

Questions Asked (1)

Q1

Design a file system that supports Create(path, value), Get(path), Set(path, value), and Delete(path) operations, with appropriate validation on each.

Algorithms & Data StructuresSystem DesignTechnical Trade-offs
Author's notes

The base version is manageable if you've seen the LeetCode problem before, but the Set and Delete operations with validation rules added a lot more edge cases than I expected.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Clarify requirements and constraints first, then design a tree-based structure (e.g., trie) with nodes representing files/directories. Discuss operations with validation, edge cases, and trade-offs between simplicity and scalability.

Pro tip: Explicitly discuss how you would handle concurrent access and atomicity, as DoorDash's systems require high reliability under load. Also, mention that you'd start with a simple in-memory solution and then scale to distributed storage if needed.

1. Clarify Requirements

Ask about expected scale, path format, value types, and whether directories are implicit or explicit. Confirm if operations should be atomic and thread-safe.

2. Choose Data Structure

Propose a trie (prefix tree) where each node represents a path component and stores a value if it's a file. Alternatively, use a hash map with full paths as keys for simplicity.

3. Define Operations & Validation

For each operation, specify validation rules: e.g., Create fails if path exists or parent missing; Get fails if path doesn't exist or is a directory; Set fails if path doesn't exist; Delete fails if path doesn't exist or is non-empty directory.

4. Discuss Trade-offs & Extensions

Compare trie vs. hash map in terms of time/space complexity and operations like listing directory contents. Mention potential extensions: permissions, versioning, distributed storage.

5. Address Concurrency & Scalability

Explain how to handle concurrent access (e.g., locks, transactions) and how the design could scale to distributed systems (e.g., sharding by path).

Key Points to Mention

  • Path normalization and validation (e.g., handling '.', '..', multiple slashes)
  • Time complexity: O(k) for trie where k is path depth, O(1) average for hash map
  • Space complexity and memory overhead of storing nodes vs. full paths
  • Handling of directories: implicit creation, deletion of non-empty directories
  • Concurrency control: read-write locks, optimistic concurrency, or transactions
  • Scalability: sharding, replication, and consistency models for distributed file systems

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