Udaan Interview Experience (2020)
The process consisted of two online rounds followed by two rounds of interviews. Students of all branches were allowed to sit for the test. The CPI cutoff was 6.
Online Round 1
The round was 2 hours long and was conducted on Hackerearth. There was one long question carrying 100 marks in which we had to create a movie ticket booking application. In essence, we had to handle four different types of queries which were (with the input format):
Add a screen. (add-screen <screen-name> <number-of-rows> <total-seats-per-row> <space separated list of aisle seats)
screen-name was the primary identifier for a screen.
Eg: add-screen Screen1 12 10 4 5 8 9 (Registers a screen with name “Screen1” having 12 rows with 10 seats each, the aisle seats being 4, 5, 8 and 9.)
Output: Print “success” if the request succeeds, else print “failure”.
Reserve seats. (reserve-seat <screen-name> <row number> <space separated list of seats to be reserved>)
Eg: reserve-seat Screen1 4 5 6 7 (Reserves seats 5, 6 and 7 in row 4 of Screen1 if they are not already reserved)
Output: Print “success” if the request succeeds, else print “failure”.
Get unreserved seats for a particular row. (get-unreserved-seats <screen-name> <row number>)
Eg: get-unreserved-seats Screen1 4 (Returns the list of unreserved seats in row number 4 of Screen1)
Output: Print a space separated list of all the unreserved seats in the given row of the given screen.
Suggest seats based on user preference. (suggest-contiguous-seats <screen-name> <number of seats> <row-number> <choice of seat number>)
The command suggests contiguous seats to the user based on the user’s preference. It must take aisle seats into account as that decides whether allocating contiguous seats is possible or not.
Eg: suggest-contiguous-seats Screen1 3 3 4 (If possible, returns a space separated list of 3 contiguous seats in row number 3 including seat number 4)
Output: Print the suggested seats space separated if a combination is possible, else print “none”.
I managed to pass 6 out of the 7 hidden test cases and got a score of 85/100.
Online Round 2
15 people were shortlisted for this round. The time allotted to us for this round was 90 minutes.
We were asked to develop an application to reserve flight based on source, destination and date. The application was supposed to maintain a repository of flight information containing airline name, flight number, source, destination, start time, end time, frequency (days on which the flight is active) and the total number of seats in the aircraft.
The functionality to be coded in the API:
Search for flights based on source, destination and date.
Reserve ‘n’ number of seats on a particular flight based on availability of seats.
View reservations for a user (both past and upcoming).
They expected clean, professional, demonstrable code. We could create a web app, a mobile app or just provide basic API calls to run through the required workflows. I decided to create the APIs and not worry about the frontend because of the time constraints.
There was no restriction on the language or framework. We had to code our application on our own systems and submit a .zip file at the end of the test session. I used flask to create my APIs along with SQLAlchemy to persist my data and got all the basic functionality running. There were certain cases I wasn’t able to handle in the allotted time but I was satisfied with my performance in the round. I created proper documentation for my API including the dependencies and some example calls and submitted my code.
7 people made it to the interview rounds.
Interview Round 1
The interviewer was friendly and introduced herself. She asked me to share my screen and open the code that I had written for the second online round and then asked for a detailed line by line walkthrough of my solution.
I went through all the functionality I had coded and explained it step by step, I also told her how I was going to proceed from there to complete my code and handle all the cases.
She then introduced some new functionality and cases and asked me what my approach would be to handle them. Some of the things we discussed were:
Getting and maintaining the status of all seats (identified by row number and seat number) on all flights.
Handling concurrent seat booking requests and making sure no duplicate booking happens.
There were more but this is what I can recall for now.
Now that we had a platform for booking tickets, she wanted to see what kind of ideas I could come up with to monetize the product. She gave me little prompts whenever I got stuck and asked for more and more ideas. The basic discussion was on what we could sell to an airline who wants to sell tickets on our platform, and then how we could generate more revenue from other sources (apart from the airline).
For example, we could generate revenue through targeted advertising, maximize our profits through an intelligent dynamic pricing model, and create a model to determine when and what routes to provide offers and discounts on to maximize revenue, all of which we could base on the data we collect from our users. We could also partner with hotel chains since we know when and where our users will be travelling and if the user permits us to share their data we could monetize that. She asked me to come up with a new idea every time I landed on one.
She then asked me if I had any questions for her and I asked one. The round lasted for around 45 minutes and they shortlisted 4 people for the next round.
Interview Round 2
This was a project round. The interviewer was really friendly and made a joke at the start of the interview which lightened the mood. He asked me to pick a project that I was excited to talk about and we had a very detailed discussion starting from the very beginning. He was interested in why I decided to build that project, the thinking behind all the choices I made (from the tech stack to my implementation of certain features), how I have handled certain use cases and how I plan to take the project forward.
We still had 10 minutes remaining when he said he didn't want me to go further into the implementation. He asked me if I had any questions for him, I asked two.
Verdict: 3 people selected including me
Prabhnoor Singh
CSE2k21
Comments
Post a Comment