moengage logo

Moengage Interviews

7 experiences444 reads23 questions29% success rate
MoEngage SSE Interview Experience
moengage logo
Moengage
SDE II2.5 yearsOffer
December 17, 202539 reads

Summary

Interviewed for SSE role at MoEngage with a focus on designing a notification system. The interview covered system design, scalability, and performance optimization challenges.

Full Experience

I got interviewed at MoEngage for the SSE role. With 2.5 years of experience, I was asked to design a notification sending system that sends notifications based on user preferences. The interview involved a detailed discussion on system architecture, data modeling, and performance considerations. I approached the problem by designing a hybrid model combining event-driven architecture with a user-channel mapping system. The interview also included a BOTEC analysis to estimate storage requirements and scalability solutions for handling large-scale notification delivery.

Interview Questions (2)

Q1
Notification System Design
Data Structures & Algorithms

Design a notification sending system that sends notifications to users based on their preferences. For example, in Slack, users can specify the types of notifications they want to receive (e.g., mentions, all notifications, etc.).

Q2
Scalability and Performance Analysis
System Design

Estimate the ephemeral storage required for a notification system handling a high volume of messages and users. Given parameters include message posting throughput, average channel size, and user ID size.

Interview Experience At MoEngage
moengage logo
Moengage
December 5, 202596 reads

Summary

I recently interviewed at MoEngage, which included an in-depth discussion on Kafka internals and a challenging machine coding round focused on designing a Stock Price Volatility Monitor using a sliding window.

Full Experience

I recently had an interview at MoEngage. The initial phase delved into a comprehensive discussion about Kafka, covering essential topics such as producers, consumers, consumer groups, offset management, partitions, message ordering, backpressure handling, and ensuring Kafka's exactly-once semantics. We also explored Kafka internals in detail, including log compaction, retry mechanisms, and idempotency. Following this in-depth technical discussion, I proceeded to a machine coding round.

Interview Questions (1)

Q1
Stock Price Volatility Monitor
Data Structures & AlgorithmsMedium

You are given a continuous stream of stock price changes (both positive and negative).

Your task is to design a VolatilityMonitor class that keeps track of the maximum volatility within the last N trades.

👉 Volatility = absolute value of price change

You must implement two methods:

  1. recordTrade(int priceChange)
    • Adds a new trade.
    • Only the last N trades are stored — so this forms a sliding window.
  2. getMaxVolatility() → int
    • Returns the maximum absolute price change in the current sliding window.

📘 Example

Let tradeWindow = 3

Operation Window Max Volatility recordTrade(5) [5] 5 recordTrade(-3) [5, -3] 5 recordTrade(8) [5, -3, 8] 8 recordTrade(2) [-3, 8, 2] 8

The window always slides to keep only the last N price changes.

SDE-2 Frontend MoEngage
moengage logo
Moengage
sde-2 frontendRejected
November 25, 202575 reads

Summary

I interviewed for an SDE-2 Frontend role at MoEngage, going through three rounds that covered JavaScript fundamentals, deep React concepts, and a Hiring Manager discussion. Despite strong performance in the technical rounds, I was ultimately rejected due to perceived fitment issues in the final round.

Full Experience

My interview journey for the SDE-2 Frontend position at MoEngage involved three distinct rounds.

Round 1: Javascript Basics

This round started with a brief introduction, then quickly moved into coding challenges. I was asked to implement debouncing on a button using pure HTML, CSS, and JavaScript. Following that, I had to write a classNames utility function, similar to popular libraries, that could handle various input types like strings and objects. Finally, I was challenged to create a polyfill for Array.prototype.reduce.

Round 2: Deep Dive into React

After successfully clearing the first round, the second round, which focused on React, was rescheduled multiple times before finally taking place. This round delved deep into React concepts. We discussed the differences between React 16 and React 19 and the considerations for migrating a codebase. I explained why React is chosen over other libraries and its potential drawbacks. Other core topics included what JSX is and its necessity, various ways to implement conditional rendering, the workings of the Virtual DOM, and the reconciliation process in depth. I also had to enumerate all the reasons why React components re-render. We then discussed Higher-Order Components (HOCs) and I provided a real-time example. The round concluded with a coding task to create an Accordion component using React.

Round 3: Hiring Manager

This round was primarily a technical fitment discussion. We extensively talked about my past projects, the kind of environment and team structures I had previously worked in, and some other general hiring manager questions. At the end of this round, the Hiring Manager informed me that there were many candidates selected for the final round with only four openings, and they would debrief and let me know the outcome.

Verdict

Two to three days later, HR informed me that I was not moving forward. The feedback was that while I had a strong 'yes' in both technical rounds, the Hiring Manager felt I was lagging slightly in the fitment round. Consequently, I was rejected for the position.

Interview Questions (12)

Q1
Implement Debouncing on a Button
Data Structures & AlgorithmsMedium

Create a button and implement debouncing on it using pure HTML, CSS, and Javascript.

Q2
Implement `classNames` Function
Data Structures & AlgorithmsMedium

Implement a utility function classNames that concatenates CSS class names based on various input types (strings, objects with boolean values). Examples:

console.log(classNames('foo', 'bar'));                     // "foo bar"
console.log(classNames({ 'foo-bar': true }));              // "foo-bar"
console.log(classNames({ foo: true, bar: false, qux: true })); // "foo qux"
Q3
Polyfill `Array.prototype.reduce`
Data Structures & AlgorithmsMedium

Implement a polyfill for the native JavaScript Array.prototype.reduce method.

Q4
React 16 vs 19 Migration Considerations
OtherMedium

Discuss the key differences between React 16 and React 19, and what aspects need to be considered when migrating a codebase from React 16 to React 19.

Q5
Advantages of React over Other Libraries
OtherEasy

Explain the reasons and advantages of choosing React over other frontend libraries or frameworks.

Q6
Disadvantages of React
OtherEasy

Discuss the potential drawbacks and limitations of using React.

Q7
Explain JSX and its Necessity
OtherEasy

Describe what JSX is and why it is an essential part of React development.

Q8
Conditional Rendering Techniques in React
OtherEasy

Explain various methods and techniques for performing conditional rendering in React.

Q9
Virtual DOM and Reconciliation Process
OtherMedium

Explain the concept of the Virtual DOM and describe in detail how React's reconciliation process works.

Q10
Reasons for React Component Re-renders
OtherMedium

List and explain all the common reasons why a React component might re-render.

Q11
Higher-Order Components (HOC) with Real-Time Example
OtherMedium

Explain what Higher-Order Components (HOCs) are in React and provide a real-time example of their usage.

Q12
Implement Accordion Component in React
Data Structures & AlgorithmsMedium

Implement an Accordion component using React.

Data Engineer || MoEngage || 2 YOE
moengage logo
Moengage
Data Engineer2 yearsRejected
September 18, 202557 reads

Summary

I recently interviewed for a Data Engineer position at MoEngage, which included a DSA round where I was asked to implement the 'Shuffle an Array' problem. Despite discussing several approaches for the solution, my candidacy was ultimately rejected.

Full Experience

I received a call from MoEngage HR regarding a Data Engineer opening. The interview process was described as having one DSA round, one System Design round, and one HR round. My first round was the DSA round. The interviewer provided a link to the LeetCode problem 'Shuffle an Array' and asked me to explain my approach and write code while discussing it. Initially, I proposed a brute-force idea of generating all permutations, but after discussing its time complexity, we agreed it wouldn't be an optimal solution. I then proceeded to explain multiple other approaches:

  1. Approach 1: Generate two random indices (using a random function) in the range [1, n], swap the elements at those indices, and then return the array.
  2. Approach 2: Iterate through the array. For each current index i, generate a random index j (typically within the range of elements not yet processed, e.g., [i, n-1]) and swap the elements at nums[i] and nums[j].
  3. Approach 3: Insert all elements into a HashSet (as in Java) and then randomly remove elements one by one to form the shuffled array. I did mention that this approach might not guarantee equal likelihood of all permutations.
Despite our discussions on these different methods, I was informed that my application was not successful and I was rejected.

Interview Questions (1)

Q1
Shuffle an Array
Data Structures & AlgorithmsMedium

The interviewer shared a link to the LeetCode problem 'Shuffle an Array'. The task was to design an algorithm to randomly shuffle an integer array, ensuring that all permutations of the array are equally likely. I needed to implement the Solution class with the following methods:

  • Solution(int[] nums): Initializes the object with the integer array nums.
  • int[] reset(): Resets the array to its original configuration and returns it.
  • int[] shuffle(): Returns a random shuffling of the array.

MoEngage | SSE | Round1
moengage logo
Moengage
Senior Software Engineer
December 5, 202469 reads

Summary

I participated in a coding round for the Senior Software Engineer position at MoEngage, where I was tasked with solving a complex data processing problem involving log files to identify and count unique drivers for specific city visit triples.

Full Experience

During my Senior Software Engineer interview at MoEngage, the focus of the round was a challenging coding problem. I was given a scenario involving a large log file that tracked driver movements across various cities with timestamps. The core task was to extract 'triples' – sequences of three consecutive cities visited by a driver, ordered by timestamp – and then count the number of unique drivers associated with each distinct triple. This required careful parsing, grouping, sorting, and aggregation of data from the log file. The problem presented a good test of my data processing and algorithmic skills.

Interview Questions (1)

Q1
Count Unique Drivers for City Triples in Log File
Data Structures & AlgorithmsHard

Suppose you have a big text log file and there are three columns:

  • Name
  • City
  • Timestamp

Example log data:

Name   City   Timestamp
John   city1       t4
Bob   city1       t3
John   city2       t1
John   city3       t3
Bob   city3       t2
John   city4       t2
Bob   city4       t1

The first column is a driver name, the second is a city name, and the final is a timestamp (32-bit integer).

This log file maintains a history of drivers.

We define a "triple" as a tuple of three consecutive cities a driver has been to that are ordered by timestamp.

Suppose t1 < t2 < t3 < t4, then we will have the following triples:

  • for John, we have: (city2, city4, city3), (city4, city3, city1)
  • for Bob, we have: (city4, city3, city1)

Write a program to output all the triples in the file and for each triple, output the count of unique drivers that have been to that triple.

For the example input, the output would be

(city2, city4, city3) 1
(city4, city3, city1) 2
MoEngage Senior Software Engineer Interview
moengage logo
Moengage
software engineer2 yearsWithdrew
September 13, 202467 reads

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)

Q1
Implement LRU Cache
Data Structures & AlgorithmsMedium

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.

Q2
Low-Level Design for On-Call Management Support Tool (OpsGenie-like)
System Design

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.

Q3
Design System for Unique Category Stream Processing
System DesignHard

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.

Moengage | Interview Experience | Selected 🎉
moengage logo
Moengage
internshipbangaloreOffer
October 15, 202241 reads

Summary

I was shortlisted for an interview at Moengage after participating in a GFG monthly challenge and successfully navigated technical and HR rounds, ultimately receiving an internship offer with a performance-based PPO in Bangalore.

Full Experience

My journey with Moengage began after I was shortlisted from a GeeksforGeeks monthly challenge. Following this, HR promptly scheduled my interview within a week with a senior software engineer.

Round 1 (Technical)

This round started with a standard introduction. We then had a good discussion centered around the projects I had mentioned in my resume, diving deep into their specifics. The interviewer also asked several database-related questions, focusing on the differences and use cases of SQL versus NoSQL databases. Towards the end of this round, I was given one Data Structures and Algorithms question, which was related to strings.

Round 2 (HR)

The HR round focused on behavioral aspects and my fit for the company. I was asked a few key questions:

  • "What do you know about Moengage?" - This question assessed my research and understanding of the company's mission and products.
  • "Tell me your strengths and weaknesses." - A common behavioral question to understand my self-awareness and how I approach personal development.
  • "How soon will you be able to join us?" - This question was about my availability and commitment to the role.

The interview process concluded smoothly.

Interview Questions (3)

Q1
Company Knowledge
Behavioral

What do you know about Moengage?

Q2
Strengths and Weaknesses
Behavioral

Tell me your strengths and weaknesses.

Q3
Availability for Joining
Behavioral

How soon will you be able to join us?

Have a Moengage Interview Experience to Share?

Help other candidates by sharing your interview experience. Your insights could make the difference for someone preparing for their dream job at Moengage.