Tip 1: Learn when to use React state versus useRef. For high-frequency updates (such as mouse movements), using useRef to avoid unnecessary re-renders is a crucial skill for senior-level frontend roles.
Tip 2: Many frontend tasks, such as flattening nested API responses or traversing the DOM tree, require recursion. Practice common utility-based coding problems to build speed and accuracy.
Tip 3: Don’t just learn how to draw—learn how to optimize drawing. Research techniques such as Offscreen Canvas and layering to prevent UI lag in graphics-heavy applications.
Tip 1: Instead of just listing “React” or “JavaScript,” explicitly mention high-performance libraries or APIs used in your projects. For example: “Optimized real-time rendering using the HTML5 Canvas API and WebSockets, reducing data latency by 20%.”
Tip 2: Add a “Technical Challenges” bullet point under your projects. Mention how you solved specific issues, such as concurrency control in collaborative environments or state management optimization. This demonstrates a deeper level of seniority than simply listing features.
Developed a web-based drawing application using React that allows multiple users to collaborate on a digital canvas in real time.
The project featured:
In your collaborative whiteboard, if 50 users are drawing simultaneously, the component may re-render hundreds of times per second. How would you use React.memo, useMemo, or requestAnimationFrame to ensure the UI does not lag?
JavaScript is single-threaded. If heavy canvas calculations (such as a flood-fill algorithm) are processed on the main thread, the UI may freeze. How would you use Web Workers to offload this work?
Explain the CSS Box Model and how box-sizing: border-box changes layout calculations. Also, how would you ensure that a toolbar always stays above the drawing canvas, regardless of the drawing elements’ positions (z-index and stacking context)?
What is the difference between useRef and useState when handling canvas coordinates? Why might using useState for every mouse movement be a bad idea?
Write a function that takes a deeply nested object (commonly used in whiteboard state or configurations) and flattens it into a single-level object using dot-notation keys.
Input:
{ user: { profile: { name: "John" } }, tool: "pen" }
Output:
{ "user.profile.name": "John", "tool": "pen" }
Implement a class or a custom React hook, useHistory, that manages an Undo/Redo feature for a canvas.
Requirements:

Here's your problem of the day
Solving this problem will increase your chance to get selected in this company
What is recursion?