Airbnb Interview Questions (13+ Questions)
Last Updated: June 22, 2026 • 13 Questions • Real Company Interviews
Prepare for your Airbnb interview with our comprehensive collection of 13+ real interview questions and detailed answers. These questions have been curated from actual Airbnb technical interviews across various roles including DevOps Engineer, Data Engineer, QA Engineer, and more.
Table of Contents
- Inspecting HTTP Traffic Flow (medium)
- Sorted Log Aggregation (easy)
- Fix Insecure Pod Configuration (medium) 🔒
- NetworkPolicy Misconfiguration (medium) 🔒
- Convert Excel Files with Multiple Sheets to Individual CSV Files (easy)
- Most Common Order Status (easy)
- Employee Pay with Overtime (easy)
- Active Subscriptions for a Video Streaming Platform (hard)
- Extract Product Discounts (hard)
- Daily Active User Reporter (medium) 🔒
- Non-overlapping Intervals (medium)
- Flight Delay Pattern Detector (medium) 🔒
- Dropdown Selection Testing (easy) 🔒
Our Airbnb interview questions cover a wide range of technical topics and difficulty levels, from entry-level positions to senior roles. Each question includes detailed explanations and answers to help you understand the concepts and prepare effectively for your interview.
💡 Pro Tips for Airbnb Interviews
- Practice each question and understand the underlying concepts
- Review Airbnb's specific technologies and methodologies
- Prepare follow-up questions and edge cases
- Practice explaining your solutions clearly and concisely
Interview Questions & Answers
1. Inspecting HTTP Traffic Flow
We suspect that web service isn't receiving HTP requests and we need to confirm network traffic on port 80. We're tasked to capture network packets that are incoming and outgoing from port 80. We'll use TCP dump for this. Main command to solve this question will be TCP dump hyphen i, meaning interface any. We'll use all network interfaces that are on this host machine and C 10, meaning we'll capture only first 10 packets. And then we'll write this output into this file. And the last part is our filter. We'll use port 80. Alternative filters would be host and then IP address, or we can use port range and other filters that TCP dump supports. Next we need to read the speed cap file and save this under some file name. Finally, we need to read this CAT file, and then we need to run this script.
2. Sorted Log Aggregation
We have a log file under TMP app combined log with entries from multiple servers in mixed order. Here's the structure of the log file. We have date, time, host name, and then the log itself. We need to sort combined log file by timestamp meaning date, then time, and then by host name alphabetically and saved output to sorted log file. We'll use sort command. And to sort, we need to use the K flag. We will use K one comma one. It starts by column one and ends at column one, the sorting. Then we do second sorting two comma two, and then again K three comma three. We'll sort by date then by time and then by host name. We need to add the name of the target file that we would like to sort and the name of the file where we need to save the output.
3. Fix Insecure Pod Configuration
Kubernetes Pod Security Context Hardening: secure-app Deployment prod namespace. Remediate insecure container configurations by enforcing non-root user execution, read-only filesystems, and strict capability dropping. Implement least-privilege principles to prevent privilege escalation and reduce the attack surface. Essential for CKS preparation, container compliance, and adhering to Kubernetes Pod Security Standards (PSS).
4. NetworkPolicy Misconfiguration
Kubernetes NetworkPolicy Fix: analytics collector→processor Port 9090 Connectivity. Diagnose and resolve connection timeouts between collector deployment (app=collector) and processor deployment (app=processor) on port 9090 in analytics namespace. Deploy egress NetworkPolicy allowing precise inter-deployment traffic while maintaining deny-all default isolation. Perfect for microservices communication, zero-trust networking, service mesh replacement, compliance security, lateral movement prevention, and namespace isolation.
5. Convert Excel Files with Multiple Sheets to Individual CSV Files
We will convert Excel files with multiple sheets to individual CSV files using Pandas. We have a directory that contains multiple Excel files with many sheets inside of it. We are required to convert every single sheet from Excel file into its own separate CSV file. The naming convention for each output is filename_sheetname.csv. We import Pandas library that we alias as PD, then OS library that interacts with the operating system. We use it to list all files in a directory and build a complete file path. And lastly, the Pathlib library that works with file paths. We define two path variables: excel_dir, the folder where our Excel files are stored, and output_dir, where we save the converted CSV files. We open the Excel file using the read_excel function, where as a first argument, we define the full path, and we set sheet name to None so that Pandas will read all sheets at once. We save the current sheet as a CSV file using to_csv function, and then we set index to false so that Pandas won't add an extra row number column to the output.
6. Most Common Order Status
Spark is a big data framework that processes massive amounts of data across multiple machines. Instead of tables, Spark uses data frames. We are given only one file, orders.csv, with 5,000 records. Each order has a status, like completed, canceled, ongoing, and so on. Our job here is to find which status appears most frequently. There are two types of transformations, narrow and wide. In narrow transformation, each row on the left executor goes directly to the row on the right executor. It means that no data moves between executors, and each partition stays on the same machine and gets processed independently. But when it comes to wide transformations, rows from one executor can end up on a completely different executor. Here, data is able to move between machines, and this is called a shuffle. The only problem is that wide transformation requires more network traffic and more time. When we use group by, we do the wide transformation because it makes the rows with the same status move onto the same executor. Count finds the number of rows in each group, and ordering by count, ascending set to false, which means that everything is sorted in descending order.
7. Employee Pay with Overtime
WITH calculated AS (
SELECT
e.employee_id,
e.name,
e.position,
CASE
WHEN p.hours_worked <= 40
THEN p.hours_worked * p.hourly_rate
ELSE
(40 * p.hourly_rate) + ((p.hours_worked - 40) * p.hourly_rate * 1.5)
END AS pay
FROM {{ ref("employees") }} e
INNER JOIN {{ ref("payroll") }} p
ON e.employee_id = p.employee_id
)
SELECT * FROM calculated
8. Active Subscriptions for a Video Streaming Platform
WITH normalized_subs AS (
SELECT
user_id,
start_date,
COALESCE(end_date, '9999-12-31'::DATE) AS end_date
FROM {{ ref("subscriptions") }}
),
active_watches AS (
SELECT
w.user_id,
w.watch_duration
FROM {{ ref("watch_history") }} w
INNER JOIN normalized_subs s
ON w.user_id = s.user_id
WHERE w.watch_date >= s.start_date
AND w.watch_date <= s.end_date
)
SELECT
user_id,
SUM(watch_duration) AS total_watch_time
FROM active_watches
GROUP BY user_id
9. Extract Product Discounts
WITH extracted AS (
SELECT
store_id,
product_name,
category,
units_sold,
description,
COALESCE(
TRY_CAST(
REGEXP_SUBSTR(description, '\[(\d+)% off\]', 1, 1, 'e', 1)
AS FLOAT
) / 100,
0
) AS discount
FROM {{ ref("products") }}
)
SELECT * FROM extracted
10. Daily Active User Reporter
Objective: Determining Unique Daily User Logins with SQL
When faced with the requirement to determine the number of unique users who logged in each day from a set of login events, you can achieve this with a well-structured SQL query. Here's a comprehensive explanation of how you can approach t...
🔒 Premium Content
Detailed explanation and solution available for premium members.
11. Non-overlapping Intervals
def erase_overlap_intervals(intervals: list[list[int]]) -> int:
intervals.sort(key=lambda x: x[1])
removals = 0
prev_end = float("-inf")
for start, end in intervals:
if start >= prev_end:
prev_end = end
else:
removals += 1
return removals
12. Flight Delay Pattern Detector
Crafting the Perfect SQL Query for Categorizing and Analyzing Delayed Flights by Airline
Objective
Develop an SQL query to categorize delayed flights based on delay duration and determine both the frequency and percentage share of each delay category for each airline.
Query Explanati...
🔒 Premium Content
Detailed explanation and solution available for premium members.
13. Dropdown Selection Testing
Master dropdown testing with Selenium. Learn option enumeration, selection validation, and dropdown interaction techniques....
🔒 Premium Content
Detailed explanation and solution available for premium members.
Ready to Practice More?
Explore interview questions from other companies or try our hands-on labs to build practical experience.