Susov Consulting
Frontend Engineer
Two-round frontend process — R1 was a JavaScript fundamentals deep-dive, R2 was a live coding assignment (data table with modal, search, and API integration) reviewed by the CPO with a focus on clean, typed, and modular code.
JavaScript fundamentals round covering core concepts, browser APIs, and a practical problem on flattening an n-dimensional array solved using recursion without built-in methods.
Questions asked
- setTimeout and setInterval — differences, use cases, and how to clear them
- var vs let vs const — scoping, hoisting, and temporal dead zone
- undefined vs null vs undeclared — when each occurs and how to check
- Deep copy vs shallow copy — explain the difference with a live-coded example
- React Router and Accordion component implementation
- Difference between window and document; common window functions
- How would you efficiently render 1 billion records in the browser?
- Flatten an n-dimensional array in JavaScript using recursion (no built-in flat/flatMap allowed)
Tips
The flattening question was explicitly restricted to recursion — practice writing it without Array.prototype.flat. For the billion-records question, hit on virtual/windowed lists (react-window / react-virtual) and pagination.
50-minute take-home assignment reviewed with the CPO. Task: build a data table showing name, email, and company fetched from an API, with a modal opening full user details on name click, and search filtering by name and email. Emphasis was on clean TypeScript, modular code, and proper loading/error state management.
Questions asked
- Build a table fetching user data (name, email, company) from an API with loading and error states
- Open a full-details modal on clicking a user's name
- Add search/filter by name and email
- How would you extend the TypeScript interfaces and types, and where do those changes propagate?
- Explain lazy loading and where you'd apply it in this assignment
- What AI tools do you use day-to-day? (ChatGPT, Gemini, Claude Code, GitHub Copilot for boilerplate)
- How do you resolve conflicts in a team or disagreements over implementation approach?
Tips
Prioritise TypeScript strictness and splitting components early — the CPO cared a lot about code structure over feature completeness. Manage loading and error states explicitly from the start rather than bolting them on.
Overall advice
Susov's bar is heavily weighted toward clean, readable frontend code rather than algorithmic complexity. In R1, get comfortable with JS fundamentals at a whiteboard level. In R2, treat the 50-minute window as a mini PR review — organise files, type everything, and handle edge states.