Cloudsek | SDE Intern Frontend | Onsite | Tier-3
Summary
I interviewed for an SDE Intern Frontend role at Cloudsek in Bangalore and was unfortunately rejected in the second technical round. My performance was impacted by difficulties in implementing a fetch retry function and an undo-redo feature in React.
Full Experience
I applied for the SDE Intern Frontend role at Cloudsek through LinkedIn and, after a couple of weeks, received a call from HR for resume shortlisting. I am a fresher from a Tier-3 college with about 6 months of prior internship experience. The offer was for a 6-month internship with a PPO opportunity, targeting a 20L CTC for the full-time role.
Round-1: Resume Shortlisting
This was the initial screening stage after my LinkedIn application, leading to an HR contact.Round-2: Technical Round-I
This round was conducted by an SDE-2 with 4 years of experience. We began with an in-depth discussion about my resume, specifically focusing on the skills and previous experiences I had listed. Following this, the interviewer delved into JavaScript fundamentals, covering topics like `var`, `let`, `const`, closures, hoisting, the event loop, and Promises, asking for basic differences and use cases. I was also given several output-based questions related to advanced hoisting scenarios, closures, the event loop, `setTimeout`, and scenarios involving multiple invocations of functions from different instances. A significant part of this round included explaining the differences between Debouncing and Throttling, and then implementing them from scratch. I was also asked to implement `map` and `filter` using `reduce`, discuss and implement Currying and Infinite Currying, and provide a polyfill for `reduce`. I felt confident about my performance in this round.Round-3: Technical Round-II
This round was with an Engineering Manager who had 12 years of experience. The discussion again started with my resume, but the interviewer was very meticulous. He would pick up on specific terms I used and immediately pose detailed questions on them. We discussed the differences between React and Next.js, particularly their architectural distinctions. When I mentioned serverless functions in Next.js, he focused on that topic for a while. Questions then moved to React Query, how its caching mechanisms operate, and what kind of data structures are used internally. I was also asked about the differences between various Promise methods and then tasked with writing a polyfill for `Promise.race`. Another coding challenge was to implement a custom function to retry a fetch call 'n' times using Promises. Finally, I was asked to code an undo-redo functionality in a React application, involving an input field and two buttons to control the state. I faced significant challenges with the fetch retry function and got quite stuck on the undo-redo implementation.Round-4: HR Round
Unfortunately, I did not make it to the HR round.Verdict: Rejected
I was rejected after the Technical Round-II. My main difficulties were with coding the fetch retry function and implementing the undo-redo functionality.Interview Questions (7)
Explain the conceptual differences between debouncing and throttling, and then proceed to implement both functionalities from scratch using JavaScript.
Implement custom versions of the Array.prototype.map and Array.prototype.filter methods by leveraging the Array.prototype.reduce method.
Explain the concept of currying in JavaScript and provide implementations for both standard currying and infinite currying functions.
Write a polyfill for the Array.prototype.reduce method, ensuring it behaves consistently with the native implementation across various use cases.
Discuss the differences and use cases of various Promise methods (e.g., Promise.all, Promise.race, Promise.any, Promise.allSettled) and then write a polyfill for Promise.race.
Implement a custom JavaScript function that retries a fetch API call a specified number of 'n' times. The function should utilize Promises to manage asynchronous retries and handle potential failures.
Code an undo-redo functionality within a React component. This feature should include an input field where users can type, along with separate 'Undo' and 'Redo' buttons to manage the history of changes to the input's state.