SDE-2 Frontend MoEngage
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 aclassNames 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)
Create a button and implement debouncing on it using pure HTML, CSS, and Javascript.
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"
Implement a polyfill for the native JavaScript Array.prototype.reduce method.
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.
Explain the reasons and advantages of choosing React over other frontend libraries or frameworks.
Discuss the potential drawbacks and limitations of using React.
Describe what JSX is and why it is an essential part of React development.
Explain various methods and techniques for performing conditional rendering in React.
Explain the concept of the Virtual DOM and describe in detail how React's reconciliation process works.
List and explain all the common reasons why a React component might re-render.
Explain what Higher-Order Components (HOCs) are in React and provide a real-time example of their usage.
Implement an Accordion component using React.