We recommend these 4 areas of learning to prepare you holistically for your front end interview rounds. Explore guides and 200+ practice questions here.
Coding
3 subcategories of questions: JavaScript, User Interfaces & Data Structures and Algorithms
Quiz
Trivia-style front end questions asked across all interview rounds
System Design
Design, architecture and optimization decisions for common front end apps
Behavioral
Strategies to tackle the wide domain of behavioral interviews, specific to SWE
CounterWarm Up QuestionBuild a simple counter that increments whenever a button is clicked
Difficulty
Easy
Available frameworks
Users completed
6382 completed
StackImplement a stack data structure containing the common stack methods
Difficulty
Easy
Languages
JSTS
Users completed
2175 completed
Type UtilitiesImplement utilities to determine primitive variable types in JavaScript
Difficulty
Easy
Languages
JSTS
Users completed
1878 completed
Contact FormBuild a contact form which submits user feedback and contact details to a back end API
Difficulty
Easy
Available frameworks
Users completed
3615 completed
Holy GrailBuild the famous holy grail layout consisting of a header, 3 columns, and a footer
Difficulty
Easy
Available frameworks
Users completed
2893 completed
Insertion SortImplement a function that performs an insertion sort
Difficulty
Easy
Languages
JSTS
Users completed
938 completed
Type Utilities IIImplement utilities to determine non-primitive variable types in JavaScript
Difficulty
Easy
Languages
JSTS
Users completed
818 completed
Mortgage CalculatorBuild a calculator that computes the monthly mortgage for a loan
Difficulty
Easy
Available frameworks
Users completed
494 completed
Binary SearchImplement a function that performs binary search on an array of numbers
Difficulty
Medium
Languages
JSTS
Users completed
1018 completed
Breadth-first SearchImplement a breadth-first search algorithm that traverses a directed graph in a breadth-first manner
Difficulty
Medium
Languages
JSTS
Users completed
356 completed
Count ByImplement a function that counts the number of times a value appears in an array based on a function or property name
Difficulty
Medium
Languages
JSTS
Users completed
127 completed
DebounceImplement a function to limit how many times a function can be executed by delaying the execution of the function until after a specified time after its last execution attempt
Difficulty
Medium
Languages
JSTS
Users completed
2048 completed
Depth-first SearchImplement a depth-first search algorithm that traverses a directed graph in a depth-first manner
Difficulty
Medium
Languages
JSTS
Users completed
423 completed
Heap SortImplement a function that performs a heap sort
Difficulty
Medium
Languages
JSTS
Users completed
133 completed
QueueImplement a queue data structure containing the common queue methods
Difficulty
Medium
Languages
JSTS
Users completed
498 completed
TabsBuild a tabs component that displays a list of tab elements and one associated panel of content at a time
Difficulty
Medium
Available frameworks
Users completed
875 completed
FlattenImplement a function that recursively flattens an array into a single level deep
Difficulty
Medium
Languages
JSTS
Users completed
2346 completed
Merge SortImplement a function that performs a recursive merge sort
Difficulty
Medium
Languages
JSTS
Users completed
228 completed
Promise.allImplement the Promise.all() function that resolves to an array of results if all the input elements are resolved or rejects otherwise
Difficulty
Medium
Languages
JSTS
Users completed
1357 completed
Quick SortImplement a function that performs a recursive quick sort
Difficulty
Medium
Languages
JSTS
Users completed
177 completed
Todo ListBuild a Todo list that lets users add new tasks and delete existing tasks
Difficulty
Medium
Available frameworks
Users completed
1658 completed
Topological SortImplement a function that performs a topological sort
Difficulty
Medium
Languages
JSTS
Users completed
70 completed
Traffic LightBuild a traffic light where the lights switch from green to yellow to red after predetermined intervals and loop indefinitely
Difficulty
Medium
Available frameworks
Users completed
480 completed
Deep CloneImplement a function that performs a deep copy of a value
Difficulty
Medium
Languages
JSTS
Users completed
827 completed
Digital ClockBuild a 7-segment digital clock that shows the current time
Difficulty
Medium
Available frameworks
Users completed
305 completed
Job BoardBuild a job board that displays the latest job postings from Hacker News
Difficulty
Medium
Available frameworks
Users completed
272 completed
ClampImplement a function to clamp a number within the inclusive lower and upper bounds
Difficulty
Easy
Languages
JSTS
Users completed
1168 completed
Function LengthImplement a function that returns the number of parameters expected by a function
Difficulty
Easy
Languages
JSTS
Users completed
686 completed
Make CounterImplement a function that accepts an integer value and returns a function that can be repeatedly called to return increasing values
Difficulty
Easy
Languages
JSTS
Users completed
589 completed
Number of ArgumentsImplement a function that returns the number of arguments it was called with
Difficulty
Easy
Languages
JSTS
Users completed
590 completed
SleepImplement a function that pauses for a specified duration before resuming execution
Difficulty
Easy
Languages
JSTS
Users completed
606 completed
Array.prototype.squareImplement a custom Array.prototype.square() method that squares the values in an array
Difficulty
Easy
Languages
JSTS
Users completed
1759 completed
Cancellable IntervalImplement a function that acts like setInterval but returns a function to cancel the interval
Difficulty
Easy
Languages
JSTS
Users completed
470 completed
Cancellable TimeoutImplement a function that acts like setTimeout but returns a function to cancel the pending callback
Difficulty
Easy
Languages
JSTS
Users completed
425 completed
ChunkImplement a function that creates an array of elements split into smaller groups of a specified size
Difficulty
Easy
Languages
JSTS
Users completed
809 completed
CompactImplement a function that creates an array with all falsey values removed
Difficulty
Easy
Languages
JSTS
Users completed
758 completed
DifferenceImplement a function that finds the difference in values between arrays
Difficulty
Easy
Languages
JSTS
Users completed
625 completed
Drop Right WhileImplement a function that excludes elements from the end of an array until the predicate returns false
Difficulty
Easy
Languages
JSTS
Users completed
499 completed
Drop WhileImplement a function that excludes elements from the beginning of an array until the predicate returns false
Difficulty
Easy
Languages
JSTS
Users completed
430 completed
FillImplement a function that fills an array with values within specified indices
Difficulty
Easy
Languages
JSTS
Users completed
382 completed
Find IndexImplement a function that returns the index of the first element in the array that satisfies the provided testing function
Difficulty
Easy
Languages
JSTS
Users completed
376 completed
Find Last IndexImplement a function that returns the index of the last element in the array that satisfies the provided testing function
Difficulty
Easy
Languages
JSTS
Users completed
295 completed
From PairsImplement a function that returns an object composed from key-value pairs
Difficulty
Easy
Languages
JSTS
Users completed
545 completed
Function.prototype.applyImplement the Function.prototype.apply() function that calls the function with a given `this` value and arguments as an array
Difficulty
Easy
Languages
JSTS
Users completed
185 completed
Function.prototype.callImplement the Function.prototype.call() function that calls the function with a given `this` value and provided arguments
Difficulty
Easy
Languages
JSTS
Users completed
174 completed
GetImplement a function to safely access deeply-nested properties in JavaScript objects
Difficulty
Easy
Languages
JSTS
Users completed
1292 completed
In RangeImplement a function to check if a number falls between two numbers
Difficulty
Easy
Languages
JSTS
Users completed
367 completed
IntersectionImplement a function that computes the intersection of arrays, returning a new array containing unique values present in all given arrays
Difficulty
Easy
Languages
JSTS
Users completed
191 completed
Object MapImplement a function to transform values within an object
Difficulty
Easy
Languages
JSTS
Users completed
94 completed
OnceImplement a function that accepts a callback and restricts its invocation to at most once
Difficulty
Easy
Languages
JSTS
Users completed
769 completed
Promise.rejectImplement a function to return a Promise object rejected with a reason
Difficulty
Easy
Languages
JSTS
Users completed
253 completed
Selection SortImplement a function that performs a selection sort
Difficulty
Easy
Languages
JSTS
Users completed
619 completed
Unique ArrayImplement a function to remove all duplicate values from an array
Difficulty
Easy
Languages
JSTS
Users completed
1155 completed
AccordionBuild an accordion component that a displays a list of vertically stacked sections with each containing a title and content snippet
ComposeImplement a function that takes multiple functions as arguments and returns a new function that applies those functions in reverse
Difficulty
Easy
Languages
JSTS
Users completed
128 completed
Flight BookerBuild a component that books a flight for specified dates
Difficulty
Easy
Available frameworks
Users completed
373 completed
Function.prototype.bindImplement the Function.prototype.bind() function that creates a new function with the `this` keyword set to a provided value
Difficulty
Easy
Languages
JSTS
Users completed
808 completed
Generate TableGenerate a table of numbers given the rows and columns
Difficulty
Easy
Available frameworks
Users completed
449 completed
jQuery.cssImplement a jQuery-like function that sets the style of a DOM element
Difficulty
Easy
Languages
HTMLCSSJSTS
Users completed
779 completed
Progress BarBuild a progress bar component that shows the percentage completion of an operation
Difficulty
Easy
Available frameworks
Users completed
803 completed
Progress BarsBuild a list of progress bars that fill up gradually when they are added to the page
Difficulty
Easy
Available frameworks
Users completed
418 completed
Promise.raceImplement the Promise.race() function that resolves or rejects when any of the input elements are resolved or rejected
Difficulty
Easy
Languages
JSTS
Users completed
563 completed
SizeImplement a function that returns the size of collection
Difficulty
Easy
Languages
JSTS
Users completed
60 completed
SumImplement a function that sums numbers by accepting a number and allows for repeated calling with more numbers until it is not called with any number
Difficulty
Easy
Languages
JSTS
Users completed
647 completed
Temperature ConverterBuild a temperature converter widget that converts temperature values between Celsius and Fahrenheit
Difficulty
Easy
Available frameworks
Users completed
675 completed
TweetBuild a component that resembles a Tweet from Twitter
Difficulty
Easy
Available frameworks
Users completed
379 completed
Make Counter IIImplement a function that returns a counter object with methods to retrieve and manipulate the value
Difficulty
Medium
Languages
JSTS
Users completed
216 completed
CurryImplement a function that transforms a function that takes multiple arguments into a function that can be repeatedly called with only one argument at a time
Difficulty
Medium
Languages
JSTS
Users completed
1162 completed
Group ByImplement a function that groups values in an array based on a function or property name
Difficulty
Medium
Languages
JSTS
Users completed
68 completed
Intersection ByImplement a function that returns an array of unique values that are included in all given arrays based on a provided iteratee function
Difficulty
Medium
Languages
JSTS
Users completed
90 completed
Intersection WithComputes the intersection of arrays using a custom comparator function to determine equality between elements.
Difficulty
Medium
Languages
JSTS
Users completed
71 completed
Is EmptyImplement a function to check if a value is an empty object, collection, map, or set
Difficulty
Medium
Languages
JSTS
Users completed
158 completed
LimitImplement a function that accepts a callback and restricts its invocation to at most N times
Difficulty
Medium
Languages
JSTS
Users completed
400 completed
Promise MergeImplement a function to merge the results of two promises into a single value
Difficulty
Medium
Languages
JSTS
Users completed
137 completed
Promise TimeoutImplement a function that resolves a promise if it is fulfilled within a timeout period and rejects otherwise
Difficulty
Medium
Languages
JSTS
Users completed
148 completed
Promise.resolveImplement a function to resolve a given value to a Promise
Difficulty
Medium
Languages
JSTS
Users completed
122 completed
PromisifyImplement a function that takes a function following the common error-first callback style and returns a version that returns promises
Difficulty
Medium
Languages
JSTS
Users completed
125 completed
Promisify IIImplement a promisify function that allows the original function to override the return value
Difficulty
Medium
Languages
JSTS
Users completed
53 completed
ThrottleImplement a function to control the execution of a function by limiting how many times it can execute over time
Difficulty
Medium
Languages
JSTS
Users completed
865 completed
TurtleImplement a Turtle class that moves a turtle on a 2D plane
Difficulty
Medium
Languages
JSTS
Users completed
49 completed
Accordion IIBuild an accessible accordion component that has the right ARIA roles, states, and properties
Difficulty
Medium
Available frameworks
Users completed
178 completed
Accordion IIIBuild a fully accessible accordion component that has keyboard support according to ARIA specifications
Difficulty
Medium
Available frameworks
Users completed
87 completed
Analog ClockBuild an analog clock where the hands update and move like a real clock
Difficulty
Medium
Available frameworks
Users completed
139 completed
Camel Case KeysImplement a function to convert all the keys in an object to camel case
Difficulty
Medium
Languages
JSTS
Users completed
310 completed
ClassnamesImplement a function that conditionally joins CSS class names together
Difficulty
Medium
Languages
CSSJSTS
Users completed
591 completed
Compact IIImplement a function that returns an object with all falsey values removed
Difficulty
Medium
Languages
JSTS
Users completed
23 completed
Curry IIImplement a function that transforms a function that takes multiple arguments into a function that can be repeatedly called with any number of arguments
Difficulty
Medium
Languages
JSTS
Users completed
355 completed
Data MergingImplement a function to merge rows of data from the same user
Difficulty
Medium
Languages
JSTS
Users completed
32 completed
Debounce IIImplement a debounce function that comes with a cancel method to cancel delayed invocations and a flush method to immediately invoke them
Difficulty
Medium
Languages
JSTS
Users completed
278 completed
Event EmitterImplement a class that can subscribe to and emit events that trigger attached callback functions
Difficulty
Medium
Languages
JSTS
Users completed
272 completed
Event Emitter IIImplement a class that can subscribe to and emit events that trigger attached callback functions. Subscription objects are returned and can unsubscribe itself
Difficulty
Medium
Languages
JSTS
Users completed
185 completed
getElementsByTagNameImplement a function to get all DOM elements that match a tag
Difficulty
Medium
Languages
HTMLJSTS
Users completed
522 completed
Grid LightsBuild a grid of lights where the lights deactivate in the reverse order they were activated
Difficulty
Medium
Available frameworks
Users completed
203 completed
HTML SerializerImplement a function to serialize an object into an HTML string with indentation
Difficulty
Medium
Languages
HTMLJSTS
Users completed
142 completed
Identical DOM TreesImplement a function to determine if two DOM trees are the same
Difficulty
Medium
Languages
HTMLJSTS
Users completed
281 completed
jQuery Class ManipulationImplement a set of jQuery-like functions that manipulates classes on a DOM element
Difficulty
Medium
Languages
HTMLCSSJSTS
Users completed
207 completed
JSON.stringifyImplement a function that converts a JavaScript value into a JSON string
Difficulty
Medium
Languages
JSTS
Users completed
123 completed
Like ButtonBuild a Like button that changes appearance based on the states
Difficulty
Medium
Available frameworks
Users completed
254 completed
List FormatImplement a function that formats a list of items into a single readable string
Difficulty
Medium
Languages
JSTS
Users completed
486 completed
MemoizeImplement a function that returns a memoized version of a function which accepts a single argument
Difficulty
Medium
Languages
JSTS
Users completed
34 completed
Progress Bars IIBuild a list of progress bars that fill up gradually in sequence, one at a time
Difficulty
Medium
Available frameworks
Users completed
133 completed
Promise.allSettledImplement the Promise.allSettled() function that resolves to an array of outcomes when all the input elements are either resolved or rejected
Difficulty
Medium
Languages
JSTS
Users completed
354 completed
Promise.anyImplement the Promise.any() function that resolves when any of the input elements are resolved
Difficulty
Medium
Languages
JSTS
Users completed
446 completed
Resumable IntervalImplement a function that creates a resumable interval object
Difficulty
Medium
Languages
JSTS
Users completed
36 completed
Squash ObjectImplement a function that returns a new object after squashing the input object into a single level of depth
Difficulty
Medium
Languages
JSTS
Users completed
227 completed
Star RatingBuild a star rating component that shows a row of star icons for users to select the number of filled stars corresponding to the rating
Difficulty
Medium
Available frameworks
Users completed
567 completed
Tabs IIBuild a semi-accessible tabs component that has the right ARIA roles, states, and properties
Difficulty
Medium
Available frameworks
Users completed
92 completed
Tabs IIIBuild a fully accessible tabs component that has keyboard support according to ARIA specifications
Difficulty
Medium
Available frameworks
Users completed
56 completed
Text SearchImplement a function to highlight text if a searched term appears within it
Difficulty
Medium
Languages
HTMLJSTS
Users completed
296 completed
Deep EqualImplement a function that determines if two values are equal
Difficulty
Medium
Languages
JSTS
Users completed
391 completed
Deep MapImplement a function to recursively transform values
Difficulty
Medium
Languages
JSTS
Users completed
14 completed
getElementsByClassNameImplement a function to get all DOM elements that contain the specified classes
Difficulty
Medium
Languages
HTMLCSSJSTS
Users completed
261 completed
Progress Bars IIIBuild a list of progress bars that fill up gradually concurrently, up to a limit of 3
Difficulty
Medium
Available frameworks
Users completed
83 completed
Text Search IIImplement a function to highlight text if searched terms appear within it
Difficulty
Medium
Languages
HTMLJSTS
Users completed
87 completed
Tic-tac-toeBuild a tic-tac-toe game that is playable by two players
Difficulty
Medium
Available frameworks
Users completed
106 completed
Deep MergeImplement a function that merges two objects together
Difficulty
Medium
Languages
JSTS
Users completed
9 completed
Deep OmitImplement a function that removes specified keys and their corresponding values from an object, including nested objects or arrays
Difficulty
Medium
Languages
JSTS
Users completed
9 completed
Memoize IIImplement a function that returns a memoized version of a function which accepts any number of arguments
Difficulty
Medium
Languages
JSTS
Users completed
17 completed
Signup FormBuild a signup form that does validation on user details and submits to a back end API
Difficulty
Medium
Available frameworks
Users completed
218 completed
StopwatchBuild a stopwatch widget that can measure how much time has passed
Difficulty
Medium
Available frameworks
Users completed
111 completed
Transfer ListBuild a component that allows transferring of items between two lists
Difficulty
Medium
Available frameworks
Users completed
102 completed
Undoable CounterBuild a counter with a history of the values and ability to undo/redo actions
Difficulty
Medium
Available frameworks
Users completed
90 completed
Whack-A-MoleBuild a popular arcade game where players attempt to hit moles as they pop up from holes in a board
Difficulty
Medium
Available frameworks
Users completed
34 completed
Memory GameBuild a memory game where the player needs to match pairs of cards
Difficulty
Medium
Available frameworks
Users completed
38 completed
Curry IIIImplement a function which transforms a function which takes variadic arguments into a function that can be repeatedly called with any number of arguments
Difficulty
Hard
Languages
JSTS
Users completed
67 completed
Progress Bars IVBuild a list of progress bars that fill up gradually concurrently, up to a limit of 3 and allows for pausing and resuming
Difficulty
Hard
Available frameworks
Users completed
50 completed
Data SelectionImplement a function to filter rows of data matching a specified requirement
Difficulty
Hard
Languages
JSTS
Users completed
142 completed
Table of ContentsImplement a function to construct a table of contents from an HTML document
Difficulty
Hard
Languages
HTMLJSTS
Users completed
82 completed
Tic-tac-toe IIBuild an N x N tic-tac-toe game that requires M consecutive marks to win
Difficulty
Hard
Available frameworks
Users completed
29 completed
Transfer List IIBuild a component that allows transferring of items between two lists, bulk selection/unselection of items, and adding of new items
Difficulty
Hard
Available frameworks
Users completed
28 completed
Deep Clone IIImplement a function that performs a deep copy of a value, but also handles circular references
Difficulty
Hard
Languages
JSTS
Users completed
59 completed
JSON.stringify IIImplement a function that converts a JavaScript value into a JSON string
Difficulty
Hard
Languages
JSTS
Users completed
8 completed
WordleBuild Wordle, the word-guessing game that took the world by storm