#junior
Есть несколько слов. Нужно определить, состоят ли они из одних и тех же букв.
Например:
Есть несколько слов. Нужно определить, состоят ли они из одних и тех же букв.
Например:
[‘kot’, ‘tok’, ‘okt’]
Смотреть решение#junior #middle
Что будет выведено в консоль после выполнения кода выше, как можно модифицировать пример что бы он возвращал правильный результат(назовите как можно больше способов)?
Смотреть решение
Что будет выведено в консоль после выполнения кода выше, как можно модифицировать пример что бы он возвращал правильный результат(назовите как можно больше способов)?
Смотреть решение
Расскажите об одном из наиболее популярных паттернов для создания объектов в JavaScript и объясните, как он работает.
#middle
Одним из наиболее популярных паттернов для создания объектов в JavaScript является паттерн "Фабрика". Этот паттерн позволяет создавать объекты через функцию-конструктор, которая возвращает новый экземпляр объекта.
Например:
function createPerson(name, age) {
return {
name: name,
age: age
};
}
const person = createPerson('John', 30);
В этом примере функция createPerson является фабрикой, которая создает объекты типа "Person". Она принимает два параметра - name и age, которые используются для инициализации свойств объекта. Затем эти значения присваиваются свойствам name и age с помощью оператора :, и в конце функция возвращает созданный объект.
#middle
Например:
function createPerson(name, age) {
return {
name: name,
age: age
};
}
const person = createPerson('John', 30);
В этом примере функция createPerson является фабрикой, которая создает объекты типа "Person". Она принимает два параметра - name и age, которые используются для инициализации свойств объекта. Затем эти значения присваиваются свойствам name и age с помощью оператора :, и в конце функция возвращает созданный объект.
Какая функция из стандартной библиотеки JavaScript используется для поиска подстроки в строке?
Anonymous Quiz
38%
indexOf()
33%
find()
14%
search()
14%
match()
Какие методы и технологии вы используете для оптимизации производительности ваших JavaScript-приложений, и какие проблемы производительности вы встречали ранее и как их решали?
#middle
Один из способов ответить на этот вопрос может быть такой:
"Для оптимизации производительности моих JavaScript-приложений я использую различные методы и технологии. Например, я стараюсь избегать использования неоптимальных алгоритмов и структур данных, таких как линейный поиск в большом массиве. Я также регулярно использую инструменты профилирования кода, такие как инструменты в браузере, или утилиты командной строки, такие как jsperf, чтобы идентифицировать узкие места в моем коде."
#middle
"Для оптимизации производительности моих JavaScript-приложений я использую различные методы и технологии. Например, я стараюсь избегать использования неоптимальных алгоритмов и структур данных, таких как линейный поиск в большом массиве. Я также регулярно использую инструменты профилирования кода, такие как инструменты в браузере, или утилиты командной строки, такие как jsperf, чтобы идентифицировать узкие места в моем коде."
Какая из следующих JavaScript функций возвращает строку без гласных?
Anonymous Quiz
28%
function removeVowels(str) { return str.replace(/[aeiou]/g, ''); }
6%
function removeVowels(str) { return str.replace(/[AEIOU]/g, ''); }
44%
function removeVowels(str) { return str.replace(/[AEIOUaeiou]/g, ''); }
22%
function removeVowels(str) { return str.replace(/[^aeiou]/g, ''); }
Опишите, как работает механизм сборки мусора в JavaScript и перечислите основные алгоритмы сборки мусора, которые вы знаете. Какие преимущества и недостатки имеет каждый из них? Какие методы можно использовать для оптимизации работы сборщика мусора в JavaScript-приложении?
#senior
Механизм сборки мусора (GC, Garbage Collection) в JavaScript отвечает за удаление неиспользуемых объектов из памяти. Он работает параллельно с выполнением кода и вызывается автоматически в определенные моменты.
Основные алгоритмы сборки мусора:
1. Сборка мусора с использованием списка живых объектов (Mark-and-Sweep): происходит пометка всех объектов, которые используются в данный момент, и удаление всех остальных. Этот алгоритм прост и не требует дополнительной памяти, но может привести к замедлению работы приложения во время сборки мусора.
2. Сборка мусора с использованием сборщика на основе ссылок (Reference Counting): каждый объект хранит счетчик ссылок на него, который увеличивается при каждой новой ссылке на этот объект и уменьшается при удалении ссылки. Объект удаляется, когда счетчик ссылок становится равен нулю. Этот алгоритм эффективен, но требует дополнительной памяти для хранения счетчиков ссылок.
3. Алгоритм сборки мусора с использованием полного поиска (Scavenging) представляет собой улучшенную версию алгоритма Mark-and-Sweep. Он используется в некоторых реализациях JavaScript-движков, таких как Spider Monkey и V8. При работе этого алгоритма память разбивается на две части: кучу (heap) и мусорную кучу (nursery). Куча содержит все объекты, которые могут быть удалены при сборке мусора, а мусорная куча - только те объекты, которые созданы во время последней сборки мусора. Во время сборки мусора объекты из мусорной кучи сначала переносятся в кучу, а затем помечаются как неиспользуемые. После этого происходит удаление непомеченных объектов из кучи.
#senior
Основные алгоритмы сборки мусора:
1. Сборка мусора с использованием списка живых объектов (Mark-and-Sweep): происходит пометка всех объектов, которые используются в данный момент, и удаление всех остальных. Этот алгоритм прост и не требует дополнительной памяти, но может привести к замедлению работы приложения во время сборки мусора.
2. Сборка мусора с использованием сборщика на основе ссылок (Reference Counting): каждый объект хранит счетчик ссылок на него, который увеличивается при каждой новой ссылке на этот объект и уменьшается при удалении ссылки. Объект удаляется, когда счетчик ссылок становится равен нулю. Этот алгоритм эффективен, но требует дополнительной памяти для хранения счетчиков ссылок.
3. Алгоритм сборки мусора с использованием полного поиска (Scavenging) представляет собой улучшенную версию алгоритма Mark-and-Sweep. Он используется в некоторых реализациях JavaScript-движков, таких как Spider Monkey и V8. При работе этого алгоритма память разбивается на две части: кучу (heap) и мусорную кучу (nursery). Куча содержит все объекты, которые могут быть удалены при сборке мусора, а мусорная куча - только те объекты, которые созданы во время последней сборки мусора. Во время сборки мусора объекты из мусорной кучи сначала переносятся в кучу, а затем помечаются как неиспользуемые. После этого происходит удаление непомеченных объектов из кучи.
Какой метод из указанных ниже используется для добавления элемента в конец массива?
Anonymous Quiz
69%
push()
12%
splice()
8%
unshift()
12%
slice()
Какие из следующих методов массива изменяют сам массив?
Anonymous Quiz
42%
map()
6%
filter()
16%
reduce()
35%
splice()
Какой метод из указанных ниже может быть использован для создания нового массива, содержащего элементы из двух исходных массивов?
Anonymous Quiz
32%
concat()
29%
slice()
7%
splice()
32%
join()
Что такое замыкания в JavaScript?
Anonymous Quiz
57%
Это функция, которая принимает другоую функцию, как аргумент и возвращает новую функцию
7%
Это функция, которая вызывается для создания нового объекта
29%
Это особенность языка, которая позволяет функции получать доступ к переменным из внешнего скоупа
7%
Это функция, которая вызывается при загрузке страницы
Выберите ответ на вопрос выше ⬆️
Anonymous Quiz
52%
'Hello, my name is Mike'
21%
'Hello, my name is John'
14%
undefined
14%
ReferenceError: great is not a function
В чем разница между == и === в JavaScript?
Anonymous Quiz
33%
== делает приведение типов, === не делает
12%
=== делает приведение типов, == не делает
12%
== сравнивает и типы и значения, === сравнивает только значения
42%
=== сравнивает и типы и значения, == сравнивает только значения
Какое из следующих утверждений о ключевом слове let правдиво?
Anonymous Quiz
9%
Переменные, объявленные с помощью let имеют функциональную область видимости (function-scoped)
41%
Переменные, объявленные с помощью let имеют блочную область видимости (block-scoped)
9%
Переменные, объявленные с помощью let имеют глобальную область видимости (globally-scoped)
41%
Переменные, обявленные с помощью let можно переобъявить с тем же самым именем внутри того же scope.
Какие из указанных ниже способов создания нового массива являются наиболее эффективными в терминах производительности?
Anonymous Quiz
18%
Использование метода slice() с нулевыми аргументами
25%
Использование метода concat()
21%
Создание нового массива с помощью цикла for и метода push()
36%
Создание нового массива с помощью спред-оператора (...)
Какие из указанных ниже вариантов являются правильными способами объявления функции в JavaScript?
Anonymous Quiz
31%
function foo() {}
13%
var foo = function() {}
10%
let foo = function() {}
10%
const foo = function() {}
0%
foo = function() {}
35%
Все варианты правильные
В чем разница между let и const в JavaScript?
Anonymous Quiz
22%
значения переменных, объявленных через let нельзя переопределять, объявленных через const — можно
78%
значения переменных, объявленных через const нельзя переопределять, объявленных через let — можно
0%
переменные let можно объявить только один раз, в то время как const можно объявлять несколько раз
0%
между let и const нет разницы