Hard · System Design

Design In-Memory File System

Design a FileSystem over absolute paths with ls(path), which returns [name] for a file path or the directory's entry names in lexicographic order, mkdir(path), which creates the directory and any missing parents, addContentToFile(filePath, content), which creates the file or appends to it, and readContentFromFile(filePath), which returns its content. Given a sequence of calls, return the results of the ls and read calls in order.

Examples

Example 1

{
  "ops": [
    {"kind": "mkdir", "path": "/a/b"},
    {"kind": "add", "path": "/a/b/c", "content": "hello"},
    {"kind": "add", "path": "/a/b/c", "content": " world"},
    {"kind": "ls", "path": "/a/b"},
    {"kind": "read", "path": "/a/b/c"}
  ]
}

Output: [ ["c"], "hello world" ]

Example 2

{
  "ops": [
    {"kind": "mkdir", "path": "/docs/img"},
    {"kind": "add", "path": "/docs/readme", "content": "hi"},
    {"kind": "ls", "path": "/docs/readme"}
  ]
}

Output: [ ["readme"] ]

Rebuild it in the studio

Open every published interview problem, solution, scene, and memory room free, with no account.

More System Design problems