Вопросы:
- JavaScript
- Паттерны. Полный курс: 1:42:38
- ECMAScript 2015. Полный курс (ES6): 2:08:04
- ECMAScript 2016-2019. Полный курс (ES7, ES8, ES9): 49:45
1. JavaScript в браузере
- Что такое DOM?
- Типы узлов DOM-дерева?
- Разница между HTMLCollection и NodeList?
- Методы поиска элементов в DOM?
- Свойства для перемещения по DOM-дереву?
- Разница между attribute и property у DOM-элементов?
- Что такое BOM?
- Виды событий в JavaScript?
- Является ли, Drag and drop частью спецификации? Какие drag-события Вам известны?
- Как добавить обработчик события на DOM-элемент?
- Сколько аргументов принимает addEventListener?
- Как удалить обработчик события с DOM-элемента?
- Что такое событийная модель в JavaScript?
- Что такое распространение события (Event Propagation)?
- Что такое делегирование событий (Event Delegation)?
- Как использовать media выражения в JavaScript?
- Расскажите про координаты в браузере?
- Как динамически добавить элемент на HTML-страницу?
- Разница между feature detection, feature inference и анализом строки user-agent?
- Разница между e.preventDefault() и e.stopPropagation()?
- Разница между event.target и event.currentTarget?
- Разница между .stopPropagation() и .stopImmediatePropagation()?
- Разница между событиями load и DOMContentLoaded?
- Разница между innerHTML и outerHTML?
- Разница между JSON и XML?
- Как узнать об использовании метода event.preventDefault()?
- Для чего используется свойство window.navigator?
- Для чего используется метод .focus()?
- Для чего используется свойство .forms?
- Для чего используется метод .scrollIntoView()???
- Разница между методами .submit() и .requestSubmit()?
- Расскажите о IntersectionObserver?
- Расскажите о URLSearchParams?
- Какие есть ограничения у window.close()?
- Для чего используется свойство .dataset?
- Типы всплывающих окон в JavaScript?
- Каким образом можно обмениваться кодом между файлами?
2. Основные концепции
Примитивные типы данных
- Что такое JavaScript?
- Парадигмы программирования в JavaScript?
- Какие есть типы данных в JavaScript?
- Как хранятся числа?
- 0,1 + 0,2 === 0,3 Что такое потеря точности?
- Как сгенерировать случайное число в JavaScript?
- Что такое неявное приведение типов? Как оно работает?
- Разница между и = (нестрогое/строгое равенство)?
- Как превратить любой тип данных в булевый? Перечислите ложные значения в JS?
- Что такое NaN? Как определить, что значение равно NaN?
- Что такое необъявленная переменная?
- Как проверить переменную на существование? Что будет если вызвать typeof у необъявленной переменной?
- Разница между «undefined» и «null»
- Какие ошибки бывают и что означают? Логические ошибки останавливают работы скрипта?
- Методы строк в JavaScript?
- Типы операторов в JavaScript?
- Операторы «И» и «ИЛИ»?
- Для чего используется оператор двойного отрицания (!!)?
- Для чего используется оператор остатка (%)?
- Что такое выражения (expression) и инструкции (statement) в JavaScript?
- Что такое регулярное выражение (Regular Expression)?
- Какие методы используются в регулярных выражениях?
Ссылочные типы данных
- Что такое ссылочный тип данных? Когда происходит передача по ссылке?
- Что такое объект? Каким типом может быть ключ, а каким значение?
- Что такое JSON?
- Какими способами можно получить доступ к свойству и методу объекта?
- Разница между примитивом и объектом?
- Что такое дескрипторы свойств объектов?
- Какие есть способы создания функции? Что такое анонимная самовызывающаяся функция?
- Что такое IIFE?
- Типы функций по способности принимать другие функции?
- Разница между function declaration и function expression?
- В чём разница между стрелочными и обычными функциями?
- Правила задания имён для переменных и функций в JavaScript?
- Разница между параметром и аргументом функции?
- Как задавать значения в функции по-умолчанию?
- Как передаются параметры в функцию: по ссылке или по значению?
- Что такое каррирование (Currying)?
- Что такое чистая функция?
- Что такое побочный эффект?
- Методы массивов в JavaScript?
- Разница между методами .slice() и .splice()?
- Как работают методы .find(), .findIndex() и .indexOf()?
- Разница между методами .push(), .pop(), .shift() и .unshift()?
- Разница между .some() и .every()?
- Для чего применяется метод Array.from()?
- Как проверить, является ли значение массивом?
- Что такое псевдомассив arguments?
Продвинутая работа с функциями
- Что такое область видимости (scope) ?
- В чём разница между var, let и const?
- Что такое рекурсия? Что если будет отсутствовать терминальный случай?
- Что такое лексическое окружение? Что такое замыкание?
- Что такое утечки памяти?
- Назовите основные типы утечек памяти в JavaScript?
- Как работает «сборщик мусора» в JavaScript?
- Что такое всплытие hoisting?
- Что такое мемоизация? Реализуйте базовую логику функции для мемоизации?
- Плюсы и минусы иммутабельности? Как достичь иммутабельности в JS?
Функции перебора массивов
- Что означает функции высшего порядка?
- Какой есть метод для работы с фильтрацией массива? Результатом работы является новый массив или отфильтрованный текущий? Что функция предикат должна возвращать, чтобы элемент старого массива попал в отфильтрованный?
- Метод для обхода массива? Создаётся новый массив или мутируется текущий? Что будет записано в новый массив?
- После filter или map вновь созданный массив будет иметь одинаковую или отличную длину по сравнению со старым массивом?
- Разница между .forEach() и .map()?
- Что делает reduce? Какие аргументы принимает?
3. ECMAScript
- Что такое ECMAScript? В чём отличие от JavaScript?
- В чём разница между var, let и const?
- Что такое временная мёртвая зона (temporal dead zone)?
- Можно ли изменить значение определённое через const?
- Разница между Rest и Spread операторами?
- Что такое деструктуризация?
- Для чего используется цикл for…of?
- Что такое шаблонные литералы (Template Literals?)
- Разница между методом Object.freeze() и const?
- Что такое итераторы?
- Что такое генераторы? Когда стоит использовать генераторы?
- Что такое ES6 модули?
- Что такое символ (Symbol) в ES6?
- Для чего используется метод .includes()?
- Для чего используется метод .getOwnPropertyDescriptors()?
- Расскажите о методах .keys(), .values(), .entries()?
- Для чего используется метод .fromEntries()?
- Для чего используются методы .flat() и .flatMap()?
- Для чего используются методы .padStart() и .padEnd()?
- Для чего используются методы .startsWith() и .endsWith()?
- Как в JavaScript удалять пробельные символы в начале и в конце строки?
- Расскажите об операторе Optional Chaining (?.)?
- Для чего используется метод .replaceAll()?
- Что такое оператор логического присваивания?
- Как увеличить читаемость больших чисел?
- Что такое приватные аксессоры?
- Разница между ES6-классами и конструкторами функций?
- Что такое оператор нулевого слияния (??)
- В чём отличие оператора нулевого слияния (??) и оператора “ИЛИ”
- Что такое Set, Map, WeakMap и WeakSet?
- Назовите основные методы и свойства работы с коллекцией Map?
- Назовите основные методы и свойства работы с коллекцией Set?
- Как осуществить перебор элементов в коллекциях Map и Set?
4. Прототипы и классы
this
- Что такое this?
- Как работает контекст выполнения (execution context) в JavaScript?
- Что делает bind? Что возвращает bind? Какие параметры есть у bind?
- Что делают call и apply?
- Что такое потеря контекста?
- Чем отличаются this в стрелочных функциях и в обычных?
- На что ссылается this внутри функции, вызванной как метод объекта? А что если это стрелочная функция?
- Что такое цепочка вызовов функций (chaining)? Как реализовать такой подход?
- Что такое раннее связывание и позднее связывание?
- Квизы на понимание this
Объекты
- Что такое объект? Каким типом может быть ключ, а каким значение?
- Как работает boxing и unboxing в JavaScript?
- Типы объектов JavaScript?
- Почему в JS функции называют объектами первого класса?
- Разница между host-объектами и нативными объектами?
- Почему расширение нативных JavaScript-объектов это плохая практика?
- Что такое метод, что такое свойство объекта?
- Разница между функцией и методом?
- Что такое полифил (polyfill)?
- Как создать объект?
- Почему результат сравнения 2х объектов это false?
- Можно ли перебирать свойства объекта?
- Можно ли удалять что-то из объекта?
- Что произойдет при вызове несуществующего свойства у объекта?
- Как проверить наличия свойства у объекта? Как отличить отсутствующее свойство от свойства со значением «undefined»?
- Как преобразовать список пар ключ-значение в объект? Object.fromEntries(), Object.keys() и Object.values()
- Что такое rest и spread? В чём их разница. Какой тип данных у rest? Как с помощью spred сделать копию или конкатенацию массива и объекта?
- Разница между глубокой и поверхностной копиями объекта? Как сделать каждую из них?
- Что такое деструктуризация?
- Что такое MapWeak и SetWeak?
- Что из себя представляет объект Map, в каком виде он хранит данные, чем может быть ключ? Какие методы для работы с ним существуют? Чем Map отличается от объекта?
- Что такое Set, в каком виде хранится информация, какие методы для работы с ним существуют?
- Разница между Object и Map?
Прототипы и классы
- Что такое прототип (Prototype) объекта?
- Что такое proto ? Чем отличается proto от Prototype?
- Как работает механизм прототипов в JavaScript?
- Что такое цепочка прототипов?
- Что такое прототипное наследование? Как создать объект без прототипа?
- Можно ли изменять прототип после создания объекта?
- Что такое getter и setter?
- В чем заключаются особенности getter и setter?
- Как установить прототип объекту? Можно ли замыкать цепочку прототипов (объект А ссылается на В, а В ссылается на А)?
- Как работает метод Object.create()?
- Для чего используются метод Object.seal()?
- Разница между Object.freeze() и Object.seal()?
- Что такое объектная обертка (Wrapper Objects)?
- Что такое класс и для чего он нужен?
- Расскажи про наследование классов? Можно ли наследоваться от нескольких классов?
- Что такое конструктор класса?
- Что такое статический метод класса (static)? Как осуществляется его вызов?
- Что такое super?
- Что делает оператор new? Чему будет равен this внутри класса?
- Где хранятся методы и свойства объявленные в конструкторе и за конструктором, но внутри класса?
- Как работает instanceof?
- Разница между typeof и instanceof?
5. Обработка ошибок и асинхронность
Обработка ошибок
- Как отлавливать и обрабатывать ошибки try-catch?
- Что попадает в блок catch?
- Можно ли создавать свой объект ошибок error?
- Что такое исключение?
- Что будет если не обработать исключение?
- Как сделать проброс исключения? Куда попадает ошибка и как с ней работать дальше?
- Что такое Strict mode в JavaScript?
- Плюсы и минусы использования use strict?
Асинхронность
- Что такое асинхронность?
- Плюсы и минусы асинхронного программирования в JavaScript?
- Где исполняются асинхронные функции?
- Сколько потоков исполнения у JS?
- Многопоточность против асинхронного программирования?
- Разница между синхронными и асинхронными функциями?
- Что такое Eventloop, очередь задач, микрозадача и макрозадача?
- Работа с таймерами в JavaScript?
- Подходы при работе с асинхронным кодом?
- Что такое callback функция? Почему возникает callback hell?
- Проблемы при использовании callback-функций?
- Что такое promise? Как они решают проблему callback hell?
- Преимущества использовании промисов вместо колбэков?
- Можно ли изменять состояние promise?
- Что такое then? Что передаётся первым аргументом в колбек? Что возвращает then?
- Как обрабатывать ошибки в промисах?
- Promise.all, Promise.allSettled, Promise.any, Promise.race?
- Что такое async и await?
- Как обрабатывать ошибки в async и await?
- Как выполнить несколько асинхронных операций последовательно?
- Какие проблемы может вызвать неправильное использование асинхронности в JavaScript?
Сетевое взаимодействие
- Что такое AJAX?
- Плюсы и минусы использовании AJAX?
- Что такое XMLHttpRequest?
- Отладка AJAX?
- Что возвращает fetch? Как получить содержимое ответа? Как обрабатывать ошибки?