Recently, I appeared for the third round of interviews for the Senior Software Engineer (Frontend) position at Impact Analytics.
Here’s how the round went — question by question 👇
The interviewer asked me to implement an infinite curry sum function.
I was able to write a working solution, but I missed adding the valueOf method, which caused the final output not to print as expected, as i had to print the sum which was declared in global scope. However, this gave the correct answer.
Interestingly, the interviewer (a female engineer — no bias intended) wanted me to implement currying using arrays, where the entire array of arguments is passed at once and then iterated inside the function.
This made me a bit confused because I tried to explain that currying is typically about transforming a function of multiple arguments into a sequence of functions taking one argument each.
We ended up spending around 10 minutes just discussing this difference, which ate into my problem-solving time.
Next, she asked about object comparison.
Two arrays with identical items were compared, and I explained that in JavaScript, objects (and arrays) are compared by reference, not by value — hence even identical arrays return false when compared using == or ===.
Then came a conceptual question: “Explain Promise and its states.”
I explained the three states — pending, fulfilled, and rejected.
After that, I created a simple Promise using the resolve and reject constructor methods and explained how it transitions between states.
I was then asked to implement a retry mechanism — when an API call fails, it should retry up to a certain limit.
I handled this by calling the resolving function inside the catch block, using a retry counter as a parameter to control the limit.
The final question was around JavaScript variable scoping.
There was a var variable declared in the global scope, and another variable with the same name declared using let inside a function.
When logged inside the function, it correctly printed the value from the local scope — I explained this in terms of function scope (var) vs block scope (let).
Unfortunately, I was rejected for this round.
The feedback seemed to indicate that the interviewer felt I wasn’t the right fit for the role.