| # | title | topic | type | difficulty |
|---|---|---|---|---|
| 31 | Reimplement == from the spec (without using ==) | Type Coercion | Coding | Hard |
| 32 | Rebuild Object.groupBy — null prototype included | Objects | Coding | Hard |
| 33 | deepEqual that survives circular references | Objects | Coding | Hard |
| 34 | memoize(fn) — cache by identity, even undefined | YDKJS Book | Coding | Hard |
| 35 | Quicksort from scratch |
| Sorting Algorithms |
| Coding |
| Hard |
| 36 | Merge sort — prove it's stable | Sorting Algorithms | Coding | Hard |
| 37 | Insertion sort, in place | Sorting Algorithms | Coding | Medium |
| 38 | Multi-key sort with a composed comparator | Sorting Algorithms | Coding | Hard |
| 39 | Tagged templates: redact the interpolations | YDKJS Book | Coding | Medium |
| 40 | Two Sum in one pass | Interview Classics | Coding | Medium |
| 41 | LRU cache with O(1) operations | Interview Classics | Coding | Hard |
| 42 | Build an EventEmitter | Interview Classics | Coding | Hard |
| 43 | Balanced brackets with a stack | Interview Classics | Coding | Medium |
| 44 | Longest substring without repeats (sliding window) | Interview Classics | Coding | Hard |
| 45 | Flatten an object to dot-paths (and holes beware) | Interview Classics | Coding | Hard |
| 46 | Trapping rain water (two pointers) | Interview Classics | Coding | Hard |
| 47 | Edit distance (Levenshtein, full DP) | Interview Classics | Coding | Hard |
| 48 | deepClone that preserves cycles | Interview Classics | Coding | Hard |
| 49 | Add numbers too big for Number | Floating Point | Coding | Hard |
| 50 | All permutations, in order | Interview Classics | Coding | Hard |
| 51 | Pair sum — approach 2: classic loops only | Arrays | Coding | Medium |
| 52 | Deep flatten — approach 2: recursion, no .flat() | Arrays | Coding | Medium |
| 53 | Deep max — approach 2: reduce(), Math.max banned | Math | Coding | Medium |
| 54 | Multiplication table — approach 2: nested for loops | Arrays | Coding | Medium |
| 55 | Weighted sum — approach 2: reduce(), no loops | Loops | Coding | Medium |
| 56 | Reverse an integer — approach 2: string methods | Loops | Coding | Medium |
| 57 | Collatz steps — approach 2: pure recursion | Loops | Coding | Medium |
| 58 | Group transactions — approach 2: reduce(), no Object.groupBy | Objects | Coding | Hard |
| 59 | Tokenizer — approach 2: classic loops, no array methods | Arrays | Coding | Medium |
| 60 | Grid validation — approach 2: nested for loops | Arrays | Coding | Medium |