Hi Everyone! I am Avi Sankritya, a 3rd-year undergraduate student in the Mechanical Engineering Department. I got my internship at Goldman Sachs for the upcoming summers.
This blog covers my preparation methods and my journey and aims at giving the readers a first-hand impression of how CDC Internships work.
I got to know about programming only after I came to college. I studied my PDS course quite seriously and knew the basic data structures in C at the end of my first year.
I got to know about Competitive Programming (CP) in the 3rd Semester through one of my hall seniors. I also got to know that Competitive Programming is interesting and improves command over data structures and algorithms. After I got to know the relevance of CP in CDC Internship Tests, I knew I had to start doing CP soon. As I had successfully wasted my first-year summers, I was willing to put in some extra efforts for gaining some expertise in C++.
I couldn’t learn much about CP in the 3rd Semester due to my involvement in Inter IIT Sports Meet and Inter IIT Cult Meet. I enrolled in Algo Lab Course in my 4th Semester to gain deeper insight into various data structures such as vectors, stacks, and queues, Linked List, trees, etc. After Lockdown was imposed and I went back home, I randomly started doing some questions of arrays and STL from InterviewBit but was disheartened as I could solve only 3–4 questions out of almost 20 questions that I attempted in the first week. I realized that I needed to have more grasp on the data structures and algorithms. During that period, I got to know from CodeClub’s page that some of my seniors who were pro in CP were starting a mentorship program(now AlgoZenith) for CDC preparation. I joined this program in mid-April.
The mentorship program helped me cover topics in detail and I was able to consult them for my doubts. Within a month, I could at least code and implement the approach that would come to my mind. I regularly gave contests on Codeforces (Div 2 and Div 3) along with solving almost 200+ questions selected by the mentors on Codeforces, Codechef, atCoder, and SPOJ. As I wasn’t confident at all initially, I gave a lot of time to CP : learning about new techniques through mentors and reading blogs. This helped me accelerate my preparation and when I was confident about my grasp on DSA, I started with my Interview Preparation around Mid July. As the schedule and pattern of CDC were uncertain this time due to the pandemic, I was willing to solve more interview specific problems.
I started solving questions on a timed basis on Interviewbit and this time, I was able to solve most of the questions with more than one approach for many questions. I solved nearly 310 out of the 360 problems on InterviewBit. I also solved 150+ questions on Leetcode and GeeksForGeeks. Hence, I became confident in my coding skills. I took a mock test series on gfg and it helped me improve my speed.
I also practiced solving questions on Probability and puzzles from www.brainstellar.com(Medium+Hard), Heard on the Street, and Fifty Challenging Problems in Probability:-slowly and steadily from May. This helped me prepare my Quant section well. I solved all puzzles on InterviewBit and nearly 50 Puzzles on gfg.
Since I am from a non-circuital branch, I wasn’t allowed to appear for the selection procedure of much sought-after Software and Quant companies such as Microsoft, Quadeye, Sprinklr, DE Shaw, AppDynamics, PNG (IT), etc.
I sat for the following Day 1 companies:
Two questions for 90 mins. I was able to solve one question completely and got 4 test cases out of 12 in the second one. 40 students moved on to the next round. The cutoff was 1 Full + some test cases on the second question.
Mistake- I took too much time on the first question. The second question was not that difficult but I lost it to my anxiety.
There were 3 questions. One used handling Integers in the form of strings but had a very naive solution if you know python till the intermediate level. The second one was a standard question and the 3rd question was a variant of the Edit Distance Problem of Dynamic Programming. People solving them under 1.15 hr were shortlisted. I was able to solve the 2nd and 3rd question successfully, but couldn’t solve the 1st one as the idea of using python didn’t cross my mind.
Mistake-I regretted not solving the first question using Python. Maybe the idea of using a different language than the one in which I attempted the rest of the 2 questions didn’t cross my mind.
The online round was conducted on 27th Aug. They used hackerrank as the platform. It consisted of 5 sections. To clear the online round we needed to qualify 3 sections. But there was one more section that was CGPA. So, if you qualify in 2 sections and have got a good CGPA you will also get selected for the interview round.
Now 5 sections in the online round were (135 mins):
Section 1(Programming Round):
2 coding questions (30 mins):
The first question was to find the sum of Manhattan distance between each pair of points given in the form of (x,y).
The second question was to find the minimum Euclidean distance needed to travel to reach from the initial point (x1,y1) to the final point (x2,y2). But there are some trees (line segments) lying on the path whose starting and ending points were given.
The first one was easy and I solved it in nearly 5 minutes. The second question was a difficult one in my opinion and after trying a lot, I got just 7 out of the 12 test cases correct.
Section 2 (Quantitative Aptitude):
The questions of the aptitude section were tough. It mainly consisted of questions from Probability, Expectation Values, and JEE Level Tough Questions of Trigonometry.
As I had good enough practice of quant, I was able to solve all of them except one.
Section 3 (CS Fundamentals Round):
It consisted of Computer Science related questions, i.e. Operating systems, Computer Networks, Output, etc. I was able to solve nearly 50–60% of the questions.
Section 4(Advanced Programming Round):
1 Coding Question (45 mins)
Question: There are X types of flowers in a N * M matrix. Each cell will consist of one type of flower. You need to find the max number of connected flowers you can collect under the condition that you can not collect more than two types of flowers.
I tried implementing an optimized solution at first for almost 25 minutes. It was failing on a lot of test cases. I changed my approach and wrote a semi brute force solution and it worked on 11 out of the 12 test cases :)
Section 5 (Behavioural/HR essay question 15 mins):
There were 2 questions:
What will you do if your teammate leaves you in the middle of the project due to some personal issues?
Mention a situation where your passion and enthusiasm helped you in achieving the goal.
My typing speed helped me in the HR questions as I was able to write nearly 150 words in each of the questions.
Mistake-No Mistakes this time :p
Day 1 Interview:
I was shortlisted for just one company on day 1- Goldman Sachs.
Goldman Sachs had three technical rounds and one HR interview round. Nearly 75 applicants were shortlisted for Round 1 of the GS Interview.
In the first technical round, the interviewer started by asking me to introduce myself and explaining about the project I did at ISB. He then asked me some questions about my project. After this, I was asked a question on tree traversal. I told him about the various traversals such as Preorder, Postorder, Inorder, Vertical, Diagonal, etc. He asked me to code preorder and inorder traversals recursively and then iteratively. I was able to do it quite easily. He then asked me to code vertical order traversal in the most optimal complexity that I could. I made a silly mistake but I was quick to see the bug. He then asked me to implement a generalized binary tree that could be implemented for any datatype. I told him the approach and he was quite satisfied. He then asked me some OOPs questions. I was able to solve the basic ones but wasn’t able to solve the tougher implementation based questions that he asked. He then went on to ask me some tough puzzles, which I was able to solve quickly.
Nearly 40 people were shortlisted for Round 2 of the GS Interview.
In the second technical round, the interviewer was a VP of GS. I was nervous at that point but he calmed me down and gave me a brief overview of the various roles and divisions in GS. He told me how Quant roles differ from the software ones. At this point, I got to know that my score was the maximum in college in the first shortlisting round. I was told that I was being considered for 2 profiles-SW and Quant as of now. He then went on to ask me many(almost 10) Medium+Tough Level probability questions and puzzles and as I had practiced probability and puzzles a lot, I was able to solve every one of them(Needed a hint on one of them). This round gave me a lot of confidence.
22 people were shortlisted for round 3 of GS Interviews.
In the third technical round, I had 4 interviewers. Codeforces Div 2-D level questions on greedy and binary search were asked. I gave a brute force solution at first and was asked to optimize it, which I did. A tough question on circular arrays was asked which I wasn’t able to answer completely. I told them the approach but I messed up on this one. Then, I was asked a tough problem on probability which was from Heard on the Street, so I answered it quickly. A new puzzle was also asked which I answered after a slight hint.
After the 3rd Round, I was called in for an additional round/discussion where I was asked if I had any intentions of doing higher studies/research and my interests and hobbies. All my previous interviewers of Round 1,2 and 3 were in the panel of this round. The last statement of the panel was really positive and so I somewhat guessed that I had a high probability of selection.
Results were announced late in the night and 11 people were finally selected, including me :)
Key Takeaways and suggestions :
- Practice Competitive Programming a lot. There’s no shortcut to that at all. CP won’t just help you in grabbing an internship/placement offer, but also helps to improve problem-solving skills, builds aptitude and spontaneous thinking.
- Be sure of the profile in which you want to apply. I applied for 16 internship roles in almost 11 companies on Day 1 ranging from Software and Quant to Supply Chain to Finance. My CV was rejected in almost 12 internship profiles.
- Think out loud during the interview, so that the interviewer knows your thought process and may guide you towards the solution.
- Write Clean Code. Small things like specifying the variable names properly and proper indentation with minimal errors give you an edge in the interviews.
- The speed and efficiency should be really good as the shortlisting is directly based on your performance under pressure in the coding rounds. Keep practicing 1.5/2 hour contests before the CDC process.
- Be thorough with your resume. Don’t write anything on your CV which you won’t be able to explain.
- It’s okay to be not shortlisted initially. I was receiving continuous rejections from various companies till I got shortlisted in GS. Don’t be disheartened if the coding round of a particular company went bad.
- Take extra care in filling up the forms on the CDC module of ERP and make sure to give all the correct details. I wasn’t allowed to sit for the coding round of a day-1 company as I didn’t fill a google Form.
- Communication skills matter. It helps to explain the solutions in the technical rounds and as well as your thoughts in HR rounds.
- Companies prefer Circuital Students-If you are from a non-circuital branch, you should accept the fact that not many companies would be open for you in comparison to circuital students. You need to work harder to ensure you get selected in the companies that are open for all. There are a lot of off campus opportunities too!
I thank my parents and my elder brother for their love and support throughout this sinusoidal journey. I want to specially mention my mentors cum seniors Vivek Gupta, Nitish Rai, Shubham Patil, and Rohan Ishwarkar for their guidance and help through Algozenith. The constant guidance and the support (also the debugging support :p) helped me gain skills that I couldn’t have imagined when I started.
I would also like to thank CDC IIT Kharagpur for the smooth conduct of the online process.