Compass | SDE1 | Hyderabad | April 2022 | [Accepted]
Summary
I applied through LinkedIn and successfully navigated a total of 5 interview rounds for the SDE1 role at Compass in Hyderabad, ultimately receiving an offer.
Full Experience
Overview
My journey at Compass began after applying through LinkedIn. A few days later, a recruiter reached out and scheduled my interview rounds. There were a total of 5 rounds, encompassing coding, system design, technical deep-dive, and a hiring manager discussion.
Round 1: Karat Interview
This round was conducted by a third-party, Karat. The interviewer was very professional. I was given two coding questions. The first question required me to determine if a target string could be constructed from an array of given words; I had to write and execute the code on their IDE. The second question involved a 2D character array and a target string, where I needed to return a 2D vector containing the indices of all characters that form the string. A follow-up to this question specified that each character index could only be used once in a valid sequence. Although I had a good discussion, I couldn't come up with the optimal approach for the second problem. However, the interviewer acknowledged its difficulty and complimented my effort. Karat offers an option to reschedule if you're not satisfied, but I felt my interview went well.
First Technical Round
After receiving positive feedback from Karat, I advanced to the first technical round, which was taken by a Software Engineer with over 10 years of experience. The exact question asked was Valid Parenthesis String (LeetCode 678). I initially proposed an approach, but while writing the code, I identified edge cases where it would fail. I then iterated through 3-4 more approaches over 20 minutes, each time explaining their flaws. Finally, the interviewer suggested a recursive solution, which I implemented and, after a couple of tries, passed all his test cases. I was transparent about its complexity and that it wasn't the optimal greedy approach, thinking I might not clear this round.
Third Technical Round
This round happened on the same day and was led by a Senior Engineer with 13+ years of experience. He presented a problem involving flight availability between different cities and asked me to design an API to check reachability between any two cities. We discussed both DFS and BFS, and I designed and implemented my solution using DFS, which worked perfectly across his multiple test cases. A follow-up asked to find one route with 'x' number of stoppages, which I quickly adapted my code for. The final follow-up was to find all routes with 'x' stoppages; I explained my approach for this, discussing different scenarios. The key to success in this round was writing well-structured code and clearly explaining my thought process while coding.
Hiring Manager Round
After clearing both technical rounds, I proceeded to the Technical Deep Dive (TDD) and Hiring Manager (HM) rounds. The HM round was more of a conversational interview with my potential future manager. We discussed the team's work, their expectations, and my own career expectations and interests. He then posed a database design scenario for a login page and a subscription model, asking about my choice of database and its structure. We also touched upon web servers and my reasons for seeking a new role. It was a very frank and engaging discussion.
Technical Deep Dive (TDD) Round
This round was conducted by Nabarun Mondal, an undoubtedly knowledgeable individual about whom I found little information online. Initially, I felt overwhelmed, but I focused on listening attentively. He asked me to describe a problem I had solved that I was most proud of. I began discussing face verification, and he quickly delved into how I might have solved it and verified the results. He then presented a unique problem: given two distributions, how would I determine if they are similar or not? I clarified my understanding and started articulating my thoughts. The interviewer was incredibly supportive, providing hints and guiding me through the process whenever I got stuck. The primary focus of this interview seemed to be on understanding the problem, asking clarifying questions, and iteratively developing an approach, regardless of initial correctness. I was genuinely amazed to have solved such a unique problem by the end.
Outcome
Despite some self-doubt, especially after the TDD round, the HR provided exceptional clarity throughout the entire process. I received an email at 1:57 PM the next day, confirming that I had cleared all rounds and would receive an offer letter soon. The HR was incredibly supportive, always responding within minutes to my emails and calls. I also want to mention that I found compensation details available on LeetCode's compensation section.
Interview Questions (10)
Given an array of strings (words) and a target string, determine if the target string can be constructed by concatenating any of the words from the given array. The solution required writing code and executing it on their IDE with test cases.
Given a 2D character array (grid) and a target string, return a 2D vector containing the indices of all characters in the grid that form the target string. This requires finding all possible paths where characters connect to form the string.
A follow-up to the 2D character array problem: The same character at a given index cannot be used more than once as part of a valid sequence forming the target string.
Given flight availability between different cities, design an API to determine if there is reachability between two given cities. The solution involved using DFS/BFS.
A follow-up to the flight reachability problem: Find one route between two cities that has exactly 'x' number of stoppages, where 'x' is a user input. I quickly modified my existing code and explained the approach.
A further follow-up: Find all possible routes between two cities that have exactly 'x' number of stoppages. I explained the approach, discussing different possibilities with the interviewer.
Design a database schema for a login page and a subscription model. This involved discussing the choice of database (e.g., SQL/NoSQL) and defining the structure for users, subscriptions, authentication details, etc.
The interviewer asked me to describe a problem I had solved that I was most proud of. I began discussing my experience with face verification, and he then conducted a deep dive into my approach and methods for verifying the results.
Given two distributions, explain how you would find out if they are similar or not. This was a unique problem where the interviewer provided hints to guide me through the solution process. It primarily focused on understanding the problem and iteratively developing an approach.