JS CORE Flashcards

1
Q

Які існують типи даних у JS?

A

Примітивні: string, number, symbol, boolean, null, undefined, bigint

Непримітивний: object

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Як перевірити, чи об’єкт є масивом?

A

Array.isArray()

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Як перевірити, чи число є скінченним?

A

isFinite(number)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Як перевірити, що змінна рівна NaN?

A

isNaN(variable)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Чим відрізняється поведінка isNaN() та Number.isNaN()?

A

Перше конвертує, друге ні

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Порівняйте ключові слова var, let, const.

A

Порівняйте ключові слова var, let, const.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Що таке область видимості?

A

Область яка говорить про те де можна використати змінну

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Що таке деструктуризація?

A

Процес розгортання масиву, або об’єкту з можливістю присвоєння до змінних

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Для чого призначені методи setTimeout і setInterval?

A

Викликає ф-цію після затримки. setTimeout - викликає один раз, і setInterval - викликає інтервально

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Порівняйте підходи роботи з асинхронним кодом: callbacks vs promises vs async/await.

A

Callback - функція, передана як аргумент іншій функції, для виконання пізніше.

Promise - об’єкт, який представляє результат асинхронної операції, яка може бути виконана або відхилена.

Async/await - синтаксис для роботи з promises, що робить асинхронний код схожим на синхронний.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Назвіть методи масивів, які пам’ятаєте, і скажіть, для чого вони потрібні.

A

push, pop, shift, unshift, slice, forEach

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Які перебираючі методи масиву знаєте? У чому їхня відмінність?

A

map, filter, reduce, some, any
Map повертає новий масив значень
Filter порівнює значення і якщо тру повертає новий масив
Reduce повертає акамульоване значення
Some перевіряє чи є значення

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Опишіть призначення і принципи роботи з колекціями Map і Set.

A

Map – це колекція ключ/значення, як і Object. Але основна відмінність полягає в тому, що Map дозволяє мати ключі будь-якого типу.

Set - це list унікальних значчень

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Що означає глибока (deep) та поверхнева (shallow) копія об’єкта? Як зробити кожну з них?

A

Deep cloning - cтворює копію об’єкта та всіх вкладених об’єктів. stringify and then parse

Shallow cloning - створює копію об’єкта, але не копіює його вкладені об’єкти. (Object.assign({}, obj)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Який буде результат виконання коду?
let firstObj = { name: ‘Hello’ };
let secondObj = firstObj;
firstObj = { name: ‘Bye’ };
console.log(secondObj.name);

A

Hello

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Що таке temporal dead zone?

A

Зона між початком block scope до ініціалізації змінної

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Як працює boxing / unboxing у JavaScript?

A

Процес обгортання примітивного значення в об’єкт. Щоб unbox треба використовувати valueOf

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

У чому різниця між оператором in і методом hasOwnProperty?

A

in: Перевіряє, чи є властивість в об’єкті або його прототипі.
hasOwnProperty: Перевіряє, чи є властивість без урахування прототипу.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Опишіть, за допомогою чого в JS реалізуються такі ООП-парадигми, як інкапсуляція, поліморфізм, абстракція?

A

Наслідування: за допомогою прототипного наслідування. Кожний об’єкт має прототип, який може бути іншим об’єктом чи null
Інкапсуляція: за допомогою замикань та областей видимості
Поліморфізм: створення різних наслідуючих класів з одним і тим самим методом, але різними визначеннями цього методу
Абстракція: за допомогою класів (функцій контруктор)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Що таке прототип? Як працює прототипне наслідування в JS?

A

Усі об’єкти JavaScript успадковують властивості та методи від прототипу
Кожен об’єкт має __proto__. Лише функції та класи мають prototype
__proto__ відноситься до prototype об’єкта (функції/класу), з якого його було створено

21
Q

Яка різниця між композицією та наслідуванням?

A

Композиція досягається вкладенням одного обєкту класу в інший. Наслідування створює новий клас на основі іншого

22
Q

Чому не варто використовувати конструктори типу new String?

A

Створюэться об’єкт, а не примітив, тобто наприклад при поріняні буде видавати false

23
Q

Принципи ооп

A

Інкапсуляція - можливість ховати непотрібну інформацію і імплементацію в контрольований спосіб. Розділяючи внутрішній інтерфейс від зовнішнього
Поліморфізм - використання методів з однаковою назвою, перезавантаження, інтерфейси
Абстракція - визначення спільного інтерфейсу, ігноруючи конкретні деталі реалізації
Наслідування - створення нового класу на основі іншого класу. Новий клас успадковує методи та властивості базового класу, та може розширювати його.

24
Q

Чому typeof null повертає object?

A

Істориччна помилка. Мітка типу даних вказувала на 000 - object

25
Q

Що таке приведення (перетворення) типів у JS?

A

Зміна типу з одного на інший

Явне за допомогою Number() String() …
Неявне в залежності від контексту використання 5+”10”

26
Q

Що таке Garbage Collector?

A

Механіз, який відповідає за автоматичне видалення об’єктів, які більше не використовуються або не доступні.
Працює за механізмом Mark and Sweep
Маркує об’єкти які можна досягти, і видаляє недосяжні

27
Q

Опишіть призначення і принципи роботи з колекціями WeakMap і WeakSet? Чим вони відрізняються від колекцій Map і Set відповідно?

A

Weak map - ключі мають бути об’єктами, Weak set - значення мають бути об’єктами

  • В Map і Setелементи утримуються сильними посиланнями, і вони не видаляються автоматично з пам’яті.
  • В WeakMap і WeakSet об’єкти використовуються через слабкі посилання, і вони можуть бути видалені з пам’яті, якщо немає інших сильних посилань на них.
28
Q

Чим відрізняється Observable від Promise?

A

Проміс можуть обслуговувати тільки одни асинхроний івент, обзервебел з багатьма

29
Q

Розкажіть про послідовне і паралельне виконання асинхронних функцій. У чому різниця між Promise.all() і Promise.allSettled()?

A

Promise.all() - паралельно виконує проміси, повертає результат всіх виконаних промісів, або перше відхилиння

Promise.allSettled() - паралельно виконує проміси, повертає результат всіх виконаних або не виконаних промісів

30
Q

Що таке дескриптори властивостей об’єктів? Розкажіть про їхнє практичне застосування.

A

Це об’єкти, які містять інформацію про характеристики конкретної властивості. Дескриптори:

  • value
  • writable
  • configurable- якщо тру то модна видаляти, або змінювати
  • enumerable
  • get
  • set
31
Q

Назвіть кілька способів створення незмінного об’єкта в JavaScript.

A

Object.freeze(), або скопьювати в нову змінну (…, Object.assign, stringify), у всіх властивостей встановити дескриптор на рідонлі

32
Q

Навіщо потрібен конструктор Proxy? Наведіть приклад використання.

A

Об’єкт обгордка який перехоплює хендлери (get, set, apply, construct), і може змінювати їх

33
Q

Розкажіть про генератори та ітератори.

A

Генератори - це функції в JavaScript, які можуть бути призупинені та відновлені під час виклику.
function* для стоврення генератора. yield для повернення значення
Ітератор - це об’єкти, які мають метод next(), який повертає об’єкт з властивістю value

34
Q

Що таке Symbol?

A

Symbol в JavaScript - це примітивний тип даних, що представляє собою унікальний ідентифікатор.

35
Q

Що таке hoisting?

A

Всі оголошення переміщуються на гору поточної області видимості.

  • var піднімається і стає undefined, якщо не була ініціалізована
  • let i const піднімаються і залишаються в стані не ініціалізованому
  • функції піднімаються і можуть бути викликані будь де
  • анонімні і стрілочні не піднімаються
36
Q

Що таке scope (Область видимості) і які бувають види?

A

Блочна область видимості - змінні let і const всередині фігурних скобок { }. Var не має блочного scope
Область видимості функції - змінні всередині функції
Глобальна область видимості - змінні поза функції

37
Q

Контекст і this

A

this keyword refers to an object. Which object depends on how this is being invoked

In an object method, this refers to the object.
Alone, this refers to the global object.
In a function, this refers to the global object.
In a function, in strict mode, this is undefined.
In an event, this refers to the element that received the event.
Methods like call(), apply(), and bind() can refer this to any object.

38
Q

Різниця між function declaration and arrow function

A
  1. Синтаксис
  2. function this - визначаєтся в момент виклику
    arrow this - не має свого контексту, тому успадковують контекст в якому були створені
  3. Arrow не має об’єкту arguments
  4. Arrоw не можна бути використана як конструктор
  5. Not hoisted не можуть бути визвані до того як вони задекларовані
39
Q

Що таке closure? І для чого вона існує?

A

Замикання (Closure) - це функція, яка має доступ до області видимості батьківської функції, навіть після закриття батьківської функції. Це можливість JavaScript створювати приватні змінні.

Для використання замикання слід оголосити функцію всередині іншої функції і повернути її. Для викриття функції слід повернути її або передати її в іншу функцію.

Лексичне середовище (Lexical Environment) - це об’єкт, який зберігає інформацію про локальну область видимості та область видимості батьківської функції.

40
Q

Різниця між Contructor and Function Factory

A

Функції-фабрики та конструктори - це функції, які допомагають створювати об’єкти.

Відмінність полягає в тому, що конструктор використовується з ключовим словом new, яке додає this всередину функції і повертатає об’єкти. Фабрична функція, з іншого боку, це просто функція, яка повертає об’єкти.

Крім того, конструктори дозволяють створювати приватні функції за допомогою об’єкта прототипу.

41
Q

Яка різниця між декларацією функції (function declaration) та функціональним виразом (function expression)?

A

Різниція в синтаксисі, а також в тому що function declaration is hoisted, function expression - no. So first can be called even before declaration, another one not

42
Q

Що таке рекурсія?

A

Це коли ф-ція викликає саму себе поки не досягне базового випадку якій зупиняє її

43
Q

Що означає ключове слово this?

A

Вказує на обє’кт, до якого відноситься поточний код

44
Q

Що таке втрата контексту, коли відбувається і як їй запобігти?

A

this втрачає зв’зок з обє’ктом.
Це може статися при використанні стрілкових ф-цій, виклик ф-ції з методу
Уникнути можна стрілкові bind, apply, call

45
Q

Методи функцій bind / call / apply — навіщо і в чому різниця?

A

Для надання контектсу this
bind - прив’язує контекст
apply - прив’язує контекст і викликає ф-цію. Передається масив аргументів
call - прив’язує контекст і викликає ф-цію. Передаються аргументи через кому

46
Q

Поясніть, що означає currying. Наведіть приклад використання на практиці.

A

Функція з багатьма аргументами перетворюється на послідовність функцій, кожна з яких має тільки один аргумент.

47
Q

Що таке мемоізація

A

Техніка кешування результатів виклику ф-цій. Може бути використана для запам’ятання складних операцій

48
Q

Що таке чейнінг

A

Можливість послідовного виклику ф-цій на тому самому об’єкті. Досягається шляхом поверненя цього ж об’єкту знову