Rippling frontend engineer interviews emphasise JavaScript, DOM manipulation, CSS, accessibility, browser APIs, and UI component architecture.
Question You are building a simplified card game where each player has a hand of cards and the higher-rated hand wins. Each hand contains exactly...
Input: StringQuestion You need to design a logger library for a new application. The design should be able to allow us to easily add future loggers, like a db...
Input: ArrayQuestion You are building a driver payment system for a food delivery company. The accounting team needs to track how much money is owed to drivers...
Input: StringQuestion You need to build a rule evaluation system for a corporate credit card platform. Managers should be able to create rules that enforce...
Input: ListTips For AI Coding Rounds AI coding rounds are not as different from regular coding rounds as you might think. The interviewer still needs to get...
Input: Given inputdebounce that takes a function func and a delay in milliseconds wait. It should return a new function that, when invoked repeatedly, will only invoke func after wait milliseconds have passed since the last time the returned function was invoked.const search = debounce((term) => console.log(term), 300); search('John'); search('John Doe'); // waits until 300 ms after the last call and then prints 'John Doe'const log = debounce(() => console.log('Hello'), 1000); log(); log(); log(); // waits 1000 ms to log 'Hello' once onlywait will be a positive integer and 0 < wait <= 1000.createFormManager that returns an object with methods to handle the state of form fields. The object should have the following methods:setField(name: string, value: any): void - Set the value of a field.getField(name: string): any - Get the value of a field.getAllFields(): { [key: string]: any } - Get the values of all fields.const form = createFormManager(); form.setField('email', 'test@mail.com'); form.getField('email'); form.setField('age', 30); form.getAllFields(); { email: 'test@mail.com', age: 30 }1 <= name.length <= 100value can be of any type, but must be a simple value (string, number, etc.).VDOMDiffer that compares two virtual DOM trees and returns the changes necessary to update the real DOM. It should have the following method:diff(oldTree: VNode, newTree: VNode): Array<Change> - Compare the old and new trees and return an array of changes, where each change is an object containing the type and the data needed to apply the change.const oldTree = { tag: 'div', children: [] }; const newTree = { tag: 'div', children: [{ tag: 'span', children: [] }] }; diff(oldTree, newTree); const oldTree = { tag: 'h1', children: [] }; const newTree = { tag: 'h1', children: [{ tag: 'strong', children: [] }] }; diff(oldTree, newTree); tag and children array.Router that allows registering routes and navigating between them. It should have the following methods:register(route: string, view: Function): void - Register a new route with its corresponding view.navigate(route: string): void - Navigate to a new route and render the corresponding view.getCurrentRoute(): string - Return the current route.const router = new Router(); router.register('/home', () => console.log('Home view')); router.navigate('/home'); router.register('/about', () => console.log('About view')); router.navigate('/about'); Logs 'About view'.Sign up for free to access walkthroughs, AI-generated questions, and more.
Get Started Free