Frontend Flashcards

1
Q

React Reconciliation

A

Реакт проходится по всем рендер функциям и строит дерево элементов. Если это последующий рендер, то строится следующее дерево, которое сравнивается с текущим. При сравнении, если элемент поменялся на другой, то реакт не смотрит дальше и пересоздает дерево на этом месте. Компоненты делают unmount. Реакт на основании разницы деревьев строит список операций, что удалить, добавить или обновить и совершает их в дом.

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

JSX

A

Это синтаксис элементов реакта. Он транспайлится в JS, а потом рендерится в DOM. Под капотом используется React.createElement.

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

SSR

A

Позволяет отрендерить страницу на стороне сервера, что помогает поисковикам проще индексировать страницу. После загрузки страницы в браузере, запускается JS и страница дальше работает как SPA. Этот процесс называется hydration.

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

Provider & Context

A

Бывает необходимо иметь доступ к данным во всем дереве компонентов (стор в редаксе). Это можно сделать с помощью context в реакте. Для этого мы создаем провайдер, который добавляет нужные данные в контекст.

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

В чем особливість Redux?

A

Redux — бібліотека для централізованого керування станом у додатках. Щоб внести зміни, потрібно тригернути екшн; редюсер — чиста функція, яка змінює частину стейту на основі екшена, а селектор дозволяє отримати потрібну частину даних зі стейту.

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

React Synthetic Events

A

Синтетические ивенты повторяют нативные ивенты браузера, но в тоже время имеют единых интерфейс для всех браузеров. Чтобы подписаться на capture фазу нужно добавить Capture к названию ивента.

Когда мы нажимает на кнопку, сначала срабатывает capture фаза, отрабатывают capture обработчики от родителей до потомков. Потом идет баблинг фаза и срабатывают обычные обработчики от потомков до парентов. Только focus не всплывает.

e.stopPropagation() останавливает дальшейший проход по хендлерам.

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

Web worker

A

Позволяет запускать долгий синхронный код в отдельном потоке. Главные поток и воркер могут обмениваться сообщениями, через onmessage и postmessage. Есть еще shared worker, с ним нужно работать через объект port (специальный объект для коммуникации). У него нет доступа к DOM.

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

Service worker

A

Service Worker дозволяє кешувати ресурси сайту і працювати офлайн. Функціонально він схожий на проксі-сервер, що дає можливість модифікувати запити та відповіді, підміняючи їх даними з кешу. З його допомогою можна створювати PWA, а також обробляти push notifications.

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

IndexDB

A

Асинхронная NoSQL база, поддерживает транзакции, индексы. Хранит пары ключ, значение.

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

HTML <script async … />

A

Позволяет начать грузить JS асинхронно не блокируя дальнейший рендеринг. Скрипт будет запущен, как только будет загружен, даже до полной загрузки страницы. Порядок запуска не гарантирован.

Если его нет, то скрипт будет загружен и запущен в том месте где он указан и только потом продолжится рендеринг.

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

HTML <script defer … />

A

Позволяет начать грузить JS асинхронно не блокируя дальнейший рендеринг.Гарантирует порядок запуска скриптов. Запускает скрипты когда уже вся страница отрендерилась.

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

What is the difference between authentification and authorization?

A

Authentication - the process of provinguser’s identity to the system or simply login.

Authorization - the process of providing permissions toresources inside the system.

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

Симметричное и ассиметричное шифрование

A

Симметричное - можно зашифровать и расшифровать 1 ключем.

Ассиметричное - публичным ключем можно зашифровать, приватным ключем можно расшифровать.

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

HTTPS

A
  1. Браузер и сервер делают handshake, если сертификат валидный, генерирует сеансовый ключ, шифрует его публичным ключем и отправляет серверу.
  2. Безопасно переданный сеансовый ключ используется браузером для шифрования и сервером для расшифровки. Это быстрее, чем использовать приватный/публичный ключи.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

JWT

A

Имеет структуру header.payload.signature. В хедере хранится алгоритм и тип. В пейлоде публичные данные о пользователе. Подпись нужна для проверки валидности. Все данные закодированны с помощью base64url и их может прочитать кто угодно.

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

Какие уязвимости может иметь веб приложение?

A
  • Лучше избегать регулярок в запросе, так как можно написать регулярку, которая положит приложение и базу.
  • Стоит защитить поля ввода от XSS атак, экранируя спецсимволы.
  • Нужно включить заголовки связанные с безопасностью. Они позволить защититься от общеизвестных атак.Для этого достаточно подключить пакет helmet.
  • Стоит включить httpOnly для cookies. Чтобы с браузера нельзя было их подменить.
  • Нужно проверить свои npm пакеты. Не делают ли они чего-то вредного.
  • Защита от DDoS. Ограничить колличество запросов по времени с одного ip.
  • Не стоит error stack возвращать вместе с ошибкой реквеста. Достаточно её просто логировать.
17
Q

Сookies

A

Это данные, отправленные сервером, которые хранятся на клиенте и вкладываются в каждый запрос. Обычно используется для идентификации пользователя на сервере. Полезно, когда он еще не зарегистрировался.

18
Q

Как работает WebSocket?

A

Он работает через TCP протокол. Данные могут передаваться в обе стороны. В самом начале происходит обмен через http, с помощью специальных заголовков, дальше все идет через протокол websocket. Сервер может решить, устанавливать связь или нет. При скейлинге бекенда нужен дополнительный брокер для работы.

19
Q

Чи може script в <head /> виконати дії з dom?

A
  • Може виконати якщо додати defer, тоді він виконається після повного завантаження DOM.
  • Можна додати колбек DOMContentLoaded, всередині нього можна вже працювати з DOM.
  • Перемістити в кінець body.
20
Q

В чому мінуси Context і навіщо Redux або стейт у вигляді атомів?

A

При використанні контексту - перерендер усіх компонентів, підписаних на контекст, навіть якщо вони використовують лише частину стану. Redux чи атомарні стейти (Jotai/Recoil) дозволяють локалізувати оновлення стану.