Summary
I recently interviewed for a Senior Software Engineer (Frontend) position at Impact Analytics. I went through a technical round covering JavaScript concepts like currying, object comparison, Promises, retry mechanisms, and variable scoping. Unfortunately, I was rejected as the interviewer felt I wasn't the right fit.
Full Experience
I recently 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:
🧩 Question 1: Infinite Curry Sum
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.
🧠 Question 2: Object Comparison in JavaScript
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 ===.
⚙️ Question 3: Promises and States
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.
🔁 Question 4: Implement Retry Feature
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.
🌐 Question 5: Variable Scoping
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).
📝 Outcome
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.
Interview Questions (5)
The interviewer asked me to implement an infinite curry sum function. Interestingly, the interviewer wanted me to implement currying using arrays, where the entire array of arguments is passed at once and then iterated inside the function.
Next, she asked about object comparison. Two arrays with identical items were compared.
A conceptual question: “Explain Promise and its states.”
I was then asked to implement a retry mechanism — when an API call fails, it should retry up to a certain 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. The task was to explain its behavior when logged inside the function.