Hi! I am Sahil Jindal, a 3rd year BTech student from the Department of Computer Science & Engineering. I will be doing my internship at Microsoft in the summer of 2021. This blog covers my experience with the CDC process and preparation.
I did some basic CP in the first year which helped me get acquainted with ad-hoc and basic implementations. After having the Algorithms-I course in my third semester, I learned about various data structures like Heaps, BST, AVL trees, etc, and various Algorithmic Paradigms like Dynamic Programming, Greedy, Divide and Conquer, etc. It helped me improve my implementation, logical thinking, and moving ahead from ad-hoc problems that we usually spend time on initially.
I got familiarised with some basic containers of STL in winter and started using them while coding. I began participating in a few codeforces contests in the Spring semester.
Preparation in Summer
I was not in the right spirit to begin preparing for the CDC at the beginning of the summer. I joined AlgoZenith’s beginners CP course in the summers to gain some confidence while preparing with others. It was a major head start for me and I got familiarised with a lot of standard problems. Apart from the topics covered in the course, I implemented a few standard problems and focused more on getting the idea about most of the problems on InterviewBit. I participated in a few timed contests to prepare for the coding rounds. I read parts of Cracking the Coding Interview which is relevant for any interview process.
Upon seeing progress made by my batchmates in the summer, I was a little demotivated but decided not to think about it and give my best in the coding rounds with a positive outlook. It happens that we begin to have guilt for not preparing harder but the grass is always greener on the other side. :)
I got shortlisted for DE Shaw, Microsoft, and Procter & Gamble on Day 1.
- DE Shaw: It had three questions with time allotted to each question. The first one was on string manipulation(div2A type). The second one was based on an observation that I made a lot later but managed to pass 3–4/10 test cases. Many students solved this question completely. The third question was the toughest of the three questions, though a standard variation for those good in CP. It was a graph question which included observation and then a simple DFS. I figured out the solution and cleared all the test cases. Since very few students could solve the third problem, I was shortlisted for DE Shaw.
- Microsoft: It had three questions. The first one was the Kadane algorithm. The second question was a matrix problem that accepted O(n*m) solution. The third question was the Dice Throw problem(DP). The test was conducted on Mettle IDE which wasn’t very user friendly. Many students could solve all three questions so they also used CGPA as a criterion and shortlisted 29 students.
- PnG(IT): It wasn’t a coding round. They conducted a pymetric test and shortlisted 8–10 candidates based on PORs. I have a few techno-management PORs so I got shortlisted.
- DE Shaw: My interview started at 7 AM. Since it was a virtual interview, I was supposed to write code/draw diagrams on an IDE where they could see what I am doing. The interview started with a discussion on one of my projects. I fumbled a bit and later felt that I rushed it because of anxiety. However, they started with coding problems. The first problem was based on arrays and observation. I made a few mistakes earlier and the interviewer gave me counterexamples after which I came up with the correct linear solution. The second question was on sending binary tree data efficiently over a server. Then I was asked a few OOPs concepts which I couldn’t answer convincingly. The interview ended at 7:50 AM and I got to know that I had not advanced to the second round around 8:10 AM.
- Microsoft: I was a little upset about how I fumbled and made an analysis of where I went wrong, one of which was not communicating properly with the interviewer and rushing things. Then my Microsoft interview started around 8:45 AM. We had 45 minutes for two questions. The first question was based on comparing two numbers without using the ‘<’ or ‘>’ operator. For the second problem, I was given an input & output and was asked to guess and code the algorithm behind it. I made sure that the interviewer was able to follow what I was thinking step by step instead of rushing to the solution. I was familiar that many interviewers look for a structural code so I coded accordingly. Then he asked for any questions that I have. It is generally advised to ask for feedback and work-related questions. The first round ended around 9:40 AM.
I was called for the second round around 10:05 AM. There were three questions for a 45 minute round. The first question was based on double pointers. I was able to code the solution quickly. The second question was based on digit DP. I explained the solution and coded it as well. The third question was to find the number in an array which occurs only once while others occur thrice. I was able to tell the solution with some help from the interviewer. The round ended fairly early around 10:40 AM and I got positive feedback.
Around 11:20 AM I was called for the HR round. The HR round was focused on testing the industrial aptitude. It started with discussing my software project. I had prepared for the same in a detailed manner and thus told everything smoothly. General tips are to tell the motivation behind the project, the industrial application, current/proposed features, and any skills you wish to learn to add more functionality. He also pushed the conversation towards how I would deploy the software, the challenges faced in doing so, and how to tackle them. He was fairly impressed by the discussion. He then asked about my plans for the next two years at KGP and if I am interested in higher studies. You should be able to convince that you are interested in jobs otherwise some companies may reject you. We also talked about the importance of teamwork and leadership skills in any workplace. The round ended around noon. I asked him when can I expect the result so that I do not sit for other companies if it is positive, to let him know that I prefer MS over others. These are the little things that can leave a positive impression on the interviewer. I got confirmation from a PlaceCom member within 10 minutes and didn’t have to sit for the rest of the day.
The whole CDC period is a very anxious time for someone who isn’t very much confident about himself/herself. However, you should always keep your calm throughout the process and just give your best with some pointers in your head. Having a positive outlook and composure surely helps in interviews. Also, rejection is inevitable so you should focus on learning from it.
For coding test preparation, if you have done a DSA course before summer, religiously focusing on STL applications, ladders, InterviewBit, LeetCode, cp-algorithms would be sufficient for most of the companies. There are various resources available online which are more than sufficient for CDC if followed religiously. This blog covers some of them. One should also practice giving heavy implementation timed tests. Feel free to ping me if you have any doubts.
In the end, I would like to thank my family and friends who always supported and believed in me and all my seniors(the list is too long :P) who mentored me at various stages. I would also like to thank CDC IIT Kharagpur for giving me this opportunity and conducting the whole process smoothly.
No time is bad for a new start.