Commvault - My Interview Experience and More

It was placement season recently. Trust me, you're not prepared.

Posted by Parth Shah on November 25, 2020 [5 minutes]

You're not prepared for placements. Not only is it a test of your technical prowess, but it is also a test of your grit. You will have to put all your past experiences to use in this arena and lean into a learning curve that may feel uncomfortable. Push yourself at every step while maintaining healthy habits and you will achieve what you set out to. If you wish to be adequately prepared, scroll down for some advice. But first, here is my experience.

Commvault offered two positions, Software Development Engineer (SDE) and Software Development Engineer - Test (SDET) at PES University this year. They began their recruitment process in the first week of September, approximately one month after placements had officially begun. There is a difference in the total compensation and the programming language apart from the obvious difference in job descriptions. SDE candidates were expected to be familiar with C++ and SDET candidates with Python. Unlike me, more students chose SDET than SDE. Commvault was offering full-time employment with a mandatory six-month internship. My overall interview experience was extremely satisfactory. I believe Commvault has one of the best selection processes and I am positive this enables them to recruit competent engineers.

Round 1

If you pick SDET, you would have an additional pre-screening round. However, this round was a coding round with a few aptitude questions, coding questions similar to several other companies that visited campus. It was enabled by GeekAssess, an online assessment and proctoring service. There were 15 MCQs from core computer science subjects (such as DBMS, OS, CN, OOPs) and three coding questions on the assessment. Like other assessments, there was a time crunch here and I only solved two out of the three coding questions completely by passing all test cases. These questions tested concepts like counting, binary search, dynamic programming and a combination of several others. I would rate their difficulty as moderate leaning towards easy. The results were announced three days after the test and the next rounds were scheduled for the very next day. Approximately 20 candidates from SDET and 20 from SDE advanced to the interviews.

Tip: Don't hit any key (say, the Windows key) you're not supposed to hit or switch tabs while an assessment is underway. Your keystrokes and window activity will be recorded. Any suspected malpractice leads to immediate disqualification. Quit all background applications and silent all notifications before beginning an assessment.

The Interviews

The first round we had to clear was a mega six-hour-long coding round. This was going to be like no other round we had faced and a true test of endurance. We were briefed the previous night of what was expected of us. The next morning, a file with C++ class definitions and mutable function prototypes was shared with us for a mock music player. We were going to be tested on our implementation choices and object modelling skills. We were instructed to spend approximately an hour on design and the rest on implementation. There were certain test cases that we had to take care of such as adding/deleting/modifying users, playlists and songs with its corresponding metadata. Each group consisted of four candidates and one mentor (engineer) from Commvault. We were asked to share our screen and keep our video and audio on at all times. Candidates were asked to leave by their respective mentors midway if their progress was unsatisfactory at 30-minute intervals. I completed the entire duration and was able to implement two classes completely and one class partially. I had very interesting conversations with my mentor every 30 minutes about time and space tradeoffs concerning the mock system.

The next round was a technical round with a panel consisting of two senior Commvault engineers. They inquired about my previous round and we discussed maps from the C++ STL library in depth. They were interested in my understanding of the differences in an unordered map and an ordered map in terms of implementation as I used the former in my previous round. We then discussed how time complexities are calculated and why the best search algorithms cannot do better than O(N log N). We then went into a detailed discussion regarding heaps and the related time complexities. A very interesting question regarding an N-nary tree was posed to me in which I was asked to calculate the time complexity of a search in such a data structure. We also went over its method of construction. Next, I was asked the difference between a process and a thread. I was also asked about the conditions that lead to a deadlock. Peering at my resume, the panel noticed a few projects I had listed and proceeded to quiz me on them. They asked me about the mini-compiler I had designed for LISP and asked me about the role of lexers and parsers. Noticing my parallel implementation of the Prim's Algorithm, we had a short discussion about minimum spanning trees. They inquired about the OpenMP library and specifics of the parallel implementation. They had questions regarding the changes in time complexity notation and the different stages of parallel algorithms. Next, they quizzed me about my latest engagement and I described the technologies I was using in a portal I was designing for the Big Data course which auto-evaluated assignments. The round concluded with a puzzle based on the divide and conquer principle and lasted for approximately one and a half hours. I believe my performance in this round was near perfect. The only questions I was not able to answer to the panel's satisfaction were the ones from OS. At around the half-way mark, I was asked to pick a core subject that interested me the most as they probably hoped to examine me further based on my choice. However, I honestly admitted that data structures and algorithms were my forte and I would prefer more involved questions on the same. Fortunately, I was able to steer the interview in a direction that suited me best. I was not asked to code in this round. However, some of my peers were. The panel was extremely knowledgable and the questions were very impressive.

Tip: If you ask anyone for their two cents on tackling an interview, they would tell you to think out aloud and explain your thought process at every stage. This is a skill you must develop. I cannot emphasize this enough. Get hold of a buddy and use the GeeksForGeeks interview archives to simulate an interview. Additionally, if you are unsure about something, say so and if you do not know something, say so. Stalling will only irritate the panel.

The last round was a human resource round and was barely formal. Nine candidates were offered a combination of full-time employment and only internships. Only two out of nine offers were for the SDE position and I was the only one out of these two who was offered full-time employment and internship. We were congratulated on our performance and were given a chance to ask any questions we may have. This concluded a hectic but successful day.

Any advice?

  • Stay in touch with coding. I solved three medium and two difficult problems off LeetCode every week and kept track of the concepts I applied to every problem. Remember, quality over quantity. This is the only preparation you need if you are proficient in data structures and algorithms.

  • Have patience. A lot of things in life are not in our control. We reduce the outcomes of an intricate series of events that are often governed by pure probabilities to a commonplace term that we are capable of comprehending. We call it "luck." If you're confident in your capabilities and preparation, you will be successful. Here is an interesting video by Veritasium titled "Is Success Luck or Hard Work?"

  • Develop a plan of action for each assessment and stick to it. Complete sections you are more comfortable with first and use a language you are most accustomed to. You must familiarize yourself with the format of an assessment before you dive into it.

  • After completing an unsuccessful assessment or interview, discuss the questions posed there with your peers. The advantages of collaborative learning are numerous and there is frankly no substitute. Help each other, you're all on the same side. There are plenty of jobs to go all around so don't get vile and competitive.

  • Use GeeksForGeeks' Last-Minute Notes for revision before an interview. In your first pass, make sure you are familiar with all the concepts mentioned in these notes. No list can be complete so don't restrict your exploration. However, dive deep when required! You must identify one area that is your strength and ensure you are thoroughly prepared for any questions from it.

  • If an interviewer asks you if you have any questions for him/her, make sure to ask something. You can find a short list with some such questions here.

  • Don't give up on your workout routine, hobbies or idle time during placements. Grinding 24/7 will do you no good. Not only will it reduce your productivity, but it will also adversely impact your mental health. Take care of yourself.