CDC INTERNSHIP CHRONICLES

Nikunj Madhogaria
7 min readDec 28, 2021

--

Hello everyone! Welcome to my blog!

I am Nikunj Kumar Madhogaria, a 3rd-year undergraduate student of IIT Kharagpur. I am from the Industrial and Systems Engineering department and am currently enrolled in its four-year B.Tech Program. I sat for the CDC internships recently and received an offer from Sprinklr on the first day itself.

Through this blog, I want to share my experience and the preparation process which enabled me to meet my goal. I hope this piece helps all of you!

A year to CDC:

I started appearing for contests on Codeforces, CodeChef, and AtCoder during my 3rd semester. This, for me, created the ability to sit for hours and brainstorm. It also allowed me to become comfortable with the high-pressure environment of coding tests, similar to the actual rounds hosted by companies during the CDC process.

Then, during my 4th semester, I applied for the AZ-201 course in AlgoZenith. Here, I was able to familiarise myself with all the Data Structures and Algorithms required for the internship rounds.

During the summer break, I studied Probability from the “Statistics 110” course on YouTube. I also practiced puzzles from “Heard on the street” (book) and “BrainStellar” (website).

A month to CDC:

I went through several interview questions from InterviewBit and also practiced many company-wise problem sets from the same source.

We were asked to prepare our CVs before the company rounds started. I had already been through what had to be included and compiled it on the portal in an organized manner. The accomplishments I focussed upon in my CV were:

  • Three projects related to software development and
  • My progress in the field of Competitive Programming (competitions and ratings).

Two weeks to CDC:

In this period, revision is crucial! Rather than go through new material, I revised what I had already done so far. My focus was on Data Structures and Algorithms.

Companies started their testing rounds, and in the first ten to twelve days, we gave around two tests every day.

Coding tests

I cleared the coding tests of four day-1 companies: DE Shaw, Microsoft, Sprinklr, and APT Portfolio — for a Quant profile.

1) The DE Shaw test had three questions — The first one was a really simple greedy problem, the second was a medium-level DP problem and the third was a tough DP problem. I could solve the first two completely and the third one partially. An individual time limit was allotted for each question, which could not be transferred from one question to another. The first two questions were given a sufficient amount of time considering their difficulty levels but to solve the third, one needed to be quick.

2) Mircosoft’s coding test had two easy and standard (by standard I mean that it is a common problem to encounter, as someone who practices enough would) problems to solve within sixty minutes.

3) Sprinklr gave three questions, two of which were of a medium level of difficulty, but standard problems, and one tough DP problem. I could solve the two standard problems completely but could not solve the third even partially.

4) APT Portfolio’s test — the quant profile had a lot of puzzles to be solved in a limited time. Since it would be difficult to solve puzzles that are unfamiliar within a minute or two, so I focused on the ones I knew beforehand and cleared the test.

CDC day-1

Each interview lasted about an hour and all of them started with the interviewer introducing themselves and asking for my Introduction. Only then did they proceed to the actual questions. On being asked any coding question, I followed some basic rules:

1) Understand the question, make some sample cases (which will not be given most of the time) and solve them out loud to make sure that you have understood the question entirely

2) Ask the interviewer about all possible corner cases

3) Say out loud only those solutions that you are confident you can implement because most of the time you will be asked to code the solution immediately after explaining the logic

4) To begin with, tell a costly but correct solution (brute force) and slowly optimize it one step at a time

5) Do Time and Memory Complexity Analysis after each step.

Interviews

1) The 1st interview I had to appear for was for Microsoft (Round 1) — I was given two coding questions both of which were medium-level problems but I had solved the same problems before so had no difficulty in this interview. Both the questions involved arrays. After explaining the solutions, I was asked to code as well which I did with ease. I was questioned about each word of my code to test the clarity of my concepts (so it is not advisable to suggest a solution that you cannot code, nor to write some code that you would not be capable of explaining from scratch).

Result: CLEARED this round and was called for round 2.

2) Next, I had APT Portfolio Quant (Round 1) — Since it was for the quant profile, I was given a lot of puzzles and a couple of coding questions towards the end. I had already read some of these puzzles, so I confidently answered them. For the rest, I tried my best but could not reach the optimal answer. The coding questions given to me were of medium to tough level. I partially answered one of them (involving arrays) and could not answer the other. The latter was from linked lists and I was trying to come up with an O(N) or O(N logN) solution, but later found out that the optimal solution would have a complexity of O(N²). Thus, it is advisable to think and answer with a costlier solution if you cannot come up with one to the time complexity you consider better. I followed this in an interview later on in the same day.

Result: DID NOT CLEAR this round.

3) Next, I had DE Shaw (Round 1) — There was only one question in this interview. It was a tough one on 2D arrays and I could not reach the optimal solution despite a few hints. Later, I understood that “Binary Search on Answer” was the algorithm to use.

Result: DID NOT CLEAR this round.

4) Sprinklr (Round 1) — This was a long interview. Two interviewers asked two coding questions each and the interview ended with a puzzle. One of the questions was easy, involving arrays, and had a simple greedy solution. Two of them were graph-based medium-level questions, one involving MST and the other Bipartite. I was asked to code the one with Bipartite and was asked some variations of the first one. The last question was a tough number theory-based question. After optimizing the brute force a bit, I explored many possible directions (for a good amount of time) to optimize it further because I felt that the solution I had come up with was still costly, but in vain. In the end, I was told that no better solution exists and the one that I had suggested was indeed the optimal one. The interview ended with a famous puzzle that I was familiar with so I solved it confidently.

Result: CLEARED this round and got called for round 2.

5) Microsoft Round 2 — I was asked many medium and medium to tough-level coding questions in this round involving Linked Lists, Binary Trees, Arrays, Queues, and Stacks. I could answer most of them. The exception was a question on linked lists and queues. I was grilled here and could not reach the solution that the interviewer was looking for. When I was asked to code the solution, the interviewer detected 2 bugs in my code.

Result: DO NOT KNOW the result of this round as I accepted an offer before the list of people selected for Microsoft round 3 was out.

6) Sprinklr Round 2 — I was asked two coding questions in this round. First was a medium-level question which was solved using the famous Sweep Line Technique. I had practiced a similar problem so I reached the optimal solution, coded it entirely, answered questions about my code, and moved to the next problem. Next was a tough question involving arrays. The most optimal solution has a time complexity of O(N log N) but I could only reach O(N²). I coded it entirely, answered all the questions about my code and my interview was over. I knew about the optimal time complexity by intuition but told a costlier one, only because of the lesson learned from the APT Portfolio interview.

Result: CLEARED this round and got called for the HR round.

7) HR round of Sprinklr — We introduced ourselves, and there was a bit of small talk. He asked me about my family, my hobbies, some virtues which according to me are the most important ones for any person, and many similar questions. One cannot learn answers to such questions, they are thought of on the spot. I tried to make the environment light by not giving bookish, serious answers all the time.

Result: Within a half-hour, I received a call from Placecom, IIT Kharagpur that Sprinklr has offered me an internship opportunity and I immediately accepted the offer.

Acknowledgments

I would like to thank:

1) AlgoZenith for teaching me all the required Data Structures and Algorithms in the most effective way

2) The Placement Committee of IIT Kharagpur for the smooth conduct of the entire event. I was able to appear for all my interviews without any hassle. Two of them had clashed but they took care of it promptly

3) My friends {Rishit Singhania(19MA), Rishabh Agarwal (19MA), Aritra Ganghopadhyay(19EC), and Anubhav Saraf(19IE)}, who were always there to solve my doubts and accompany me in my preparation. Thanks to them, even preparing alone at home was fun!

--

--