Expedia Interview Experience (Bangalore) | SDE-2
Summary
I recently interviewed with Expedia Group for an SDE-2 role in Bangalore, which involved an online assessment, two DSA rounds, a Low-Level Design round, and a Behavioral/HR discussion. I successfully navigated through various coding challenges and a system design problem.
Full Experience
I recently interviewed with Expedia Group for an SDE-2 role in Bangalore, and I'd like to share my experience, hoping it helps others in their preparation journey.
Process Overview
The interview process consisted of five stages, starting with an Online Assessment and followed by four onsite rounds.
1. Online Assessment (HackerRank)
This was a standard Online Assessment featuring a couple of DSA-based coding questions. I focused on demonstrating awareness of time complexity and writing clean, efficient code, which I believe was crucial.
2. Round 1 – DSA
In this round, I was given two coding challenges:
- Longest Consecutive Sequence in an Array: I approached this by using a HashSet, achieving an O(n) time complexity. We had a follow-up discussion on further time and space optimizations.
- Reorder Linked List: For this problem, my strategy was to first find the middle of the linked list, then reverse its second half, and finally merge the two halves. The interviewer was keen on discussing edge cases and various testing scenarios.
Throughout this round, the interviewer particularly focused on the clarity of my approach and my coding fluency.
3. Round 2 – DSA
The second DSA round also involved two questions:
- Longest Substring with Distinct Characters: I solved this using a sliding window approach. I made sure to emphasize how I maintained indices and handled character repeats efficiently.
- Find Minimum in Rotated Sorted Array: I implemented a modified binary search algorithm for this. I spent time explaining the invariants of my approach and how I would handle different edge cases, including situations with duplicate elements.
Here, the emphasis was on explaining why my chosen data structure or algorithm was optimal for the problem and stepping through various edge cases.
4. Round 3 – LLD (Low-Level Design)
This round was a design discussion. I was asked to design an API that could determine whether a product could be delivered within 2 days, given a pincode. Our discussion covered several key aspects:
- The core logic design for distance and time validation.
- Effective data modeling strategies.
- How to ensure the system’s extensibility for multiple regions or varying service levels.
- Approaches for handling API failures and ensuring scalability.
5. Round 4 – Behavioural / HR
The final round was behavioral, where we discussed my past work experiences, challenges I had faced, and scenarios involving collaboration. The interviewers seemed to be looking for demonstrations of thoughtfulness and ownership in my responses.
Interview Questions (5)
Given an unsorted array of integers, find the length of the longest consecutive elements sequence. I solved this using a HashSet for O(n) time complexity, followed by a discussion on further time and space optimizations.
Given a singly linked list L: L0→L1→…→Ln-1→Ln, reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→…. My strategy was to find the middle of the linked list, reverse its second half, and then merge the two halves. We also discussed various edge cases and testing scenarios.
Find the length of the longest substring in a given string that contains all distinct characters. My approach used a sliding window technique, focusing on maintaining indices and handling character repeats efficiently.
Given a rotated sorted array, find the minimum element. I used a modified binary search variant, explaining the invariants of my approach and how I would handle different edge cases, including situations with duplicate elements.
Design an API that determines whether a product can be delivered within 2 days, given a pincode. Key aspects discussed included the core logic for distance/time validation, effective data modeling, ensuring extensibility for multiple regions or varying service levels, and approaches for handling API failures and ensuring scalability.
Preparation Tips
Based on my experience, I'd suggest focusing on several key areas:
- DSA Patterns: I found it extremely helpful to brush up on array, linked list, sliding window, hashing, and binary-search patterns, as these appeared frequently across my coding rounds.
- Trade-offs: Be prepared to explain trade-offs clearly, especially when discussing low-level design decisions. Understanding the implications of your choices is crucial.
- Communication: Keep your communication crisp and structured. Expedia's interviewers clearly value candidates who can articulate their thoughts clearly.
- Narrate Your Reasoning: Don't just code silently. I made sure to narrate my reasoning process as I went, explaining my thought process, which I believe helped them understand my problem-solving approach.