Platform9 Systems Interview Experience

Part A: Pre-interview assessment (3-4 days virtual)
1. After filling the registration form, each of us was given a problem statement through mail to implement a type-ahead feature similar to Google search for a given set of inputs and a regex for the pattern to be searched.  
2. We were given a time period of about 3 days to complete and send the assignment with liberty of using any language suitable for it.
3. I implemented the same using C++ with an in-built regex library for matching the pattern.
4. My focus was to first modularize the code as much as possible and at the same time making use of available features like classes, objects and functions to make the code organized with proper access control.
5. After achieving this I wrote some comments highlighting the important parts of the program and changed it to a menu driven program.  6. This helps the person reviewing the code to understand the flow of your code while at the same time make him/her acknowledge that you can give more options like changing the regex pattern or set of inputs, give an option to view current regex pattern, etc.
7. I submitted the code snippet along with screenshots of the output for the test cases given by them as well as considering some corner cases e.g. If only ‘*’ is given as input for pattern then the output should display all words. Tip: Always attach screenshots of your output for such assignments. Sometimes the reviewers may not have time to go through your entire code. But if they see if the output for various cases matches their expectations, that is certainly helpful.  
Considering the above submission I was shortlisted for the interview – which was initially mentioned to progress as two separate interviews. I was a bit nervous since this was the first time I was ever shortlisted for an interview.  
Here’s a link for my submission in CPP: 
[https://onecompiler.com/cpp/3wmjzcnqk]
P.S. Based on conversations with other people who applied off-campus, this problem statement is different for each hiring drive. So while you may get a different problem statement, the process of presenting your code in an efficient manner remains the same.  

Do not memorize the code. Understand how it works.

Part B: Interview 1 (35 minutes)  — Technical round
1. The interviewer first asked me questions regarding my internship experience which was mentioned in my resume. The questions ranged from the technologies used during the period as well as tasks completed for the same.2. Then the discussion shifted towards testing my DS & Algorithmic knowledge with basic questions.
3. A problem was given to reverse a singly linked list by the interviewer.
4. I mentioned that one of my approaches would be to change the pointers associated with the linked list structure but after hearing it he asked me to share my screen and explain it using Notepad.
5. I proceeded to explain the procedure. The interviewer asked me to come up with another approach which doesn’t involve changing pointers or altering the Linked List. I told him that I can traverse through the Linked List, while at the same time store it in an array. And then I would print the array in reverse order.
6. He asked me to come up with another approach which doesn’t involve storing it in another data structure. At the same time, he gave me a hint when asked about using recursion.
7. I told him that I would use the system stack to first push all the elements of the linked list one by one using recursion and then popping the stack in order to get the elements in reverse order. He seemed satisfied with that answer.
8. After this, the interviewer asked me about my Final Year project mentioned in the resume in short. I explained about our plan regarding the same. That was the end of the first interview.
Part C: Interview 2 (45 minutes) — Technical round
1. This was a screening round. The interviewer mentioned that he was working and at the same time going through my resume and asking questions.
2. He asked me to introduce myself and mention some of my areas of interest related to engineering.
3. After this, the discussion shifted to my internship and project experience. He wanted to know about the tasks I performed during my internship and also what our BE project was about. As there were some IoT protocols involved, he asked me why the specific protocols were required instead of traditional protocols used for applications like JSON over HTTP.4. Then the interviewer gave me a DS problem: An array was given and the result was to store the product of remaining elements of the array for each index in another array.
5. I proceeded with writing a pseudo code in Notepad after briefly explaining my approach. Initially there were some mistakes in my code like using an outer loop variable in another loop at the wrong position or missing the condition for skipping the current index position.  
6. But the interviewer did give hints regarding this and I rectified it. Still my solution was incorrect because I was not resetting the product to 1 before the next iteration. I realized this and eventually my code was finally logically correct.
7. The interviewer then asked what was the time and space complexity of the problem and whether the time complexity can be improved. Tip: Do not present polynomial complexities like O(n^2) as solutions unless necessary. Because these are not efficient to handle large data.  
8. The next part was regarding my knowledge of Linux commands. I mentioned some, and he asked me about other commands like –
netstat – If an application is to be run on a specific port then how can we check if any other applications are using the same port and free up the port.
chmod – If a file has permissions set at ‘chmod 777′ then what does each bit of the number 777 represent for reading, writing or modifying the data respectively?
9. Proceeding this was a discussion regarding differences between different programming languages like C++/Java/Python. I was asked some questions regarding which language is suitable for a specific application and why.
10. After this the interviewer briefly asked me some basic questions about DBMS like ACID properties. He asked me whether I knew about the concept of eventual consistency and asked me to explain it.  
11. The interviewer asked me whether I had any questions. I asked about the various roles available for a fresher like Dev/DevOps, the difference between them and whether any training period would be involved. That was the end of the second interview.  
On the basis of my performance for the first two rounds, I was informed that there will be a third (final) round. I expected this to be a HR round, but it was a technical round.
Part D: Interview 3 (25 minutes) — Technical round
1. The discussion started with me giving a brief introduction about myself and work areas of interest.2. The interviewer asked me what my favorite subjects were – I mentioned that I liked Embedded Systems and also Operating Systems (OS). He asked me whether I would like a discussion on OS. I replied in affirmative. Tip: Here only choose a subject you’re comfortable with and have previously studied it during your coursework. Because if you fail to answer basic questions on it then the interviewer might think that you’re lying. This is a rejection with 90% certainty.
3. The questions were about socket programming – ranging from the concept of thread and its relation to a process. A scenario was presented regarding a Producer-Consumer relationship and I was asked to write a pseudo-code for the same using threads and a queue for operations.  
4. I presented a basic approach with enqueue and dequeue operations for both the Producer and Consumer side. This again was in Notepad. Have a habit of practicing writing pseudo codes if the interview is virtual – because only presenting your approach for others to understand can help here. If it is in-person, have practice of writing on a whiteboard.
5. I wasn’t asked any detailed questions over this, maybe they wanted to just test whether I can work on such use-cases when presented as a part of the Dev/DevOps role.  
6. I was then asked whether I knew the concept of locks and/or deadlocks in an operating system. Then the interviewer asked me if a simple C/C++ program with a while(1) loop can lead to a deadlock. I gave a wrong answer, but did the same with confidence. The interviewer explained calmly how that is not the case and asked me to keep it in mind. What I actually wanted to convey is that if some other program was dependent on this program then it might lead to a deadlock since the 1st process doesn’t complete – but you almost always realize such things after your interview is complete.  
7. The interviewer asked me whether I had any questions. I mentioned that I would be more suitable for a Dev role considering my previous internship experience – which was also suggested by him during our discussion since DevOps covers vast areas and requires some experience.  
8. That was the end of the final interview.
Result: Selected
Based on my performance in these three interviews, I was informed by the evening on the same day that I was selected for the role of ‘Associate Software Developer’ at Platform9 Systems India Pvt. Ltd. This drive was conducted through our college TPO as an on-campus hiring process, hence the result might have come a bit earlier than an off-campus process. Regardless, I would like to mention that they are completely transparent in their hiring process. Every small things e.g. the meeting link not working or doubts are cleared instantly by the HR department. They made it sure that the only thing I needed to focus on was the interview. 
As a plus, the company decided to bump up the package by 25% as compared to the initial offering for all five students selected from our college after the interviews. We were also offered a 3 month internship to help with common training and get a deeper dive into the startup work culture. I was elated, but rather than the money, I am more interested in exploring new things with a continuous learning process. So this is a great start for me.

Always remember that if its your day, nobody can stop you. You just have to give your best.

Good luck to everyone. I hope I could help you gain some insight into the complete hiring process for Platform9 Systems.