CDC Internship Chronicles

Rajat Bachhawat
9 min readNov 20, 2021

--

Introduction

Hello, I’m Rajat Bachhawat, a 3rd Year B.Tech student of the Department of Computer Science and Engineering, IIT Kharagpur. I got an internship offer from Quadeye (Systems Team) in the CDC Campus Internship Drive of 2021.

This blog is aimed at those aspiring to bag a Software Development internship through the on-campus drive. I urge you to give it a read regardless of your department as I try to share valuable information that’ll help you fulfil your internship endeavours.

Preparation — Initial Stages

I learnt from my seniors that for getting a CDC internship the most important thing one must be good at is competitive programming. So I started participating in CP contests on Codeforces in April 2020 (during the summer break) along with the DSA Learning Series of Codechef. I got a fair grasp on the usage of the various C++ STL containers.

MISTAKE: I never solved many problems outside my comfort zone (barely up-solved any contests), which led to very stunted progress in this phase.

When the Autumn 2020 Semester started, Algorithms-I got me acquainted with Divide & Conquer, Dynamic Programming, Graphs and Graph Algorithms, Hashing, Heaps, Binary Trees and AVL trees.

After the semester, I completed the A2OJ Div2C ladder and gave lots of virtual contests on Codeforces. I still didn’t see much progress during this phase, even after having solved a lot of problems.

MISTAKE: Solving random questions on Codeforces was not leading me anywhere. I realised that most of the Codeforces contest problems these days were ad-hoc whereas I needed structured preparation in DS Algo topics.

Thus, I decided to join the AZ-201 batch of AlgoZenith in January 2021. I started to see improvement soon as problem-sets were curated very well and helped me hone my problem solving skills. The live discussions of problems made concepts that I earlier found confusing, easy to grasp. However, I couldn’t devote as much time as I should have due to the load of the online semester.

I was still giving Codeforces and Atcoder Beginner contests as much as possible, to make sure I do not lose touch with competitive programming. I advise you as well, to keep giving contests to build your problem solving skills under a time constraint.

MISTAKE: I had this habit in which I would come up with a half-baked approach to a new problem that I was faced with and would get down to code straight-away without fleshing out my idea — something I’d advise you against. Always think hard, come up with a working approach after analyzing it well, and only then start to code (exactly how it’s expected in interviews too).

As the Spring 2021 Semester ended, I solved more problems on AlgoZenith and particularly strengthened topics like DP and Graphs which I used to be a little weak at. I completed all problems on InterviewBit in the month of June and mastered Linked Lists and Binary Trees (these are majorly interview-specific topics). I continued to give Codeforces and Atcoder contests as much as possible.

In this period, I saw significant improvement in the topics which I was weak at, and all the practice that I had done was finally starting to pay off :)

Preparation — Final Stage

From the end of June 2021, I revised all noteworthy and tricky problems done on InterviewBit and Algozenith in the past. I revised all the notes that I had made for tricky problems throughout my preparation. I solved problems on Probability from Algozenith and from the famous book — Heard on the Street, to prepare for Quant profile. I made sure to revise C++ OOP concepts thoroughly that we had learnt in our Software Engineering course — this is particularly important if you wish to sit for DE Shaw, Alphagrep, Quadeye and the like. I also got friends and seniors to take mock interviews for me, and made sure I worked on the feedback I got. I improved with each interview.

Starting from two days before the CDC interviews, I prepared what all to say about the projects that I had put in my resume. I made sure that I had at least basic knowledge of all the tech/tools that I had mentioned in my resume.

Shortlisting Rounds

Online assessments for Day 1 and Day 2 companies started on 23/07/2021 and continued till 05/08/2021. On most days we had 1 or 2 tests with the occasional day in between having 3 tests. I am going to talk about the tests of the companies I was shortlisted for.

Alphagrep — Had 2 Sections (individually timed). Section 1 was of 15 mins and had 46 MCQs on topics like C++ Programming Fundamentals, OOP, DS Algo, Combinatorics, Propositional Logic. Section 2 was of 75 mins and had 4 coding questions — 2 easy and 2 medium. Topics were bit manipulation, two pointers, stacks + greedy and math.

I was able to answer 30 out of 46 MCQs (mostly correct) and all 4 coding questions.

APT Portfolio (SDE) — Had 1 Section of 100 mins with 3 coding questions — 1 easy, 2 medium. Topics were DP, stacks + prefix-sums, divide and conquer/ordered_set (counting inversions with a slight twist).

I was able to complete all 3 questions.

DE Shaw — Had 3 Sections (individually timed) each having 1 coding question. Section 1 was of 25 mins and had an easy question. Section 2 and 3 were of 35 mins each having medium and medium-hard problems respectively. Topics were math, fast exponentiation & combinatorics and DP.

I was able to complete all 3 questions.

Google — Had 1 Section of 60 mins with 2 coding questions — both medium-hard. Topic for both questions was DP. In this test, different people got different pairs of questions from a large question bank. Many questions in the bank were on DP.

I was able to complete 1 question and passed half the test cases for the other question. Luckily, Google gave CV and Kick Start ranks more importance than the coding test while shortlisting, hence I was able to bag a shortlist.

NK Securities (Quant) — Had 3 Sections (individually timed). Section 1 was of 15–20 mins and had 10–12 MCQs on JEE Math topics. Section 2 was of 20 mins and had 4–5 MCQs on DS Algo. Section 3 was of 45–50 mins and had 2 coding questions — 1 easy, 1 hard. Topics were brute force and greedy.

I was able to answer 5–6 questions correctly in Section 1 and all questions correctly in Section 2. I was able to complete the easy question and passed very few test cases for the hard question.

Rubrik — Had 1 Section of 90 mins with 4 coding questions — 2 easy-medium, 1 medium and 1 medium-hard. Luckily, I had encountered the medium-hard question earlier on Codeforces so already knew the approach and was able to code it quickly. Topics were DP, graph basics, binary search and greedy.

I was able to complete all 4 questions.

Sprinklr — Had 1 Section of 90 mins with 3 coding questions with different scores (50, 75, 100) — 1 easy, 2 medium but implementation heavy. Topics were brute force, greedy, DP + graph basics.

I was able to complete 2 questions (50 + 100).

Microsoft SWE — via Microsoft Engage Mentorship 2021.

Quadeye (Systems) — via CV Shortlisting.

Things to Keep in Mind

  • Tests happen on a variety of platforms — HackerRank (most common), HackerEarth, CoCubes, HirePro, Amcat and maybe a few others. Make sure you try sample tests on these platforms (if available) to avoid any last minute unpleasant surprises. It’ll hardly take any time.
  • The default language could be C, and you might finish writing your C++ code over there but on compilation realise that you need to switch to C++ 17. However, the platform might not allow copying code from one language to another, and you’ll have to start from scratch. Just wanted to make y’all aware, happened to a friend — he does dumb things :). Make sure you choose the language you want to code in at the start itself.
  • Do read the instructions very carefully and understand the policy for roll-over time when hopping between Sections. I messed this up during the test of Goldman Sachs, so just putting it out there.

Interviews

Day 1 of the internship drive started at 6:00 AM on 07/08/2021. My first interview was scheduled with AlphaGrep at 7:00 AM, but I got a surprise call from the Placement Committee asking me to sit for Quadeye before that at 6:15 AM. I was still having breakfast at this point, so I hurriedly changed into formal clothes and joined the interview.

Quadeye

Round 1 [lasted 25 mins]. The interviewer straight-up started off with DS Algo problems, without giving his introduction or asking for mine. The first problem was a very standard one involving maps + prefix sums. I thoroughly walked him through the approach and stated the time and space complexities. As this problem was known to me, I didn’t ask for clarifications in the beginning, but I’d recommend you to always do so.

He then asked me about my web development project, which I made sure to explain thoroughly taking 5–6 minutes. He seemed satisfied and I wasn’t asked follow-up questions.

We moved on to another problem, which is a standard problem of strings, involving an observation. I took my time to figure out a strategy for this problem, dry running lots of test cases and finally explained the correct approach.

Now, the interviewer asked me about virtual functions in C++ as I had mentioned a C++ OOP project on my CV. I answered with the basic definition and applications along with its uses in my project.

Next, I was asked how I would store a convex polygon in 2D space given by (x,y) using some data structure. After having answered this easy question, he asked me a problem involving a convex polygon given as input. I told him a fairly straightforward linear-time approach but he asked me if I could do better if the points were given in a clockwise order. I thought for a while, drew some test cases on the whiteboard and came up with a potential solution using binary search. As I was explaining, a new interviewer joined the meeting and the current one left.

This was the start of Round 2 (as I later figured out) [lasted 15–20 mins]. The interviewer asked me a question on finding pairs of indices satisfying a condition in an array. This was fairly easy after making a manipulation to the condition, and I quickly explained the solution to him. The next question was a fairly easy observation-based question on bit manipulation, which I again answered quickly. After this I was asked another observation-based array question involving GCD. It had a greedy strategy which occurred to me rather early and so I was able to answer this question as well without any hiccups. At this point, my current interviewer left and a different interviewer joined simultaneously. P.S.: I wasn’t asked to code any of my solutions in either round.

This was the start of the HR Round [lasted 15–20 mins]. I was asked if I knew what kind of work the firm did, what HFTs were and whether I had attended the PPT. I answered all questions honestly and confidently. The interviewer told me more about the firm, about the people and the kind of work they do over there involving a lot of problem solving. I conversed with her all through, and made sure I conveyed that I was positive about taking up the challenge. In the end, the interviewer offered me the internship! I gladly accepted the offer and did not sit for any further interviews.

That was it, I was done by 7:30 AM. I had bagged an internship at Quadeye and considered myself extremely lucky that I did not have to go through a gruelling series of interviews with multiple companies, like many others.

Final Words

I am extremely grateful to the mentors at AlgoZenith, especially Vivek Gupta, for the immense progress that I have made in CP and DS Algo over the past 6 months. I’d also like to thank Sahil Jindal for his constant guidance throughout the CDC process, mock interview and other invaluable fundae! And a big thank you to Neha Dalmia for all the problem discussions and mock interviews that she did with me. It really helped me take my problem solving and communication skills up a notch and ace the interview on D-Day :)

To everyone sitting for the internship process in the coming years, just have faith in your abilities ALWAYS. There might be times in between when you’ll doubt yourself a little, but in those times, just keep working towards your goal. Hardwork always pays off!

--

--