GoJek Interview Experience for Product Engineer Internship | On-Campus 2019
Online Technical Test:
The duration of the Technical test was 60 mins on the platform Interview Bit. The Test comprised of two parts 30 mins each. The first part was 30 MCQ questions and next was 1 Coding question. The MCQ questions were focussed mainly on DBMS, Operating System, Computer Networks, Algorithms, and Probability. Questions included subtopics of core subjects like finding the primary key, threads, memory management, calculating network IP, the time complexity of algorithms, and some simple Probability questions. In the MCQ section you need to be quick and thorough with concepts to answer all the questions correctly.
The Coding question was an easy level problem, we were needed to Right Rotate a given Linked List by K places.
Basic knowledge of pointers and Linked List was required to solve this problem.
Input: 1->2->3->4->5 k=2 Output: 4->5->1->2->3
After the completion of the Online Test, 10-12 students were shortlisted out of 120 based on their Test Performance and Resume. Students with prior Internship Experience or Open Source contributions were preferred.
Technical Interview Round 1
The Technical Round started with a brief introduction about myself and my resume. The Interviewer asked me questions related to my past Internship, the tasks which were assigned and the challenges I faced and the tech stack I used in my intern. Since I am a MERN stack developer he started by asking questions related to React.
- What is Virtual DOM and How is it different from Real DOM?
- How does Virtual DOM increase the performance of Web Applications?
- What are components in React, What are stateless and stateful components in React?
- What is a component lifecycle in React?
- What are promises and callbacks in JS?
- What is multithreading? Is NodeJS multithreaded, How does NodeJS handle multiple processes and API requests?
- What is scaling, How do you scale a system?
- What are Microservices, How is it different from Monolithic Services?
After around 30 minutes of QA session, the interviewer asked me to rate myself in coding skills and proceeded with a coding problem. The problem was as follows:
Given N number of balls of different colors kept in a straight line, if the color of two balls is same they collide together and vanish. Write a program to find the number of such collisions and the leftover number of balls?
Input: azxxzy Output: ay Input: abccbxyyxba Output: aba
The Problem is a variant of Removing adjacent duplicates recursively from a string. At first, I proceeded with a brute force method to create a function to remove the first duplicate adjacent characters and then recursively calling the method for the new modified string and further optimized it using a Stack data structure. recursively-remove-adjacent-duplicates-given-string
After successfully solving the problem he proceeded with a Database designing problem and asked me to design a Database Schema of BookMyShow Web Application. Database Model for Movie Booking Website
I was required to design separate Schema for User, Movies, Auditorium, Reservation Info, Screening Info. Specify the required attributes in each schema, choose the primary key and foreign key for each schema and interconnect them. He further expanded the problem to extend the Database to store info of multiple theatres in a city and map all the theatres to various locations. I was needed to specify the steps on how would a search query work in case a user wants to book a certain movie at a certain time in a certain Movie hall.
After successfully implementing it, the interviewer asked me to include a new feature to lock the seats in case a user hasn’t paid for them. If the user doesn’t complete his payment the seats get unlocked after a duration of time. He further asked me to protect the API and check if the correct user is paying for the locked seats using middleware functions to authenticate the User.
In the end, he asked about my extracurricular activities outside academics, my hobbies, and interests. How do I approach learning new things and my concepts behind its working?
Verdict: I was selected as one of the two summer interns for GoJek Product Engineering after my first round only.
After listening to the question clarify any doubts you have, else you might end up solving a wrong question and this will leave a bad impression on the interviewer. Even if you know the solution, first tell the brute force and then optimize it. Write the code once you reached the optimized algorithm.
Don’t panic if you can’t come up with an optimized solution rather interact with the interviewer about your approach so that he may point where you are going wrong. Tell them your thought process instead of telling the solution straightforwardly. GoJek prefers students who are acquainted with various development concepts and aren’t bounded to a single technology stack. If you are curious and passionate to build something and have a zeal for learning new things, it will surely add to your advantage.