Какой у тебя уровень владения JavaScript?

Ответ

Я оцениваю свой уровень как Senior/Strong Middle. Имею коммерческий опыт разработки на JavaScript/TypeScript более 5 лет, преимущественно в стеке React/Node.js.

Мой стек и опыт:

  • Язык: Глубокое понимание ES6+, асинхронности (Promises, async/await, Event Loop), прототипного наследования, замыканий, модулей.
  • Frontend: React с hooks (Context, Redux Toolkit, RTK Query), современный CSS (Modules, Styled-components), сборка (Webpack/Vite).
  • Backend: Node.js (Express, NestJS), работа с REST/GraphQL API, аутентификация (JWT).
  • Инструменты: Git, Docker, Jest/React Testing Library для unit- и интеграционных тестов.

Пример решения сложной задачи:

// Реализация debounce с возможностью отмены для поисковых запросов
function createDebouncedFunction(fn, delay) {
  let timeoutId;
  const debouncedFn = (...args) => {
    clearTimeout(timeoutId);
    timeoutId = setTimeout(() => fn.apply(this, args), delay);
  };
  debouncedFn.cancel = () => clearTimeout(timeoutId);
  return debouncedFn;
}

// Использование в React-компоненте
const searchAPI = async (query) => { /* ... */ };
const debouncedSearch = createDebouncedFunction(searchAPI, 300);
// Вызов на onChange инпута

Могу проектировать архитектуру приложений, проводить код-ревью, оптимизировать производительность (мемоизация, виртуализация списков, анализ бандла).

Ответ 18+ 🔞

Блин, ну смотри, оцениваю себя как Senior или очень крепкий Middle, не хвастаюсь, просто факт. Коммерческой разработки на JS/TS — больше пяти лет, и в основном это был React и Node.js, так что стек знаком до оскомины.

Что я вообще умею и на чём собаку съел:

  • Сам язык: ES6+ знаю как свои пять пальцев. Все эти промисы, async/await, Event Loop — не просто слова, понимаю, как там всё внутри вертится. Прототипы, замыкания, модули — это база, без этого вообще никуда.
  • Фронтенд: В основном React, причём на хуках. Работал и с Context, и с Redux Toolkit, и с RTK Query — выбирал по ситуации. CSS — Modules, Styled-components, чтобы не было ебушки-воробушки в стилях. Сборщики — Webpack, Vite — тоже проходил.
  • Бэкенд: Node.js — Express, NestJS. Делал REST, GraphQL, аутентификацию через JWT. Не просто «по туториалу», а реальные проекты.
  • Инструменты: Git, Docker, тесты на Jest и React Testing Library — для юнитов и интеграции. Без этого сейчас — как без рук, доверия ебать ноль.

Вот, к примеру, какую задачку решал недавно — debounce с возможностью отмены, для поиска:

// Реализация debounce с возможностью отмены для поисковых запросов
function createDebouncedFunction(fn, delay) {
  let timeoutId;
  const debouncedFn = (...args) => {
    clearTimeout(timeoutId);
    timeoutId = setTimeout(() => fn.apply(this, args), delay);
  };
  debouncedFn.cancel = () => clearTimeout(timeoutId);
  return debouncedFn;
}

// Использование в React-компоненте
const searchAPI = async (query) => { /* ... */ };
const debouncedSearch = createDebouncedFunction(searchAPI, 300);
// Вызов на onChange инпута

В общем, могу не только код писать, но и архитектуру продумывать, код-ревью проводить (иногда там такое увидишь — удивление пиздец), и производительность гонять — мемоизация, виртуализация, анализ бандла. Если что-то тормозит — подозрение ебать чувствую сразу, ищу, где собака зарыта.