
My Expedia SDE interview came from a LinkedIn apply.
I’m really grateful to Linkjob.ai for helping me pass my interview, which is why I’m sharing my OA questions and experience here. Having an undetectable AI coding interview assistant during the OA indeed provides a significant edge.
The Expedia OA is conducted on HackerRank and consists of three problems. The difficulty wasn’t high, but they did require some careful reading.
This article is part of the HackerRank series. If you're interested in other articles in this series, feel free to read: Microsoft HackerRank test, JP Morgan HackerRank test, Stripe HackerRank online assessment.

Difficulty: Very easy. As long as I understood the triangle area formula and basic coordinate rules, I could solve it instantly.
When I saw this question, my first reaction was that it was basically a free point. The problem stated that at least one side is parallel to either the x-axis or the y-axis, so the idea became very straightforward: identify that parallel side as the base, then compute the corresponding height.
For example, in the sample coordinates [0,0], [3,5], [0,2], two points share the same x-value (0,0 and 0,2), which means this side is vertical (parallel to the y-axis). The base is the absolute difference of their y-coordinates, 2 − 0 = 2. The height is the absolute difference between the third point’s x-coordinate and that shared x-value, 3 − 0 = 3. Then the area is:
(base × height) / 2 = 3 × 2 / 2 = 3
My steps were:
Traverse the x-values to check if any two are the same (a vertical side), or traverse the y-values to find duplicates (a horizontal side).
For duplicated x-values, the difference in y gives the base, and the difference between the third point’s x and the duplicated x gives the height.
Plug the values into the formula. Since the output is guaranteed to be an integer, there is no need to worry about decimals.

Difficulty: Medium. The main idea was not complicated, but it required handling the process of enumerating possible k values and calculating the required additional cards carefully. It was easy to make mistakes on edge cases.
Initially the question felt slightly confusing, but the goal became clear: find a number of packs k ≥ 2 such that for every card type, (original count + added count) becomes divisible by k, while minimizing the total number of added cards.
For example, with cardTypes = [4,7,5,11,15], if k = 2:
4 → 4 (add 0), 7 → 8 (add 1), 5 → 6 (add 1), 11 → 12 (add 1), 15 → 16 (add 1), giving a total of 4 added cards.
Trying k = 3 requires even more additions, so k = 2 is the optimal choice.
My approach was:
Determine a reasonable range for k. The minimum is 2, and the maximum does not need to exceed max(cardTypes) plus possible additions. In practice, going up to about twice the maximum card value is enough, because larger k values always result in more added cards.
For each possible k, compute the number of added cards for each card type using the formula:
add = (k − (card % k)) % k
For example, if card = 7 and k = 2, then (2 − 1) % 2 = 1.
Sum the additions for each k and record the minimum.
Some details to watch out for:
n can be as large as 1e5, but the maximum card value is only 500, so the k range does not need to be too large (going up to 1000 is already enough). Also, when card % k is 0, the formula naturally returns 0.

Linkjob AI worked great and I got through my interview without a hitch. It’s also undetectable, I used it and didn't trigger any HackerRank detection.
If you don't trust the stealthiness of AI interview assistants on rigorous platforms like HackerRank, I recommend reading HackerRank's guide on how to cheat to learn how to bypass detection.

Difficulty: Medium. This was a classic connected components problem in an undirected graph, solvable with either DFS or BFS. It is a very common pattern.
I immediately recognized that the task was to count the number of connected components. Each person is a node, and related[i][j] = ‘1’ represents an undirected edge. Since the relationship is transitive, the goal is simply to count how many connected groups exist.
In the sample, nodes 0 and 1 are connected, forming one group. Node 2 is only connected to itself, forming another group. So the answer is 2.
My steps were:
Initialize a visited array to keep track of which nodes have been processed.
Iterate over each node i. If node i has not been visited, run DFS or BFS to mark all nodes reachable from it.
Each DFS or BFS traversal corresponds to one connected group. Increase the count after each traversal and return the total at the end.
A few notes:
related[i] is a string, so I needed to compare related[i][j] with the character ‘1’.
n can go up to 300, and since DFS or BFS runs in O(n²), at most 90,000 operations are required, which is well within limits.

Expedia’s HackerRank assessment focuses on practical engineering skills and business-scenario alignment rather than pure algorithmic contests. The question types and emphasis are quite consistent.
Coding questions only: No multiple-choice questions. Everything is hands-on coding in Java, Python, or C++. I recommend Python for efficiency.
Implicit evaluation: Beyond correctness, readability and edge-case handling matter. Since it’s a travel platform, my code needs to handle large-scale user traffic and extreme inputs.
Expedia rarely tests obscure algorithms. Most problems come from business-driven classic patterns. The common types generally fall into three categories:
String/Hash Map tasks: Typically counting with hash maps or sorting with two pointers.
Dynamic Programming/Greedy: Usually tied to “cost optimization.” The state transitions are straightforward, nothing overly complicated.
Array/Linked List operations: Focused on careful condition checks and loop logic.
Strong business context: All problems are wrapped in travel scenarios. For example, using “hotel ID” instead of generic integers, or “number of nights” instead of array length. I need to clarify the business logic before coding.
Time management matters: About 30 minutes per problem. Spend the first 10 minutes understanding the input-output format. Last year, someone in my cohort misread whether the date format was MM/DD or DD/MM and had to rewrite everything, causing a full time overrun.
Minimal environment hints: HackerRank’s IDE provides only basic syntax suggestions and no preview test cases. I need to write my own edge-case tests.
Here are the resources I used most:
LeetCode for easy and medium problems like longest substring without repeating characters, minimum sum path in a triangle, and linked list operations.
Geeks for Geeks for in-depth explanations and practice questions.
My old class notes for Operating Systems and OOP theory.
YouTube tutorials for quick refreshers on tricky topics.
I didn’t just read theory, I practiced coding every day. Here’s what worked for me:
I solved hashmap implementation problems and balanced brackets questions.
I tried equilibrium point and array sorting challenges with constraints.
I used Geeks for Geeks to find new problems and test my solutions.
I timed myself to simulate the real test environment.
For me, mixing theory with hands-on coding made the biggest difference. I kept a notebook to jot down patterns and common mistakes. I also joined online forums to discuss tricky questions with others. When I felt stuck, I switched topics to keep my mind fresh. Consistency mattered more than cramming.
The Expedia HackerRank test changed the way I approach problems. I stopped assuming constraints and began checking every detail in the prompt. Thinking through my steps helped me catch issues earlier and kept the solution structured. Practice with core data-structure problems, including balanced parentheses and grouping logic, proved far more valuable than expected.
The evaluation focused not only on the final answer but also on how I arrived at it. Explaining why I chose a certain approach and acknowledging the trade-offs showed clarity of thought. Demonstrating awareness of alternatives made my reasoning stronger.
I found it helpful to slow down and fully understand the inputs and constraints before writing any code.
Practicing the habit of verbalizing my logic, even when working alone, improved my clarity.
Reviewing common patterns such as bracket validation, map sorting, and grouping elements strengthened my foundation.
When something felt unclear, adjusting examples or revisiting the interpretation kept me on track.
I learned not to jump into coding before the problem was fully understood. Working in silence made the logic messy, while articulating each step kept the solution focused. I also realized that relying only on textbook-style patterns can be limiting, since many scenarios require practical, flexible thinking.
Yes, I could pick from several languages. I chose Python because I felt most comfortable with it.
It is technically allowed to paste code, but I don’t recommend it. HackerRank can be sensitive to indentation and formatting, and a local IDE doesn’t provide the same input-output environment. After pasting, you may find mismatches that waste even more time. There’s also uncertainty about whether HackerRank might treat large pastes as potential cheating, so it’s safer not to rely on copy-paste.
2026 Nvidia HackerRank Test: Questions I Got and How I Passed
How I Cracked 2026 Citadel HackerRank Assesment Questions
My IBM 2026 HackerRank Assessment: Real Questions & Insights
My 2026 MathWorks HackerRank Assessment Questions & Solutions
Questions I Encountered in 2026 Goldman Sachs HackerRank Test