Got a call from a recruiter for Flipkart SDE 2
Round-1 (Machine Coding Round):
Here, we have to bring our own laptop with our preferred IDE already installed to code.
Design a computer system with multiple levels of Cache.
The caches are tiered with three levels. L1, L2, L3, we can add more or remove levels if required.
Each of cache has distinct properties like capacity, read time, write time and evictions
The cache should support two primary operations:
Command : Behaviour
Get Key -> Start with lowest tier L1. Check if key exists. If found, propagate the value upwards. If not found, go to deeper level L2
Set Key -> Check the lowest tier L1, check if exists, if not add it there and proceed to deeper level. If already in deeper level, bounce back from there.
STATS -> Avg read time of last ‘N’ operations, Avg write time of last ‘N’ operations, free capacity, total eviction count
We’ll be given 90 minutes. Can ask for additional 15 minutes if required for wrapping it up.
The code should be demoable, functionally complete, Edge case handling, modularity, extensability, shouldn’t be monolithic etc.
Interviewer makes sure that you understood the question completely before you start the assessment. Make sure to ask all the clarifying questions before start to think and solutionize.
1. Do not get nervous
2. Try to come up with LLD and how the code looks like in the first 15-20 minutes. Double think about edge cases and dry run an example on paper. No need to code anything for the 15-20 minutes.
3. After getting a picture of how you are going to implement it, start writing code and cover most of it in the next 1 hour. Add drivers and tests to check the correctness of your code in the last minutes, effort should be spent in making it demoable and functionally complete.
4. Explain to the interview of why you wrote a class and structure your code in a particular way, everyone’s code will be different, it is important that we explain our reason behind taking one approach over another.
Round-2 (Problem Solving):
1) Similar problem, https://www.geeksforgeeks.org/minimum-iterations-pass-information-nodes-tree/
Asked to first tell the approach, time complexity, space complexity and then code.
Similar to this but different domain.
3) Two more questions. Don’t remember the questions exactly but they pretty much fall under easy/medium level in GFG. Asked just the approach no need to write code.
Asked time and space complexities for all.
1. Prepare well, cover the entire breadth of topics on GFG and Cracking the Coding interview, should be able to answer almost all the questions
2. Writing code on paper, thinking out loud when preparing helps a lot.
Round-3 (Hiring Manager Round):
1) A little in depth discussion on previous projects. scalabilities, RPS of service you’ve developed, previous team dynamics (how many member team?, what responsibilities you took up? etc)
2) Challenging project that you have done, explain it.
3) Team conflict and team management. Any conflicts previously, how did you resolve those etc. Any conflicts with manager?
4) What is the recent most thing you’ve learnt and got excited about?
5) Why Flipkart? what are you looking for? What excites you the most?
6) What are you strengths and weaknesses? (Technically). Are you doing anything to improve weaknesses?
And a lot of other questions on similar lines, mostly related to the work, personality, handling situations etc
This is more of a cultural fit round.
1. You should be able to talk qualitatively at length about the work you’ve done in the past.
2. Most of the times, context gets missed when you start explaining previous projects (or problems you have solved previously). In those cases, first define the problem briefly, if possible try to map it to a generic domain, then start explaining how you approached, how much time took and what impact it made etc.
Round-4 (Design Round):
Design a flight booking system.
This is usually around 1 – 1.5 Hours. It went for almost 2 hours.
This is the most interesting round where, we can discuss in length about everything and brain storm on solving the problem at hand along with the interviewer. It would be responsibility of the interviewee to bounce ideas from the interviewer and steer the discussion in that direction.
Started with scoping, requirement gathering, what is expected to solve, can I ignore or add extensibility for this feature etc
Starting with HLD, components you are going to use, explanation and justification for picking one over the other, DBs, message brokers, circuit breakers, where all sync flows, where async flows, gateways, proxies, index stores if required etc..
DB Schema, spend time on this as data modelling is important if the functionally is to be met.
The flow of site’s working, what APIs are there and how are they going to work, how DB entries are made, how bookings are made, handling race conditions, consistency
Take one component/flow, dive in depth into it how that is implemented, its LLD. Mostly OOPs based LLD.
Take one component down and how the system in going to react? consistency over availability? achieving 99.9% availability? Over the envelope calculations RPS, orders per minute, how many flights? how much data are we going to need? data growth issues, scaling issues etc..
1. This round can go anywhere, preparation helps a lot.
2. Try doing different problems with different domains, like cab booking, food delivery, multiplayer chess, custom message broker etc.. The more we do, the easier it gets.
3. Get an overview of HLD concepts like message brokers, load balancing, SQL Vs NoSQL, different types of cache patterns, CAP theorem etc
refer this https://github.com/donnemartin/system-design-primer
4. Doing mock interviews helps a lot. If you are giving interviews in a streak, it will help a lot, after first few interviews, your design round will definitely improve.
Thanks to the entire GeeksforGeeks community for all the resources and help.