Level: Mid-Level
Round: Full Journey · Type: Multiple Types · Difficulty: 6/10 · Duration: 360 min · Interviewer: Unfriendly
Topics: JavaScript, Higher-Order Functions, Promises, Debounce, System Design, Frontend Design, State Management, CSS, Analytics, Observability, Web APIs, DOM APIs, Testing, Feature Flagging, Network Requests, Behavioral Questions
Location: Los Gatos, CA
Interview date: 2025-05-15
Got offer: False
Question: Three JavaScript questions: printing a family tree, creating a Jest function, and implementing getVideosWithLikes using Promises.
Question: Creating a simple autocomplete feature with type-ahead and dropdown, handling frequent user input with debounce.
Question: Designing a task page, focusing on frontend implementation details.
Question: Discussing three topics from a list including State Management Patterns, CSS Strategies, Analytics & Observability, Web & DOM APIs, Testing Approaches, Feature Flagging, and Network Requests.
Question: Standard behavioral questions and feedback-related questions, focusing on the ability to remove ambiguity.
Question: Similar to the previous HM round, focusing on project leadership and cross-team collaboration experience.
The coding question I got for implementing getVideosWithLikes was:
`javascript getVideosWithLikes().then(result => console.log(result)); const isNetworkError = () => Math.random() * 100 > 50;
const getVideos = () => { return new Promise((resolve, reject) => { if (isNetworkError()) reject(new Error("X1Y2Z3W4"));
setTimeout(
() =>
resolve([
{ id: "a1b2c3d4", title: "XyZabcDe", src: "img-a1b2.jpg" },
{ id: "e5f6g7h8", title: "MnOpQrSt", src: "img-c3d4.jpg" },
{ id: "i9j0k1l2", title: "UvWxYz01", src: "img-e5f6.jpg" },
{ id: "m3n4o5p6", title: "AbCdEfGh", src: "img-g7h8.jpg" },
{ id: "q7r8s9t0", title: "IjKlMnOp", src: "img-i9j0.jpg" }
]),
1500
);
}); };
const getVideoLikes = () => { return new Promise((resolve, reject) => { setTimeout(() => { if (isNetworkError()) reject(new Error("W4Z3Y2X1")); resolve([ { videoId: "m3n4o5p6", numOfLikes: 123456 }, { videoId: "q7r8s9t0", numOfLikes: 234567 }, { videoId: "e5f6g7h8", numOfLikes: 345678 }, { videoId: "a1b2c3d4", numOfLikes: 456789 }, { videoId: "i9j0k1l2", numOfLikes: 567890 } ]); }, 900); }); };
/**
const getVideosWithLikes = async () => { // Your code here to enable mergeVideosAndLikes to be called with data from both getVideos() and getVideoLikes() // If getVideos() fails, then show an error // If getVideoLikes() fails, then still show videos
}; `