67 problems across 8 categories
Understand closures with a counter factory
Understand how "this" works in different contexts
Understand prototypal inheritance
Understand variable and function hoisting
Understand lexical scope
Implement Function.prototype.call
Implement Function.prototype.apply
Implement Function.prototype.bind
Implement your own new operator
Implement Object.create
Implement the instanceof operator
Understand the difference between typeof and instanceof
Understand JavaScript execution context
Sequential async with promises
Modern async syntax
Compare async execution patterns
Build your own map
Build your own filter
Build your own reduce
Build your own flat
Build your own forEach
Build your own find
Build your own findIndex
Build your own some
Build your own every
Build your own includes
Build your own indexOf
Build your own flatMap
Build your own concat
Build your own slice
Build your own reverse (in-place)
Build your own join
Build your own fill
Delay until events stop
Limit execution rate
Deep copy objects
Cache function results
Function that runs only once
Cache only the last result
Convert callback to Promise
Promise-based delay
Transform f(a,b,c) to f(a)(b)(c)
Combine functions right-to-left
Combine functions left-to-right
Curry with placeholder support
Partial application of functions
Flatten nested lazy functions
Pub/sub pattern
Efficient event handling
jQuery-style method chaining
Compare objects deeply
Merge objects recursively
Access deep properties safely
Shallow copy object properties
Strict equality with edge cases
Make objects immutable
Parallel execution
First to settle wins
Convert callbacks to promises
Wait for all promises regardless of outcome
First fulfilled promise wins
Always runs after promise settled
Retry failed promises automatically
Reject if promise takes too long
Limit concurrent promise execution
Run promises sequentially
Implement Promise from scratch