The interview followed a live coding format — 45 minutes of coding followed by a review with the interviewer. The live coding portion started with a challenge to build a simplified version of the Jest testing framework from scratch. I had to implement the it, expect, and toEquals functions, making sure that failed assertions would throw an error containing the test name along with a reason for the failure. The interviewer then asked me to extend the implementation to support asynchronous tests using a done callback pattern, with the additional requirement that the test should automatically fail if the done callback was not invoked within 5 seconds. After the coding portion, the conversation shifted to questions based on my CV. The interviewer was particularly interested in my experience with data management approaches, asking me to compare Context API and Zustand — when I would choose one over the other and what trade-offs I considered in past projects. They also asked about my experience with WebSockets, digging into projects where I had used real-time communication and how I handled challenges like reconnection, state synchronization, and scaling. We then discussed frontend performance optimization strategies, including patterns around memoization, rendering, and code splitting that I had applied in production. They also asked about the AI assistants and tools I use in my daily workflow — what my practices are, how I integrate them into development, and how they have changed my productivity. Toward the end, they dug into my career trajectory, asking about the biggest technical challenges I had faced, how I approach architectural decisions, and the reasoning behind some of the shorter tenures on my resume. The tone throughout was conversational and collaborative rather than interrogative.