Flipkart | SDE 2 (2.5 years exp) | June 2024 | Passed
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.