Yet Another CDC Story

Vishal Ravipati
9 min readNov 8, 2022

Hello! I am Vishal Ravipati, a 3rd year undergraduate student from the Department of Computer Science and Engineering, enrolled in its B. Tech course. I will be doing my internship at NK Securities in the summer of 2023. This blog includes my experience with the entire CDC internship process and my preparation methods along with some advice.

Preparation

I had prepared primarily for two profiles — software development (SDE) and quant.

I first started CP at the end of my first semester, having learnt the basics of programming from the PDS course. I then took part in the workshop organized by Code Club for CP during the first year, where I learnt the basics of STL containers and algorithms. I next learnt concepts of DSA as a part of the Algorithms-I course of my 3rd semester. However, I wasn’t very interested in programming and had spent most of my free time (which wasn’t much due to the load of the online semesters) during the first two years trying out other domains like machine learning and research, occasionally giving contests on Codeforces.

At the end of the fourth semester, I had realized that I hadn’t gained sufficient skill in any profile, and considering that most companies in CDC come for the SDE profile , I will focus on CP during the 4-month summer vacation.

I first brushed up my Algo-I knowledge from GeeksForGeeks and CLRS (book). I then started solving the CSES problem set, which covered many standard models from important topics like Greedy, Dynamic Programming, Graphs. Along with this, I was giving contests regularly on Codeforces.

During the later half of the summer vacation, I started solving problems on InterviewBit, focusing on interview-specific topics like Binary Trees, Linked Lists, etc. It is essential to do InterviewBit as the questions are more test/interview-specific with greater focus on data structures rather than the ad-hoc problems of Codeforces. I also took part regularly in the GOC CDC contests which consisted of previous year CDC test questions and gave a good idea of the kind of questions to expect.

Many companies, especially High Frequency Trading Firms (HFTs) ask in-depth questions on OOPS (both B.Tech and Dual), and OS, DBMS, Networks, Computer Architecture (if dual degree). I used learncpp.com, an excellent resource for understanding fundamentals of C++ and OOPS in C++.

The coding preparation was a frustrating process, and after seeing my growth plateau midway during the vacation, I started preparing for a quant profile too, which needed a solid knowledge of Probability and Statistics along with puzzles and discrete math. Your department(all come for circuital, many for CS only) and CG plays a massive role too. The ProbStats course in my 3rd semester gave me the essential knowledge. The math part of the Discrete Structures course in my 3rd semester (in particular, Pigeonhole Principle, counting paths in grid, recurrence relations, proofs by contradiction) was also greatly useful for me. An excellent source I referred to for theory of ProbStats is the STAT110 course of Harvard, which has an associated book too. It has a great explanation of all the theoretical concepts and a number of good problems too. Some standard sources for problems on ProbStats and puzzles are Heard on the Street(Chapters 1 and 4), Fifty Challenging Problems in Probability and Brainstellar (website).

Tests

The tests started around 15th of July, with the CV submission portal being open for around two weeks before the tests. Having a good CV isn’t particularly important for software or quant roles (I wasn’t asked any question based on my CV) but be sure to only include stuff in your CV about which you are confident about and can explain convincingly to the interviewer. Not being able to explain your project is much more damaging than not including the project in the first place.

The tests were online and were mainly on HackerRank platform with video proctoring with tab switching and code copying being restricted. Some other companies had tests on HackerEarth, Mettl, CodeSignal, etc.

I had given almost all the software and quant profile tests along with 1/2 data analytics tests too. Exams were typically between 60–90 minutes with 2–5 coding questions per test. Typically, one problem was on the easier side and other problems were more medium or medium-hard level (approx Div2 C/D on Codeforces). The most commonly asked topics were trees and greedy (expect at least one question from each of these topics per test). Some companies, especially HFTs, had other sections too, typically with MCQs from one or more of the following topics : ProbStats, Object Oriented Programming (OOP), core CS concepts (Operating Systems, DBMS (Databases), Computer Networks, Computer Architecture).

It is important to note that unlike Codeforces, there is partial scoring for the coding questions based on the relative number of test cases passed, so a brute-force algorithm can get you a partial score (or even full, if the test cases are weak). Do consider this if you run short on time.

After all the tests, I was shortlisted for Sprinklr, Nutanix, Quantbox, APT Portfolios (Software), Jane Street (Quant), NK Securities and Quadeye (Quant + Software) on Day 1. (I was unable to give the interview for APT)

Interviews

Jane Street: I didn’t have to give any tests for Jane Street (for the first round, some had tests, while others had an interview). There were 2 rounds of interviews before the final interview(one about 20 minutes, another about an hour). Each was with a different interviewer.

They involved lengthy discussion based on a game or puzzle, based on probability and expected values, with follow-up questions adding new complexities to the puzzle. The puzzles had elements of game theory, where strategies have to be made assuming intelligent opponents.

The final interview was for 3 hrs ( 2hrs happened 2 days before day 1, 1hr on day 1 7–8 am). The interviews were basically simulated trading sessions where you are given tokens to make markets on complicated puzzles or games. Making markets basically means quoting a buy price and a sell price based on an event, stock, etc. They should be made such that one gains an expected profit for both buy and sell, while being as narrow as possible. One is judged based on profits and logic behind making markets.

You also need to be proficient in performing fairly long manual calculations and devising strategies quickly and without error in all the rounds. I did well in the initial rounds but could not do as well in the final round and hence was not selected.

Quadeye: I had 3 continuous rounds of interviews. Each was around 20 minutes (8–9am) and was taken by a different interviewer. The first two rounds were a number of short and standard InterviewBit questions and some questions on C++ concepts, which I was mostly able to answer satisfactorily, while the third round had a standard puzzle which I couldn’t answer fully. I was asked my preference between Quant and Systems role (Quant was my preference).

Quantbox: I had a single round of more than 1.5 hours(9 to ~10:30am) where there was a panel of interviewers, each taking turns to ask questions. They started with a puzzle based on a contradiction-based proof. They then asked a coding question about modifying binary search given a particular piece of information, then completing code for a practical-application based class in Google Docs. Finally, there was a discussion on C++ concepts. All topics involved long and tricky questions. I couldn’t solve the puzzle but was mostly able to solve other questions after a few hints. I was asked my preference for Quantbox in the end.

NK Securities: I had two rounds of interviews for NK Securities, lasting for a total of almost 2 hours (10:45am to ~1pm) . Each round was for 1 hr and had separate interviewers. The questions were once again tricky. I couldn’t do the CP questions based on strings and sliding windows as well as I would have liked, while I was mostly able to solve the puzzles, again after some hints. The puzzles were — a contradiction-based proof, counting paths in a grid with a constraint, recurrence relations for expectation in a card game, and casework. There were a number of questions on OOPS and C++ concepts too.

At this point, I was completely exhausted and disappointed with the lack of response from the companies, and was unable to do well in the interviews of Sprinklr and Nutanix, getting little to no progress in any questions asked.

Sprinklr: First round had two CP questions, one based on range queries (segment tree) and another based on a greedy algorithm. The round lasted for around 45 minutes and I was not selected for future rounds.

Nutanix: First round had a timed debugging round in Python based on linked lists(10 minutes) and 1 CP question based on using graphs to solve a superstring problem, lasting for a total of about 45 minutes and I was not selected for future rounds.

The interviews went on back-to-back from 7 am to 3:45 pm. The lack of response from the companies did leave me super stressed, but I received the official offer from NK Securities from the list released at the end of the day. All’s well that ends well :).

Note on C++ and OOPS: Most questions were based on virtual functions, predicting outputs from code snippets of classes, uses and internal implementations of static and const keywords (both separately and in the context of classes), different methods of dynamic memory allocation in C++, stack and heap memory allocation, hashing, move semantics and smart pointers. Some questions were lifted straight from obscure points mentioned in the learncpp articles.

Preparation-Specific Advice:

  • My biggest mistake in preparation for software profile was to just devise a logic instead of implementing the whole code. This ended up with me getting ideas fairly quickly but making silly code errors repeatedly during tests. (An extreme example, I had spent 20 minutes debugging my code for a question in the Google test before noticing that I wrote i++ instead of j++ in my inner for loop). So, focus on implementing your ideas, covering all edge cases.
  • Do plan beforehand for the type of profiles you need to devote time to. You don’t want to spend too much time preparing for a profile before realizing you aren’t interested in it or that there aren’t too many opportunities for your department in that profile.

General Advice:

  • Try to maintain as high a CG as possible. In many tests, there will be a number of people with similar performances, after which the company starts shortlisting based on CG. I have received a number of shortlists even after average performances and CG played a major role in that.
  • CDC is an intensely competitive arena, and there will be many moments where you start doubting yourself, particularly after a bad test, a bad interview, or being rejected by your dream company (perhaps even after doing very well). Shortlists can feel random, or even unfair, with luck playing a huge role, but you need to stick to your targets and not get disheartened.
  • Form a group of friends who are in the same boat as you. Having a group to prepare together, review each others’ CVs or just to vent out your frustrations or anxieties can do a world of good.
  • Feel free to approach your batchies or seniors for any kind of advice. They will always be willing to help you in your preparation, CV making, etc, having gone through it themselves.
  • Be very careful in deciding priority order and scheduling companies with placecomms as well. There will often be clashes between interview slots and you will need to prioritize appropriately. Do think of such scenarios beforehand.
  • Interviewers often give much greater value to your thought process than to the actual answer. Staying silent for a long time gives a bad impression even if you come up with the right answer. On the other hand, thinking out loud leaves a positive impression, even if you end up making some mistakes in your solution.
  • Many times, interviewers ask vague questions on purpose, providing further details only if you ask them. Such questions are made to test if you ask the right questions to resolve ambiguity instead of making assumptions implicitly. So, do not hesitate to ask about the question to get as much information as possible and resolve any possible ambiguities.
  • A problem faced sometimes during CDC is the sub-standard platforms provided for tests. The platform may not show the number of cases passed or may be too slow, the IDE may be hard to use, etc. All of these are unavoidable, increasing the need to be able to write error-free code without significant help from an IDE. I would recommend practicing writing code on simple IDEs (for example, the online HackerRank IDE, or even Google Docs for interviews) to get rid of over-dependence on the IDE to autocomplete your functions, highlight errors, etc. Also, take a demo of the platform to avoid facing issues during the test.

That’s all from me! Hope you found this useful. Do feel free to contact me through Messenger for any help.

--

--