99 вопросов
Практика
Как ты реализовал бы разные подходы к удалению дубликатов из JavaScript массива, и какие компромиссы существуют между использованием `Set`, `filter` с `indexOf` и методом `reduce`?
Напиши функцию, которая имитирует поведение `Promise.all()`. Она должна принимать массив промисов и возвращать единый промис, который разрешается массивом всех разрешённых значений в том же порядке, или отклоняется, если любой промис в массиве отклонится.
Напиши функцию на JavaScript, которая определяет, является ли переданная строка палиндромом, игнорируя регистр символов и неалфанумерные символы.
Разработай и реализуй полный класс EventEmitter на JavaScript, который поддерживает следующий функционал: - Регистрация слушателей событий через метод `on()` - Удаление слушателей событий через метод `off()` - Запуск событий и вызов всех зарегистрированных слушателей через метод `emit()` Реализация должна поддерживать method chaining и работать с несколькими слушателями на одно событие.
Пожалуйста, реализуй функцию, которая выполняет обход DOM дерева в глубину, вызывая callback функцию на каждом посещённом узле во время обхода.
Какие техники ты можешь использовать, чтобы предотвратить ошибки stack overflow при реализации рекурсивных функций в JavaScript, и как паттерн trampoline с `setTimeout` помогает смягчить эту проблему?
Напиши функцию, которая группирует элементы массива по указанному ключу или функции callback, возвращая объект, где ключи соответствуют сгруппированным значениям, а значения — это массивы элементов, имеющих этот ключ.
Можешь объяснить, что такое polyfill, и привести пример того, как его используют в JavaScript-разработке для поддержки старых браузеров?
Можешь объяснить ключевые различия между полифиллами и транспайлерами, и когда ты бы использовал каждый из них в JavaScript проекте?
Можешь объяснить, что делает функция `eval()` в JavaScript, и обсудить проблемы безопасности, производительности и поддерживаемости, связанные с её использованием?
Какой будет вывод следующего кода JavaScript и почему? ```javascript console.log(typeof typeof 1); ```
Можешь объяснить различие между `undefined` и `undeclared` переменными в JavaScript и описать, как оператор `typeof` работает с каждой из них?
Как работают labeled statements в JavaScript и какую роль они играют с операторами `break` и `continue`?
Можешь объяснить, как работает оператор запятая в JavaScript, включая порядок вычисления и типичные случаи использования?
Можешь объяснить, как работает короткое вычисление (short-circuit evaluation) с логическими операторами `&&` и `||` в JavaScript, и привести примеры поведения каждого оператора?
Можешь объяснить, что такое TypedArrays в JavaScript, включая их ключевые характеристики, распространённые типы и практические примеры использования?
Можешь объяснить, что делает `JSON.stringify()` в JavaScript, и описать его основные ограничения при сериализации различных типов данных?
Можешь объяснить, что такое `WeakRef` в JavaScript? Включи в ответ отличия от обычных ссылок, способ доступа к объекту, на который ссылается `WeakRef`, и типичные сценарии его использования.
Как `globalThis` обеспечивает стандартизированный способ доступа к глобальному объекту в различных JavaScript окружениях?
Можешь объяснить ключевые различия между `Object.keys()` и `Reflect.ownKeys()` с точки зрения того, какие свойства они возвращают и как они упорядочивают результаты?
Какие рекомендуемые методы используются для определения того, является ли значение массивом в JavaScript, и каковы преимущества и ограничения каждого подхода?
Можешь объяснить оптимизацию хвостового вызова (tail call optimization) в JavaScript, включая то, как она работает и какие движки JavaScript её поддерживают?
Чем отличаются `setTimeout(fn, 0)` и `Promise.resolve().then(fn)` с точки зрения порядка выполнения задач и приоритета очередей в event loop JavaScript?
Можешь объяснить, что такое `ArrayBuffer` в JavaScript, включая его назначение, как его использовать и основные случаи применения?
Можешь объяснить, что такое Immediately Invoked Arrow Functions (IIFE) и описать, чем они отличаются от традиционных IIFE в JavaScript?
Можешь объяснить, что такое function composition в JavaScript, и привести пример того, как ты бы его реализовал?
Можешь объяснить объект `arguments` в JavaScript, включая его характеристики, ограничения и как современные альтернативы сравниваются с ним?
Можешь объяснить, что такое объект Blob в JavaScript, включая его ключевые свойства и основные случаи использования?
Какие практические применения у tagged template literals в разработке на JavaScript, и как tag функции обрабатывают строки и данные интерполяции?
Какова цель `Object.assign()` и как она работает при копировании свойств в JavaScript?
Почему `typeof null` возвращает `"object"` в JavaScript и почему эта особенность так и не была исправлена?
Можешь объяснить, что такое escape-символы в JavaScript и привести примеры того, как они используются для представления специальных символов в строках?
Можешь объяснить, что делает оператор `void` в JavaScript и описать его основные случаи использования?
Можешь объяснить различия между методами `String.prototype.trimStart()`, `trimEnd()` и `trim()`, а также их устаревшими aliases?
Можешь объяснить, как работает оператор `in` в JavaScript, и в чём разница в том, как он проверяет свойства объекта и индексы массива?
Как работает оператор `delete` в JavaScript, и каковы его ограничения и возвращаемые значения?
Можешь ли ты реализовать функцию debounce в JavaScript, которая откладывает выполнение callback-функции до тех пор, пока не пройдет указанный промежуток времени с момента последнего вызова?
Реализуй функцию throttle, которая ограничивает частоту выполнения заданной функции, гарантируя, что она запускается не более одного раза в течение указанного временного интервала в миллисекундах.
Напиши собственную реализацию метода `Array.prototype.map()` в виде полифила, который преобразует каждый элемент массива с помощью переданной функции-колбэка, корректно обрабатывая опциональный параметр контекста `thisArg` и разреженные массивы.
Как бы ты реализовал пользовательский polyfill для метода `Function.prototype.bind()` в JavaScript, включая возможность предварительного связывания аргументов и сохранения правильного связывания контекста?
Как бы ты реализовал функцию для развертывания вложенной структуры массива в JavaScript, и какие подходы доступны для этого?
Напиши рекурсивную функцию, которая создаёт глубокую копию JavaScript объектов и массивов без использования встроенного метода `structuredClone()`. Твоя реализация должна обрабатывать примитивные значения, объекты `Date`, объекты `RegExp`, вложенные объекты и массивы.
Объясни, как работают операторы сложения (`+`) и вычитания (`-`) в JavaScript при работе со смешанными типами данных, и чем отличается приведение типов для бинарных и унарных операторов.
Создай кастомную реализацию метода `Array.prototype.reduce()`, которая принимает функцию-callback и опциональное начальное значение, а затем итерирует по массиву, чтобы аккумулировать один результирующий значение.
Можешь ли ты реализовать функцию curry в JavaScript, которая преобразует функцию с несколькими параметрами в последовательность функций, каждая из которых принимает один аргумент, и позволяет частичное применение до тех пор, пока не будут предоставлены все необходимые аргументы?
Как бы ты реализовал higher-order функцию, которая гарантирует, что заданная функция выполнится только один раз, независимо от того, сколько раз вызовут возвращённую функцию-обёртку?
Можешь объяснить, какой результат выведет этот JavaScript код, и описать, как hoisting переменных и scope влияют на результат?
Напиши функцию, которая реализует `pipe()` для композиции функций слева направо, позволяя применять несколько функций последовательно к начальному значению.
Можешь ли ты реализовать функцию `sleep()` в JavaScript, которая приостанавливает выполнение на указанное количество миллисекунд, и продемонстрировать, как её использовать с async/await?
Как бы ты написал JavaScript функцию, которая вычисляет максимальную прибыль от одной покупки и продажи акции, учитывая массив цен акций, где каждый индекс представляет цену в конкретный день?
Как ты реализовал бы алгоритм, чтобы переместить все нулевые значения в конец массива, сохранив при этом относительный порядок ненулевых элементов и модифицировав массив на месте без использования дополнительных структур данных?
Объясни вывод этого кода и определи проблему с областью видимости, которая вызывает неожиданное поведение. Какие решения ты бы рекомендовал для исправления? ```javascript for (var i = 0; i < 3; i++) { setTimeout(() => console.log(i), 1000); } ```
Как бы ты реализовал пользовательский метод `myFlat()` на прототипе Array, который разворачивает массив на один уровень, объединяя вложенные массивы в один плоский массив?
Объясни, как работает rest оператор при деструктуризации объектов, и опиши, что выведется в консоль в этом примере кода.
Как бы ты реализовал механизм повторных попыток для асynchronous функций, который автоматически повторяет failed операции заданное количество раз с настраиваемой задержкой между попытками?
В JavaScript при доступе к свойствам объекта с использованием нестроковых ключей, как язык обрабатывает преобразование, и каков будет результат выполнения следующего кода? ```javascript const a = {}; const b = { key: "b" }; const c = { key: "c" }; a[b] = 123; a[c] = 456; console.log(a[b]); ```
Можешь объяснить метод `String.prototype.replaceAll()` в JavaScript и описать, чем он отличается от использования регулярных выражений для замены нескольких вхождений подстроки?
Можешь объяснить, почему сложение 0.1 и 0.2 в JavaScript не равно 0.3, и описать рекомендуемый подход для сравнения чисел с плавающей точкой?
Объясни результат сравнения `[] == ![]` в JavaScript, включая правила приведения типов, которые применяются к этому выражению.
Напиши функцию JavaScript под названием `chunkArray()`, которая принимает массив и размер chunk'а в качестве параметров и возвращает новый массив, содержащий исходный массив, разделённый на меньшие подмассивы (chunk'и) указанного размера.
Можешь ли ты реализовать функцию мемоизации на JavaScript, которая кэширует результаты вызовов функций на основе их аргументов и возвращает кэшированный результат для последующих вызовов с теми же аргументами?
Можешь объяснить, для чего нужен метод `Object.fromEntries()` в JavaScript и привести практические примеры, где ты бы применил этот метод в своём коде?
Можешь объяснить, что такое `SharedArrayBuffer`, чем он отличается от обычного `ArrayBuffer` и какие соображения безопасности важны при его использовании?
Можешь объяснить, что такое top-level await в JavaScript и привести пример того, как его использовать в ES modules?
Как работают приватные методы в JavaScript классах, и каковы их область видимости и доступность?
Напиши функцию, которая находит и возвращает общие элементы между двумя массивами, удаляя любые дубликаты из результата.
Какие ключевые различия между использованием метода `Array.prototype.at()` и скобочной нотации для доступа к элементам массива, особенно при работе с отрицательными индексами?
Как свойство `Error.cause` (ES2022) позволяет организовать цепочку ошибок в JavaScript, и как ты можешь получить доступ к контексту исходной ошибки?
Можешь объяснить назначение `import.meta` и `import.meta.url` в JavaScript и описать, как `import.meta.url` используется для разрешения относительных путей к файлам?
Чем `String.prototype.matchAll()` отличается от метода `match()` при работе с регулярными выражениями, и каковы его требования?
Как работает оператор опциональной цепочки `?.()` при вызове функций в JavaScript, и каково его поведение, когда функция не существует?
Можешь объяснить различия между `queueMicrotask()` и `setTimeout(fn, 0)` с точки зрения времени выполнения и приоритета в event loop JavaScript?
Как ты используешь `AbortController` для отмены fetch запросов и других асинхронных операций в JavaScript?
Можешь объяснить назначение объекта Atomics в JavaScript и описать основные методы, которые он предоставляет для работы с SharedArrayBuffer в многопоточных окружениях?
Можешь объяснить, для чего нужен `Symbol.iterator` в JavaScript и как он позволяет объектам работать с циклами `for...of` и оператором spread?
Можешь объяснить, что такое `FinalizationRegistry` в JavaScript, включая его назначение, как он работает с `WeakRef`, и его ограничения?
Можешь объяснить метод `structuredClone()` в JavaScript и описать, чем его функциональность и ограничения отличаются от использования `JSON.parse(JSON.stringify())`?
Как логические операторы присваивания в JavaScript упрощают условное присваивание значений, и какие практические варианты использования есть для каждого оператора (||=, ??=, &&=)?
Реализуй функцию `throttle`, которая контролирует частоту выполнения callback функции, с настраиваемыми опциями для включения или отключения выполнения на начале и конце интервала throttle.
Объясни, какие внутренние механизмы и шаги выполняет ключевое слово `new` при создании экземпляра объекта в JavaScript?
Какой будет порядок вывода в консоль в этом JavaScript коде и какая причина этого порядка?
Можешь объяснить назначение и поведение функции-тега `String.raw` в JavaScript, и привести пример того, когда ты бы её использовал?
Можешь объяснить разницу между data properties и accessor properties в JavaScript и описать, как каждое из них определяется и используется?
Можешь объяснить, что такое property descriptor в JavaScript, включая его ключевые атрибуты и как получить доступ к ним или изменить их?
Как метод `Symbol.toPrimitive` позволяет реализовать пользовательское преобразование объектов в примитивные значения в JavaScript, и какую роль играет параметр hint в определении типа преобразования?
Как ты реализуешь протокол iterable в JavaScript, чтобы заставить пользовательский объект работать с for...of циклами?
Как ты используешь вычисляемые имена свойств с деструктуризацией объектов в JavaScript, и какой синтаксис используется для динамического доступа к свойствам объекта при деструктуризации?
Можешь объяснить, что такое `Promise.withResolvers()` и описать, как это упрощает создание отложенных промисов по сравнению с традиционным паттерном конструктора Promise?
Как Temporal Dead Zone влияет на объявления классов в JavaScript, и какая ошибка возникает при попытке создать экземпляр класса до его объявления?
Как работают числовые разделители в JavaScript и в чём их назначение?
Можешь объяснить, для чего нужен и как используется цикл `for await...of` в JavaScript, и привести пример того, как он обрабатывает асинхронные итерируемые объекты?
Можешь объяснить назначение и использование метода `Object.groupBy()` в JavaScript (ES2024), включая то, как он группирует элементы итерируемого объекта на основе callback-функции?
Можешь объяснить различия между `Array.prototype.findLast()` и `Array.prototype.findLastIndex()`, и описать, как они работают на практике?
Как объявление `using` в JavaScript обеспечивает автоматическую очистку ресурсов, и какую роль играет `Symbol.dispose` в этом процессе?
Можешь объяснить ключевые различия между методом `Array.prototype.toSorted()`, введённым в ES2023, и традиционным методом `sort()`, особенно в том, как они работают с исходным массивом?
Можешь объяснить назначение и функциональность метода `Array.prototype.with()`, представленного в ES2023, а также чем он отличается от операций, которые мутируют массив?
Как работает метод `Proxy.revocable()` и для чего он нужен в JavaScript?
Можешь объяснить различия между `Object.preventExtensions()`, `Object.seal()` и `Object.freeze()` с точки зрения того, какие операции они разрешают или запрещают над свойствами объекта?
Можешь объяснить, что такое Decorators в JavaScript, включая их синтаксис, назначение и привести пример того, как они используются для модификации методов класса?