Notion logo

Notion Mobile Engineer Interview 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.

coding Hard caching #1

1. [OA] LRU Cache — Implement the caching layer for Notion's API responses

Notion frequently accesses its API for user data and document retrieval. To enhance performance and reduce redundant API calls, we need to create an LRU Cache to store the most recently accessed items.
Your task is to design and implement a class that manages the cache, including methods to retrieve an item and add a new item, adhering to the LRU caching mechanism.
- get(key: int) -> int: Retrieve the value of the key if the key exists in the cache, otherwise return -1.
- put(key: int, value: int) -> None: Update the value of the key if it exists, or add the key-value pair if it does not exist. When the cache reaches its capacity, it should invalidate the least recently used item before inserting a new item.
Example 1:
Input: cache = LRUCache(2), cache.put(1, 1), cache.put(2, 2), cache.get(1), cache.put(3, 3), cache.get(2),
Output: 1
-1

Explanation: Cache returns 1 for the key 1 and -1 for the key 2 after it has been evicted.
Constraints:
- capacity of the cache will be at most 3000.
- All keys and values are non-negative integers.
coding Hard sliding window #2

2. [OA] Sliding Window — Implement the real-time collaborative editing feature in Notion

In Notion, multiple users can edit the same document simultaneously. We need to efficiently track the changes made by each user without overwhelming the system with data updates.
Given a string s representing the current content of a document and a list of users where each user makes a change denoted by their name followed by their intended edit, return the final state of the document after all changes are applied.
- Input: s: str, users: List[str]
- Output: str - final state of the document.
Example 1:
Input: `s =
system design Senior api design #3

3. [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 #4

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