Adventure Times — The Internship Chronicles

Satvik Bansal
14 min readNov 29, 2021

--

On “Cloud” Nine!!

Hello everybody,

I am Satvik Bansal, a 3rd-year Undergraduate student from the Department of Computer Science and Engineering enrolled in its B.Tech Course. I will be interning at Rubrik India in the Summer of 2022.

In this blog, I will try to pen down my experience in this journey and try to tell the things that are suggested to do and the things to avoid, but most importantly will try to make you all visualise what I have done to reach this place. It is a long blog so please bear with me, and I hope you can reach the end :).

One thing you should remember, no one is perfect and you can’t be an expert at everything, but be good enough so that your bad/weak characteristics don’t sabotage the perfect ones.

Preparation:

Warm-Up

I started coding or to be specific competitive coding around the end of my first semester. But it was a very passive activity back then, I used to solve basic maths or array questions. Nothing too fancy or difficult. The seriousness came when I gave a Codenite organised by Code Club, IIT Kharagpur, and some of my friends started doing CP on platforms like CodeChef and Codeforces.

Then in June of my first-year break, I started taking CP a bit more seriously, started solving problems on Codeforces and CodeChef, and became an average coder with a rating of around specialist on Codeforces. At this point, some of my friends were at Expert level and some had already reached Candidate Master level. This really bugged me and hence motivated me. I reached Expert before the starting of my third semester, took a small break during the semester but continued reading small topics of CP. In the third semester, I had a course namely Algorithms-I, which helped me understand some basic concepts which boosted my speed. At around the same time, with the ongoing competition, I noticed I was slow in typing the solutions, even though I was able to think the logic in around 5 minutes, it took me 15–20 minutes to implement it. The solution I found for this problem is to learn more STL in C++ (I was/am doing CP in C++) and at the same time started learning touch typing, because I read on some blogs that typing helps a lot in CP as well as in general work like doing assignments. Then with rigorous practice on the Codeforces platform, I hit the Candidate Master Point around February 2021, and a funny thing happened after that, I hit the specialist bar in the next three rounds (Yes, in three rounds, I lost more than 300 rating). After this, I took a small break of 2–3 weeks to overcome the “burnout” and achieved a stable Expert rating before the end of the semester(4th Semester).

The Real Race Begins

Now the semester was over, and I knew I didn’t have any internship or FT(Foreign Training/Project), so all I had to do was CP during the remaining 3–4 months. I started practising on Codeforces, started A2oj ladders and reading from the competitive programming handbook. I will be sharing the resources later in the blog. I did almost 10–15 problems each day, the difficulty ranging from 800–1400 for the first 1–3 weeks, this was to increase my speed and learn small concepts. I did not distinguish between the problems whether it was ad-hoc, data structure or an algorithm problem. I was just solving them. One thing I felt during the process is that giving contests is more important than doing practice questions. I gave almost every contest that was announced, sometimes it was 2 on a day but on average, there were 4 contests in a week. A similar process went on till the end of May. I was solving problems on Codeforces, reading tutorials for the problems I was unable to solve, and while solving tried to connect problems to the concepts I had previously learned and read about, while maintaining the integrity and interest of the problem. I did around 300–400 problems during this period. At around the end of May, I created my account on Leetcode, and started doing Leetcode practice problems, as I heard from my friends and which I later felt that leetcode has a collection of problems that will help the most in the interview tests, as they have the concepts directly spelt out in the questions, unlikely in Codeforces which have a story and have to deduce the concept out of that. I did around 150 problems, almost equally divided among the easy, medium and hard ones, with more medium ones, as they are the most likely to come. At around the time of interview tests or the second week of July, I hit my all-time best(till now) on Codeforces with a rating of 2080, but this time I didn’t fall back to specialist, but yeah stayed in CM with a little up and downs, but tried to stabilise my position.

The Almighty Push

I did Interviewbit problems which were and will be recommended by everyone, the platform was a little buggy so I didn’t spend much time on the platform. I was casually doing some problems on Codeforces, Codechef and LeetCode but actively giving Contests. I revised basic concepts again from CP Handbook and GFG, and was ready for the tests. I checked my typing speed, and at around this time, I had reached 100 WPM in normal text and around 70 in coding (because there are a hell of lot more symbols than actual words).

Interview Tests

I gave almost every test for the companies that were open for the CS Department, I even gave the test for NVIDIA Hardware, for which I was almost ineligible. I had a decent CGPA of around 9.60, so the CGPA barrier was not such a problem for me. I tried to do every problem in the tests, as I had practised sufficiently in CP.

Some of the major Tests I would like to list:

  • Salesforce: This was my first test for the whole process, so it is worth mentioning. The test went pretty smoothly, and I did all the questions with a lot of time left. I was hoping to get shortlisted.
  • Google: This test was the one I most feared. The date was 24th July, a similar test happened on 10th July and the questions were a lot difficult, and to be noted, there was a question of SOS DP for which a basic problem would be rated 1800+ on Codeforces. So I was scared of the same. But the two questions that came, I felt they were pretty easy, one was a standard DSU + Digit DP, and the other was DP on trees, though not so easy for beginners, with experience, the solution was easy to deduce, I had a spare of 5 minutes before final submission, because of the long queues and some small debugging.
  • DE Shaw: This was a small test consisting of three problems, with time-bound on individual problems rather than the whole test, i.e. we had a fixed time for each problem. If solved in that time, then well and good, but the time from the other questions was not used. The questions were easy, but I was able to do only two, not because the logic didn’t strike but I forgot to initialise a vector and hence was not able to debug it in time. The questions were greedy, binary search and DP(Coin Sum Problem).
  • Rubrik: What we heard from seniors and the “rumours” from our batchmates, the questions were supposed to be of the level div2-D or 1900+. This gave me confidence and a chill at the same time. The test had 4 questions and a time of 60 minutes to solve all 4. The questions were all Div2 D and E’s. I was able to do all 4 questions with almost no time to spare. Luckily I had already done 3 out of 4 of these problems or at least heard the question from my friends. But still, it took time to recall and implement the question. The questions were of this genre: BFS, Binary Search+Math, BinarySearch+Two Pointers+Greedy, Math+DP.
  • Microsoft: The questions were pretty easy, there were two questions, BruteForce, and Number of ZeroSubarray(DP). I did both the problems in 15 minutes, but still verified all the edge cases and small mistakes I might have made during coding, as there were almost no test cases, and the final test verdict was not released.

There were many tests for the whole process with almost three tests every day for two weeks. Giving a lot of contests helped me to practice for this kind of situation and prevented me from burnout till the end of the day because almost all the major tests were around night.

Interview Preparation

I did some questions from InterviewBit like practice but never gave a single mock interview, which is not advisable so I would suggest all of the readers, please give at least two to three mock interviews with your friends or seniors for better practice and confidence.

I didn’t require much practice for the interview because after every contest there was always a kind of a mock interview in which you had to explain to your friends how you did that question, that too on a call without any screen share or any pen-paper to show your thoughts. And at the same time listen to their solution as well. This is a great experience, and the effort in explaining it takes, you can only know if you know.

As per the HR part, I created a document that consisted of some of the possible questions that can be asked and wrote the answers for the same. As I am a little weak in English, so I didn’t want to risk my offer just on that. And surprisingly almost all the questions that were asked to me during the Rubrik HR interview were from that document, and so it was smooth for me.

CV preparation was to be done during the end of June and the first two weeks of July. It is a tedious, cumbersome and tiring process. The platform of ERP is very trivial, no way to format text. If you want to indent a few things, you either use spaces or put full-stops and later change their colour to white. The text is not monospace, so it is hard to align the text. And the content for a person like me was not easy to find. I wrote two of my course term project/mini-projects in my CV, wrote achievements from past and some of the coding platforms, and POR of Executive Member of GYWS and CDC Department Representative. In short, I was able to fill one page of my CV with important Details. One point to remember, everything you write in your CV should be crystal clear to you, and you should be able to explain all the projects and internships you have written in it in depth.

I revised concepts of OOPs as well. It was told to us that some companies do ask questions in OOPs aside from CP. Lucky enough, I didn’t get a single question in OOPs during the interviews but there were plenty enough in the tests of various companies.

The D-Day

This is where the real fun begins.

Spoiler: I was free by almost 11:30 in the morning, and had given interviews for only 3 companies by then.

I was shortlisted for 11 profiles(10 Companies) for Day-1 interviews which were, Google, DE Shaw, Rubrik, Sprinklr, Microsoft, Quadeye(Systems and Quant), QuantBox, APT Portfolio, NK Securities and Goldman Sachs. So I created a priority list and gave it to the PlaceComms, mentioning that this is my preference of offer, if I receive multiple offers.

The night before I slept at around 12, which is totally not advisable, and not at all if you have your first interview at 6:00 AM. I had my first interview at 6:00 AM with Rubrik. The interviewer asked for a short introduction till his colleague came, and then gave me a basic CP Problem involving priority_queue, and cost, which basically was you have some initial capital and there are n projects with different costs and profits, you are allowed to do at most k projects, what is the maximum profit you can get at the end. The round went pretty well, had a healthy discussion, was able to code it in about 5–10 minutes, and made some small typing mistakes, as I was not fully active. The round was over in about 50 minutes and I asked for some feedback from the interviewer.

Then I had my first round for Quadeye at around 7:15 and gave it with full enthusiasm as my first interview went great. The interview went on for around 80 minutes, 4 different people came one after another and asked some questions on CP and a single question on quant. I was able to answer all of them and was able to tell and discuss the follow-up questions as well. The rounds went great.

In the meantime, I had my Google interview which was rescheduled for 9:00 AM from 8:00 AM. Questions on graph traversal were asked, that included BFS, BFS with max distance and then refilling. I found the last follow-up a little difficult but I was able to code up the first two easily and had a healthy discussion. The takeaway from this interview was that always code all the questions that were asked and take time-complexities seriously, know it for what you are coding. Just after this interview, I had my second round for Rubrik.

The second round was pretty interesting. I had a healthy discussion with the interviewers, I asked them about the work and a basic question on how they handle merging and repetitive data. Then came the question, it was again a CP question. The question that was written was actually difficult which can only be solved by using computational geometry+Convex Hull, but instead of going directly to that approach I asked a few questions from the interviewer and steered it to a basic case of BFS on a grid, then after that coded the same approach, then we had an open-ended discussion on various path searching algorithm, As I was part of the winter-workshop during my first year, we were told about a few paths searching algorithms like Dijkstra, A*, RRT etc. So I think I was able to answer their questions. And the interviewer seemed happy when the interview ended at around 9:50 AM.

Now it was time for Google’s second round, and like the last time, it was scheduled for 9:15 but I was busy in Rubrik so this time, the HR was a little furious but it was rescheduled to 10:00 AM, I went for the interview, the question that was asked from me was to implement my own malloc and free in C++. I implemented it using the data structure (STL) set. The interviewer seemed satisfied but I knew this was not the way to handle that, so I had doubts in my mind but at the same time thought the question was difficult and hence they might cut me some slack. The HR was called in the same link which got me excited but when she arrived, she told me that HR was not required, and I will get to know the result.

Then I got notified that I had my HR round for Rubrik, this got my heart pumping. I entered the link and boom the HR was the same person that took the PPT for Rubrik, it got me nervous, but I remembered that I had already made a document for the questions of HR and had practised. So then there were some basic questions like introducing yourself, then she asked about my project and what motivated me and kept me going. The interview went for around 40 minutes, we had a few laughs, she asked me some of my life experiences. And then on a positive note, the interview ended. I asked her about the work and how it will be allotted if I get an offer and if there are any chances for an international offer. After the interview, I realised that she asked more than half of the questions that I had jotted down in that doc and that made my day.

After half an hour or so at around 12 I got a call from the placecomm that I have received an offer from Rubrik, and I was over the moon. I tried to sit for DE Shaw, but later told them to not do so, because nothing good could come out of this, if I received some other offer then it would only mean that one of my batchmates might not get one which is not good and my conscience didn’t allow me to do so. Later, I got to know that I received an offer from Quadeye too, so in the end, the day was successful. I changed my clothes from the formals and sat with my parents, had a laugh or two and discussed the whole experience with them, after all, they were tense too.

I got to know at around 6:00 PM that I didn’t receive an offer from Google but at the same time, one of my closest friends received one who had been struggling since the day started. I was happy for him, in the end, all of my friends with whom I had regular talks had received an offer.

I went out to a restaurant, cut a cake and enjoyed the evening.

Takeaways

  • CP is the most important tool for getting an internship, the more you can solve and faster you can reach a solution the better the chances.
  • Quant problems(puzzles) are very important for sharpening your mind and also if you are aiming for a quant profile.
  • Good communication skills are necessary, and if you practice it can boost your confidence and remove some of the stress on the interview day.
  • Good Companies come even after day 1, so don’t get disheartened if you don’t get one on day 1. You will still have plenty of opportunities.
  • Practice as much as you can, the more you practice the more chances you will have a seen question, after all, how many changes can be made to a question.
  • Always keep your friends around in good and bad times. They are the greatest motivator and motivation that can drive your will to do work. Always seek competition from your peers.
  • Don’t fear reaching out to your seniors, they will always have more experience than you have and they will always be helpful until you nag them constantly.
  • Utilise your time wisely. Relaxation is necessary between efforts for greater goods.

Some Helpful Resources

Coding Platforms / Online Judges

Some good Question Banks

Places to Study from

  • CLRS ( This is like the book that is always recommended for CP and particularly DSA )
  • https://cses.fi/book.pdf ( One of the books I personally would recommend to those who have an idea of what CP is have practised some basic questions and want to progress fast )
  • cp-algorithms.com ( One of the websites from where I have referred to most of the times to learn concepts that I was unaware of )
  • https://www.geeksforgeeks.org/
  • https://usaco.guide/ ( This is one of the websites if you are new or have just entered the realm of CP, covers all the concepts and have practice questions as well ).

Learn to type

Typing is a skill that is an asset to a person, if you can type a document in 10 minutes rather than 30, you save those 20 minutes for other work.

Always google things, the more you google the more you learn, but at the same time spend some time developing your thoughts, in the end, thoughts will be what matters.

If you require something else, try to contact me. I will try to help you out.

Special Mentions

  • Anish Sofat and Sayan Maity ( “They are my Thawne” but in a good way ). They have always been at my side and supported me in my highs and lows.
  • Aryan Agarwal and Dipanshu Garg, have always introduced me to new challenging problems and concepts and they are the reason I got to know about different topics.
  • Pravesh Jain and Nikhil Popli, thanks for being my mentor and making me see the big picture and what I could expect in the future.
  • All of my friends who helped me during the course of time to reach this stage, and have always been at my side.
  • And finally, my parents, who have been the biggest support for my entire journey.

I hope this was helpful to you and can take some of the points and implement them in your life. Sorry for the lousy English, I am not good at it.

--

--