Skip to content

Aloving/js-practice

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JavaScript Practice Tasks

Коллекция задач по 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.js
    • task-interview-06-flatten-deep.js - flattenDeep (средний)
    • task-interview-06-flatten-deep.test.js
    • task-interview-07-lru-cache.js - LRU Cache (продвинутый)
    • task-interview-07-lru-cache.test.js
    • task-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, PickByValueType
    • task-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 indices
    • task-23-advanced-js.test.js - тесты для задачи
  • task-24/ - Алгоритмы: бинарный поиск (средний уровень)
    • task-24-algorithms-binary-search.js - binarySearch, findFirst, findLast, searchInRotatedSorted
    • task-24-algorithms-binary-search.test.js - тесты для задачи
  • task-25/ - Алгоритмы: скользящее окно и два указателя (средний уровень)
    • task-25-algorithms-sliding-window.js - maxSumSubarray, lengthOfLongestSubstring, twoSumSorted, minSubArrayLen
    • task-25-algorithms-sliding-window.test.js - тесты для задачи
  • task-26/ - Алгоритмы: динамическое программирование (высокий уровень)
    • task-26-algorithms-dp.js - climbStairs, coinChange, longestIncreasingSubsequence, maxSubArray
    • task-26-algorithms-dp.test.js - тесты для задачи
  • task-27/ - Алгоритмы: графы и BFS (высокий уровень)
    • task-27-algorithms-graphs.js - shortestPathInGrid, numIslands, bfsLevelOrder, hasPath
    • task-27-algorithms-graphs.test.js - тесты для задачи
  • task-28/ - Структуры данных: Trie (префиксное дерево), продвинутый уровень
    • task-28-data-structures-trie.js - класс Trie: insert, search, startsWith, getWordsWithPrefix
    • task-28-data-structures-trie.test.js - тесты для задачи
  • task-29/ - Структуры данных: MinHeap (куча минимума), продвинутый уровень
    • task-29-data-structures-minheap.js - класс MinHeap: insert, extractMin, peek, size
    • task-29-data-structures-minheap.test.js - тесты для задачи
  • task-30/ - Структуры данных: Disjoint Set (Union-Find), продвинутый уровень
    • task-30-data-structures-union-find.js - класс DisjointSet: makeSet, find, union, areConnected
    • task-30-data-structures-union-find.test.js - тесты для задачи
  • task-31/ - Структуры данных: LFU Cache (Least Frequently Used), продвинутый уровень
    • task-31-data-structures-lfu-cache.js - класс LFUCache: get, set
    • task-31-data-structures-lfu-cache.test.js - тесты для задачи
  • task-32/ - Бинарное дерево: BST (структура данных), продвинутый уровень
    • task-32-binary-tree-structure.js - TreeNode, BinarySearchTree: insert, search, min, max
    • task-32-binary-tree-structure.test.js - тесты для задачи
  • task-33/ - Бинарное дерево: алгоритмы (обходы, свойства), продвинутый уровень
    • task-33-binary-tree-algorithms.js - inorder, preorder, postorder, maxDepth, isBalanced, isBST
    • task-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, fetchWithTimeout
    • task-35-advanced-js-abort-controller.test.js - тесты для задачи

Установка

npm install

Как использовать

  1. Откройте файл с задачей
  2. Прочитайте описание и требования
  3. Реализуйте решение в указанном месте
  4. Запустите тесты для проверки: npm test
  5. Проверьте линтер: 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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors