Summary
I interviewed for the SDE-2 role at Flipkart across five rounds, covering machine coding, DSA, HLD, and HM. Despite clearing all technical rounds and having positive interactions, I was ultimately ghosted by the recruiters regarding the final outcome.
Full Experience
My interview journey for the SDE-2 role at Flipkart comprised five intensive rounds. It was an insightful experience, though the outcome was quite unexpected.
ROUND 1: Machine Coding (120 minutes - 90 mins coding, 30 mins setup & explanation)
This round focused on Low-Level Design. I was tasked with implementing a flight booking system. The core functionalities required were:
- Returning flights with the minimum cost.
- Returning flights with the minimum number of hops.
The system needed to allow an admin to add flights with details like source, destination, flight name, and price. Users would then query for flights between two cities based on the above criteria. A bonus extension involved adding a feature to filter flights based on meal availability. I spent a good amount of time setting up and then explaining my design choices.
ROUND 2: Machine Coding Evaluation (45 minutes)
In this round, I had to explain my design and implementation from Round 1 to the interviewer. We discussed how I approached the problem and the rationale behind my decisions. The interviewer also asked me to consider adding more functionalities, specifically using BFS to find all available flights, and we touched upon design patterns and modularity for future improvements.
ROUND 3: DSA Round
This round presented two LeetCode-style Data Structures and Algorithms problems, both of which I categorized as medium difficulty. I was able to solve both of them.
- The first problem was Next Greater Element I.
- The second problem was a variant of the unbounded knapsack problem. The scenario was: "You are going on a trip and you have a total journey duration 'D'. You are given a list of songs with their durations, and you need to listen to the maximum number of songs within that duration, with songs being repeatable."
Clearing this round led to an interview call for the next round on the very same day, which was quite encouraging.
ROUND 4: High-Level Design (HLD) Round
The challenge for this round was to design LeetCode. I began by outlining the functional and non-functional requirements. A significant portion of the interview, about 30 minutes, was dedicated to discussing the essential entities required for such a system. We also covered the necessary APIs. Despite having an hour allocated, the interviewer seemed satisfied after our discussion on entities and APIs and indicated that he had enough information.
ROUND 5: Hiring Manager (HM) Round
This round started with a brief introduction from both sides. We then delved straight into the last project I had been working on. I explained everything about it, including the difficulties I faced. During this discussion, the interviewer posed a hypothetical question: "How would you add a notification service to this project?" I explained my approach, mentioning technologies like Kafka and Fluentd, which seemed to satisfy him. Moving forward, he asked several behavioral questions, which were not overly challenging. Towards the end, he told me about his team and their current work. Overall, this round also went smoothly.
After a few days, I reached out to the person coordinating my interviews for feedback. I was told that a recruiter would contact me shortly. This same statement was repeated the following week and even into the third week. Eventually, I was ghosted, despite my attempts to get proper feedback. They simply said they would call and explain everything, but it never happened, and I stopped calling them. With just 2 years of experience, I figured they probably found candidates with more experience.
Interview Questions (5)
Design a low-level system to manage flight bookings. The system should allow an admin to add flights with source, destination, name, and price. Users should be able to query for flights between a source and destination, returning results based on minimum cost and minimum hops. A bonus feature involves extending the system to filter flights based on meal availability.
Given a total journey duration 'D' and a list of songs with their respective durations, find the maximum number of songs that can be listened to within the duration 'D'. Songs can be repeated.
Design the LeetCode platform, including discussions on functional and non-functional requirements, required entities, and APIs. The interviewer focused heavily on entities and API design.
How would you add a notification service to your last project? I suggested using Kafka and Fluentd.
Summary
I recently interviewed at Flipkart for an SDE-1 position and was presented with a Data Structures & Algorithms problem involving detecting duplicate parentheses in a balanced expression. I successfully explained my stack-based approach and provided a C++ solution.
Full Experience
I had a technical interview at Flipkart for the SDE-1 role. The interviewer presented me with a problem to determine if a given balanced expression contains duplicate parentheses. I clarified the problem statement using the provided examples, noting that duplicate parentheses mean a subexpression is enclosed by more than one pair of brackets. I then walked through my thought process, explaining how a stack could be used to efficiently solve this problem by tracking characters and checking for the count of non-'(' characters between matching parentheses. After detailing my approach, I proceeded to implement the solution in C++.
Interview Questions (1)
Given a balanced expression, find if it contains duplicate parenthesis or not. A set of parenthesis are duplicate if the same subexpression is surrounded by multiple parenthesis
Below expressions have duplicate parenthesis -
((a+b)+((c+d)))
The subexpression "c+d" is surrounded by two
pairs of brackets.
Below expressions don't have any duplicate parenthesis -
((a+b)+(c+d))
No subexpression is surrounded by duplicate
brackets.
Summary
I encountered a 2D box nesting problem, similar to 'Russian Doll Envelopes', during my Flipkart SDE-1 interview, which required a specific sorting strategy followed by a Longest Increasing Subsequence approach.
Full Experience
During my interview at Flipkart for the SDE-1 role, I was presented with a problem involving N 2D boxes, each having a height (h) and a width (w). The rule was that one box could fit inside another if both its dimensions were strictly smaller (wi < wj and hi < hj). The goal was to find the longest nesting sequence of boxes. I immediately recognized this as a variation of the Longest Increasing Subsequence (LIS) problem but adapted for two dimensions. My approach involved a specific sorting strategy: first, sort all boxes by their width in ascending order. Crucially, if two boxes shared the same width, I sorted them by height in descending order. This clever trick prevents boxes of the same width from being considered for nesting when finding the LIS based on height. After this sort, the problem simplifies to finding the Longest Increasing Subsequence of the heights.
Interview Questions (1)
There are N boxes which are 2D in shape. Each box has 2 dimensions, Height denoted by h and Width denoted by w. A box can fit inside another box if both the dimensions are strictly smaller. Mathematically, a box i can fit in box j if wi < wj and hi < hj. A nesting sequence of K length is defined as a sequence of indices p1, p2,….., pk for some integer k ≥ 1 such that pi denotes the element positions from the original array, and the sequence follows the following conditions:
Summary
I encountered a challenging problem during my Flipkart SDE-1 interview that involved maximizing the number of filled baskets given N balls of various colors and a requirement of K different colors per basket.
Full Experience
During my Flipkart SDE-1 interview, I was presented with a complex algorithmic problem. The core task was to determine the maximum number of baskets that could be filled. A basket was considered filled if it contained at least K balls of different colors, and I had N balls, with their colors provided in an array. I recognized this as a problem suitable for a binary search approach on the answer. My strategy involved setting left = 0 and right = N / K and then checking if a mid number of baskets was achievable. The check involved iterating through the frequency map of colors; for each color, I could use at most mid balls across all mid baskets. If the total balls used (balls += min(mid, it.second)) met the condition (balls >= (k * mid)), I knew mid was possible and tried for more; otherwise, I reduced my search space.
Interview Questions (1)
You are given N balls and an integer K. The color of each ball is given in an array. A basket is filled if it contains at least K balls of different colors. Find the maximum number of filled baskets you can get if you optimally put the balls in the baskets.
Summary
I successfully interviewed for the SDE 3 role at Flipkart in Bangalore and received an offer. The process included rounds focused on machine coding, data structures and algorithms, system design, and a hiring manager discussion.
Full Experience
I underwent a comprehensive interview process for the SDE 3 role at Flipkart in Bangalore. The first round was a 90-minute Machine Coding challenge where I had to design an in-memory message streaming service supporting multiple topics, producers, and consumers, ensuring order, thread safety, and real-time streaming.
Following this, Round 2 was a 30-minute Machine Coding Evaluation, where my solution from the previous round was thoroughly discussed, focusing on modularity, OOP principles, design patterns, and concurrency.
Round 3 was a 60-minute Problem Solving / Data Structures round. I was asked to solve two LeetCode problems: Course Schedule II and Design a Stack With Increment Operation.
The System Design round, lasting 90 minutes, required me to design a quick commerce system similar to Flipkart Minutes.
Finally, the HM Round was a 60-minute discussion where we delved into my past projects and my role in them, along with deep dives into system design topics like Caching, CDNs, and Networks. I was ultimately selected for the role.
Interview Questions (4)
Design a working MVP for an : In-memory message streaming service supporting multiple topics, producers, and consumers. Ensure that the messages maintain order within partitions, offers thread safety, and enables real-time data streaming.
Design a quick commerce system like Flipkart Minutes.
Summary
I successfully navigated a four-round interview process for an SDE 2 role at Flipkart in June 2024, which included a machine coding challenge, data structures and algorithms, a low-level system design discussion, and a hiring manager round, ultimately leading to an offer.
Full Experience
I applied for the SDE 2 position at Flipkart through LinkedIn. The interview process consisted of four distinct rounds.
Round 1: Machine Coding
This round began with a 30-minute briefing, followed by 1 hour 30 minutes for coding, and concluded with a 30-minute evaluation. I was given a prompt to design a restaurant management system. For my approach, I utilized several standard design patterns:
- A Repository interface with an in-memory implementation to handle all database-related APIs.
- A Singleton pattern for the in-memory implementation to ensure a single instance.
- A Strategy pattern for implementing the filtering logic, such as by veg/non-veg or category.
I found that thoroughly walking through the complete user journey in my head before explaining it to the evaluator was quite helpful for structuring my thoughts.
Round 2: Data Structures and Algorithms (1 hour)
This round involved three problems: an easy one from LeetCode to Design HashSet, a medium problem on Longest Substring Without Repeating Characters, and another medium problem on Lowest Common Ancestor of a Binary Tree. Since I had solved all of these problems before, I didn't find this round particularly difficult. I explained my approach by starting with a brute-force solution and progressively optimizing it, detailing each step of the refinement. I attribute my ability to perform this step-by-step optimization to consistently following the Take You Forward (Striver) YouTube channel. Additionally, practicing dry runs on a code editor or notepad before the interview proved invaluable, especially since I was asked to write only pseudo-code.
Round 3: Design Round (1 hour)
This round was intended to cover both Low-Level Design (LLD) and High-Level Design (HLD), but the interviewer focused almost exclusively on LLD. I was asked to design BookMyShow, following specific steps: identifying actors, listing use cases, concurrently writing APIs and business entities, and finally designing the database schema. In my professional work, I usually integrate these steps in a more fluid, non-linear fashion, so adhering to a strict linear progression was quite challenging. The interviewer frequently interrupted my thoughts when I tried to jump ahead to class or database design. The interview, originally scheduled for an hour, extended to 1 hour 40 minutes! Aside from the database design, I felt this round was somewhat redundant, almost a repeat of Round 1 but with less freedom to articulate my thought process and solutions.
Round 4: Hiring Manager (1 hour)
This interview was entirely based on my resume and previous work experiences, with a strong focus on my current job. The hiring manager was particularly interested in the LLD aspects of the features I had implemented, so I explained the database design of those projects in detail. This was followed by a series of common behavioral interview questions such as "What are your Strengths and Weaknesses?", "Why are you switching?", "How do you keep yourself updated?", and "Explain one of the technologies you recently learned." The round lasted for an hour.
The response time between each interview round typically ranged from 1 to 3 days, and the final salary negotiation process took almost a week. The HR team was quite responsive throughout, which made the overall experience hassle-free.
Interview Questions (5)
Design a system for managing a restaurant. The system should handle the following functionalities:
- Allow the restaurant admin to define the number of tables.
- Allow restaurant admin to add, update, or remove items from the menu. Each menu item should have attributes such as name, price, veg / non-veg and category (starter, main course, dessert).
- Allow customers to browse the menu and allow filtering on factors (veg / non-veg, category), add items to their order, specify quantities, and place the order.
- Allow restaurant admin to manage tables in the restaurant as in number of tables.
- Calculate the total bill for each order, including taxes and any additional charges. Provide options for customers to pay the bill via various payment options, such as cash, credit/debit card, or online payment (card payment levy additional charges).
Bonus Functionality:
- Provide a system for kitchen staff to view incoming orders, mark them as prepared, and notify wait-staff when orders are ready for serving.
- Allow multiple orders for the same table (AddItems even after 1 order was placed).
Design the BookMyShow system, with a strong focus on Low-Level Design (LLD). The interviewer expected a step-by-step approach:
- Identify all key actors in the system.
- List down comprehensive use cases for each identified actor.
- Concurrently define APIs and business entities based on the use cases from step 2.
- Design the database schema for the system.
Preparation Tips
For Data Structures and Algorithms, I highly recommend "Take You Forward (Striver)" on YouTube. With about 10 days before the interview, I dedicated myself to solving or reviewing 10-12 problems daily. I also completed around 10 mock assessments under the LeetCode "Interview" tab.
For System Design, I followed Gaurav Sen on YouTube. However, I observed that for SDE 2 roles, the focus tends to be almost entirely on Low-Level Design (LLD), as evidenced by 3 out of 4 rounds testing LLD concepts.
Summary
I successfully interviewed for an SDE-1 role at Flipkart, navigating through multiple technical rounds focused on data structures and algorithms, followed by a managerial discussion, ultimately securing an offer.
Full Experience
I initiated my application for the SDE-1 position at Flipkart through a form circulated by their HR on LinkedIn.
Round 1 (Online Test)
The first stage was an online test on the SHL platform, lasting 90 minutes. It comprised three coding questions, primarily focusing on graph and dynamic programming problems. I passed this round and received a selection email after about 10 days, with the subsequent technical rounds scheduled shortly thereafter.
Round 2 (PS/DS Round)
This round involved two problem-solving questions. I managed to solve both, dedicating about 15-20 minutes to the first and around 30 minutes to the second. I received confirmation of clearing this round on the same day, with Round 3 scheduled for the very next day.
Round 3 (PS/DS Round)
Three questions were posed in this round. For the first question, I spent considerable time articulating my thought process, moving from a brute-force solution to an optimized greedy approach. For the second, despite initially proposing a less optimal solution, the interviewer's supportive guidance led me to realize and implement a binary search approach, given the high constraints. The third question was a standard problem that I had practiced extensively, allowing me to directly present the optimized solution and complete it in just 10 minutes.
A few hours later, I received an email informing me that my Hiring Manager (HM) round would be on the same day, though it was later postponed to the next day due to some work emergencies.
Round 4 (HM Round)
The HM round lasted about 50 minutes. The discussion centered around my internships, my favorite projects, and several behavioral questions.
Approximately five days after the HM round, I received the good news of my selection.
Interview Questions (5)
Given an array of non-negative integers arr[], where arr[i] represents the maximum number of steps that can be made forward from that element, find the minimum number of jumps to reach the end of the array (starting from the first element). If an element is 0, then we cannot move through that element.
Preparation Tips
My primary advice for preparation is to diligently solve DSA questions from platforms like LeetCode. Always practice moving from a brute-force solution to an optimized one, and crucially, continuously communicate your approach during the interview. For the managerial round, ensure you thoroughly review your projects and internships to discuss them effectively.