Notion logo

Notion Mobile Engineer System Design Questions

28 practice questions for Notion Mobile Engineer interviews

Notion mobile engineer interviews focus on iOS or Android platform knowledge, memory management, offline-first architecture, and mobile-specific system design.

All Roles Software Engineer Backend Engineer Frontend Engineer Full Stack Engineer Mobile Engineer Data Engineer Data Scientist ML Engineer DevOps Engineer DevOps Engineer Product Manager SRE Security Engineer Engineering Manager Data Analyst UX/UI Designer QA Engineer

No verified questions yet for Notion.

system design Senior api design #1

1. [OA] Design a Background Task Scheduler for Notion Mobile

As a productivity application, Notion needs to support background tasks such as data fetching or notifications. The background task scheduler must optimize resource use while operating within system limitations of both iOS and Android.
Define a class that represents a scheduler allowing for task scheduling, execution, and management in the background.
- schedule(task: Task, interval: int) -> None: Schedules the task to run at the specified interval.
- execute(taskId: int) -> None: Triggers execution of the task associated with the taskId.
- cancel(taskId: int) -> None: Cancels the scheduled task and removes it from the scheduler.
Example 1:
Input: scheduler = BackgroundTaskScheduler(), task = Task(id=1, name='Fetch Data'), scheduler.schedule(task, 600),
Output: Task scheduled successfully.
Explanation: The task is stored in the scheduler with an associated interval.
Constraints:
- Task execution time should not exceed 5 seconds.
system design Senior api design #2

2. [OA] Design an Offline-first Sync Engine for Notion Mobile

In Notion, users often access their notes and tasks from various devices, with the possibility of offline usage. Thus, a sync engine is essential to manage data consistency and conflict resolution during online and offline state transitions.
Implement a class that handles syncing data between local storage and the server, ensuring conflicts are managed correctly to provide a seamless user experience.
- sync(operations: List[Operation]) -> None: Accept a list of operations where each operation can be

Related Notion Mobile Engineer interview prep

Start practicing Notion questions

Sign up for free to access walkthroughs, AI-generated questions, and more.

Get Started Free