Airbnb logo

Airbnb Mobile Engineer System Design Questions

47 practice questions for Airbnb Mobile Engineer interviews

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

system design Senior offline sync #1

1. Design an Offline-first Synchronization Engine

Airbnb users often find themselves in areas with poor connectivity. Designing an offline-first synchronization engine ensures that user data is consistently synced and available, regardless of network conditions.
### Class: OfflineSyncEngine
- void saveData(String key, String value):
- Saves data locally when offline and queues it for synchronization.
- void syncData():
- Syncs queued data with the server once connectivity is regained.
- String getData(String key):
- Retrieves the requested data from local storage.
### Example 1:
Input:
OfflineSyncEngine syncEngine = new OfflineSyncEngine()
syncEngine.saveData("booking_12345", "Booking details...")
syncEngine.syncData() when restored connectivity after going offline.
Output:
Data should be persistently stored and synced with the server.
### Constraints:
- Each user may have up to 10,000 data entries.
- Sync operations should not exceed time limits of 2 seconds ideally, post connectivity restoration.
system design Senior messaging #2

2. Design a Notification Manager for Airbnb

In Airbnb’s mobile application, users must receive real-time notifications about bookings, cancellations, messages, and promotions. Designing a robust notification system that seamlessly delivers these messages to users at scale is vital.
### Class: NotificationManager
- void sendNotification(User user, String message):
- Sends a notification message to the specified user.
- List<Notification> getUserNotifications(User user):
- Returns a list of notifications for the specified user.
- void markAsRead(Notification notification):
- Marks the specified notification as read.
- List<Notification> getUnreadNotifications(User user):
- Retrieves all unread notifications for the specified user.
### Example 1:
Input:
User user = new User(1, "Alice")
NotificationManager nm = new NotificationManager()
nm.sendNotification(user, "Your booking is confirmed!")
Output:
nm.getUserNotifications(user) returns List<Notification> containing the confirmation message.
### Constraints:
- Users and notifications are uniquely identifiable.
- Each user can have up to 1,000 notifications.

Related Airbnb Mobile Engineer interview prep

Start practicing Airbnb questions

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

Get Started Free