Какой из массивов НЕ будет выведен после выполнения этого кода?
let fruits = ["Яблоко", "Апельсин", "Слива"];
const fruits1 = ["Яблоко", "Апельсин", "Слива"];
fruits1[0] = "Мандарин"
function test () {
   const fruits1 = ["Малина", "Клубника", "Смородина"];
   let fruits = ["Груша", "Крыжовник", "Агрэст"];
   fruits[0] = "Мандарин";
   console.log(fruits); }
test()
console.log(fruits1);
console.log(fruits);

["Мандарин", "Крыжовник", "Агрэст"]
["Мандарин", "Клубника", "Смородина"]
["Мандарин", "Апельсин", "Слива”]
["Яблоко", "Апельсин", "Слива”]
Будут выведены все массивы

Перед вами поставили задачу написать веб-приложение «Крестики-нолики». По техническому заданию вам необходимо сохранять состояние игры. Например, вы можете сохранить текущего игрока, расположение крестиков и ноликов на игровом поле и другие данные, чтобы игра могла быть возобновлена после перезагрузки страницы.
Какой тип хранилища вы подберете для данной задачи?

Куки (cookies)
Web SQL Database
sessionStorage
LocalStorage
Cache AP

Каким будет результат выполнения следующего выражения в JavaScript?
"10" + 2 * "5"

100
1010
10025
20
50

Из массива чисел вам нужно сначала отфильтровать четные числа, затем удвоить их и, наконец, вычислить сумму. Какой код это выполняет?

numbers.reduce((sum, n) => sum + n).map(n => n * 2).filter(n => n % 2 === 0)
numbers.filter(n => n % 2).map(n => n + 2).reduce((sum, n) => sum + n)
numbers.reduce((sum, n) => sum + n * 2, 0).filter(n => n % 2 === 0)
numbers.filter(n => n % 2 === 0).map(n => n * 2).reduce((sum, n) => sum + n, 0)
numbers.map(n => n * 2).filter(n => n % 2 === 0).reduce((sum, n) => sum + n)

Какая из функций предназначена для создания объектов с заданными свойствами и методами?

Рекурсивная функция (recursive function)
Стрелочная функция (arrow function)
Функция-конструктор (constructor function)
Функция обратного вызова (callback)
Генераторная функция (generator function)

Что будет выведено в консоль при выполнении данного кода?
functiоn countеr() {
   var cоunt = 0;
   return functiоn() {
      return ++cоunt;
   }
}
vаr incrеment = cоuntеr();
cоnsolе.log(increment());
cоnsolе.log(increment());
cоnsolе.log(increment());

1, 2, 3
2, 3, 4
0, 0, 0
0, 1, 2
1, 1, 1

В какой последовательности выполняются операции в следующем коде, который включает асинхронные операции и взаимодействие с сетью? Учтите, что обработка запроса не будет закончена до того, как выполнится весь синхронный код программы.
consolе.lоg("Начало");
sеtTimeоut(() => {
   console.lоg("SetTimeоut 1");
}, 0);
fеtch("https://api.example.cоm/data")
   .thеn(respоnse => responsе.json())
   .thеn(data => {
      consоlе.log("Данные получены:", data);
   });
sеtTimeоut(() => {
   consоle.log("SеtTimeоut 2");
}, 0);
consоlе.lоg("Конец");

Конец, Начало, SetTimeout 1, SetTimeout 2, Данные получены: [данные].
Начало, Конец, SetTimeout 1, SetTimeout 2, Данные получены: [данные]
Начало, Конец, SetTimeout 1, Данные получены: [данные], SetTimeout 2.
Начало, Выполнение SetTimeout 1, Выполнение SetTimeout 2, Конец, Данные получены: [данные].
Начало, Конец, Данные получены: [данные], SetTimeout 1, SetTimeout 2

Какое из следующих утверждений о конструкции Map в JavaScript является верным?

Ключи в Map могут быть только строками
Метод delete() в Map возвращает удаляемый элемент из коллекции
Map не позволяет использовать объекты в качестве ключей
Map гарантирует, что элементы будут храниться в порядке добавления
Map автоматически сортирует свои элементы по возрастанию ключей

Вам нужно создать неглубокую копию объекта и массива в JavaScript, при этом важно сохранить методы, определенные в самом объекте (без учета прототипной цепочки). Какой из следующих методов или подходов вы выберете?

const newObj = new Object(obj), newArr = new Array(arr)
const newObj = {...obj}, newArr = [...arr]
const newObj = obj, newArr = arr 
const newObj = JSON.parse(JSON.stringify(obj)), newArr = JSON.parse(JSON.stringify(arr))
const newObj = Object.assing(obj), newArr = Array.copy(arr)

У вас есть следующий код. Что будет выведено в консоль при его вызове?
clаss Animаl {
   constructor(nаmе) {
      this.nаme = name;
   }
   spеаk() {
      console.log(`${this.name} mаkes a noise.`);     
   }   
}
clаss Dog extends Animal {
   spеаk() {
      super.speаk();
      console.log(`${this.nаme} barks.`);
   }
}
let dоg = new Dog("Rex");
dog.spеаk();

В консоли ничего не будет выведено, так как метод speak() переопределен в классе Dog
В консоли будет выведено только «Rex barks.» «елочки»
В консоли будет выведено «Rex makes a noise.» и затем «Rex barks.»
Произойдет ошибка из-за вызова super.speak()
В консоли будет выведено «Dog makes a noise.» и затем «Dog barks.»

Вы разрабатываете интерфейс для интернет-магазина, который должен содержать витрину для тысячи товаров. Какой подход стоит использовать, чтобы обеспечить плавное и быстрое отображение этих товаров при прокрутке и избежать задержек и «зависаний» интерфейса?

Провести оптимизацию запросов к серверу через WebSockets для непрерывной загрузки данных о товарах
Применение техники «Debounce» для событий прокрутки
Использовать кэширование данных на стороне клиента
Применить «ленивую загрузку» для изображений товаров
Реализовать виртуальный скроллинг для отображения товаров в текущем viewport (видимой области) браузера

Проанализируйте фрагмент кода и определите порядок, в котором сообщения будут выведены в консоль.
console.log('1');
setTimeout(function () {
   console.log('2');
   Promise.resolve().then(function () {
      console.log('3');
   });
}, 0);
Promise.resolve().then(function () {
   console.log('4');
   setTimeout(function () {
      console.log('5');
   }, 0);
});
requestAnimationFrame(function () {
   console.log('7');
});
console.log('6');

1, 6, 4, 2, 7, 5, 3
1, 4, 6, 2, 3, 7, 5
1, 4, 6, 7, 2, 5, 3
1, 2, 4, 6, 5, 7, 3
1, 6, 4, 7, 2, 3, 5

Для чего применяется tree shaking в системах сборки JavaScript на прикладном уровне?

Для создания иерархии древовидной структуры данных в JavaScript-приложениях
Для шифрования и обфускации JavaScript-кода с целью защиты интеллектуальной собственности
Для автоматического определения и удаления неиспользуемого кода во время сборки
Для отображения и визуализации иерархической структуры DOM-элементов веб-страницы
Для асинхронного выполнения функций с использованием деревьев вызовов (call trees)

Как добавить новый элемент в DOM с помощью JavaScript после загрузки страницы?

Используя комбинацию методов document.createElement() и document.appendChild()
Используя метод document.write()
Используя метод document.createAndInsertElement()
Используя комбинацию методов document.createElm() и document.insert()
Используя комбинацию методов document.create() и document.append()

Вы работаете над SPA (Single Page Application), которое активно обращается к API для обработки действий пользователя и вывода изменяющегося контента. Ваша задача — увеличить производительность приложения и сократить время полной первой отрисовки страницы. У вас в наличии мощный сервер, вы не ограничены пропускной способностью сетевого оборудования.
Какой метод вы используете для достижения этой цели?

Кэширование ответов от API в localStorage
Server-Side Rendering (SSR)
Техники Throttling и Debouncing
Техника Lazy Loading
Web Workers