Frontend_new Flashcards
Какие есть структуры данных(7)
1.Массивы (Arrays)
2.Объекты (Objects)
3.Строки (Strings)
4.Списки (Linked Lists): Коллекции, состоящие из узлов, каждый из которых содержит значение и ссылку на следующий узел. Списки могут быть односвязными (ссылка только на следующий элемент) или двусвязными (ссылка на следующий и предыдущий элементы).
5.Стеки (Stacks):Last-In-First-Out, LIFO).
6.Очереди (Queues): (First-In-First-Out, FIFO). Элементы добавляются в конец очереди, а извлекаются из начала.
7.Хеш-таблицы (Hash Tables): Структуры данных, которые используют хеш-функции для быстрого поиска и вставки данных. Они обеспечивают доступ к данным через ключ.
Различия между авторизацией и аутентификацией
Аутентификация - это процесс проверки подлинности учетных данных пользователя, таких как логин и пароль.
Цель аутентификации - убедиться, что пользователь является тем, кем он утверждает быть.
Авторизация - это процесс определения прав доступа пользователя к определенным ресурсам или функциям в системе.
Цель авторизации - определить, какие действия пользователь может совершать после успешной аутентификации.
В чем раличия REST vs SOAP(4)
1.Архитектура:
REST использует стандартные HTTP методы (GET, POST, PUT, DELETE)
SOAP,является протоколом на основе XML и может работать поверх различных транспортных протоколов, таких как HTTP, SMTP, TCP и др.
2.Формат сообщений:
В REST данные часто передаются в формате JSON. Он более легковесен и читаем
SOAP использует XML. Он более многословен и тяжеловесен по сравнению с JSON.
3.Удобство использования:
REST более прост в использовании благодаря своей простой архитектуре и поддержке стандартных HTTP методов.
SOAP может быть более сложным в использовании из-за его большей сложности и тяжеловесности.
4.Поддержка:
REST имеет широкую поддержку и является предпочтительным выбором для большинства современных веб-сервисов.
SOAP также продолжает использоваться в некоторых корпоративных средах, где требуется высокий уровень надежности и безопасности.
Итоги:
REST обычно предпочтительнее для создания веб-сервисов из-за своей простоты, легковесности и широкой поддержки. SOAP может быть выбран в случаях, когда необходима высокая надежность и сложные функциональные возможности.
Различия между 301 и 302 статусами http-запросов
Основное различие между 301 и 302 состоит в том, что 301 указывает на постоянное перемещение ресурса, в то время как 302 указывает на временное перемещение.
Различия между http 2.0 и http 1.1(3)
1.Мультиплексирование
HTTP/2.0 поддерживает мультиплексирование, что позволяет отправлять несколько запросов и ответов по одному и тому же соединению в любое время, без ожидания завершения предыдущих запросов.
HTTP/1.1 отправляет запросы и ответы последовательно, что может привести к блокировке ожидания завершения предыдущих запросов
2.Сжатие заголовков
HTTP/2.0 поддерживает сжатие заголовков, что уменьшает объем передаваемых данных и улучшает производительность.
3.Server Push (серверное уведомление):
HTTP/2.0 позволяет серверу отправлять дополнительные ресурсы клиенту без запроса (Server Push), уменьшая задержку при загрузке веб-страницы.
Различие между PUT и PATCH запросами
PUT - обновления целого ресурса на сервере.
PATCH - частичное обновление
Многопоточность, многопроцессорность
Многопоточность - параллельное выполнению потоков в рамках одного процесса. Многопроцессорность - параллельное выполнение нескольких процессов.
Мультизадачность
это способность операционной системы одновременно выполнять несколько задач. Это может включать выполнение нескольких приложений или процессов одновременно или переключение между несколькими задачами с высокой скоростью так, чтобы пользователь воспринимал, что все задачи выполняются параллельно.
Что такое B-tree
структура данных в виде дерева, используемая для организации и хранения упорядоченного множества ключей. Она является одной из самых эффективных структур данных для поиска, вставки и удаления элементов в отсортированном наборе данных.
В JavaScript B-дерево может быть реализовано в виде пользовательской класса или модуля, который предоставляет методы для вставки, удаления и поиска элементов в дереве.
Плюсы и минусы монолита и микросервисов
Монолит:
Плюсы:
Простота развертывания.
Проще масштабирование.
Проще тестирование.
Минусы:
Сложность поддержки.
Ограниченная гибкость развертывания.
Неэффективное использование ресурсов.
Микросервисы:
Плюсы:
Гибкость и масштабируемость.
Легкость поддержки.
Технологическая гетерогенность.
Минусы:
Сложность управления.
Сетевые задержки.
Сложность тестирования.
Отличия распределенного монолита от микросервисов
Распределенный монолит:
Одно целое приложение, развернутое на нескольких узлах.
Обычно масштабируется вертикально.
Единая кодовая база и база данных для всего приложения.
Более прост в управлении и развертывании по сравнению с микросервисами.
Микросервисы:
Приложение разбито на отдельные сервисы, каждый из которых может быть развернут и масштабирован независимо.
Горизонтальное масштабирование путем добавления или уменьшения экземпляров сервисов.
Каждый сервис имеет свою собственную базу данных и кодовую базу.
Предоставляет большую гибкость и масштабируемость за счет архитектурной раздробленности.
Что бывает, когда вводишь google.com в браузере
Поиск DNS-записи для google.com.( сначала ищется в локальном хранилище (localStorage) браузера, затем в куки (cookies). если отсутсвует браузер отправляет запрос к системе DNS)
Получение IP-адреса сервера, обслуживающего google.com.
Установка TCP-соединения с сервером по полученному IP-адресу и порту 80 (стандартный порт HTTP).
Отправка HTTP-запроса GET для google.com через установленное TCP-соединение.
Получение HTTP-ответа от сервера Google, содержащего HTML-код главной страницы google.com.
Браузер интерпретирует HTML-код и отображает веб-страницу на экране пользователя.
Что такое promise
Promise (обещание) - это объект в JavaScript, предназначенный для работы с асинхронными операциями. Он представляет собой результат выполнения или ошибки асинхронной операции и обеспечивает удобный способ обработки этих результатов.
Promise позволяет элегантно обрабатывать результаты асинхронных операций, делая код более читаемым и управляемым. Кроме того, он предоставляет механизм для последовательного выполнения цепочек асинхронных операций через методы then и catch.
Пример использования Promise:
const myPromise = new Promise((resolve, reject) => {}
Какие состояния есть у promise
Promise имеет три состояния:
Pending (ожидание): Исходное состояние, когда promise создан, но операция все еще выполняется.
Fulfilled (выполнено): Состояние, в котором операция успешно завершена. В этом случае в promise содержится результат выполнения операции.
Rejected (отклонено): Состояние, в котором операция завершается с ошибкой. В этом случае в promise содержится информация об ошибке.
Что такое virtual dom
Virtual DOM (виртуальное DOM) - это концепция в React, которая помогает оптимизировать процесс обновления пользовательского интерфейса, делая его более эффективным.
Виртуальный DOM представляет собой абстракцию поверх реального DOM. Это легковесное представление текущего состояния интерфейса в виде дерева объектов JavaScript. Когда состояние приложения меняется, React (например) создает новое виртуальное дерево, представляющее обновленное состояние.
React сравнивает новое виртуальное дерево с предыдущим. Этот процесс называется “reconciliation” (согласование).
React находит минимальное количество изменений, необходимых для обновления реального DOM, чтобы отобразить новое состояние.
какие преимущества у virtual dom
Поскольку манипуляции с виртуальным DOM происходят в памяти JavaScript, они обычно быстрее, чем прямые манипуляции с реальным DOM.
React минимизирует количество фактических изменений в реальном DOM, что повышает производительность приложения.
Виртуальный DOM является одной из стратегий оптимизации для более эффективного управления состоянием пользовательского интерфейса в веб-приложениях.
Какие типы данных существуют в javascript(8)
Примитивные типы данных:
1.Number
2.String
3.Boolean
4.Undefined
5.Null
6.Symbol
7.BigInt
Объекты (Reference Types):
8.Object
Чем let отличается от var
Область видимости:
var - функциональная область видимости. Переменные видны внутри функции видны за ее пределами.
let: блочную область видимости. Видны только внутри блока кода (например цикл)
Поднятие (Hoisting):
var: Поднимает объявление переменных на верхний уровень функции (если переменная объявлена внутри функции) или на верхний уровень глобального контекста (если переменная объявлена вне функции).
let: Также поднимается, но переменные не инициализируются (их значение остается undefined), и доступ к ним возможен только после их фактического объявления.
Ошибки времени выполнения:
var: Может использоваться до объявления, что может привести к неочевидным ошибкам.
let: Вызывает ReferenceError, если переменная используется до объявления.
Использование в циклах:
var: Не создает новую переменную для каждой итерации цикла, что может привести к непредвиденным проблемам.
let: Создает новую переменную для каждой итерации цикла, предотвращая проблемы, связанные с замыканиями.
Глобальный объект:
var: Создает свойства на глобальном объекте (в браузере - window), если объявлено в глобальном контексте.
let: Не создает свойства на глобальном объекте, если объявлено в глобальном контексте.
Чем var отличается от const
Изменяемость (Mutability):
var: Можно переопределять и изменять.const: нет(да только частично массив/объект)
Область видимости:
var: функциональную область видимости. const: блочную область видимости.
Поднятие (Hoisting):
var: Можно вызвать до определения, но значение будет undefined. у const нельзя(ReferenceError)
Глобальный объект:
var: Создает свойства на глобальном объекте (в браузере - window), если объявлено в глобальном контексте.
const: Не создает свойства на глобальном объекте.
Использование в циклах:
var: Не создает новую переменную для каждой итерации цикла.
const: Создает новую переменную для каждой итерации цикла.
Обязательная инициализация:
var: Не требует обязательной инициализации при объявлении. Значение по умолчанию - undefined.
const: Требует обязательной инициализации при объявлении.
Для чего используются call, apply и bind
В JavaScript методы call, apply и bind используются для управления контекстом (значением this) функции и передачи аргументов при её вызове.
Общие черты методов и для чего они нужны.call apply bind
Общие черты:
Все три метода используются для управления контекстом функции.
Помогают избежать дублирования кода, связанного с передачей одних и тех же аргументов.
Позволяют использовать функции в контексте, отличном от их исходного контекста.
Различие методов call apply bind
Различия:
call и apply сразу вызывают функцию, в то время как bind создает новую функцию, которую можно вызвать позже.
apply принимает аргументы в виде массива, call - в виде отдельных параметров, bind - как и call.
bind не вызывает функцию, а возвращает новую функцию, тогда как call и apply вызывают функцию сразу.
call и apply можно использовать для функций с произвольным числом аргументов, в то время как bind фиксирует аргументы при создании новой функции.
call:
Синтаксис: function.call(context, arg1, arg2, …).
apply:
Синтаксис: function.apply(context, [arg1, arg2, …]).
bind:
Синтаксис: function.bind(context, arg1, arg2, …).
В чём разница между классической функцией и стрелочной (function expression и function declaration)
Синтаксис:
Классическая функция function expression:
function add(a, b) { return a + b }
Стрелочная функция function declaration:
const add = (a, b) => a + b;
Контекст (значение this):
Классическая функция:
Имеет свой собственный контекст this, который зависит от того, как она была вызвана.
Стрелочная функция:
Не имеет своего собственного контекста this; она заимствует контекст из родительского контекста в момент создания.
Связывание (bind):
Классическая функция:
Может быть привязана к определенному контексту с использованием метода bind.
Стрелочная функция:
Нельзя изменить контекст с помощью bind, так как у неё нет своего собственного this.
Аргументы arguments:
Классическая функция:
Имеет объект arguments, который содержит все переданные ей аргументы.
Стрелочная функция:
Не имеет собственного объекта arguments. Вместо этого, она использует аргументы из своего родительского контекста.
Ключевое слово new:
Классическая функция:
Может использоваться с ключевым словом new для создания экземпляра объекта.
Стрелочная функция:
Не может быть использована с ключевым словом new. Она не имеет собственного prototype, и попытка использовать new вызовет ошибку.
Длина функции (length):
Классическая функция:
Имеет свойство length, которое представляет количество параметров, объявленных в функции.
Стрелочная функция:
Не имеет собственного свойства length. Всегда возвращает 0, потому что не имеет собственных именованных аргументов.
Способ определения:
Классическая функция:
Лучше подходит для методов объектов, обработчиков событий, конструкторов и других случаев, где важен контекст this.
Стрелочная функция:
Удобна для кратких анонимных функций и в случаях, когда контекст this не является критически важным, например, для обработчиков событий или функций обратного вызова.
Выбор между классической и стрелочной функцией зависит от конкретного контекста использования и требований вашего кода.
Какие способы изоляции стилей ты знаешь
Изоляция стилей является важным аспектом веб-разработки для предотвращения конфликтов и воздействия стилей одного компонента на другие.
Inline Styles (Встроенные стили): Стили задаются непосредственно внутри тега элемента с использованием атрибута style(<div style="color:red;">).
CSS Modules:Позволяют изолировать стили на уровне компонента путем создания уникальных имен классов( index.module.css).
Shadow DOM: Позволяет создавать изолированный корневой узел DOM с его собственными стилями и селекторами. Внутри html в теге style все стили
BEM (Block Element Modifier):Методология именования классов, направленная на создание модульных и изолированных компонентов.(<div class="button button--primary">)
Библиотеки, позволяющие встраивать стили в компоненты JavaScript, обеспечивая их изоляцию.</div></div>
до ) используются для организации информации в древовидной структуре, отражая иерархию и важность контента.
Описание списков и таблиц:
Семантические теги, такие как , , - ,
, - ,
- , а также теги для создания таблиц (, , , , , ), предоставляют ясное представление структуры списков и таблиц.
Использование адекватных тегов для мультимедийных элементов:
Для встраивания изображений, видео и аудио используются соответственно
, , , и дополнительные атрибуты и теги, чтобы обеспечить альтернативный контент и улучшить доступность.
Применение тегов форм:
Семантические теги форм, такие как , , , , , , помогают создавать интерактивные формы с четко определенными элементами.
Применение семантики в HTML важно для улучшения читаемости кода, поддержания доступности веб-страниц для всех пользователей, включая тех, которые используют устройства чтения с экрана, и повышения релевантности и индексации контента поисковыми системами. Это также способствует лучшему пониманию структуры документа программами и разработчиками.
- ,
- ,
- ,
- ,
- , а также теги для создания таблиц (, , , , , ), предоставляют ясное представление структуры списков и таблиц.
Использование адекватных тегов для мультимедийных элементов:
Для встраивания изображений, видео и аудио используются соответственно
, , , и дополнительные атрибуты и теги, чтобы обеспечить альтернативный контент и улучшить доступность. Применение тегов форм: Семантические теги форм, такие как , , , , , , помогают создавать интерактивные формы с четко определенными элементами. Применение семантики в HTML важно для улучшения читаемости кода, поддержания доступности веб-страниц для всех пользователей, включая тех, которые используют устройства чтения с экрана, и повышения релевантности и индексации контента поисковыми системами. Это также способствует лучшему пониманию структуры документа программами и разработчиками.
- ,