Коллекция задач по JavaScript для практики, от базового к продвинутому уровню.
| Задача | Статус |
|---|---|
| task-interview (01–04) | ✅ |
| task-interview (05–06 groupBy, flattenDeep) | ✅ |
| task-interview (07 LRU) | ✅ |
| task-interview (08 mergeIntervals) | ⬜ |
| task-01 (базовые) | ✅ |
| task-02 (замыкания, каррирование) | ✅ |
| task-03 (async/await) | ✅ |
| task-04 (EventEmitter) | ✅ |
| task-05 (debounce, throttle, retry, promiseQueue, runSequentially) | ✅ |
| task-06 (TypeScript, типы) | ✅ |
| task-07 (TypeScript, Generics) | ✅ |
| task-08 (Условные типы, Mapped Types) | ⬜ |
| task-09 (Discriminated Unions, Type Guards) | ⬜ |
| task-10 (Proxy, Reflect) | ✅ |
| task-11 (WeakMap, WeakSet, Symbol) | ✅ |
| task-12 (Генераторы, итераторы) | ⬜ |
| task-13 (Template Literal Types) | ⬜ |
| task-14 (Recursive Types) | ⬜ |
| task-15 (Branded Types) | ⬜ |
| task-16 (React Hooks) | ⬜ |
| task-17 (React Context) | ⬜ |
| task-18 (RxJS) | ⬜ |
| task-19 (advanced for) | ✅ |
| task-20 (TypeScript сложные структуры, Mapped Types) | ⬜ |
| task-21 (WeakRef, FinalizationRegistry) | ✅ |
| task-22 (ArrayBuffer, TypedArrays, DataView) | ✅ |
| task-23 (Intl, RegExp — интернационализация и регулярные выражения) | ✅ |
| task-24 (алгоритмы: бинарный поиск, средний) | ✅ |
| task-25 (алгоритмы: скользящее окно, два указателя, средний) | ✅ |
| task-26 (алгоритмы: динамическое программирование, высокий) | ✅ |
| task-27 (алгоритмы: графы, BFS, высокий) | ✅ |
| task-28 (структуры данных: Trie, продвинутый) | ✅ |
| task-29 (структуры данных: MinHeap, продвинутый) | ✅ |
| task-30 (структуры данных: Disjoint Set / Union-Find, продвинутый) | ✅ |
| task-31 (структуры данных: LFU Cache, продвинутый) | ✅ |
| task-32 (бинарное дерево: BST, структура данных) | ✅ |
| task-33 (бинарное дерево: алгоритмы — обходы, maxDepth, isBalanced, isBST) | ✅ |
| task-34 (JavaScript: Tagged Template Literals) | ✅ |
| task-35 (JavaScript: AbortController / AbortSignal) | ✅ |
Каждая задача находится в отдельной папке:
task-interview/- Задачи с собеседований (JS/TS, базовый-средний)task-interview-01-two-sum.js- Two Sum (собеседование)task-interview-01-two-sum.test.js- тесты (собеседование)task-interview-02-chunk-array.js- Chunk Array (собеседование)task-interview-02-chunk-array.test.js- тесты (собеседование)task-interview-03-two-sum.ts- Two Sum (TypeScript, собеседование)task-interview-03-two-sum.test.ts- тесты (собеседование)task-interview-04-chunk-array.ts- Chunk Array (TypeScript, собеседование)task-interview-04-chunk-array.test.ts- тесты (собеседование)task-interview-05-group-by.js- groupBy (средний)task-interview-05-group-by.test.jstask-interview-06-flatten-deep.js- flattenDeep (средний)task-interview-06-flatten-deep.test.jstask-interview-07-lru-cache.js- LRU Cache (продвинутый)task-interview-07-lru-cache.test.jstask-interview-08-merge-intervals.ts- Merge Intervals (TypeScript, средний+)task-interview-08-merge-intervals.test.ts
task-01/- Базовые задачи (массивы, функции)task-01-basic.js- файл с задачейtask-01-basic.test.js- тесты для задачи
task-02/- Средний уровень (замыкания, каррирование)task-02-intermediate.js- файл с задачейtask-02-intermediate.test.js- тесты для задачи
task-03/- Продвинутый уровень (async/await, промисы)task-03-async.js- файл с задачейtask-03-async.test.js- тесты для задачи
task-04/- Работа с объектами и прототипами (EventEmitter)task-04-objects.js- файл с задачейtask-04-objects.test.js- тесты для задачи
task-05/- Продвинутый async (debounce, throttle, retry, promiseQueue, runSequentially)task-05-advanced-async.js- файл с задачейtask-05-advanced-async.test.js- тесты для задачи
task-06/- TypeScript (типы и интерфейсы)task-06-typescript.ts- файл с задачейtask-06-typescript.test.ts- тесты для задачи
task-07/- TypeScript (Generics и Utility Types)task-07-typescript.ts- файл с задачейtask-07-typescript.test.ts- тесты для задачи
task-08/- TypeScript (Условные типы и Mapped Types)task-08-typescript.ts- файл с задачейtask-08-typescript.test.ts- тесты для задачи
task-09/- TypeScript (Discriminated Unions и Type Guards)task-09-typescript.ts- файл с задачейtask-09-typescript.test.ts- тесты для задачи
task-10/- JavaScript (Proxy и Reflect API)task-10-advanced-js.js- файл с задачейtask-10-advanced-js.test.js- тесты для задачи
task-11/- JavaScript (WeakMap, WeakSet, Symbol)task-11-advanced-js.js- файл с задачейtask-11-advanced-js.test.js- тесты для задачи
task-12/- JavaScript (Генераторы и итераторы)task-12-advanced-js.js- файл с задачейtask-12-advanced-js.test.js- тесты для задачи
task-13/- TypeScript (Template Literal Types и String Manipulation)task-13-typescript.ts- файл с задачейtask-13-typescript.test.ts- тесты для задачи
task-14/- TypeScript (Recursive Types и Type-level Programming)task-14-typescript.ts- файл с задачейtask-14-typescript.test.ts- тесты для задачи
task-15/- TypeScript (Branded Types и Nominal Typing)task-15-typescript.ts- файл с задачейtask-15-typescript.test.ts- тесты для задачи
task-16/- React (Custom Hooks и State Management)task-16-react.tsx- файл с задачейtask-16-react.test.tsx- тесты для задачи
task-17/- React (Context API и Performance Optimization)task-17-react.tsx- файл с задачейtask-17-react.test.tsx- тесты для задачи
task-18/- RxJS (Observables и Operators)task-18-rxjs.js- файл с задачейtask-18-rxjs.test.cjs- тесты для задачи
task-19/- JavaScript (продвинутые циклы for)task-19-advanced-for.js- файл с задачейtask-19-advanced-for.test.js- тесты для задачи
task-20/- TypeScript (сложные структуры, Mapped Types)task-20-typescript-complex-types.ts- DTO/API-типы, PartialByKeys, DeepPartial, NullableValues, PickByValueTypetask-20-typescript-complex-types.test.ts- тесты для задачи
task-21/- JavaScript (WeakRef и FinalizationRegistry)task-21-advanced-js.js- кэш с слабыми ссылками, финализацияtask-21-advanced-js.test.js- тесты для задачи
task-22/- JavaScript (ArrayBuffer, TypedArrays, DataView)task-22-advanced-js.js- бинарные данные, парсинг/записьtask-22-advanced-js.test.js- тесты для задачи
task-23/- JavaScript (Intl, RegExp — интернационализация и регулярные выражения)task-23-advanced-js.js- форматирование, named groups, match indicestask-23-advanced-js.test.js- тесты для задачи
task-24/- Алгоритмы: бинарный поиск (средний уровень)task-24-algorithms-binary-search.js- binarySearch, findFirst, findLast, searchInRotatedSortedtask-24-algorithms-binary-search.test.js- тесты для задачи
task-25/- Алгоритмы: скользящее окно и два указателя (средний уровень)task-25-algorithms-sliding-window.js- maxSumSubarray, lengthOfLongestSubstring, twoSumSorted, minSubArrayLentask-25-algorithms-sliding-window.test.js- тесты для задачи
task-26/- Алгоритмы: динамическое программирование (высокий уровень)task-26-algorithms-dp.js- climbStairs, coinChange, longestIncreasingSubsequence, maxSubArraytask-26-algorithms-dp.test.js- тесты для задачи
task-27/- Алгоритмы: графы и BFS (высокий уровень)task-27-algorithms-graphs.js- shortestPathInGrid, numIslands, bfsLevelOrder, hasPathtask-27-algorithms-graphs.test.js- тесты для задачи
task-28/- Структуры данных: Trie (префиксное дерево), продвинутый уровеньtask-28-data-structures-trie.js- класс Trie: insert, search, startsWith, getWordsWithPrefixtask-28-data-structures-trie.test.js- тесты для задачи
task-29/- Структуры данных: MinHeap (куча минимума), продвинутый уровеньtask-29-data-structures-minheap.js- класс MinHeap: insert, extractMin, peek, sizetask-29-data-structures-minheap.test.js- тесты для задачи
task-30/- Структуры данных: Disjoint Set (Union-Find), продвинутый уровеньtask-30-data-structures-union-find.js- класс DisjointSet: makeSet, find, union, areConnectedtask-30-data-structures-union-find.test.js- тесты для задачи
task-31/- Структуры данных: LFU Cache (Least Frequently Used), продвинутый уровеньtask-31-data-structures-lfu-cache.js- класс LFUCache: get, settask-31-data-structures-lfu-cache.test.js- тесты для задачи
task-32/- Бинарное дерево: BST (структура данных), продвинутый уровеньtask-32-binary-tree-structure.js- TreeNode, BinarySearchTree: insert, search, min, maxtask-32-binary-tree-structure.test.js- тесты для задачи
task-33/- Бинарное дерево: алгоритмы (обходы, свойства), продвинутый уровеньtask-33-binary-tree-algorithms.js- inorder, preorder, postorder, maxDepth, isBalanced, isBSTtask-33-binary-tree-algorithms.test.js- тесты для задачи
task-34/- JavaScript: Tagged Template Literals (продвинутый уровень)task-34-advanced-js-tagged-templates.js- html, sql, upper — теги для шаблонных строкtask-34-advanced-js-tagged-templates.test.js- тесты для задачи
task-35/- JavaScript: AbortController / AbortSignal (продвинутый уровень)task-35-advanced-js-abort-controller.js- createAbortablePromise, delay, fetchWithTimeouttask-35-advanced-js-abort-controller.test.js- тесты для задачи
npm install- Откройте файл с задачей
- Прочитайте описание и требования
- Реализуйте решение в указанном месте
- Запустите тесты для проверки:
npm test - Проверьте линтер:
npm run lint
# Запустить все тесты
npm test
# Запустить тесты в режиме наблюдения
npm run test:watch
# Запустить тесты с покрытием кода
npm run test:coverage
# Проверить код линтером
npm run lint
# Автоматически исправить ошибки линтера
npm run lint:fix
# Запустить задачу напрямую
node task-01/task-01-basic.js
node task-02/task-02-intermediate.js
node task-03/task-03-async.js
node task-04/task-04-objects.js
node task-05/task-05-advanced-async.js
# Для TypeScript задач нужно скомпилировать или использовать ts-node
npx ts-node task-06/task-06-typescript.ts
npx ts-node task-07/task-07-typescript.ts
npx ts-node task-08/task-08-typescript.ts
npx ts-node task-09/task-09-typescript.ts
npx ts-node task-13/task-13-typescript.ts
npx ts-node task-14/task-14-typescript.ts
npx ts-node task-15/task-15-typescript.ts- ✅ Базовый JavaScript (массивы, функции, объекты)
- ✅ Замыкания и каррирование
- ✅ Асинхронный JavaScript (Promise, async/await)
- ✅ Работа с объектами и прототипами (EventEmitter)
- ✅ Продвинутый async (debounce, throttle, retry, promiseQueue)
- ✅ JavaScript (Proxy и Reflect API)
- ✅ JavaScript (WeakMap, WeakSet, Symbol)
- ⬜ JavaScript (Генераторы и итераторы) — task-12
- ⬜ RxJS (Observables, Subjects, Operators) — task-18
- ⬜ RxJS (Schedulers, multicasting, error handling)
- ✅ TypeScript (типы и интерфейсы)
- ✅ TypeScript (Generics и Utility Types)
- ⬜ TypeScript (Условные типы и Mapped Types) — task-08
- ⬜ TypeScript (Discriminated Unions и Type Guards) — task-09
- ⬜ TypeScript (Template Literal Types и String Manipulation) — task-13
- ⬜ TypeScript (Recursive Types и Type-level Programming) — task-14
- ⬜ TypeScript (Branded Types и Nominal Typing) — task-15
- ⬜ React (Custom Hooks и State Management) — task-16
- ⬜ React (Context API и Performance Optimization) — task-17
- ✅ JavaScript (WeakRef и FinalizationRegistry) — task-21
- ✅ JavaScript (ArrayBuffer, TypedArrays, DataView) — task-22
- ✅ JavaScript (Intl, RegExp — интернационализация и регулярные выражения) — task-23
- ✅ Алгоритмы: бинарный поиск (средний) — task-24
- ✅ Алгоритмы: скользящее окно, два указателя (средний) — task-25
- ✅ Алгоритмы: динамическое программирование (высокий) — task-26
- ✅ Алгоритмы: графы, BFS (высокий) — task-27
- ✅ Структуры данных: Trie (префиксное дерево), продвинутый — task-28
- ✅ Структуры данных: MinHeap (куча минимума), продвинутый — task-29
- ✅ Структуры данных: Disjoint Set (Union-Find), продвинутый — task-30
- ✅ Структуры данных: LFU Cache, продвинутый — task-31
- ✅ Бинарное дерево: BST (структура данных) — task-32
- ✅ Бинарное дерево: алгоритмы (обходы, maxDepth, isBalanced, isBST) — task-33
- ✅ JavaScript: Tagged Template Literals — task-34
- ✅ JavaScript: AbortController / AbortSignal — task-35
- Jest - фреймворк для тестирования
- ESLint - линтер для проверки качества кода
- React Testing Library - библиотека для тестирования React компонентов
- TypeScript - типизированный JavaScript