Hey People! I am Prakhar Bindal, 3rd-year B. Tech student of the Department of Computer Science and Engineering. I will be doing my internship at Nutanix Technologies, Bengaluru in the summers of 2020.
I basically began with competitive programming at the end of my 1st year that is May 2018 as I had nothing to do and I was literally sitting idle at home watching IPL and sleeping. I just had PDS level knowledge at that time as I didn’t have much exposure to programming before coming to college and I wasted most of the 1st year doing nothing. I started with long challenges of CodeChef and did May, June and July Long Challenges wholeheartedly and by the time I came back to college. I had become good at implementation type problems where no knowledge of Algorithms and Data structures was needed. I wasn’t even using STL properly at that time and for me the only difference between C++ and C that time was using cin in place of scanf and cout in place of printf !
In 3rd semester I started learning Algorithms with the onset of Algorithms-1 and Algorithms-1 Laboratory and started to practice on Codeforces and was occasionally participating in contests throughout the third semester. This process of practicing on Codeforces and occasionally participating in contests went throughout the 4th semester too. Before the summers of 2019 Codeclub conducted a “Funda” workshop for the junta sitting in the upcoming CDC internship season wherein the seniors who bagged internships last year told us about their experience with CDC interviews, coding tests, and preparation. After attending that session I had made up my mind to utilize my summers for preparing for CDC.
In the month of May, I completed the Div2 C ladder of Codeforces fully and quite a lot of Div2 D ladder. I was practicing mainly on Codeforces during this period. Then in June, I started doing InterviewBit and geeksforgeeks and honestly after doing C and D ladders, I found the InterviewBit and geeksforgeeks questions quite easy. I covered most of the topics by solving ladders and then I learned some interview specific topics like Linked Lists, Stacks, Queues, Binary Trees, Two pointers, RB Trees, etc while solving InterviewBit and geeksforgeeks questions. Towards the end of the summer break, I did some Quantitative Aptitude, Puzzles and learned OOP’s concepts in C++ from learncpp.com.
Coding Rounds of Day 1 companies start a week before the actual day 1.
I appeared for the coding rounds of Uber, Nutanix, Goldman Sachs, Microsoft, Tower Research, DeShaw, Quadeye, Gartner, and Honeywell(All were Day 1 companies).
Uber — Hackerrank, There were 3 questions one was a simple binary search and the other two were medium level implementation problems.
Nutanix — Hackerrank, There were 2 questions one was a Greedy Problem which was the same as Problem C of Hello 2018, and other was a medium level tree problem related to the diameter of a tree which had a DP on trees solution
Goldman Sachs — Hackerrank, There were 2 coding questions both of which were quite easy one was a simple binary search and other was simple implementation. Then there was a section of Quantitative Aptitude having problems from Probability and Statistics and basic class X Maths. There were 2 behavioral questions too, wherein we were given some situations and we had to write in brief what we will do in such a situation(in about 150 words).
Microsoft — Mettl.com, Platform was not good and my test automatically restarted 3 times during the test but fortunately, the codes I submitted were automatically saved but yes that cost around 20 minutes as the clock kept running whenever my test restarted. There was a pool of questions from which everyone got 3 random problems to solve. All the three problems I got were pretty easy and implementation based. They required not more than 20–25 lines of code each.
Tower Research — Hackerrank, There were 3 sections in the test. First section consisted of some MCQ’s from core CS subjects including Algorithms, Data Structures, Computer Organization and Architecture, Switching Circuits and Logic Design. Then there were 3 debugging questions wherein faulty codes(1 in C++ and 2 in Python) were given and we had to correct them. The last section consisted of 2 Coding questions first one was pretty easy and it effectively boiled down to finding minima and maxima in every subarray of size k for a given array of size n. Using STL multiset this problem had less than 15 lines of code and the second problem was based on trees and it was almost similar to https://www.codechef.com/IPC15AMR/problems/TREE02
DeShaw — Hackerrank, There were two coding questions first was a simple implementation problem that effectively boiled down finding product of gcd’s of two arrays and other was a simple problem which had to be implemented using BFS/DFS.
QuadEye — Hackerrank, There were approximately 20 MCQ’s from Probability Statistics, Quantitative Aptitude, OOPs and some C output problems including multiple pointers. It also had one coding question which was very easy and in a nutshell, we had just sort the array and traverse the array once to calculate some value.
Gartner — AMCAT, It had 5 sections including English, Logical Reasoning, Quantitative Aptitude, Data Science and Coding. English, Logical Reasoning and Quantitative Aptitude Questions were pretty easy but the only tough part was that there were section-wise timings and time was less for sections such as Quantitative Aptitude so it required good speed if you want to do all the questions. I Can’t comment on Data Science Section as I didn’t know a single question in that section and hence marked B in all 10–15 problems as there was no negative marking :P. Again there was a pool of coding questions and everyone got different problems. I got 2 problems first one was a simple binary search question and other was a simple application of BFS/DFS (https://www.geeksforgeeks.org/islands-in-a-graph-using-bfs/).
Honeywell — Hackerrank, 4 Coding Questions, All of them were simple implementation problems of Div2 A level.
Shortlists for interviews start coming in the evening of the day before day 1 . For Nutanix and Microsoft there was one more round for those people who qualified the coding test.
Microsoft had one group fly round wherein we were given two problems on board and we had to write fully working code for both of them on paper. One of the questions was from trees and other was finding a path in a maze with some constraints in movements and some obstacles which had a simple dynamic programming solution.
For Nutanix there was an offline pen and paper debugging round held in which were given a C Code with a lot of pointers and stuff to merge sort a doubly linked list. We had to point all possible errors in the code and write them in paper. There was a time constraint too and they were noting the times at which a person submitted the paper.
I returned to my room at around 1 am after giving both the offline rounds and we had to report at 5 am for the interviews to Nalanda. At around 3 am the final results of Microsoft came and then I received a call to tell the priority of companies in which I shall be sitting in the interviews. Turned out that I was shortlisted for 7 companies on Day 1 and I gave the priority as Uber, Nutanix, Goldman Sachs, Microsoft, Tower Research, Gartner and Honeywell. I somehow managed to sleep at 3 am but I woke up again by the priority call that came at 4 am. So effectively I slept only an hour before my day 1 interviews. I Woke up at 4:45 and deprived of sleep I somehow made it to Nalanda in formals.
Uber — We were made to sit in one of NR 200 rooms from 5 am to 7 am as the interviewers came at 7 am. First interviewer of mine was pretty chill and I was asked to find the shortest path in a grid with some obstacles without passing through any obstacle which I did use Dynamic programming and DFS. After that, the interviewer stepped it up and I was asked to find the shortest path if I was allowed to pass through exactly one obstacle. Then lastly, he asked to generalize it and solve it if passing through at most k obstacles was allowed. I solved them and wrote code for all 3 of them on paper and he seemed pretty happy with it. Then I was asked to come for the second round. I found it really difficult to communicate with the second interviewer of mine. In this round, I was asked to code on their laptop. I was asked the shortest path problem which I coded using Dijkstra’s algorithm. Then he asked me what are Prim’s and Kruskal’s Algorithms for finding the Minimum Spanning tree and to dry run them both on a graph he made on paper and to compare which one of them is better for which type of graph(Dense or Sparse Graph). I thought I did okay in this round because I solved all the problems he gave in the expected time complexities but I found it really difficult to communicate with him and as expected I wasn’t selected after this round.
Nutanix — After Uber(Around 10 am) according to my priority list I immediately rushed to Nutanix and I had a single interview round which took around 1 hour easily. The interviewer was really chill and He first asked me to explain my approaches to both the problems of the coding test and after hearing that the first problem was directly picked up from Codeforces he told me that they will make sure this does not happen in future :P. After that, he went through my CV, asked me to explain my Software Laboratory project and then some more questions on my CV were asked regarding GPA, JEE Rank, Coursework and Extra-Curriculars. After that I was asked a Data Structure Design Problem wherein there was an office in which there were various teams working. Each Team had heads and subheads, each head had some variable number of subheads under them and similarly, all subheads had some variable number of engineers under them. He asked me to design an appropriate data structure to store all the records and to handle some queries and updates as well. Initially, I came up with a very complex solution involving binary search on segment trees for queries and lazy propagation for updates. He told me that this solution might be correct but there exists an easier way and he hinted me to use STL. I immediately came up with a solution involving multisets and maps. He asked me to write a pseudo code for the updates and queries and I pointed out that we can speed it up by using unordered map for removing the logn factor but we need to write a custom hash function for avoiding collisions otherwise in worst case it can go up to O(N) per query instead of O(1). As I mentioned hash tables he asked me some Algorithms-1 stuff including Hash Tables, Load Factor, Effective Hash functions, Balanced Binary Search trees and implementations of sets maps in STL. After that, his questions wrapped up and he told me to wait and I will have an HR round. HR of Nutanix was a really cool guy I talked to him even before the interviews as I was not in a good mood after I was rejected from Uber and he sensed it and made me feel comfortable. He asked me some basic HR Questions like where do I see myself 5 and 10 years down the lane etc. After that, I was given a Tshirt and he told me that the results will be out in the evening.
Goldman Sachs — Though my interview went well in Nutanix I wasn’t sure that I will be selected or not. So I went for the GS interviews and by the time I reached GS interviews almost all people had given 3 interviews. In the end, I was only able to give 2 interviews because there were a lot of people shortlisted for GS and the process was also not well coordinated and there was almost gaps of 1–2 hours in each interview . Realising that GS will consume whole of my remaining Day 1, I thought I should at least give 1 round of Microsoft. I found the GS Interviews to be personally easy. Most of the questions asked were directly picked up from geeksforgeeks. I was asked really standard interview problems like Loop in a linked list using Floyd’s Cycle Algorithm, Recursively reverse a linked list, Merge sort in O(1) space, Heap Sort vs Merge Sort and some easy problems regarding Linearily of Expectation from Probability and Statistics.
Microsoft — As GS interviews were taking a lot of time and it was already 3 pm I decided to at least give 1 round of Microsoft. When I reached Microsoft I realized that they had already done with their selection procedure but on the request of PlaceCom they unwillingly decided to take my interview. The first question the interviewer asked me that where was I from 5 am and he obviously knew that I had filled Microsoft below in my priority list that’s why I am coming so late for the interviews. I was straight away given a System design problem and was told to handle concurrencies as well. I honestly told him that I haven’t studied System design. Then he asked me whether I have studied Operating Systems, DBMS and Computer Networks which I told him that I will be studying all of that in my 6th semester. After that, his questions wrapped up and I knew he didn’t want to take me in and just took the interview for the sake of it because the PlaceCom asked him to do so. I left that place and saw that I had 5 missed calls from an unknown number, I called back to realize it was from the GS PlaceCom who was calling me to give my last round of GS. When I reached there they were done with their selection process and hence I couldn’t give my last round of GS.
After that, I decided to go back and dozed off as soon as I entered my room. At around 7 pm the results were released and my roommate woke me up to tell me that I was selected for Nutanix.
- Fill the companies you really want to get into in the top 3 of your priority list. You won’t get time to sit for interviews of more than 3 companies.
2. In my opinion, the best sources to practice for CDC is the combination of Codeforces, InterviewBit, and geeksforgeeks.