Summary
I recently interviewed for a Software Developer role at ION Group, which included an Online Assessment with DSA and CS fundamentals, followed by a technical interview focusing on OOPs concepts and basic data structures. While I managed to implement polymorphism, I struggled with the phone directory question, leading me to believe I did not secure the position.
Full Experience
My journey with ION Group began with an Online Assessment (OA) which consisted of two DSA questions and eight MCQs on CS fundamentals. The DSA problems were String Compression and designing a basic Job Portal. After clearing the OA, I moved to Interview Round 1. I had heard online that ION Group usually focuses on OOPs, puzzles, and basic DSA, and this proved largely true, although puzzles weren't asked in my specific interview. The interviewer started by asking me to rate myself in C++ and explain OOPs, why it's a better paradigm, and how to implement it. I discussed the four pillars, and when prompted about polymorphism, I explained its meaning and types (run-time and compile-time). He then asked me to open a code editor and implement classes to demonstrate both compile-time and run-time polymorphism. He specifically requested that I model the classes based on real-world entities, so I chose Vehicle and Car. I wrote the code, but due to lack of practice in OOPs coding, I encountered several bugs. I diligently fixed them, although I did panic a bit and accidentally wrote 'method overriding' when I was actually overloading a method. Eventually, my code for both types of polymorphism worked. This task took about 20-25 minutes. Following this, I was asked to write destructors for both classes. Initially, I made a mistake by calling the parent destructor in the child class, but I corrected it later. After the OOPs section, the interviewer inquired about the data structures I had studied, to which I listed vectors, sets, maps, etc. He then posed a question: 'Which data structure would you use to implement a phone directory?' I unfortunately forgot that a Trie is the standard solution and instead suggested map<int, string>. He pointed out that a phone directory primarily searches by name, making my map choice ineffective. I couldn't provide the correct answer, and the interview concluded shortly after. I don't think I'll be getting a call for the next round.
Interview Questions (4)
Given a string, compress it by counting consecutive repeating characters. For example, 'aaabbccccd' should become 'a3b2c4d'.
Design a Job Portal system with the following methods:
PostJobs(JobId, JobRole): Allows posting a new job.PostUsers(UserId, interestedRole, salaryExpectation): Allows a user to register with their preferred role and salary.FetchJobs(userId, k): Returnskjobs that match theuserId'sinterestedRoleandsalaryExpectation.
Implement classes using real-world entities (e.g., Vehicle and Car) to demonstrate compile-time (method overloading) and run-time (method overriding with virtual functions) polymorphism. Additionally, implement destructors for these classes.
What data structure would you use to implement a phone directory that allows efficient searching by name?