I am sharing my interview experience with 100ms for the Senior Software Engineer – Frontend role, which felt more like a hybrid Product Management + Engineering position.
The process consisted of 4 rounds:
This was a pure JS fundamentals and advanced-concepts round. The interviewer started by grilling me on basic concepts and then moved to topics such as the event loop and how JavaScript code executes on the V8 engine.
Next, he asked several output-based questions focused on closures, hoisting, prototypes, and how inheritance works in JavaScript. We also discussed how parent and child prototypes can share properties.
After this round, I got a call from HR to schedule the next two onsite rounds.
Although this was supposed to be a DSA round, the interviewer took a real-world problem from streaming systems. The problem focused on:
Streaming large content without affecting existing data
Handling users joining the stream midway
We explored multiple approaches using queues and trees. We eventually aligned on a tree-based structure, where if a user joins mid-stream, there’s no need to store the entire stream for them — we can simply fetch the required segment from start to current using the tree.
This round went well, and the feedback was positive.
This was labeled as a technical round, but it felt more like a discussion about my previous work. The interviewer was an EM-level backend engineer.
I walked through the HLD of the system I had built, its outcomes, and ways it could be optimized. Then the interviewer shifted towards streaming service optimizations, asking how we could reduce disturbances for users and improve overall performance.
The feedback for this round was mixed. HR then asked for my next available date to schedule the VP call for HLD + LLD.
This was a virtual call with the VP, divided into three sections: DSA, LLD, and HLD.
He started with a classic Two Sum problem and asked for optimizations. I provided an O(log n) solution.
Then he asked me to implement a pub-sub class in JavaScript, where each publish event receives a unique identifier, and we should be able to remove the event from the queue using that ID. I wrote and executed the code successfully.
Unfortunately, the VP kept getting disconnected frequently during the call, which consumed a lot of our time. The 45 minutes ended before we could move on to the HLD part. Since I completed the first two sections, I thought I had performed well.
However, after four days, I received an email stating “not selected,” with no proper feedback, as each round was an elimination round.