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
-
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.
-
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.
-
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.
-
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.