Round 1:Machine Coding
Problem statement was to design an auction system Foobar where there’ll be sellers who can create auction for item they want to sell. They’ll be specifying lowest and highest bid that can be placed and there will be a participation charge applicable on buyers who’ll be bidding for this auction. System should be able to handle multiple auctions at a time. Seller’s profit/loss will be calculated as : WinningBid + 20% of totalParticipationCostByBuyers – averageOfLowestAndHighestBid. Remaining 80% of participation cost goes to foobar as commission. Winning bid will be highest unique bid. If for a particular auction these are the bids – buyer1 19, buyer2 19, buyer3 17, buyer4 17, buyer5 10 : then buyer5 will be the winner. Following opertaions were required :
- Create a seller
- create a buyer
- auction creation by a registered seller
- bid on an auction by any registered buyer
- bid amount can be updated by buyer
- Withdraw bid
- close an auction and return the winning bid
- profit/loss of any seller till now
Brownie points for this : If any buyer has placed bid on more than 2 auctions than he is preferred buyer. So if in an auction there are two bids buyer1 19 and buyer2 19 and buyer2 is preferred buyer then he is the winner. If both buyer1 and buyer2 are preferred buyers then fall back to next highest bid and apply the same logic.
- Code should be moduler and all responsibilities shouldn’t be jammed in 1/2 classes. Basically they wanted this to be layered : dao layer, api layer like that.
- Code must be working and demoable.
- handle failures gracefully
- Cover corner cases
- Code must be extensible with minimal changes. So keep in mind the future requirements and use Interfaces and contracts wherever possible. You should be knowing SOLID principles and design patterns for this.
Round 2:DS ALGO round
- https://www.careercup.com/question?id=24532662 <– Good one
For last 2 questions, interviewer asked to write code on paper.
Round 3:System Design
Design a system for flipkart for this new idea where flipkart comes up with something like big basket where you cannot purchase things but subscribe to them( For example we subscribe for milk And AppleJuice daily for next 1 month). There will be stores who will be providing these items on flipkart and they’ll also be specifying the location where they can deliver. User can subscribe for items – item can come from any store if user is in location range of the store where item is available. Don’t worry about the store part and logictics part and focus on subscription model.
Your job is to come up with requirements, ask clarifying questions. I talked about microservices on the server side, which all things will your client application handle and how, the database side, payments, what can be made to work asynchronously/synchronously, balancing load on servers, how to handle scale, handle spof, caching, API interfaces, notification to users about discounts, multiple subscription models, which one to choose : SQL vs NoSQL & why, design entities in a manner that it optimizes search queries. He had cross question on everything that I included in my design. He made sure he asked all that he wanted to know, if at all I was going into anything he didn’t want in deep, he stopped me and told we don’t want to dive that deep into this thing and diverted the discussion to what he wanted to drill on.
If there is a point where you are using 1 tech between 2, you should be able to justify on WHY and discuss pros and cons of each.
Round 4:Hiring Manager
Some of the questions that I remember were :
- Where do you see yourself in 5 years?
- If 10-12 years down you career, you plan to become a manager – how would you plan about it from now.
- How do you plan to approach new team members if you get selected. (I was like whatt !! I will just go and talk to them :P)
- Where do you rate yourself out of 5 in system design knowledge?
- What is your weakness?
- If there is a consumer consuming at at the rate of 10 units per sec. & producer producing at the rate of 100 units per sec, how would you handle this?
- You cannot use % / * operator, how will you find the value of x/y upto two decimal places?
- What are you expectation from flipkart and new team if you get selected?
- Why do you want to work on distributed systems, you have enough sources to learn even though you are not working on them?
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more, please refer Complete Interview Preparation Course. In case you are prepared, test your skills using TCS, Wipro, Amazon and Microsoft Test Serieses.