CDC Chronicles

Rishit Singhania
7 min readJan 9, 2023

--

Introduction

Hello! I am Rishit Singhania, a fourth-year undergraduate studying Mathematics and Computing at IIT Kharagpur. I will be interning at AlphaGrep Securities in the Summer of 2023 as a Quantitative Trading Intern.

This blog is about my preparation and experience of coding rounds and interviews in the CDC Internship Process 2022–23.

I was shortlisted for 7 companies on day 1 for interviews. These were AlphaGrep, Quantbox, Graviton, Rubrik, Glean, APT Portfolio, and Uber.

Preparation

It goes without saying that the primary skill needed for someone sitting for an SDE role is Competitive Programming. I started with Competitive Programming towards the end of my first year.

I began giving contests on Codeforces, Atcoder, and Codechef after my first year of college. I highly recommend all of you to regularly give Atcoder Beginner Contest (ABC) which is held almost every Saturday on Atcoder. You will very frequently encounter problems involving Dynamic Programming, Graphs or data structures such as Segment Trees in Atcoder Beginner Contests.

During my second year, I used to give almost every contest on Codeforces and Atcoder. When your rating gets stuck at a level for a long time, it indicates that you need to learn new topics. My rating was stuck in the Pupil-Specialist range for a long time. Then I started with Dynamic Programming and Graphs after which I was able to reach Expert on Codeforces. Codeforces provides you a way to filter problems based on topic and difficulty range. After learning a new topic, filter problems related to that on Codeforces and solve as many problems as you can. The best way to master a topic is to solve various problems.

You must also upsolve problems that you were not able to solve during contests. Upsolving is really important to improve your problem-solving skills. Don’t just read the editorial; try to implement the solution yourself.

Solving a lot of problems will improve your implementation skills which is really important because if you write buggy codes during the coding rounds, you will not have enough time to debug your code even if your logic is correct. Also if you have solved many problems, most of the coding round questions will seem familiar to you and you will not have to spend a lot of time thinking about the solution.

Also keep giving the contests organized by Google and Facebook such as Kickstart and HackerCup. You can use the ranks obtained in these contests in your CV.

I reached Master on Codeforces in May 2022. Having a high rating in your CV is really helpful in the CDC process. If you are targeting Quant role in HFTs, you must be really good in Competitive Programming. After my third year of college, in May, I started with CDC-specific preparations.

For studying Probability and Statistics, I used the Stats 110 course available on YouTube. I prepared a lot of puzzles for Quant interviews from the following sources:

You may encounter puzzles directly from these sources in the interviews. You must be comfortable with solving expected value problems using Linearity of Expectation and Indicator Random Variables. I went through the above sources a lot of times before the interviews. Puzzles are asked especially in Quant role interviews by HFTs.

I completed Interviewbit in the month of June. Solving the type of problems present in Interviewbit is really important as they are similar to the ones asked in interviews. I also highly recommend you to give all the CDC Series contests organized by Grimoire of Code as they give you a sense of how the coding rounds are going to be and help you to know where you stand among your peers. You should also solve the problems of the past years’ GOC CDC Series contests which are available for practice on Hackerrank. While doing these, also keep giving contests on Codeforces and Atcoder to be in touch with Competitive Programming as the questions asked in coding rounds may be very similar to problems on Codeforces.

I studied Object Oriented Programming from the course slides and GeekforGeeks. I had no time to study Operating Systems and Computer Networks. If you have mentioned anything related to these in your CV, you must know it.

Coding Rounds

I appeared for the coding rounds of almost all the Day 1 and Day 2 companies.

AlphaGrep — There was a common test for both Quant and Software profiles. The test consisted of 5 coding questions to be solved in 90 minutes. The last problem of the test was very implementation heavy. I was able to solve all the problems in an hour.

Rubrik — In my opinion, this was the hardest coding round out of all the coding rounds that I gave. The test had 4 problems that needed to be solved in 90 minutes. The first problem was a greedy one and could be solved using a priority queue. The second problem was a harder variation of counting the number of palindromic subsequences in a string. The third problem was a constructive problem on trees involving Bitwise XOR. I had solved the same problem on Codeforces earlier so I did not take much time to reach the construction. The fourth problem had subtasks with different constraints. I was only able to solve the first subtask.

Glean — CV Shortlisting was done.

Quantbox — The Quantbox test had a nice Div 2D-E level coding question that required some Maths and prefix sums and an approximate coding question. I was able to solve the former completely. I submitted the code for the approximate coding question but due to server issues and low time, I was not able to see the verdict of my submission. It also had another separately timed section that had MCQs mostly from OOPs. I was shortlisted for both Quant and Software roles.

Uber— The test was on CodeSignal. It comprised 4 questions to be solved in 90 minutes. I solved the first three problems which were based on implementation, greedy and binary search. The fourth problem was a nice one on trees but the generator given was faulty due to which I got partial points for it. I was shortlisted for the interview round.

Few things to keep in mind during the coding rounds:

  • Make sure that you have selected the correct language (C++ in my case) in the editor before writing your code.
  • If you are not able to reach the complete solution, submit a brute force that passes few test cases. It is not necessary to pass all the test cases, you will receive points for the number of test cases that you have passed.
  • Do not panic and be calm because if you make mistakes in your implementation, you will lose crucial time debugging your code.

Interview Rounds

AlphaGrep

The first interview that I had to appear for was for the AlphaGrep Quant role. The interview started at 6:00 AM. It began with a brief introduction and then the interviewer went on to ask a few questions about my CV. He asked me about my term project on Genetic Algorithms, which I had prepared thoroughly. He seemed satisfied with my explanation.

He then asked me a coding question, which was a standard question similar to one I had solved on InterviewBit. I explained my solution which he seemed satisfied with. He sent me the link of a google doc and asked me to write the code of my solution. The problem involved maintaining prefix and suffix maximums and the interviewer was happy with my code.

Then a new interviewer joined the meeting. He started asking me puzzles and questions on probability. If you are targeting a Quant role in HFTs, you must solve a lot of puzzles before the interviews. As I had prepared a lot of puzzles from the sources mentioned above, I was able to answer all of them. The questions asked on probability were from conditional probability.

After that, another interviewer joined the meeting. This round was the toughest one. He asked me 2 good questions on expectation. As mentioned earlier, you must be familiar with linearity of expectation and finding expected values. I was able to solve both problems.

Then there was the HR round. All these rounds took place in the same google meet and there was no break in between the rounds. In this round, I was asked whether I had knowledge about trading and the work that HFTs do. At the end of this round, I was offered the internship and I gladly accepted it. I did not sit for any further interviews.

Closing note

Having a good Competitive Programming background is really important for someone targeting HFTs. Start as early as possible and I would recommend doing Competitive Programming over internships/projects in your free time.

During the entire CDC process, your spirit will be tested a lot of times. You must have faith in yourself. Hard work always pays off. Whenever you feel anxious and doubt yourself, talk to your parents or anyone close to you. Sharing your thoughts with someone close always helps in getting rid of anxiety.

Take care of your health and eat healthy food. You don’t want to get ill during the coding rounds or interviews. Get enough sleep. I was not able to sleep the night before the interviews.

If you have any doubts, you can always reach out to me on Facebook.

That’s all for now. See ya.

--

--