Navigating Ramp's Challenging Software Engineer Interview: Designing a Filesystem

Ramp | Software Engineer | Interview Experience

Interview Date: Not specified
Result: Not specified
Difficulty: Not specified

Interview Process

The interview consisted of a single 90-minute design exercise focused on creating a filesystem with four levels of functionality. The candidate was required to complete each level sequentially.

Technical Questions

  1. Level 1:

    • add_task(self, timestamp: int, name: str, priority: int) -> str: Adds a new task and returns a unique task ID.
    • update_task(self, timestamp: int, task_id: str, name: str, priority: int) -> bool: Updates the task identified by task_id.
    • get_task(self, timestamp: int, task_id: str) -> str | None: Retrieves a task by task_id.
  2. Level 2:

    • search_tasks(self, timestamp: int, name_filter: str, max_results: int) -> list[str]: Searches for task IDs with names containing a specific filter.
    • list_tasks_sorted(self, timestamp: int, limit: int) -> list[str]: Lists task IDs sorted by priority.
  3. Level 3:

    • add_user(self, timestamp: int, user_id: str, quota: int) -> bool: Adds a new user with a specified task quota.
    • assign_task(self, timestamp: int, task_id: str, user_id: str, finish_time: int) -> bool: Assigns a task to a user for a specified time.
    • get_user_tasks(self, timestamp: int, user_id: str) -> list[str]: Retrieves active task IDs assigned to a user.
  4. Level 4:

    • complete_task(self, timestamp: int, task_id: str, user_id: str) -> bool: Marks a task as completed by the user.

Tips & Insights

Focus on understanding object-oriented principles and the design of task management systems. It is crucial to clearly define the functionality and ensure the API is consistent across different levels.