Front-end Flashcards

1
Q

Які є фази евентів?

A
  1. Фаза захоплення (Capturing phase): подія спускається до елемента.
  2. Фаза цільового об’єкта (Target phase): подія досягла цільового елемента.
  3. Фаза спливання (Bubbling phase): подія “спливає” від елемента вгору.
    - Що таке DOM?
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Що таке DOM?

A

Document Object Model - придставляє html елементи як об’єкти

Browser Object Model - придставляє додаткові об’єкти браузера

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

Порівняйте атрибути підключення скрипту async і defer в HTML-документі.

A
  • async: Виконується асинхроно, як тільки завантажиться.
  • defer: Завантажує асинхронно, але виконується після завантаження і парсингу HTML.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Яка різниця між властивостями HTML-елементів innerHTML і innerText?

A

В innerHTML можна вставити теги

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

Як зупинити спливання (bubbling) події? Як зупинити дефолтну обробку події?

A

stopPropagation, preventDefault

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

Опишіть процес спливання (bubbling) подій у DOM.

A

Події обробляються від найглибшого елемента до кореня документа.

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

Що таке LocalStorage і SessionStorage? Який максимальний розмір

A

Зберігає дані в форматі key/value. Local storage зберігає дані після закриття вкладки, session - ні. 5mb

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

Як отримати висоту блоку? Його положення щодо меж документа?

A

Висота: element.clientHeight або element.offsetHeight
Положення: element.getBoundingClientRect()

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

Що таке webpack?

A

Інструмент для збірки (bundle) JavaScript, CSS, та зображення.

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

Чим відрізняється dev-збірка від prod?

A

Prod - має мінімізований та оптимізований код

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

Що таке блокова модель CSS?

A

Визначає, як padding, margin і border впливають на кінцевий розмір

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

Які способи центрування блокового контенту по горизонталі та вертикалі знаєте?

A

Абсолютне центрування, margin, flex, grid

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

Як зробити додаток responsive?

A

Використовувати media queries, flex box, grid, для розмірів можна використовувани відсотки

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

Які є принципи семантичної верстки?

A

Використовувати теги за призначенням

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

Навіщо потрібні префікси для деяких CSS-властивостей (-webkit-, -moz- тощо)?

A

Забезпечити сумісність з різними браузерами

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

Як спростити написання кросбраузерних стилів?

A

Використовувати autoprfixer, скидувати дефалт стилі

16
Q

Що таке CSS-препроцесори? З якими працювали? Що нового вони приносять у стандартний CSS?

A

Інструмен, який дозволяє використовувати змінні, міксини та інші функції, що полегшують написання, підтримку коду, повторно використування

17
Q

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

A

Класові компоненти наслідують від базового класу React.Component. В конструкторі призначаєтсья state та передаються пропси. Класи мають доступ до методів жит циклу (componentDidMount, componentDidUpdate, і componentWillUnmount)

18
Q

Що таке хуки? Переліч хучки і для чого вони слугують.

A

Функції які дозволяють ізолювати частину коду яка перевикористовується в функціональних компонентах.

Хуки:
useState - використовується для менеджменту стейту. Асинхроний. Викликає ререндерінг компонента. Немутабельний, треба використовувати state updater ф-цію.
useEffect і useLayoutEffect - використовуються для виконання стороніх подій, перший виконується після рендерінгу, другий до рендерінгу. перший асінхроний, другий сінхроний тобто блокує рендерінг, що впливає на швидкодійність. useLayoutEffect може використовуватися для розрахунку розміра елемента, чи для анімацій
useContext - використовується для отримування даних з контексту
useRef - з берігає значення або посилання на DOM елемент, який викликається з ref.current. Зберігає інформацію між рендерами, не викликає ререндерінгу.
useReducer - використовується для обробки більш складних стейтів. Аналог Redux
useMemo - використовується для оптимізації обчислень. Мемоізує результат, і повертає при наступних рендерах, якщо агументи не змінились.
useCallback - використовується для мемоізації функцій. Найчастіше використовується коли треба передвати ф-ції в props, або в “useEffect”, чи “useMemo”

19
Q

Чи доводилося писати кастомні хуки та з якою метою?

A

const useDebounce = (value, delay) => {
const [debouncedValue, setDebouncedValue] = useState(value);

useEffect(() => {
const timeoutId = setTimeout(() => {
setDebouncedValue(value);
}, delay);

return () => {
  clearTimeout(timeoutId);
};   }, [value, delay]);

return debouncedValue;
};

import { useEffect } from ‘react’;

const useClickOutside = (ref: React.RefObject<HTMLElement>, callback: () => void) => {
useEffect(() => {
const handler = (event: MouseEvent | TouchEvent) => {
if (ref.current && !ref.current.contains(event.target as Node)) {
callback();
}
};</HTMLElement>

    document.addEventListener('mousedown', handler);
    document.addEventListener('touchstart', handler);

    return () => {
        // Cleanup the event listener
        document.removeEventListener('mousedown', handler);
        document.removeEventListener('touchstart', handler);
    };
}, [ref, callback]); };

export default useClickOutside;

import { useState } from ‘react’;

const useLocalStorage = (key, initialValue) => {
const [storedValue, setStoredValue] = useState(() => {
const item = window.localStorage.getItem(key);
return item ? JSON.parse(item) : initialValue;
});

const setValue = (value) => {
setStoredValue(value);
window.localStorage.setItem(key, JSON.stringify(value));
};

return [storedValue, setValue];

20
Q

Чи ознайомлені з фрагментами та порталами? Навіщо вони потрібні?

A

Фрагменти обгортають елементи не створюючи зайвого DOM-контейнера <></>
Портали дозволяють переміщати дочірні елементи за межі їхнього батьківського компонента та монтувати їх в інший DOM-контейнер поза ієрархією компонентів.

21
Q

Які ви знаєте методи життєвого циклу компонента?

A
  1. componentDidMount():Викликається після того, як компонент вперше відображається на екрані. Це часто використовується для виконання запитів до сервера або для підписки на події.
  2. componentDidUpdate(prevProps, prevState):Викликається після оновлення компонента, якщо він отримує нові властивості (props) або стан. Використовується для виконання дій після оновлення компонента.
  3. componentWillUnmount():Викликається перед тим, як компонент буде видалений з DOM. Використовується для відписки від подій або очищення ресурсів.
  4. shouldComponentUpdate(nextProps, nextState):Визначає, чи потрібно виконувати оновлення компонента. Повертає true, якщо оновлення потрібне, і false в іншому випадку. Це може покращити продуктивність, уникаючи непотрібних оновлень.

З хуками, що вводяться у React 16.3, можна використовувати такі методи життєвого циклу:

  1. useEffect(() => {}, []):
    • Хук, еквівалентний componentDidMount та componentDidUpdate в класових компонентах. Викликається після першого рендерингу та після кожного оновлення.
  2. useEffect(() => { return () => {} }, []):
    • Хук, еквівалентний componentWillUnmount в класових компонентах. Викликається перед тим, як компонент буде видалений.
22
Q

Чи був досвід роботи з контекстом? Коли його варто використовувати?

A

Слугує для передачі даних глибоко вниз по дереву компонентів.
Використовується для передачі тем, локалізації, глобального стану

23
Q

У чому бачите переваги бібліотеки React?

A
  • Віртуальний дом
  • Компонентна архітектура
  • SPA додатки
  • Популярність, та доступу до інформації
  • Зрозумілий JSX синтаксис
  • Може використовувати також для моб додатків
24
Q

Чому бібліотека React швидка? Що таке Virtual DOM і Shadow DOM?

A

Virual DOM - власний DOM реакту. Замість змінювання реального DOM, реакт. React спочатку вносить зміни в віртуальний DOM. Потім порівнює віртуальний DOM з реальним DOM і визначає оптимальний спосіб оновлення. Це дозволяє зменшити кількість операцій.

25
Q

Навіщо в списках ключі? Чи можна робити ключами індекси елементів масиву? Коли це виправдано?

A

Ключі допомагають React визначити, які елементи додали, видалили або змінили своє місце у списку. Це дозволяє React оптимізувати оновлення DOM і уникати зайвого перерендерингу елементів.

Бажано застосовувати унікальні ключі для стабільность якщл це можливо. Але індексні ключі можна застосовувати в випадках, коли знаємо що порядок елементів не буде змінюватися

26
Q

В чому основна ідея Redux?

A

Глобальний store стану до якого можна отримати доступ з будь якого компоненту

27
Q

React - це бібліотека чи фреймворк? Яка різниця між цими двома поняттями.

A

Реакт - бібліотека

Білбліотека - набір ф-цій та інструментів без правил

Фреймвор - набір правил, стандартів, та інструментів

28
Q

Що таке codemod?

A

Модифікація коду - автоматичне оновлення програми за допомогою скриптів. Наприклад оновлення коду до нового стандарту

29
Q

Чи доводилося налаштовувати проєкт React з нуля? За допомогою яких інструментів ви це робили?

A

Використовув create-react-app та vite