Airbnb logo

Airbnb Backend Engineer System Design Questions

47 practice questions for Airbnb Backend Engineer interviews

Airbnb backend engineer interviews typically focus on APIs, databases, system design, concurrency, caching, and data structures.

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 messaging #1

1. [OA] Message Queue — Design a message queue system for booking notifications

Airbnb requires an effective notification system for its bookings. You need to create a MessageQueue class that handles messages related to bookings, ensuring that they are processed in the order they were received.
Define a class MessageQueue with the following methods:
- void enqueue(BookingMessage message) - adds a new message to the queue.
- BookingMessage dequeue() - removes and returns the next message from the queue; returns null if the queue is empty.
- bool isEmpty() - checks if the queue is empty.
Example 1:
Input: enqueue(new BookingMessage('booking1'))
Output: null
Input: dequeue()
Output: booking1
Input: isEmpty()
Output: false
Constraints:
- The queue can hold up to 10000 messages.
system design Senior caching #2

2. [OA] Caching — Implement a simple distributed cache layer for property listings

Airbnb relies on quick access to property information across various services. You need to design a Cache class that will manage property data in a manner that it can support common operations while ensuring high performance.
Define a class Cache with the following methods:
- void put(String key, String value) - stores a value in the cache with the given key.
- String get(String key) - retrieves the value associated with a key, returning null if the key does not exist.
- void invalidate(String key) - removes the value for the key, if it exists.
Example 1:
Input: put('listing1', 'property A')
Output: null
Input: get('listing1')
Output: property A
Input: invalidate('listing1')
Output: null
Input: get('listing1')
Output: null
Constraints:
- The cache can contain up to 10000 entries.

Related Airbnb Backend Engineer interview prep

Start practicing Airbnb questions

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

Get Started Free