Indeed | SDE2 | Hyderabad | October 2022 [Accepted]
Summary
I had a fantastic interview experience with Indeed in Sept-October 2022 for an SDE2 role in Hyderabad, successfully navigating multiple DSA, System Design, Code Review, and Behavioral rounds to receive an offer.
Full Experience
Phone Screen
My interview process began with a phone screen, which I found to be a fantastic experience, one of the best among all the firms I interviewed with. For the first 20 minutes, we discussed system design and architecture concepts. Following that, I worked on Data Structures and Algorithms (DSA) questions. I managed to fully solve two DSA problems and started on a third before my time ran out. The expectation in this round is to solve as many questions as possible within the 30-35 minute DSA slot. I was informed that solving one question fully and starting a second is generally enough to clear this K*r*t round.
After two days, the recruiter informed me that I had successfully cleared the phone screen, and they would proceed with scheduling the next set of interviews, which at Indeed, are taken in two phases.
Phase 1 Onsites
Round 1 (DSA)
This round focused on a question about efficiently storing a binary tree in memory. The interviewer challenged me to optimize the space typically used by a struct TreeNode, which stores both left and right pointers along with the value. I proposed representing the binary tree as an array, and our discussion revolved around this approach, exploring its applicability and implications for both complete and sparse trees.
Round 2 (System Design)
I was tasked with designing a company review system for Indeed. This is a commonly asked system design question, and I believe I performed quite well. The interviewer was very supportive and helped guide me through the discussion, covering requirements, various services, API contracts, database choices, and the tradeoffs inherent in my design decisions.
The recruiter contacted me two days later to confirm I had cleared Phase 1 of the onsite rounds and would be moving forward to the second phase.
Phase 2 Onsites
Round 1 (DSA)
This round presented a truly HARD question, which was a modified version of a hard-level LeetCode problem. The problem statement was: "Given m sorted lists with each having an average size of n (no duplicates within the same list), find out the most frequently occurring k elements and return them sorted by the frequency. Note: Duplicates don't occur in the same list, but they can surely come up across the lists." An example provided was for m=4, k=2 with lists [1, 2, 4, 8], [1, 2, 3], [1, 3, 5, 11, 12, 16], and [1, 2], where the expected answer was [1, 2].
My initial, brute-force approach involved iterating over all lists and storing element frequencies in a map, resulting in O(m * n) time and O(m * n) space complexity. The interviewer then immediately posed a follow-up: what if the lists were extremely large, so much so that they couldn't all fit on a single node? This required me to optimize the space complexity. I came up with an optimal solution using two heaps, achieving O(m + k) space complexity, which I then coded within the allotted time. We also discussed a few follow-up scenarios related to this solution.
Round 2 (Code Review)
This round is unique to Indeed. I was given access to a link displaying a side-by-side diff of a Pull Request containing a couple of files. My task was to review the PR and provide comments as I would during a normal code review. I selected Java as my language. I felt I performed fairly well, though honestly, I'm not exceptionally proficient in Java, despite using it at work. This round went okay-ish.
Round 3 (Resume Deep-Dive)
This round was conducted by a senior engineering manager. They asked me to choose one of the projects I had worked on and explain it in detail. I had extensively prepared for such rounds, particularly those focusing on leadership principles, so this discussion went smoothly for me.
Round 4 (Closing Round)
My final round was with a Director of Engineering. They asked some basic behavioral questions and inquired about my overall interview process experience. We also briefly discussed the team they head. It was a 30-minute round, and I genuinely liked both the director and the team.
Two days later, the recruiter verbally informed me that the response was positive and an offer would be extended. I shared the compensation details of another offer I had, and it took about 10 more days for the official offer letter to be rolled out.
Thankfully, the offer arrived just before Indeed announced a hiring freeze, and they specifically assured me that no official offers would be rescinded. I accepted the offer the moment it came out, as the recruiter had indicated there was pretty much no scope for negotiation, and I was also quite tired of giving interviews. I verbally accepted the offer then. As of today, my background verification is complete, and I am excited to be joining Indeed this month.
Interview Questions (6)
The interviewer asked me to optimize the space used when storing a binary tree in memory. Instead of the typical struct TreeNode with explicit left and right pointers and a value, the goal was to find a more space-efficient representation. The discussion then explored how this approach would apply to both complete and sparse trees.
I was tasked with designing a company review system for Indeed. The discussion covered various aspects including requirements gathering, identifying different services, defining API contracts, choosing appropriate databases, and analyzing the tradeoffs of different design decisions.
Given m sorted lists, each with an average size of n (no duplicates within the same list), the problem was to find the k most frequently occurring elements and return them sorted by frequency. Duplicates were allowed across different lists but not within the same list. An example provided was for m=4, k=2 with lists: [1, 2, 4, 8], [1, 2, 3], [1, 3, 5, 11, 12, 16], [1, 2], where the expected answer was [1, 2]. A crucial follow-up involved optimizing space complexity if the lists were extremely large and couldn't fit into a single node's memory.
This round, unique to Indeed, involved reviewing a Pull Request. I was given access to a link showing a side-by-side diff of a PR with a couple of files. My task was to provide comments as I would typically do during a professional code review, using Java as the chosen language.
A senior engineering manager asked me to select one of the projects from my resume and explain it comprehensively, covering its design, implementation details, challenges, and impact.
During the closing round with a Director of Engineering, I was asked some fundamental behavioral questions. Additionally, the director inquired about my overall experience with the interview process.
Preparation Tips
My preparation involved extensive practice, particularly for Data Structures and Algorithms, and thorough preparation for behavioral questions, especially those aligned with leadership principles. I believe this comprehensive approach was key to my success.