MakeMyTrip Interview Experience 2019
I applied to MakeMyTrip (MMT) through referrals from one of my friend who worked there. I had one and eight months experience prior to this interview.
Round 1: Machine Coding Round
Design a banking system which allows a user to 1. Create an account 2. Withdraw or deposit funds 3. Check account balance 4. Deactivate account. Expose REST APIs in relation to these functions. No need of using a database, perform all calculations in-memory. Time limit was 1.5 hours. In the interview / review related to this round I was asked about how will you handle concurrency issues while doing multiple transactions involving withdrawal / deposit or transferring of funds from one account to another (I was not able to answer this).
Round 2: Problem Solving – Data Structures / Algorithm Round
Question 1 : Suppose there are some speakers who will speak in an event, each of these speakers is represented by one of the characters from A-Z. The event spans N number of days and only one speaker speaks each day. You know the sequence in which the speakers are going to speak, that is, you know their schedule. You are planning to attend this event for M continuous days. What is the maximum number of distinct speakers that you can listen to in these M days.
Question 2 : Given two sorted arrays containing integers ( you can assume all of them are positive ) find the median in lowest time complexity. ( This is a well known problem, you can perhaps find it in here)
Article Link: https://www.geeksforgeeks.org/median-of-two-sorted-arrays-of-different-sizes/
Question 3 : There are some events, each represented by a character or a number. An event may have some dependency events, which means an event can take place only if their dependencies are completed. The dependency lists of these events are not carefully designed. There may be a circular dependency, like A is dependent on B, B is dependent on D and D is dependent on A. For a given event, list down all its dependencies and find out if there is a circular dependency.
Article Link: https://www.geeksforgeeks.org/find-whether-it-is-possible-to-finish-all-tasks-or-not-from-given-dependencies/
Question 4 : Given a linked list having nodes each containing an integer value, you only have a reference to a node, say X. Delete node X from the list. ( This too is a well known problem)
Article Link: https://www.geeksforgeeks.org/in-a-linked-list-given-only-a-pointer-to-a-node-to-be-deleted-in-a-singly-linked-list-how-do-you-delete-it/
Round 3: System Design Round
Question 1 : This was a more collaborative round. You have to design a system for managing a parking lot. Like, your program should enable the person present in the parking entrance to effectively handle incoming and outgoing vehicles. I gave a very basic answer, like I designed a system for parking lot with one entrance. The interview asked, how will you handle multiple entrances. I gave a solution for this. Then he added, if you want a vehicle to occupy a space which is near to its entrance, how will you ensure it. There were also some questions specifically related to my solution. Like once I presented a solution which made the allotment of a parking space was an asynchronous event, the interviewer wanted me to present a synchronous solution.
Question 2 : Theory based questions related to design patterns, SOLID principles, dependency injection / inversion control. ( I was only able to partially answer the last one)
After this interview, I met one of the HRs and I was offered a position.