Skip to content

Latest commit

 

History

History
157 lines (110 loc) · 6.92 KB

File metadata and controls

157 lines (110 loc) · 6.92 KB

JavaScript — продвинутый уровень

🏆 Правильных ответов: 14 из 15.

Q1. Какой из массивов НЕ будет выведен после выполнения этого кода?

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

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

  • LocalStorage

Q3. Каким будет результат выполнения следующего выражения в JavaScript?

"10" + 2 * "5"

  • 1010

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

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

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

  • Функция-конструктор (constructor function)

Q6. Что будет выведено в консоль при выполнении данного кода?

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

Q7. В какой последовательности выполняются операции в следующем коде, который включает асинхронные операции и взаимодействие с сетью? Учтите, что обработка запроса не будет закончена до того, как выполнится весь синхронный код программы.

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, Данные получены: [данные].

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

  • Map гарантирует, что элементы будут храниться в порядке добавления.

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

  • const newObj = {...obj}, newArr = [...arr]

Q10. У вас есть следующий код. Что будет выведено в консоль при его вызове?

class Animal {
   constructor(name) {
      this.name = name;
   }
   speak() {
      console.log(`${this.name} makes a noise.`);     
   }   
}

class Dog extends Animal {
   speak() {
      super.speak();
      console.log(`${this.name} barks.`);
   }
}

let dog = new Dog("Rex");
dog.speak();
  • "Rex makes a noise." и затем "Rex barks."

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

  • Реализовать виртуальный скроллинг для отображения товаров в текущем viewport (видимой области) браузера

Q12. Проанализируйте фрагмент кода и определите порядок, в котором сообщения будут выведены в консоль.

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, 7, 2, 3, 5

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

  • Для автоматического определения и удаления неиспользуемого кода во время сборки

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

  • Используя комбинацию методов document.createElement() и document.appendChild()

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

  • Server-Side Rendering (SSR)