MoEngage Senior Software Engineer Interview
Summary
I interviewed for a Senior Software Engineer role at MoEngage, going through DSA, LLD, and a Hiring Manager round. After a confusing and drawn-out hiring process, I was offered a Software Engineer position with a significantly reduced compensation package, which I ultimately declined.
Full Experience
I was contacted by a recruiter regarding an application I don't recall submitting. They wanted to schedule an interview immediately, but I had prior commitments. After some negotiation regarding their hybrid work model (interviews only on Thursdays/Fridays when employees work from home), I agreed to proceed with the interviews.
Round 1 | DSA
I was asked to implement an LRU cache. I presented my approach and then coded it. Initially, I faced some issues, but I was able to refine it and code the correct solution as the discussion progressed.
This round concluded, and they immediately requested a second round just 30 minutes later. I asked for more time to prepare, which they eventually granted, and I rescheduled the second round for the following week.
Round 2 | LLD
For the low-level design round, I was tasked with designing an on-call management support tool similar to OpsGenie. The tool needed to handle multiple projects and employees, each with varying levels of responsibility for incident response. I began by outlining the necessary classes and methods. Once the interviewer was satisfied with the class structure, I started coding. Although I only managed to implement 4-5 out of the 5-7 requested functionalities, the interviewer seemed pleased with my overall performance.
Round 3 | HM Round
During this round, the hiring manager inquired about my current projects and my contributions to them. I was then given a high-level design (HLD) question that I struggled to fully solve.
The HLD problem involved handling a stream of categories coming into an API or server. The goal was to extract unique categories from this stream and update the current user view with these new categories. This was a novel problem for me, and despite proposing several solutions, none quite met the interviewer's expectations. Consequently, this round did not go well.
A few days later, HR called to inform me that while the hiring manager couldn't consider me for the Senior Software Engineer role, they would consider me for a Software Engineer position. Given my current role and the potential learning opportunities at MoEngage, I initially agreed and promptly sent all requested documents. However, the HR contact became unresponsive. After contacting another HR representative, I learned the original HR was on vacation and would release the offer upon return. After two weeks of waiting and numerous follow-ups, I was told the offer was in the approval process. Another week passed, and I was informed the position was on hold. Eventually, they reached out again, confirming the position was open and asking if I was still interested. I agreed, but when the offer finally arrived, the base package (21LPA) was lower than initially discussed (25LPA), with no variable pay, no stock options, and only a 1L signing bonus. Given my current remote work situation, accepting this would mean a pay cut, so I ultimately declined the offer.
Interview Questions (3)
I was asked to implement an LRU cache. I provided my approach and proceeded to code it. Initially, I had some difficulties, but I was able to refine and implement the correct solution during the interview.
I was asked to provide a low-level design for an on-call management support tool similar to OpsGenie. The tool needed to support multiple projects and employees, with various levels of responsibility for responding to incidents.
The high-level design question involved handling a stream of categories coming to an API or server. The objective was to efficiently extract unique categories from this incoming stream and then display these new unique categories to the user in their current view.