Recently, Gameskraft Technologies Pvt Ltd. a startup founded by Prithvi Singh (NSIT) along with his friends and expert professionals from many companies like Grofers, Codenation, Amazon, etc. came to our campus to hire people for the role of SDE. Firstly there was a pre-placement talk about the gaming industry in India and how quickly it is growing. After that, we had 1 coding round followed by 3 rounds of technical interviews.
The first round comprised of 3 coding questions of easy to medium level on Hackerrank:-
- Given a string comprising of lowercase characters and type of each of the characters (a-z) where each alphabet can be of type normal and special. We were asked to find the longest substring comprising of at most k normal characters. The string can be of length 10^5. (Hint: 2 pointer approach to be used).
- Given certain conditions on the sequence made of vowels, for example, A. a can only be preceded by e, u, i. B. e can be only preceded by a, i. C. i can only be preceded by e, o, u can be preceded by o, i and o can be only preceded by i. But the language was not direct so rules laid on the sequences were to be deduced. we were required to find the count of all possible strings containing only vowels of length l following those conditions. We were needed to report the answer mod 1000000007 as there may be a large number of such strings possible. Tip:- Remember the properties of modulo arithmetic. (Simple DP soln).
- The third question was directly nim game where there can be n piles of coins. https://www.geeksforgeeks.org/combinatorial-game-theory-set-2-game-nim/
After the coding round, around 25 people were selected.
Round 1 (Skype Round):
The second was taken on skype from engineers at their Bangalore office. Here first my Resume was extensively discussed wherein I had mentioned technologies like React, Android for which I was asked about their lifecycle methods and some other miscellaneous concepts. I could answer the majority of questions related to my projects and also told him about my experience with these technologies in my Internship. After that, I was asked 2 coding questions.
- We have a storage facility available at our office. With the N numbers of couriers stored there. Also, we have a truck outside our office to carry those couriers to another place. The truck has some capacity’ and it can take max M weight of the courier. So the weight of the couriers is given. e.g., [1, 10, 25, 35, 60] and also the capacity of the truck: 90. The truck wants to reserve 30 units for itself. And you can pick only 2 couriers to accommodate into the truck. The answer should be the list of index of those 2 couriers. e.g., [2, 3]
- The second question was on greedy algorithms. In the question, we are given n ropes of some lengths. for example, [8, 4, 6, 11], we are required to minimize the cost to combines all these ropes into a single rope. Here the cost of combining the ropes is equal to some of their lengths.
After the 1st round, around 8 people remained.
Round 2 (PI Technical):
This round began with some discussion about my resume like the internships and projects I had done after which I was asked a simple linked list question wherein how to detect a loop in the linked list. https://www.geeksforgeeks.org/detect-loop-in-a-linked-list/. Now further when I told him about the slow and fast pointer approach. He cross-questioned whether it is possible to detect a loop if we move fast by three instead of two steps. I drew a lot of cases but every time loop could be detected. So I told him a case where it can’t be detected. So he skipped the question further for proof of the same. ( Tip: Understand the proof of the loop thoroughly). The second question was based on System Design wherein a search bar had to be implemented which can give up to 5 recommendations based on popular searched strings on typing certain characters. I had to design a possible data structure for implementing the same efficiently. It had to be done using suffix trees. But I only knew about tries. So, I told him about what all we could do to make search efficient and ended up close to a suffix tree approach despite not knowing it directly. Something like this: https://www.geeksforgeeks.org/auto-complete-feature-using-trie/ was expected. The interviewer looked satisfied with my approach. He ended by asking whether I had any questions for him. So I asked him about all the work at the company and all the possible domains of work which he explained thoroughly.
After 2nd round, around 5 people remained.
Round 3 (PI Technical):
This round began with another system design question where I was asked to design an Amazon warehouse where I had to minimize picking and placing time. Assume we have some machines to move such items in the warehouse. The warehouse might have multiple rows and might also have multiple floors. So, I told him all possible considerations to be made while placing the items, like if the item is fragile, heavy or frequently purchased, etc. Also told him that we should place relatively less used items at the back and frequently ordered items in front. Heavy items in front because the machine might not be able to lift multiple items at the same time. Also, we can pick items for different orders at once. Also, I told him that we will check if items are only at the ends of a row if it is such then we can skip entering a row. Also, we should move in a zigzag fashion to minimize the time of pickup and placing. He maintained a blank face making me nervous about my solution. (Tip: Don’t get nervous in system design questions there is no right or wrong answer. They are just checking your innovative thinking at times. Next, I was asked a question regarding two lists of equal length possibly unsorted you can swap elements from the two lists at the same position. I told him a greedy approach in O(n) but it was failing in some corner case to give minimum swaps. So, he told me to use dynamic programming but still, the soln complexity was too high so we skipped discussing it. Next, I was asked about designing a text editor like google docs and how were they able to achieve synchronization. So I told him about concepts like Critical section, The conditions to be followed to achieve synchronization then asked further how would google docs be able to reflect changes at the server-side of things. So, I told him about a possible LinkedList at server-side wherein a single node is getting inserted in between. I clearly told him that I had not done much backend stuff. Further, we again had a discussion about the work at gameskraft and possible teams at the organization and also about various technologies being used there.
We were expecting further an HR round but it did not happen because it became very late in the night. So finally they announced the results. 4 people were selected out of which I was also one of them. I thank geeksforgeeks for its contribution in my campus placements preparation.
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.