Hi Leetcode Community, I have cleared Interview process for SDE role at Komprise through an On-campus Opportunity. So, this post is regarding the complete SDE Interview process/ experience consisting of 6 rounds (Starting from OA on 1st day followed by Interviews on 2nd day). The hiring was done for two roles: SDE and SDET (along with 6 months internship).
I hope you would get some learning from this post. So, Let's get started.
Round 1: OA [2 Hrs on HackerEarth, Hard]
Result: Passed. Those who solved atleast 1 question were selected for Interviews on next day.
Round 2: First Technical Interview [1 Hr, Medium]
Interview started with my Introduction and Interviewer asked me about my experience of Online Semester vs Offline Semester. After that he started with OOPs with some rapid-fire questions:
Then he moved to DSA and asked some rapid fire questions about Linked List:
I don't remeber my exact answers but I was able to answer all of above questions and Interviewer was satisfied with my answers.
Finally he asked me to code a question similar to the Medium variant of: Reverse Nodes in K-Group in which I had to reverse all groups (including the last one). Also, I had to implement the Linked List from scratch, take input from console and the print the output to console as well.
I took 30 min to code the recursive solution with Implementation of Linked List. Interviewer tested the code with 5 testcases and was satisfied with my approach.
Result: Passed. Received call from HR and message from TnP Cell after 30 min for the next round.
Round 3: Second Technical Interview [1.5 Hr, Medium]
Interview started with Introduction of both me and Interviewer. He then directly started with DSA coding question:
Given an arrangement of total n items in a row out of which d are distinct. Can we re-arrange them such that no two adjacent items are same ?
If yes, print one of possible re-arrangement, otherwise print No. I don't remember exact solution but I solved it using two-pointers. Idea was to keep a currPtr for currItem.
If currItem and nextItem are different then currPtr++
else keep a choicePtr for swapping the (currPtr + 1)th item with (choicePtr)th Item (!= currItem) ahead of nextItem.
T(n) = O(n) and S(n) = O(1) [With some optimization/ logic in above algo implementation]Interviewer tested the solution with 5 testcases and he was satisfied with my approach. He then asked me a follow up question:
Follow up: What if one of the items is majority element i.e its freq. is more than half of elements ?
Answer: Output will always be "NO" in that case as atleast 2 occurances of majority element will always be adjacent to each other. This is as per "PigeonHole Principle".Interviewer was satisifed with my answer. At last, he asked me about OOPs and some CS related questions:
I don't remeber my exact answers but I was able to answer most of above questions. I couldn't answer last two as I wasn't aware of any Design Patterns and Java Language. Interviewer was kind and was satisfied with my answers and he finally concluded the interview.
Result: Passed. Received call from HR and message from TnP Cell after 30 min for the next round.
Round 4: Third Technical Interview [1.5 Hr, Hard]
Interview started with Introduction of both me and Interviewer. He asked me about my experience of previous rounds. After that he started with DSA implementation questions:
Then he started with Operating Systems questions:
I don't remeber my exact answers but I was able to answer above questions. Then the Discussion went from TLB to caching and why and where we need caching ? I was able to answer these as well.
Finally he gave me brief description of a Database Cache with fixed size and items having variable expiry time. I don't remember the exact question but it was hard variant of LFU [this one also involved expiry time]. No code was required, It was an indepth discussion with what Data structures I would use and what would be space and time complexities of the proposed design.
Finally he asked me a follow up question: What if we want to remove elements that are expired in the cache at the moment they get expired ? With some hints, I was able to propose a solution using MultiThreading. Interviewer was satified with my answer and we finally concluded the interview.
Result: Passed. Received call from HR and message from TnP Cell after 15 min for the next round.
Round 5: Fourth Technical/ Managerial Interview with Senior Backend Engineering Manager [1 Hr, Medium]
Interview started with my Introduction. Interviewer introduced himself and started with dicussion on my projects and past internship experience. He asked me to explain the things and then in between he asked me follow up questions. This went for about 0.5 Hr.
Finally, he gave me a scenario in which I was a co-founder of an early stage Food delivery Startup. Then he asked me some related rapid-fire questions:
I don't remeber my exact answers but I was able to answer most of above questions and the last two that I later answered with some hint given by Interviewer. The answer expectation from Interviewer was not from system design perspective but it was about some basic/ key concepts/ terminologies about software development and backend engineering.
Result: Passed. Received call from HR and message from TnP Cell after 15 min for the next round.
Round 6: HR Round with 2 Senior/ Head HRs [0.5 Hr, Easy]
Interview started with my Introduction and they asked me about my experience of my previous rounds. Then they asked me about my Journey so far to which I told the long story with my background, what I liked, enjoyed, hobbies, interests, etc. Why I chose CSE ? Some basic non-tech questions from my past internship experience and projects.
Also, they gave me feedback that as of now, they're considering me for SDE role. Finally they concluded the interview with some follow up questions about Komprise and its work culture.
Result: Passed. Received email from TnP Cell after 1 Hr for the Final Selection for Full time SDE role + 6 months Internship.
I am extremely thankful to this platform and the Leetcode community :)
Offer Details: here