I recently accepted an offer from MakeMyTrip for a Software Engineer(Frontend) role and today I want to share my interview experience with you.
I got the chance to appear for an interview through one of my LinkedIn connections. His team was looking for frontend developers and he posted a problem statement on LinkedIn inviting interested candidates to submit their solutions.
The task was to create an end-to-end hotel booking application(something like AirBnB) where a Host could list his properties and users could book them for a stay. It was supposed to be a client-side application only with mock data and APIs.
Based on the application I build, I was shortlisted and called for a virtual interview. You can check my solution here
- Second Round: Pair programming round, where you have to build a small project in an hour.
- Third Round: Hiring Manager/Director Round
This was like a question-answer round where the interviewer shared his screen and wrote a few code snippets and I had to give the output and explain the working of the code. The questions were around hoisting, closures, event loop, promises, asynchronous process. Some of them which I recall are:
- Difference between setTimeout and setInterval, a question with console.log inside a setTimeout and inside setInterval and one in the global scope.
- setTimeout inside a for loop with var declared variable, how the behavior will change if it declared with let/const.
- A question on promises, async-await
- Question on
thiskeyword and Object.prototype
- Write a polyfill for Object.assign().
The key thing that worked out for me in this round was that I was explaining everything while I was dry running the code to come up with the solution. This helped in asserting that I know how JS works behind the scenes.
The round started with a brief introduction of my role in my current company followed by a few basic questions on JS/React. Then the interviewer shared a problem statement and I had to implement it with a framework of my choice. (I am more comfortable with Angular, but I chose to go with React, as the role was for React).
The problem statement was to create a picture slider like this:
I broke down the problem statement in the following steps:
- Fetch the data from an API and truncate it's length to 10 images.
- Render the slider-step above which would keep track of the slides which has been displayed.
- On clicking the image, the slider should start moving at an interval of 30 seconds. It should be done in a circular fashion. If clicked on the image again, it should stop moving.
- There should be a previous and next button, to change the slide manually(I ran out of time and couldn't implement this)
This round was the most fun and challenging one. The interviewer was really interested in how I was gradually building my solution and based on her observations, she also asked me to refactor my code to make some optimizations.
Based on my experience with the previous interviews, I came up with a design and plan in the first 5 minutes and explained it to her, before jumping in the code.
I think it is very important to first come up with a mental model of what you will be designing before writing even a single line of code. This gives you a clear roadmap of what you will be writing and in case you are thinking in the wrong direction, the interviewer can give you some hints to correct your mistakes even before you commit them.
This the last technical round and was mostly based on System Design. The interview started with us introducing each other and for the first 10 minutes, the interviewer discussed my solution for the hotel booking app that I had created. He also went through my other Github repositories and the quality of code I was pushing. To my surprise, he asked me if I wrote technical blogs and also asked my DEV profile URL to have a look at the articles I had written.
He then asked me to come up with a system design for a web application that would track the number of active covid cases using a Twitter API.
The other question was that given a set of blood pressure readings, how will you determine if a person is healthy or not? This question was to check my requirement gathering skill and how I would react to a vague question. The key here was to ask for more and more questions to come up with a solution.
The final question was to implement the two-column list in a framework of my choice. One could select the item from the left list and add it to the right column using the Add button, and select the item from the right column and delete it:
I hope you benefit from my interview experience as most of the Frontend Interviews are based on a similar pattern, apart from these questions I have also faced questions on JS design patterns, which I will cover in some other article.