← Airbnb Interview Insights

Airbnb·Software Engineer·Onsite - System Design / Architecture·Senior

SeniorPrefer not to say
May 2026Remote

Summary

Airbnb system design round, calendar service question. Pretty deep scope and I underestimated how much the timezone and recurrence stuff would dominate the conversation.

Questions Asked (4)

Q1

Design a calendar service similar to Google Calendar, covering event management, recurring events, invitations, multiple calendars, sharing permissions, reminders, and search.

System DesignTechnical Trade-offsData Modeling
Author's notes

I started with the event store and CRUD flows which felt safe, but the interviewer kept pushing on recurrence expansion and I fumbled it a bit.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and scale, then design the core data model for events and calendars, and finally address advanced features like recurring events, sharing, and reminders. Focus on trade-offs and scalability, especially for Airbnb's global user base.

Pro tip: Emphasize how you would handle recurring events efficiently (e.g., using RRULE and lazy expansion) and discuss the trade-offs between consistency and availability for calendar sharing. This shows depth and practical experience.

1. Clarify Requirements and Scale

Ask questions to understand functional and non-functional requirements, such as number of users, events per user, read/write ratio, and consistency needs. This ensures you design for the right scale and priorities.

2. Design Core Data Model

Define entities like User, Calendar, Event, and Invitation, and their relationships. Consider using a relational database for strong consistency, but discuss NoSQL alternatives for scalability.

3. Handle Recurring Events

Explain how to store recurrence rules (e.g., iCalendar RRULE) and expand them on-the-fly or precompute instances. Discuss trade-offs between storage, query performance, and complexity.

4. Implement Sharing and Permissions

Design an access control model (e.g., ACLs or RBAC) for calendar sharing, and discuss how to enforce permissions efficiently at scale, possibly using caching.

5. Address Reminders, Search, and Scalability

Propose a notification system for reminders (e.g., using a message queue and workers), an indexing strategy for search (e.g., Elasticsearch), and scaling techniques like sharding and replication.

Key Points to Mention

  • Data model for events, calendars, and users with appropriate indexes
  • Recurring events: RRULE standard, expansion strategies, and exceptions
  • Sharing permissions: ACLs, roles, and efficient permission checks
  • Reminders: scheduling, delivery guarantees, and handling time zones
  • Search: indexing events for full-text search and filtering
  • Scalability: sharding by user or calendar, caching, and read replicas

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q2

How would you handle free/busy aggregation across users for scheduling, and what consistency guarantees would you provide?

System DesignTechnical Trade-offs
Author's notes

Went with eventual consistency pretty quickly and the interviewer seemed fine with that.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the requirements: scale, latency, and consistency needs for free/busy aggregation. Then propose a distributed architecture that aggregates calendar data from multiple sources, using caching and asynchronous updates to balance performance and consistency. Finally, discuss the trade-offs between strong and eventual consistency, and justify your choice based on the use case.

Pro tip: Emphasize that free/busy data is often used for approximate scheduling, so eventual consistency with bounded staleness is usually acceptable, but for critical bookings you might need stronger guarantees. This shows you understand the business context and can make pragmatic trade-offs.

1. Clarify Requirements

Ask about scale (number of users, calendars), latency requirements, and how up-to-date the free/busy information needs to be. Determine if the system is for internal scheduling or external bookings, as this affects consistency needs.

2. Design Data Model and Aggregation

Propose a data model where each user's calendar events are stored, and free/busy is computed by aggregating events across time slots. Consider using a time-bucketed approach (e.g., 15-minute slots) to simplify aggregation and caching.

3. Architecture for Scalability

Outline a distributed system with a service that fetches calendar data from external providers (e.g., Google Calendar, Outlook) and stores it in a central store. Use caching (e.g., Redis) for frequently accessed free/busy data and asynchronous updates via a message queue to handle high write loads.

4. Consistency Guarantees

Discuss consistency options: strong consistency (e.g., using a consensus protocol like Raft) ensures accurate free/busy but may be slow; eventual consistency with a bounded staleness (e.g., updates propagate within X seconds) is often sufficient. Propose a hybrid: strong consistency for critical operations (e.g., booking) and eventual for read-heavy queries.

5. Trade-offs and Failure Handling

Explain trade-offs: eventual consistency improves availability and performance but risks double-booking; strong consistency reduces availability. Discuss handling failures: retries, fallbacks to cached data, and conflict resolution when multiple users book the same slot.

Key Points to Mention

  • Time-bucketed aggregation (e.g., 15-minute slots) to simplify free/busy computation and caching.
  • Use of external calendar APIs and handling rate limits and failures.
  • Caching strategies (e.g., Redis) with TTL and invalidation on updates.
  • Asynchronous processing with message queues (e.g., Kafka) for scalability.
  • Consistency models: eventual vs. strong, and bounded staleness.
  • Conflict resolution and double-booking prevention (e.g., optimistic locking, distributed locks).

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q3

Walk through how you'd design the notification and reminder dispatch system to ensure low-latency delivery.

System DesignAPI & Integrations
Author's notes

This part I felt okay about.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements (scale, latency targets, notification types) and then present a high-level architecture that separates concerns: ingestion, processing, and delivery. Focus on how you achieve low latency through asynchronous processing, partitioning, and optimized delivery channels, while ensuring reliability with retries and idempotency.

Pro tip: Emphasize the trade-offs between latency and reliability, and propose a multi-tiered approach: real-time for critical notifications (e.g., booking confirmations) and near-real-time for less urgent ones (e.g., marketing). This shows you understand business priorities.

1. Clarify Requirements and Constraints

Ask about scale (e.g., millions of users), latency targets (e.g., <1s for critical), notification types (push, email, SMS), and reliability guarantees. This ensures your design meets actual needs.

2. High-Level Architecture

Propose a pipeline: API gateway receives requests, writes to a message queue (e.g., Kafka) for decoupling, workers process and dispatch via appropriate channels. Use a separate service for scheduling reminders.

3. Low-Latency Delivery Mechanisms

Discuss partitioning by user ID for parallelism, using in-memory queues for immediate dispatch, and leveraging push notification services (APNs, FCM) with persistent connections. For reminders, use a distributed scheduler like Redis with TTL or a timing wheel.

4. Reliability and Scalability

Implement retries with exponential backoff, idempotency keys to avoid duplicates, and dead-letter queues for failures. Scale horizontally by adding workers and partitioning the queue.

5. Monitoring and Optimization

Track latency metrics (p99), queue depths, and delivery success rates. Use tracing to identify bottlenecks and auto-scale based on load.

Key Points to Mention

  • Asynchronous processing with message queues (e.g., Kafka, RabbitMQ) to decouple ingestion from delivery.
  • Partitioning and sharding for parallel processing and reduced contention.
  • Use of push notification services (APNs, FCM) and persistent connections for real-time delivery.
  • Idempotency and deduplication to handle retries without spamming users.
  • Distributed scheduling for reminders (e.g., Redis sorted sets, timing wheels).
  • Monitoring and alerting on latency and failure rates to ensure SLA compliance.

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q4

How would you approach CalDAV or sync API compatibility for external calendar clients?

API & IntegrationsSystem Design
Author's notes

Honestly the weakest part of my answer.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the goal: enabling external calendar clients to sync with Airbnb's calendar system. Then outline a standards-based approach using CalDAV, covering protocol compliance, authentication, data modeling, and scalability considerations. Finally, discuss trade-offs and potential extensions for custom sync APIs.

Pro tip: Emphasize the importance of incremental sync and conflict resolution to handle real-world scenarios where multiple clients modify the same event. Also, mention the need for robust testing with popular clients like Apple Calendar and Google Calendar to ensure compatibility.

1. Clarify Requirements and Scope

Ask about the specific external clients to support, expected sync frequency, and whether real-time updates are needed. Determine if a standard protocol like CalDAV is required or if a custom sync API is acceptable.

2. Choose Protocol and Standards

Decide between implementing CalDAV (RFC 4791) for broad compatibility or designing a custom sync API. Consider using existing libraries and frameworks to accelerate development.

3. Design Data Model and Sync Logic

Map internal calendar data to iCalendar format (RFC 5545). Implement sync tokens, ETags, and change tracking to support efficient incremental sync and conflict resolution.

4. Handle Authentication and Security

Integrate with OAuth 2.0 or basic auth as required by CalDAV. Ensure secure transmission and proper authorization scopes for calendar access.

5. Address Scalability and Reliability

Design for high availability and horizontal scaling. Implement rate limiting, caching, and monitoring to handle many concurrent sync clients.

Key Points to Mention

  • CalDAV protocol and iCalendar format standards
  • Incremental sync using sync tokens and ETags
  • Conflict resolution strategies (e.g., last-write-wins, versioning)
  • Authentication mechanisms (OAuth, Basic Auth) and security
  • Scalability considerations for millions of users
  • Testing with popular calendar clients (Apple Calendar, Google Calendar, Outlook)

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.