Innovaccer SDE-1 Backend | Noida
Summary
I successfully navigated through all four rounds of interviews for the SDE-1 Backend role at Innovaccer and received an offer with a package of 20 LPA base + 1 LPA joining bonus.
Full Experience
Round 1
This round focused on a mix of problem-solving and foundational knowledge. I was asked to find the largest substring with non-repeating characters. Additionally, there were questions testing my understanding of Python basics, MySQL queries, and MongoDB queries.
Round 2
The second round was primarily focused on data structure design. I was tasked with implementing both an LRU (Least Recently Used) cache and an LFU (Least Frequently Used) cache. Further questions delved into Python-related topics and database concepts, specifically comparing SQL vs NoSQL.
Round 3: Hiring Manager Round
In this round, I encountered an N-ary tree question, which I found relatively easy. The discussion also included questions on API design principles and an in-depth review of my past projects.
Round 4: Hiring Manager Round (Specific to my application)
This round was conducted specifically for me as my application was moved to another team. There were no DSA questions since my feedback from previous rounds was already available. The focus was entirely on an in-depth discussion about my projects and general behavioral questions, such as my reasons for switching roles and preferred location.
My status after all rounds was 'Cleared', and I received an offer.
Interview Questions (3)
Given a string, find the length of the longest substring without repeating characters.
Design and implement a data structure for a Least Recently Used (LRU) cache. It should support get and put operations. get(key) retrieves the value of the key if it exists, otherwise returns -1. put(key, value) inserts/updates the value if the key is not already present. When the cache reaches its capacity, it should invalidate the least recently used item before inserting a new item.
Design and implement a data structure for a Least Frequently Used (LFU) cache. It should support get and put operations. get(key) retrieves the value of the key if it exists, otherwise returns -1. put(key, value) inserts/updates the value if the key is not already present. When the cache reaches its capacity, it should invalidate the least frequently used item. If there is a tie, the least recently used item should be removed.