← Все навыки

JavaScript Core

курс по ядру языка JavaScript для фронтендеров уровня Junior, готовящий к техническим собеседованиям. Студент научится объяснять приведение типов, замыкания, контекст this и прототипы «под капотом», предсказывать порядок вывода в Event Loop и уверенно решать классическую задачу про console.log с setTimeout и промисами.

6 модулей, 22 темы Junior Индивидуально с ментором

Программа

Вводный модуль

  • О курсе и как с ним работать

Модуль 1. Событийный цикл и асинхронность

  • Лекция 1.1. Event loop: стек вызовов, очереди задач, микро- и макрозадачи
  • Практика 1.1. Event loop
  • Лекция 1.2. Промисы: состояния, цепочки, статические методы
  • Практика 1.2. Промисы
  • Лекция 1.3. async/await под капотом: порядок выполнения, типовые задачи собеседований
  • Практика 1.3. async/await

Модуль 2. Функции, объекты и ядро языка

  • Лекция 2.1. Замыкания и функции-декораторы
  • Практика 2.1. Замыкания и функции-декораторы
  • Лекция 2.2. Ядро языка: типы и приведение, this, прототипы
  • Практика 2.2. Ядро языка

Модуль 3. Коллекции и работа с данными

  • Лекция 3.1. Map, Set и слабые ссылки: когда объекта недостаточно
  • Практика 3.1. Map, Set и слабые ссылки
  • Лекция 3.2. Копирование и сравнение: поверхностное и глубокое, structuredClone
  • Практика 3.2. Копирование и сравнение
  • Лекция 3.3. Итераторы и генераторы: протокол итерации, for...of, yield
  • Практика 3.3. Итераторы и генераторы

Модуль 4. Рантайм и модули

  • Лекция 4.1. Модули: ESM против CommonJS, import/export, порядок исполнения
  • Практика 4.1. Модули
  • Лекция 4.2. Память и сборка мусора: утечки, слабые ссылки на практике, DevTools
  • Практика 4.2. Память и сборка мусора

Модуль 5. Вопросы с собеседований

  • Вопросы с собеседований по темам курса

Что разбираем

  • Типы данных, примитивы и объекты, приведение типов, отличие == от ===
  • Переменные let/const/var, hoisting, временная мёртвая зона
  • Области видимости, замыкания (closures) и их применение
  • Функции, стрелочные функции и их поведение с this
  • Контекст вызова — this, call/apply/bind, потеря контекста
  • Прототипы и прототипное наследование, prototype chain
  • Современный синтаксис ES6+ — деструктуризация, spread/rest, шаблонные строки, опциональная цепочка ?., nullish coalescing ??, Map/Set, Symbol, итераторы
  • Работа с массивами и объектами, иммутабельные трансформации (map/filter/reduce)
  • Event Loop — call stack, макрозадачи и микрозадачи, порядок выполнения then, queueMicrotask и setTimeout
  • Промисы, Promise.all/race/allSettled, async/await, обработка ошибок
  • Fetch API, заголовки, JSON, обработка ошибок и почему fetch не реджектит на 404, AbortController
  • ES Modules (import/export) vs CommonJS, динамический import(), tree-shaking

Практика

  • Разобрать серию выражений с == и приведением типов ([] == ![], '' == 0 и т.п.) и объяснить каждый результат
  • Написать счётчик и мемоизацию через замыкание, объяснить, что и где захватывается
  • Воспроизвести классический баг с var в цикле и setTimeout, починить через let и через IIFE
  • Показать четыре способа определить значение this (обычный вызов, метод, call/apply/bind, new) и предсказать результат для стрелочной функции
  • Решить каноничную собесную задачу: расставить порядок вывода console.log при смеси synchronous-кода, setTimeout, Promise.then и async/await
  • Реализовать наследование через прототипы вручную, затем переписать на class и показать, во что это компилируется
  • Написать собственный Promise.all и обработать частичные ошибки через Promise.allSettled
  • Переписать колбэк-ад на async/await с корректной обработкой ошибок через try/catch
  • Сделать запрос через fetch, корректно обработать статус 404/500 (проверка response.ok) и отменить долгий запрос через AbortController
  • Отрефакторить императивный проход по массиву на цепочку map/filter/reduce без мутаций исходных данных
  • Реализовать debounce и throttle на замыканиях и таймерах
  • Разбить код на ES-модули, показать динамический import() для ленивой загрузки и объяснить, что даёт tree-shaking

Как проходит обучение

  • Занятия один на один с ментором под ваш темп и пробелы
  • Материалы курса открываются в личном кабинете, практику разбираете на встречах
  • Программа собирается под цель: подготовка к собеседованию или рабочая задача