asd Flashcards

1
Q

HTML это

A

HTML – язык гипертекстовой разметки, чтобы размещать на странице элементы вроде текста, картинок, видео, аудио и тд.

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

Виды списков

A

маркированный (ul>li), нумерованный (ol>li), определений(dl>dt)

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

Атрибуты для чего

A

Атрибуты – дополняют функциональность либо меняют поведение элемента по умолчанию.

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

Блочная модель документа - правила по которым браузер определяет размер элемента на странице. Высота, ширина, отступы и тд

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

Семантика

A

Семантика – чтобы сайт определялся в поисковых системах. Использование правильных тегов для всех элементов для страницы. Важна для скринридеров. Если например тег b просто выделит текст, то strong даст понять скринридеру что нужно читать с другой интонацией

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

Валидность

A

Валидность – грамотное расположение тегов друг в друге. Наличие необходимых атрибутов.

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

SEO

A

SEO – использование правильных мета тегов для поиска страниц

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

DOM

A

DOM - объектная модель документа, это представление html-документа в виде дерева тегов. Позволяет манипулировать его элементами через js

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

Где можно хранить данные в браузере

A

В localStorage – после закрытия сохраняется
В сессиях – после закрытия не сохраняются
У куки – есть время жизни которое мы выставляем + с каждым запросом на сервер они отправляются и сервер может их перезаписовать.

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

Как работает браузер во время ввода url

A

Когда мы вводим какой-то url, нажимаем Enter у нас отправляется на сервер get запрос и на этот get запрос
1. Получаем html страницу,
2. Рендерится dom дерево,
3. Стили применяются,
4. Js слушатели подключаются и мы можем взаимодействовать с страницей

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

Атрибуты загрузки скриптов

A

Атрибуты загрузки скриптов – src, async, deffer. Они предназначены для подгрузки скриптов, различаются строгостью подгрузки (порядком)

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

Corse

A

Corse – браузерная штука которая позволяет запретить или разрешить доступ для разных источников. Когда запрашиваем ресурсы с одного источника у на html и запросы происходят в рамках одного источника url’a и браузер считает это безопасным, но когда мы пытаемся запросить из другого источника это считается с точки зрения браузера небезопасным, и через corse мы можем настраивать с каких источников мы разрешаем доступ, для другиг блокируем. Для кук, для хедеров, для методов какие то можем разрешить а какие то запретить. Делается это с помощью заполнение этих хедеров.

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

Как работают токены JWT

A

Отправляем логин и пароль на бэкенд, бэкенд генерит токены(refresh I access) отправляет ответом куками. И с каждым запросом мы подставляем этот токен в хедеры и бэкенд нас распознает.

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

Что содержит http запрос

A
  1. Метод запроса
  2. Путь запроса (url)
  3. Версию http протокола и header
  4. И опционально body
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Версии http протокола

A
  1. Текстовая
  2. Двоичный формат (благодаря ему обрабатываются запросы быстрее)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Какие существуют коды респонс ответа

A
  1. 100 – информационный
  2. 200 – успешный
  3. 300 – редирект (реализован с помощью хедеров)
  4. 400 – клиентская ошибка
  5. 500 – серверная ошибка
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

CSS

A

CSS — формальный язык описания внешнего вида документа (веб-страницы),

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

Разница между div и span

A

Разница заключается в том, что тег div является блочным элементом, а тег span – строковым. Блочный элемент – элемент, который является блоком. Каждый блок без использования дополнительных стилей будет отображаться с новой строки, так как в ширину они по умолчанию занимают 100% ширины экрана.

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

Css правило

A

селектор>свойство>значение

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

Crossbrowsing

A

Crossbrowsing – одинаковая работа и отображение элементов для всех браузеров.

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

Псевдо элементы, псевдо классы

A

:before :after – псевдо элементы для создание контента
:hover :active – псевдо классы

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

БЭМ

A

БЭМ (Блок, Элемент, Модификатор) — это методология разработки, для удобного, структурированного и повторно используемого CSS-кода.
Блок: Независимый компонент интерфейса
Пример: menu, button, header.
Элемент: Часть блока, которая не может существовать отдельно от него.
Пример: menu__item, button__icon.
Модификатор: Определяет внешний вид, состояние или поведение блока или элемента.
Пример: button–disabled, menu__item–active.

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

Специфичность селекторов

A

Специфичность селекторов – браузер определяет какой стиль будет применен к элементу. каждый селектор обладает своей специфичностью. Даже есть таблица, по тегу специфичность будет 1, по классу условно – 10, по id – 100. Inline стили – 1000, а important 10000. Чем выше эта специфичность тем приоритетней стиль и он может перезатереть предыдущий

25
Q

Responsive, Adaptive дизайн

A

Responsive дизайн – по мере того как изменяем ширину нашего браузера верстка будет подстраиваться под размер нашего браузера
Adaptive дизайн – заранее верстка выполнена так что у него есть допустим 3 состояния под который сайт будет подстраиваться в зависимости от устройства

26
Q

CSS position

A

static (по умолчанию) – остается в потоке документа и его нельзя смещать
relative – остается в потоке документа и можно смещать top, right, left, bottom
absolute – удаляется из нормального потока и позиционируется относительно ближайшего позиционированного предка (relative, absolute, fixed или sticky). Если таких предков нет, то относительно <html>.
fixed - Элемент удаляется из потока и позиционируется относительно окна просмотра вне зависимости от прокрутки страницы.
sticky - Элемент ведёт себя как relative, пока находится в видимой области контейнера, но становится fixed, как только достигает заданного положения (используя top, right, bottom, left).

27
Q

Чистая функция

A

Чистая функция – функция которая выполняет вычисление на основе своих аргументов, возвращает какое-то значение и не имеет пообочных эффектов. Побочные эффекты это манипуляции с дом деревом, запросы на сервер, мутации каких-то входящих аргументов, консоль лог тоже например является побочным эффектом

28
Q

Иммутабельность

A

Иммутабельность – когда мы вместо того чтобы мутировать какой-то объект создаем копию и работаем уже с ней. Из плюсов это то что код более предсказуемым становится, из-за того что мы не мутируем входящие данные. Из минусов для того чтобы скопировать какую-то область данных нужно больше памяти выделять.

29
Q

Javascript

A

Язык программирования, который добавляет интерактивность на веб сайт

30
Q

Область видимости и его виды

A

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

31
Q

Что такое синхронный асинхронный код

A

Синхронный код – выполняется сразу и сразу возвращает значение.
Асинхронный код может выполнится сразу но возвращает значение через время.
Фетч делает запрос, и если он ответил моментально то он не вернет сразу же значение, результатом будет промис, из них нельзя асинхронно получить значение

32
Q

Event loop

A

Event loop – браузерный механизм, бесконечный цикл в котором выполняются все обработчики событий, браузер распределяет эти обработчики по очередям. Выделяет очередь микрозадач, макрозадач.

Микрозадачам относятся промисы, queveMictotask, mutationObserver.
К макрозадачам Таймеры(setInterval, setTimeout) , События(клик, загрузка, изображения), Браузерные нюансы(рендер).

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

Синхронный код попадает в callstack и выбирается из callstack’a.
Асинхронный код попадает в webApi потом попадает в callbackque потом попадает в callstack после того как он очистится. Все это нужно для того чтобы приоритизировать задачи. Т.к. js у нас однопоточный когда мы делаем запрос на сервер чтобы у нас не блокировался интерфейс, event loop как раз для этого был изобретен

33
Q

Все типы данных

A

8 типов данных – number, string, biginit, symbol, Boolean, null, undefined, obj.
Number, string, Boolean, symbol, bigInt– примитивные
Остальное сложные

34
Q

prototype, __proto__, прототипная цепочка

A

Prototype – есть у каждого объекта, объект который выступает шаблоном от которых другие объекты наследуют свои свойства и методы. Есть только у функций конструкторов (классов, function declaration | expression) у остальных типов данных его нету

proto - сеттер геттер ссылается на прототип функции конструктора благодаря которому он был создан

Прототипная цепочка – есть какой-то класс, который наследует от другого класса методы и свойства которые лежат у него в прототипе, на конце этой цепочки лежит null, и если мы обращаемся к свойству какого-то объекта то оно будет искаться в этой цепочке прототипов. Сначала начнет поиск в текущем объекте и до конца цепочки пока не дойдет до null

35
Q

Событийная модель, всплытие

A

Событийная модель – dom event, есть фаза погружения, целевая фаза и фаза всплытия.
Сначала событие идет сверхну вниз, достигает цели, и начинает всплывать. Фаза погружения вообще по дефолту отключена, чтобы ее включить нужно в addEventListener объект с значением capture: true.
Остановить всплытие – event.stopPropagation
Отменить дефолнтое поведение – event.preventDefault - сначала происходит погружение

36
Q

Object

A

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

37
Q

Async, await это

A

Async, await – синтаксис благодаря которому мы можем делать функции асинхронными. Async перед функцией Await перед асинхронными операциями и код станет синхронным и будет выполняться в последовательном режиме

38
Q

Promise это

A

Promise – объект который предназначен для работы с асинхронным кодом хранит в себе какое-то состояние (resolve, rejected, pending)

39
Q

Promise.all, Promise.allSetteled, Promise.raise, Promise.any

A

Promise.all, Promise.allSetteled, Promise.raise, Promise.any,
Promise.all – позволяет выполнять промисы параллельно, принимает массив промисов и возвращает промис который ожидает выполнения всех этих промисов и потом возвращает массив с результатами обернутый в промис. Если один из промисов хотя бы упадет то он вернет ошибку, а promise.allSettled нет. А promise.allSettled вернет массив с объектами со статусами fulfilled либо rejected и причину ошибку reason.
Promise.raise – принимает массив промисов и возвращает промис возвращает промис самого быстрого из переданных и неважно с ошибкой или нет, а any ожидает первый успешно выполнившийся промис а остальные игнорирует

40
Q

call, apply, bind

A

Call, aply, bind – позволяют задавать выполнение функции в определенном контексте который мы присваиваем в эту функцию.
Bind – просто присваивает контекст этой функции
Call, Aplly – сразу вызывают
Call – параметры через запятую
Aplly - массив

41
Q

var, const, let

A

var – функционально или глобально область видимости и ее можно изменять в отличии от const
const и let это уже стандарт новый относительно, при этом они имеют блочную область видимости
и const нельзя менять за исключением массивов или объектов если это поля

42
Q

Замыкание

A

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

Используется в setStat’ax функциях которые делают setState. В кастомных хуках, они также замыкают какое-то лексическое окружение.

43
Q

Копирование объектов

A

Копирование объектов – глубокое и поверхноснтное. При глубоком копируются все значения вложенные и тд. При поверхстном скопируется только на первом уровне, а если есть глубокие то скопируется просто по ссылке.
Глубокое копирование можно реализовать встроенным методом structuredClone, либо написать функцию либо lodash использовать. JSON.parse JSON.stringify копирует глубоко но оно не все данные может копировать, date либо symbol, function превращаются в undefined

44
Q

Виды функций

A

f Expression – когда мы создаем переменную пишем = function и тд и тп
f Declaration – напрямую пишем function название этой функции и арг тело и тд
Самовызывающаяся функция – в скобки оборачиваем f – перимущество scope и мы можем сделать асинхронной использовать async await

45
Q

Хостинг

A

Хостинг – переменная или функция может всплывать и мы можем ее использовать раньше чем мы ее объявили. Считывание кода идет 2 раза.

46
Q

map, reduce, filter, forEach

A

Map, reduce, filter – методы массива с функционального программирования, все они возвращают какое-то новое значение
map - с массива одного вида в массив другого вида + callback применяется к каждому элементу массива и видоизменяет его,
filter - отфильтровывает массив и возвращает только те элементы callback для которых вернул true ,
reduce – возвращает результат вычислений (функция благодаря аккумулятору при каждой итерации позволяет сделать подсчет каких-то данных, что-то куда-то записать и все в таком духе)
forEach – ничего не возвращает просто перебор элементов

47
Q

yagni, dry, kiss

A

Yagni – you aren’t gonna need it
Dry – don’t repeat yourself
Kiss – keep it simple stupid

48
Q

React это

A

React – JS библиотека для создания пользовательских интерфейсов.
Используется для компонентного подхода, комопоненты – строительные блоки пользовательского интерфейса, которые могут быть переиспользованы.
Решает проблему манипуляций с реальным dom деревом за счет vDom, хранится он в виде объекта js и мы можем его изменять без проблем с производительностью и не затрагивать реально dom дерево пока это не понадобится.

49
Q

Юристический алгоритм

A

Юристический алгоритм – используется из-за упрощения сложности.
1. Если изменились корневые элементы уничтожается старое дерево и строится новое с нуля (поменялся span на div).
2. Нунжо использовать ключи чтобы реакт мог сопоставлять элементы при ререндере, для оптимизации.

50
Q

SPA почему используется

A

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

51
Q

Жизненные фазы классового компонента

A

Компонент обладает жизненным циклом – фаза монтирования, обновления, демонтирования. У классового component update, didmount, onmount.

52
Q

Компонент высшего порядка (HOC) это

A

Компонент высшего порядка – компонент который возвращает другой компонент. Нужны для переиспользования (хочешь вернуть логику компонента но при этом его дополняешь)

53
Q

Разница между контролируемым и неконтролируемым компонентом

A

Разница между контролируемым и неконтролируемым компонентом ●Контролируемый компонент обладает своим стейтом, управляемый React
● Неконтролируемые компоненты обладают внутренним стейтом (как пример значение тега textarea)

54
Q

Расскажи все про redux

A

Redux – библиотека управления состоянием, глобальное хранилище. У нас есть глобальный store и корневой reducer который мы разбиваем на n-нное количество редюсеров.
Reducer – функция которая принимает в себя state и action
Action – объект который должен как-то определяться обычно с помощью типа и в зависимости от типа мы видоизменяем state
А чтобы произошло изменение нам нужно вызвать dispatch – функция которая как раз берет action и прокидывает в нужный reducer, а reducer как я уже сказал место где хранится логика по определению типа action’a и изменению stat’a
Store – объект который содержит в себе state, dispatch, (короче все что есть в redux’e). И в нем происходят изменения за счет action’ov редюсеров и тд
Redux – синхронный, но если нужно выполнять какие-то асинхронные action’ы. Можно подключить middleware, redux thunk, redux toolkit

55
Q

Преимущества использования бандла при загрузке компонентов:

A

• Ускоряет первоначальную загрузку страницы — пользователю не нужно ждать загрузки всех компонентов сразу, только тех, которые нужны сейчас.
• Экономит ресурсы устройства — приложение загружает меньше данных сразу, что оптимально для мобильных устройств и слабых сетей.
• Улучшает производительность — благодаря отложенной загрузке компоненты подгружаются плавно по мере взаимодействия пользователя с приложением.

56
Q

Преимущества использования React.lazy с бандлом

A

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

57
Q

React хуки

A

Хуки – функции для функциональных компонентов.
UseEffect – управление жизненным циклом компонента
useLayourEffect – выполняется асинхронно, может заблокировать рендер, выполняется до отрисовки браузера, но уже после того как они появились в dom деревере но еще не были отрисованы, а useEffect после. Есть массив зависимостей, если не указать то будет вызываться при каждом рендере, если передать пустой массив то будет запускаться при монтировании, если массив с элементами то будет запускаться при изменении этих элементов
UseState – управление состоянем
UseCallback, UseMemo – меморизировать компоненты во избежании лишних перерисовок
useCallback – стоит использовать если мы его передаем в компонент обернутый в react.memo, либо в зависимости другим хукам чтобы на каждый ререндер он не вызывался потому что если не обернуть в useCallback, то на каждый рендер будет создаваться новая ссылка на функцию и будет вызываться этот эффект.
React.memo – оборачивает компонент и проверяет если старые пропсы равны новым но он не будет делать перерисовку. Выравнивает поверхностным сравнением. Можем поменять передавая callback вторым аргументом для сравнения пропсов

UseRef – с помощью его получаем доступ к Dom элементу, и избежание перерисовки при использовании current (обычно исопльзуется с setInterval, setTimeout) и тд
UseMemo – помогает избежать ненужных вычислений, принимает callback и меморизирует возвращаемые из этого callback’a значения.
useId - используется для генерации уникальных идентификаторов (ID) в компонентах. Это важно для случаев, когда нужно обеспечить уникальность идентификаторов в рамках страницы, чтобы избежать конфликтов в HTML-разметке.
useReducer: Хук принимает редюсер и начальное состояние, возвращая текущее состояние и функцию отправки действий (dispatch).

useContext – глобальное хранилище, можем туда что-то закинуть что-то вытащить оттуда (ТЕМУ САЙТА)
useDebugValue - помогает разработчикам следить за состоянием кастомных хуков, предоставляя дополнительную информацию о том, что происходит внутри этих хуков. Это особенно полезно, когда у вас есть сложные кастомные хуки, и вы хотите видеть в React Dev Tools, как их состояние или возвращаемые значения меняются в процессе работы приложения.
1. Если мы передаем эту функцию обернутую в коллбэк через пропсы компоненту который обернут в React.memo.
2. Если мы передаем эту функцию в массив зависимостей

58
Q

Меморизация

A

Меморизация – сравнение ссылок которые мы сравниваем чтобы не перещитывать какие то значения если они не меняются

59
Q

Для чего VirtualDom

A

У нас есть обычное dom дерево в браузере
Если бы мы писали просто на js то операции по обращению элементов к dom дереву очень тяжеловесны и тогда бы страница очень медленно работала
у реакта есть vDom это грубо говоря копия dom дерева из браузера
И реакт смотрит когда в каком то компоненте изменилось состояние он сравнивает vDom ДО и vDom ПОСЛЕ и перерисовывает только отдельные элементы,