web и сети Flashcards

https://github.com/RomE-HK/QA_Interview_Questions/blob/main/MiddleQA.md

1
Q

REST - расшифровка

A

Representational State Transfer

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

REST - суть

A

REST (Representational State Transfer) — это архитектурный стиль. В отличие от SOAP, который является протоколом, он не подчиняется строгим стандартам, более гибкий, простой и легковесный.

В основе REST лежат стандартные HTTP-методы (GET, POST, PUT, DELETE), а основным форматом данных для него является JSON. Также он позволяет передавать данные в виде текста, XML, HTML и другие.

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

SOAP - расшифровка

A

Simple Object Access Protocol

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

SOAP - суть

A

SOAP (Simple Object Access Protocol) - это протокол обмена данными, основанный на XML, который используется для передачи сообщений между приложениями. Он более строгий и более сложный для использования, чем REST.

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

Отличия SOAP и REST

A

SOAP | REST
Протокол | архитектурный стиль
Any transport protocol | HTTPS only
XML only | JSON, HTML, plain text, XML
Slower | Faster (message size)
Плохо масштабируется | Хорошо масштабируется (stateless)
Шифрование через WS-Secure | Шифрование через HTTPS

SOAP - legacy and private APIs
REST - modern applications and public APIs

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

Статус коды 1XX

A

1xx: Информационные

  • 100 Continue: Промежуточный ответ, указывающий, что начальная часть запроса принята и клиент может продолжать отправку данных.
  • 101 Switching Protocols: Сервер соглашается переключить протоколы в соответствии с запросом клиента, отправленным в заголовке Upgrade.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Статус коды 2ХХ

A

2xx: Успешные

  • 200 OK: Стандартный ответ для успешных HTTP-запросов. Ресурс успешно обработан и передан в теле ответа.
  • 201 Created: Запрос был успешно выполнен, и в результате был создан новый ресурс.
  • 204 No Content: Запрос успешно обработан, но в ответе нет содержимого.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Статус коды 3XX

A

3xx: Перенаправления

  • 301 Moved Permanently: Запрашиваемый ресурс был окончательно перемещен на URL, указанный в заголовке Location. Клиент должен использовать этот новый URL в будущем.
  • 302 Found: Запрашиваемый ресурс временно находится по другому URI, указанному в заголовке Location.
  • 304 Not Modified: Ресурс не был изменен с момента последнего запроса клиента, использующего условные заголовки типа If-Modified-Since или If-None-Match.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Статус коды 4XX

A

4xx: Ошибки клиента

  • 400 Bad Request: Сервер не может обработать запрос из-за неверного синтаксиса.
  • 401 Unauthorized: Для доступа к запрашиваемому ресурсу требуется аутентификация.
  • 403 Forbidden: Сервер понял запрос, но отказывается его авторизовать.
  • 404 Not Found: Запрашиваемый ресурс не найден на сервере.
  • 405 Method Not Allowed: Метод, указанный в запросе, не поддерживается для данного ресурса.
  • 418 I’m a Teapot: Сервер не может приготовить кофе, т.к. он чайник
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Статус коды 5XX

A

5xx: Ошибки сервера

  • 500 Internal Server Error: Общая ошибка сервера, когда сервер сталкивается с непредвиденными обстоятельствами.
  • 501 Not Implemented: Сервер не поддерживает функциональные возможности, необходимые для обработки запроса.
  • 502 Bad Gateway: Сервер, выступая в роли шлюза или прокси, получил неверный ответ от вышестоящего сервера.
  • 503 Service Unavailable: Сервер временно не может обработать запрос из-за перегрузки или технического обслуживания.
  • 504 Gateway Timeout: Шлюз или прокси-сервер не получил вовремя ответ от вышестоящего сервера для завершения запроса.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

HTML

A

HTML (HyperText Markup Language) - язык разметки веб-страниц на основе тегов и атрибутов.

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

CSS

A

CSS (Cascading Style Sheets - язык для описания внешнего вида и форматирования документа.

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

JavaScript

A

JavaScript (JS) — это легковесный интерпретируемый язык программирования с функциями первого класса.

Мультипарадигменный язык программирования. Поддерживает объектно-ориентированный, императивный и функциональный стили. Часто используется как встраиваемый язык для программного доступа к объектам приложений. Наиболее широкое применение находит в браузерах как язык сценариев для придания интерактивности веб-страницам.

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

Что такое клиент-серверная архитектура?

A

Клиент-серверная архитектура - вычислительная или сетевая архитектура, в которой задания или сетевая нагрузка распределены между поставщиками услуг, называемыми серверами, и заказчиками услуг, называемыми клиентами.

Фактически клиент и сервер - это программное обеспечение. Обычно эти программы расположены на разных вычислительных машинах и взаимодействуют между собой через вычислительную сеть посредством сетевых протоколов, но они могут быть расположены также и на одной машине. Программы-серверы ожидают от клиентских программ запросы и предоставляют им свои ресурсы в виде: данных (например, загрузка файлов посредством HTTP, FTP, BitTorrent, потоковое мультимедиа или работа с базами данных); сервисных функций (например, работа с электронной почтой, общение посредством систем мгновенного обмена сообщениями или просмотр web-страниц во всемирной паутине).

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

Как работает данная модель простыми словами?

  1. Клиент (браузер, мобильное приложение) отправляет HTTP-запрос к серверу. Пользователь ввел запрос в поисковую строку интернет-магазина
  2. Сервер обрабатывает запрос и присылает HTTP-ответ клиенту. Сервер магазина обработал запрос и обратился к базе данных в поиске искомого товара (см. шаг 3). После этого сервер вернул массив карточек товаров в ответе и пользователь увидел их на клиенте (в браузере).
  3. Если необходимо получить данные, которые сохраняются в базе данных, то сервер обращается к базе и получает ответ от нее. Сервер базы данных обработал запрос и выдал серверу идентификаторы товаров, которые подходят поисковому запросу.

Основные характеристики:

  • Разделение функций: Отвечает за представление данных пользователю и взаимодействие с пользователем, в то время как сервер занимается обработкой данных, управлением ресурсами и выполнением задач.
  • Централизованное управление: Данные и управляющая логика часто централизованы на сервере, что облегчает обновление, обслуживание и управление безопасностью.
  • Масштабируемость: Архитектура позволяет легко добавлять, обновлять и масштабировать серверные ресурсы в ответ на изменяющиеся требования без необходимости изменения клиентской части.
  • Гибкость: Могут взаимодействовать с различными серверами, а сервера могут обслуживать различных клиентов, что обеспечивает высокую степень гибкости и повторное использование компонентов.

Компоненты:

  • Клиент (Client): Приложение или устройство, используемое пользователем для доступа к сервисам и ресурсам сервера. Клиенты инициируют запросы к серверам.
  • Сервер (Server)^ Мощная система или программное обеспечение, обрабатывающее запросы клиентов, выполняет обработку данных, управляет ресурсами (например, базами данных) и предоставляет различные сервисы.
  • Сеть (Network): Среда передачи данных, которая соединяет клиентов и серверы, обычно через Интернет или локальную сеть (LAN).

Типы клиент-серверных архитектур:

  • Одноуровневая (1-Tier): Клиент и сервер находятся на одной машине, и нет сетевого взаимодействия.
  • Двухуровневая (2-Tier): Прямое взаимодействие между клиентом и сервером, например, клиентское приложение взаимодействует напрямую с базой данных на сервере.
  • Трёхуровневая (3-Tier): Включает промежуточный уровень, например, приложение сервера, которое действует как посредник между клиентом и сервером базы данных, облегчая процесс обработки запросов.
  • Многоуровневая (N-Tier): Более сложная структура с несколькими уровнями, которые могут включать балансировщики нагрузки, сервера приложений, сервера баз данных, сервера кэширования и т.д.

Клиент-серверная архитектура остаётся основным выбором для разработки современных приложений благодаря своей гибкости, масштабируемости и эффективности в управлении ресурсами и обработке данных.

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

Что может выступать в качестве клиента?

A
  • Браузер
  • Десктопное приложение
  • Мобильное приложение
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Какие протоколы передачи данных знаете?

A
  • IP
  • TCP
  • UDP
  • HTTP
  • DNS
  • SSH
  • FTP
  • SSL/TLS
  • WebSockets

Internet Protocol — IP
IP отвечает за поиск компьютеров в сети по их IP-адресам. Ещё он предоставляет стратегию маршрутизации, то есть составляет оптимальный маршрут для передачи данных.

Данные в интернете передаются IP-пакетами. У каждого пакета есть заголовок и данные. В заголовке находятся IP-адреса источника и пункта назначения. Данные — это само содержимое, например, часть веб-страницы.

Работу IP можно сравнить с почтовым отделением: протокол направляет IP-пакеты по интернету так же, как почта рассылает письма по всему миру. При доставке почта использует пункты передачи: письмо из отделения сначала попадает на поезд, потом на грузовик и в конце вручается адресату. В интернете тоже есть «пункты передачи» — их называют маршрутизаторами. Цель маршрутизатора — отправить пакет в пункт назначения по самому короткому пути. Если всё идёт хорошо, пакет прибывает на ближайший к получателю маршрутизатор, который точно знает, куда его отправить. Но бывает и так, что какой-то из маршрутизаторов на пути взломан или вышел из строя, и тогда выбирается другой путь.

DNS

Уникальный IP-адрес есть у каждого домена. Он записывается в виде четырёх чисел от нуля до 255 — например, 74.125.20.113.

DNS связывает IP-адрес с понятным для людей доменным именем, например, 178.79.181.169 превращается в htmlacademy.ru

Принцип работы DNS похож на поиск и вызов контактов в телефоне. Вряд ли кто-то помнит 1317а друзей — да это и необязательно, ведь они хранятся в списке контактов. Когда мы хотим кому-то позвонить, то просто находим нужное имя и нажимаем кнопку вызова — в этот момент начинается соединение, но не по имени, а по 1317у телефона.

DNS-сервер — это и есть «список всех контактов», то есть IP-адресов, которые там хранятся. Каждому IP-адресу присвоен домен. И когда мы вводим в строке браузера имя домена, то происходит запрос к DNS-серверу — запрашивается IP-адрес.

SSL/TLS

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

TCP и UDP

Оба протокола отвечают за передачу данных и работают поверх IP, но с небольшой разницей. TCP доставляет данные без потерь, поэтому его используют для передачи фотографий, сообщений и другой важной информации. А вот UDP не гарантирует доставку, но зато он гораздо быстрее. Его используют, когда скорость важнее надёжности, например, при передаче аудиосообщений или видеотрансляциях.

HTTP и HTTPS

HTTP и HTTPS предназначены для передачи данных и в итоге пользователи могут просматривать веб-страницы. На самом деле HTTPS — это не отдельный протокол, а расширение HTTP. Он безопаснее, так как использует SSL/TLS для шифрования обычных запросов и ответов.

HTTP

HTTP — один из самых используемых протоколов в интернете, поэтому посмотрим подробнее, как он работает.

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

клиент — формирует запросы и обрабатывает ответы;
сервер — обрабатывает запросы и формирует ответы.
Клиент делает запрос на сервер для передачи каждого ресурса: файлов HTML, CSS, JavaScript, изображений или видеофайлов. Затем сервер отвечает на запрос, отправляя ресурс.

Для каждого запроса и ответа открывается своё TCP-соединение. При каждом соединении происходит трёхстороннее «рукопожатие»: клиент и сервер трижды обмениваются пустыми пакетами данных, чтобы удостовериться в существовании друг друга и готовности к работе с данными.

Трёхстороннее «рукопожатие» нужно проводить в каждом TCP-соединении, так как HTTP не запоминает состояния, поэтому ни клиент, ни сервер не могут сохранять информацию между различными запросами. HTTP — один из самых ранних протоколов, и при его создании никто не ожидал, что на веб-странице придётся загружать так много ресурсов.

Такое «рукопожатие» делает загрузку страницы медленнее. Чтобы решить проблему, разработчикам приходится сокращать количество загружаемых ресурсов, например, использовать спрайты или разделять файлы по разным доменам — этот метод называется domain sharding. Такие манипуляции уменьшают количество TCP-соединений, хотя и создают свои трудности.

HTTP/2

HTTP/2 — улучшенная версия HTTP. По данным Can I Use, его поддерживают большинство браузеров.

Главное нововведение этого протокола — одно TCP-соединение на разные запросы, или мультиплексирование.

Ещё в HTTP/2 появился push-сервер, то есть сервер может отправлять больше ответов на один клиентский запрос. Например, если клиент запрашивает файлы index.html, style.css и logo.svg, то сервер отправит сразу три файла. Без push-сервера клиенту нужно запрашивать каждый файл отдельно

Поэтому многие оптимизации под HTTP при переходе на HTTP/2 уже не нужны. Например, можно отказаться от разделения ресурсов по доменам.

HTTP/3

HTTP/3 — третья версия HTTP, основанная на QUIC — протоколе, который предполагает быстрое подключение к интернету через UDP.

Главное преимущество HTTP/3 — сокращение задержки при установке соединения. QUIC достаточно одного «рукопожатия», чтобы установить безопасный сеанс. А ещё HTTP/3 работает поверх UDP, поэтому скорость доставки данных быстрее, чем у HTTP и HTTP/2 поверх TCP.

Протокол уже получил статус предложенного стандарта, то есть браузеры почти завершили работу над поддержкой протокола. Но пока поддержки недостаточно, чтобы переводить сайт с HTTP/2 на HTTP/3.

WebSockets

В этом протоколе соединение устанавливается гораздо быстрее, чем в HTTP — здесь отправляется «рукопожатие» сразу со всей необходимой информацией для передачи данных. Канал при этом остаётся открытым, пока кто-то из сторон не прервёт его. Это означает, что запросы и ответы будут происходить практически мгновенно. А если сервер получит новые данные, он отправит их клиенту без запроса.

Протокол WebSockets используют там, где важна скорость доставки данных, например, в чатах и мессенджерах, играх, онлайн-трансляциях. Он, скорее всего, не пригодится при разработке простых веб-приложений, небольших CMS или при использовании REST API, где достаточно HTTP-запросов GET, POST, PUT и DELETE.

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

HTTP методы

A
  • GET
  • HEAD
  • POST
  • PUT
  • DELETE
  • CONNECT
  • OPTIONS
  • TRACE
  • PATCH

__

  • GET - запрашивает представление ресурса. Запросы с использованием этого метода могут только извлекать данные.
  • HEAD запрашивает ресурс так же, как и метод GET, но без тела ответа.
  • POST используется для отправки сущностей к определённому ресурсу. Часто вызывает изменение состояния или какие-то побочные эффекты на сервере.
  • PUT заменяет все текущие представления ресурса данными запроса.
  • DELETE удаляет указанный ресурс.
  • CONNECT устанавливает “туннель” к серверу, определённому по ресурсу.
  • OPTIONS используется для описания параметров соединения с ресурсом.
  • TRACE выполняет вызов возвращаемого тестового сообщения с ресурса.
  • PATCH используется для частичного изменения ресурса.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Какие методы взаимодействия с API существуют?
В чем разница между ними?

A

SOAP (Simple Object Access Protocol) - Простой Протокол Доступа к Объектам. Клиент и сервер обмениваются сообщениями посредством XML. Это менее гибкий API, который был более популярен в прошлом.

RPC (Remote Procedure Call) - Удалённый Вызов Процедур. Клиент выполняет функцию (или процедуру) на сервере, и сервер отправляет результат обратно клиенту.

Websocket – современная разработка web API, которая использует объекты JSON для передачи данных. WebSocket поддерживает двустороннюю связь между клиентскими приложениями и сервером. Сервер может отправлять сообщения обратного вызова подключенным клиентам, что делает его более эффективным, чем REST.

REST - на сегодняшний день это самые популярные и гибкие API-интерфейсы в Интернете. Клиент отправляет запросы на сервер в виде данных. Сервер использует этот клиентский ввод для запуска внутренних функций и возвращает выходные данные обратно клиенту.

GraphQL

gRPC

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

Как можно протестировать API, что там нужно проверять?

A

Через отправку запросов по соответствующему протоколу (REST, SOAP).

  • Код ответа
  • Корректность ответа
  • Заголовки ответа?
  • Сверка ответа со схемой

Проверка спецификации:

эндпоинты правильно именованы
ресурсы и их типы правильно отражают объектную модель
нет отсутствующей или дублирующей функциональности
отношения между ресурсами правильно отражаются в API

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

Как расшифровывается CRUD?

A
  • Create
  • Read
  • Update
  • Delete

Терамин обозначающий четыре базовые функции: создание (create), чтение (read), редактирование (update) и удаление (delete). Как правило, термин “CRUD” употребляется в контексте работы с хранилищем данных.

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

Чем отличается GET от POST?

A
  • GET для получения данных
  • POST используется для обновления, отправляет данные в теле запроса
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Какие отличия между XML и JSON?

A

XML - язык разметки.
JSON - формат для обмена данными, обычно реализуемый, как массив данных.

JSON более компактен, чем XML, его конструкции легче анализируются средствами Java Script, для которого JSON является внутренним используемым типом данных.

Ключевые различия:

  • Объект JSON имеет тип, тогда как объекты XML не содержат типов
  • В JSON проще получить объект нежели в XML (данные XML должны быть проанализированы)
  • Читабельность JSON файла выше по сравнению с XML
  • JSON не обеспечивает поддержку пространства имен, в то время как XML обеспечивает
  • JSON не имеет возможностей отображения, тогда как XML имеет такую возможность
  • JSON менее защищен, тогда как XML более безопасен по сравнению с JSON
  • JSON поддерживает только кодировку UTF-8, тогда как XML поддерживает различные кодировки
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Какие основные форматы передачи данных?

A
  • JSON (JavaScript Object Notation) - текстовый формат обмена данными, основанный на JavaScript, но при этом независим от JS.
  • XML (eXtensible Markup Language/расширяемый язык разметки) - используется для хранения и передачи данных. формат рекомендован Консорциумом Всемирной паутины (W3C), поэтому часто используется для передачи данных по API. Единственно возможный формат входных и выходных данных в SOAP.
  • CSV (Comma-Separated Values/значения, разделенные запятыми) – текстовый формат, предназначенный для представления табличных данных с фиксированным количеством столбцов. Каждая строка файла — это одна строка таблицы.
  • YAML (YAML Ain’t markup language/YAML не язык разметки; ранее Yet Another Markup Language) - язык для сериализации данных, который позволяет хранить сложноорганизованные данные в компактном и читаемом формате. Похож на XML и JSON, но использует более минималистичный синтаксис при сохранении аналогичных возможностей.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Как происходит шифрование? Или как шифруются сообщения между браузером и сервером?

A

Handshake:
1. Клиент отправляет запрос серверу со списком SSL\TLS версий шифрования
2. Сервер выбирает лучший из доступных
2. Затем отправляет публичный ключ и свой сертификат клиенту
2. Клиент проверяет сертификат сервера
3. Затем шифрует публичным ключем сервера промежуточный ключ
4. Отправляет серверу
5. Сервер расшифровывает предварительный ключ
6. Формируется общий симметричный ключ

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

Виды баз данных?

A
  1. Простейшие типы БД
    • Текстовые файлы, csv-файлы
    • Иерархические (файловые системы, DNS, LDAP)
    • Сетевые (IDMS)
  2. Реляционные БД (MySQL, PostgreSQL..)
  3. NoSQL БД
    • «Ключ-значение» (Redis, memcached)
    • Документные (MongoDB, RethinkDB)
    • Графовые (Neo4j, Dgraph)
    • Колоночные (Cassandra, HBase)
    • БД временных рядов (OpenTSDB, TimescaleDB)
  4. Комбинированные типы БД
    • NewSQL (MemSQL, VoltDB, CockroachDB)
    • Многомодельные (OrientDB, Couchbase)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

Охарактеризуйте каждый класс status code (1хх; 2xx; 3xx; 4xx; 5xx).

A
  • 1xx: Информационные
  • 2xx: Успешные
  • 3xx: Перенаправления
  • 4xx: Ошибки клиента
  • 5xx: Ошибки сервера
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

Какие знаете Web elements?

A

What is Web Element?
Компоненты веб страницы:

  1. кнопка
  2. radio button
  3. текстовое поле,
  4. чекбокс,
  5. выпадающее поле
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

Зачем необходимы инструменты разработчика в браузере (Chrome DevTools) и как они помогают в тестировании.

A
  • Переопределение геолокации и подмена User-Agent
  • Определение JS пути к строке
  • Изменение HTML-кода и стилей CSS у элементов
  • Тестирование производительности и неиспользуемых CSS и Javascript в вёрстке
  • Debug JavaScript
  • Имитация медленного сетевого соединения
  • Мониторинг сетевых запросов
  • Информация о cookies во вкладке applications
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q

Что такое кэш?

A

Кэш — это уже полученные данные и использованные один раз, а потом сохраненные на будущее.

Смысл кэша в том, чтобы в следующий раз взять данные не с далёкого и медленного сервера, а из собственного быстрого кэша.

То же самое, что закупиться продуктами на неделю и потом ходить не в магазин, а в холодильник.

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

Что такое сессия?

A

Сессия (session) – это некоторый отрезок во времени, в пределах которого веб-приложение может определять все запросы от одного клиента.

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

Зачем нужны cookies?

A

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

В них хранятся:

  • Данные для аутентификации.
  • Данные о пользователе, например, язык, валюта, что он смотрел?
  • Данные для сбора статистики.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
32
Q

Что такое фрейм?

A

Разделитель браузерных окон на отдельные области.

В современном мире почти не используется.

Фрейм (от англ. Frame) — это самостоятельный документ, который отображается в отдельном окне браузера и представляет собой полностью законченную HTML-страницу.

В 2022 году фрейм как отдельный элемент HTML практически не используется на публичных сайтах и технологию можно назвать устаревшей. Этот тег даже не поддерживается в HTML5. Одна из главных причин — неудобство для поисковых систем, которые формируют выдачу на основе множества фреймов одного сайта, а не единичного.

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

Какую структуру имеет веб-страница?

A
  • Заголовок: <header>
  • Навигационное меню: <nav>.
  • Основное содержимое: <main>, с различными подразделами содержимого, представленными элементами <article>, <section> и <div>.
  • Боковая панель: <aside>, обычно располагается внутри <main>.
  • Нижний колонтитул: <footer>.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
34
Q

Зачем чистить кэш?

A

Чтобы браузер скачал свежие данные с сервера.

Веб-страницы могут отображаться некорректно в связи с тем, что в них были внесены изменения, а браузер продолжает использовать устаревшие данные из кэша. Также устаревший кэш может занимать место на ЖД.

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

Для чего в веб страницах используют JavaScript?

A
  1. Динамическое обновление содержимого
  2. Работа с пользовательскими событиями (клики мыши, нажатия клавиш, отправки форм и других)
  3. Валидация данных
  4. AJAX-запросы (асинхронные запросы без перезагрузки страницы)
  5. Создание динамических элементов интерфейса (выпадающие меню, модальные окна, слайдеры)
  6. Анимация
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
36
Q

Что такое AJAX?

A

Ajax (Asynchronous JavaScript and XML) — это набор технологий, позволяющий веб-приложениям обмениваться данными с сервером асинхронно, то есть без необходимости перезагрузки страницы.

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

Расскажите об алгоритмах шифрования трафика.

A
  • Симметричное шифрование использует один и тот же ключ и для зашифровывания, и для расшифровывания.
    • DES
    • AES
    • Blowfish
  • Асимметричное шифрование использует два разных ключа: один для зашифровывания (который также называется открытым), другой для расшифровывания (называется закрытым).
    • RSA
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
38
Q

Что такое NIC?

A

Сетевая карта или сетевой адаптер (Network interface card) - он обеспечивает физическое соединение между компьютером и сетью, обеспечивая передачу данных по сети.

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

Что такое NAT?

A

Network Address Translation - перевод локальных IP-адресов во внешние IP адреса.

  • Безопасность локальной сети
  • Расширение количества доступных IP
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
40
Q

Как взаимодействовать с запросами, отправляемыми из браузера.

A
  1. DevTools
  2. Расширения браузера
  3. Перехватчики траффика - charles, fiddler
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
41
Q

Как происходит авторизация на сервере?

A
  1. Идентификация пользователя (логин)
  2. Проверка данных (сравнение введенных данных с данными на сервере)
  3. Предоставление доступа (при верных данных)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
42
Q

Какая разница между идентификацией, авторизацией и аутентификацией?

A

Подтверждение личности и предоставление прав доступа после подтверждения личности.
Идентификация - подтверждение существования пользователя (логин)
Аутентификация - это процесс проверки подлинности пользователя, подтверждение его личности или подлинности устройства (пароль)

Авторизация - это процесс предоставления прав доступа к определенным ресурсам или функциям после успешной аутентификации пользователя или устройства.

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

Как протестировать адаптивную верстку?

A
  1. ПК + планшет + телефон
  2. DevTools
  3. Сервисы типа responsinator, Responsive Design Checker
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
44
Q

Как выполнить Debug странички в браузере?

A

Вкладка Sources в DevTools

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

Что такое WebSocket и как проверить обрыв соединения?

A

WebSocket - это протокол передачи данных в реальном времени между клиентом и сервером через постоянное двунаправленное соединение.

Протокол для общения между клиентом и сервером, предоставляющий двухсторонне общение сверх протокола TCP.

Мы подключаем WS один раз, а затем сервер может отдавать нам ответы тогда, когда посчитает нужным.

Network - Подвкладка ws

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

Какая разница между методами GET и POST?

A

Запрос данных с сервера и отправка данных на сервер

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

Какая разница между методами PUT и PATCH?

A

PUT - создаёт заново сущность
PATCH - обновляет часть сущности

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

Какие знаете снифферы?

A

Анализатор трафика (sniffer/сниффер) — программа или устройство для перехвата и анализа сетевого трафика (своего и/или чужого).

Виды:

  • аппаратные
  • программные
  • аппаратно-программные
  • онлайн-апплеты

Известные снифферы

  • Wireshark/Ethereal
  • ZxSniffer
  • IRIS
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
49
Q

Что такое схема GraphQL?

A

GraphQL Schema– описание типов данных на сервере, связей между ними и логики получения этих самых данных.Включает в себя параметры:

  • query- для операций получения данных
  • mutation- для операций изменения данных
  • subscription- для подписки на события

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

Состояние операций в GraphQL:

  • stateless- все операции в query и mutation должны быть без состояния, т.е. если в кластере много машин обслуживающих запросы клиентов, то неважно на какой из серверов прилетел запрос. Его может выполнить любая нода.
  • statefull- должно быть у операций subscription, т.к. требуется установка постоянного подключения с клиентом, хранение данных о подписках, механизм переподключения и восстановления данных о существующих подписках. Пакет graphql никак не помогает в решении этих админских проблем.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
50
Q

Движки браузеров

A
  1. Blink - chrome, opera, edge
  2. EdgeHTML - Edge
  3. Gecko - firefox
  4. Webkit - chrome (blink на основе webkit), safari
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
51
Q

User-agent

A

Request header.
Lets identify:
1. Приложение,
2. ОС,
3. vendor,
4. version of the requesting user agent.

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36

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

Что такое GraphQL?

A

Это язык запросов и серверная среда для API с открытым исходным кодом.

Он появился в Facebook в 2012 году и был разработан для упрощения управления конечными точками для API на основе REST.

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

Проблемы REST и плюсы GraphQL

A
  • избыточность или недостаток данных в ответе. В REST API клиенты часто получают либо слишком много данных, которые им не нужны, либо слишком мало, что вынуждает делать несколько запросов для получения необходимой информации. GraphQL позволяет клиентам запрашивать только те данные, которые им нужны, и получать их в одном запросе, что делает коммуникацию более эффективной.
  • Также в REST API каждый эндпойнт обычно соответствует определенному ресурсу, что может привести к проблемам с расширяемостью и поддержкой разных версий API. В GraphQL же существует единая конечная точка для всех запросов, и схема API определяется на стороне сервера. Это делает API более гибким и облегчает его развитие.
  • Ну а также во многих REST API при работе со связанными данными возникает проблема “N+1 запросов”, когда для получения связанных данных нужно делать дополнительные запросы к серверу. GraphQL позволяет выразить связи между данными и получать все необходимые данные в одном запросе.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
54
Q

Пример запроса GraphQL

A
query {
  users {
    id
    name
    posts(last: 5) {
      id
      text
      timestamp
    }
  }
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
55
Q

Может ли сервер отправить код 400, если проблема на его стороне

A

400 (Bad Request) - напрямую связан с клиентом (браузером, к примеру) и намекает на то, что отправленный запрос со стороны пользователя приводит к сбою еще до того, как его обработает сервер, по крайней мере так считает сам сервер. Зачастую сервер отправляет этот код, когда появившаяся неисправность не подходит больше ни под одну категорию ошибок.
Из-за чего всплывает Bad Request:

  1. Некорректно настроенные HTTP-заголовки в запросе. Некоторые приложения и сайты мониторят заголовки на предмет наличия в них чего-нибудь подозрительного. Если запрос не соответствует ожиданиям сервера, то высока вероятность появления ошибки 400 (это не всегда вина пользователя).
  2. Если клиент пытается загрузить на сервер файл слишком большого размера. На большинстве сайтов есть ограничения по размеру загружаемых данных. Причем ограничение может быть как в 2 гигабайта, так и в 600 килобайт.
  3. Пользователь пытается получить доступ к несуществующей странице. То есть в браузер банально ввели ссылку с опечаткой, некорректным доменом или поддоменом.
  4. Устаревшие или измененные куки-файлы. Сервер может воспринять подмену куки-файлов как попытку атаковать или воспользоваться дырой в безопасности. Такие запросы сходу блокируются.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
56
Q

Основные виды уязвимости веб-приложений

A
  1. SQL инъекции
  2. RCE - удалённое выполнение кода
  3. XSS (межсайтовый скриптинг)
  4. LFI/RFI
  5. JSON Injection
  6. JSON Hijacking
  7. Атака внешней сущности XML
  • Инъекции. Уязвимости подобного класса начинаются SQL-инъекциями, в различных вариациях, и замыкаются RCE — удаленным выполнением кода.
  • XSS (Межсайтовый скриптинг) — уязвимость, встречающаяся на данный момент куда реже, чем раньше, но несмотря на это не стала менее опасной. Особенно для пользователей, ведь атака XSS нацелена именно на них. В общем случае злоумышленник внедряет скрипт в веб-приложение, который срабатывает для каждого пользователя, посетившего вредоносную страницу.
  • LFI/RFI. Уязвимости данного класса позволяют злоумышленникам через браузер включать локальные и удаленные файлы на сервере в ответ от веб-приложения. Эта брешь присутствует там, где отсутствует корректная обработка входных данных, которой может манипулировать злоумышленник, инжектировать символы типа path traversal и включать другие файлы с веб-сервера.
  • JSON Injection - Простая инъекция JSON на стороне сервера может быть выполнена для похищения cookie.
  • JSON Hijacking (Захват JSON) — атака, в некотором смысле похожая на подделку межсайтовых запросов (CSRF), при которой злоумышленник старается перехватить данные JSON, отправленные веб-приложению с веб-сервера.
  • Атака внешней сущности XML (XML External Entity/XXE) — тип атаки, в котором используется широко доступная, но редко используемая функция синтаксических анализаторов XML. Используя XXE, злоумышленник может вызвать отказ в обслуживании (DoS), а также получить доступ к локальному и удаленному контенту и службам. XXE может использоваться для выполнения подделки запросов на стороне сервера (SSRF), заставляя веб-приложение выполнять запросы к другим приложениям. В некоторых случаях c помощью XXE может даже выполнить сканирование портов и удаленное выполнение кода.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
57
Q

Какие инструменты для тестирования Web performance client-side знаете

A

Playwright with Lighthouse
https://nuancesprog.ru/p/15590/

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

Разница между OLTP и OLAP

A

OLTP (Online Transaction Processing/оперативная обработка транзакций)- метод проведения транзакций в режиме реального времени с использованием онлайновой БД, которая автоматически обновляется по мере совершения транзакций. Такие предприятия, как банки, отели и рестораны, часто используют OLTP, чтобы их сотрудники и клиенты могли одновременно и эффективно выполнять несколько транзакций в реальном времени, сохраняя при этом точность данных. По мере совершения транзакций системы OLTP автоматически обновляют остатки на счетах и сохраняют другую важную информацию, такую как дата и время. Обычно это реляционные БД.

OLAP (Online Analytical Processing/оперативная аналитическая обработка)- сервис для анализа большого объема данных по нескольким измерениям. Здесь измерение относится к элементу определенного набора данных. Например, если компания владеет данными о своих рекламных кампаниях, включая такие элементы, как воздействие на потребителей, продолжительность рекламы, доход от продукта и стоимость рекламы, она может использовать OLAP для сортировки и анализа данных по каждому элементу. Предприятия часто используют OLAP для сложных аналитических расчетов, интеллектуального анализа данных, финансового анализа, составления бюджета и прогнозирования. Обычно это многомерные БД.

Нормализация- подразумевает хранение информации максимально просто и не избыточно.

Максимально просто: не хранить в одном столбце ФИО, а сделать 3 отдельных.

Не избыточно: фамилия клиента должна храниться только в справочнике клиентов, и ее не нужно добавлять в сделанные клиентом заказы.

Денормализация- процесс противоположный нормализации.

Ключевые различия:

  • OLAP – категория программных инструментов, которые анализируют данные, хранящиеся в БД, тогда как OLTP поддерживает ориентированные на транзакции приложения в трехуровневой архитектуре.
  • OLAP создает единую платформу для всех типов потребностей бизнес-анализа, которая включает планирование, бюджетирование, прогнозирование и анализ, а OLTP полезен для администрирования повседневных транзакций организации.
  • OLAP характеризуется большим объемом данных, тогда как OLTP характеризуется большим количеством коротких онлайн-транзакций.
  • В OLAP хранилище данных создается уникальным образом, чтобы в него можно было интегрировать разные источники данных для построения консолидированной БД, тогда как OLTP использует традиционные СУБД.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
59
Q

CORS и принцип одинакового источника

A

CORS (Cross-Origin Resource Sharing) — это механизм, который позволяет веб-приложениям запрашивать ресурсы с других доменов, чем тот, с которого они загружены.

Ключевые моменты:

  • Безопасность: Предотвращает атаки, такие как CSRF, ограничивая доступ к ресурсам.

CORS настраивается на сервере для управления доступом к ресурсам.

https://yandex.cloud/ru/docs/glossary/cors?utm_referrer=about%3Ablank

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

Где настраивается CORS

A

CORS настраивается на сервере для управления доступом к ресурсам.

https://yandex.cloud/ru/docs/glossary/cors?utm_referrer=about%3Ablank

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

HTTP заголовки CORS

A
  • Access-Control-Allow-Origin: Указывает, какие домены могут обращаться к ресурсам.
  • Access-Control-Allow-Methods: Перечисляет разрешенные методы (GET, POST и т.д.).
  • Предварительные запросы: Для некоторых запросов браузер отправляет запрос OPTIONS, чтобы проверить разрешения.

https://yandex.cloud/ru/docs/glossary/cors?utm_referrer=about%3Ablank

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

Как работает CORS на практике?

A
  1. Предварительный запрос (Preflight Request): Для методов, которые изменяют данные (PUT, DELETE, или нестандартные заголовки/методы), браузер сначала отправляет предварительный запрос с методом OPTIONS на сервер.
    • Цель: запросить у сервера, разрешает ли он этот межсайтовый запрос.
    • В запросе OPTIONS браузер отправляет следующие заголовки:
      • Origin: источник, откуда исходит запрос (например, example.com).
      • Access-Control-Request-Method: метод основного запроса (POST, PUT и т.д.).
      • Access-Control-Request-Headers: специальные заголовки (если есть) для основного запроса.
  2. Ответ сервера: Сервер должен ответить с набором CORS-заголовков, если разрешает межсайтовый доступ:
    • Access-Control-Allow-Origin: указывает, какой домен может обращаться к ресурсу. Это может быть конкретный домен (например, example.com) или символ * для разрешения запросов от любых доменов.
    • Access-Control-Allow-Methods: список разрешённых HTTP-методов (например, GET, POST).
    • Access-Control-Allow-Headers: список заголовков, которые могут быть использованы в запросе.
    • Access-Control-Allow-Credentials (опционально): если сервер разрешает отправку запросов с учётными данными (например, cookies), этот заголовок должен быть установлен в true.
    • Access-Control-Max-Age (опционально): указывает, как долго браузер может кэшировать ответ на предварительный запрос.
  3. Основной запрос: Если сервер разрешает запрос, браузер отправляет основной запрос, и сервер обрабатывает его как обычно. Если же сервер не возвращает нужные заголовки, браузер блокирует запрос, и ресурс недоступен.

Пример:

  • Клиентский сайт example.com отправляет запрос POST на сервер api.another.com.
  • Браузер отправляет предварительный запрос OPTIONS с заголовком Origin: example.com.
  • Сервер api.another.com отвечает с заголовками:
Access-Control-Allow-Origin: example.com
Access-Control-Allow-Methods: POST, GET
Access-Control-Allow-Headers: Content-Type
  • Браузер проверяет, что сервер разрешил запрос, и отправляет основной POST запрос.
  • Сервер возвращает данные, и браузер их обрабатывает.

Примечание:

Если сервер неправильно настроен и не отправляет нужные CORS-заголовки, браузер отклоняет межсайтовый запрос.

https://yandex.cloud/ru/docs/glossary/cors?utm_referrer=about%3Ablank

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

Браузерные движки

A

The browser engine is responsible for rendering web pages, it is actually a piece of software or hard-coded logic which renders the web page from the internet for their user.

Rendering a web page refers to the process of converting the HTML, CSS, and JavaScript code into something that a user can see and interact with it. If I spell it in simple terms, it is just a fancy word for “visual display or representation” of a web page in the development world.

  • Parsing: The browser engine parses the HTML code of the web page. This involves breaking the code down into its component parts, such as tags, attributes, and text.
  • Rendering: The browser engine then renders the HTML code into a visual representation. This involves applying the CSS styles to the HTML elements and displaying them on the user’s screen.
  • Executing JavaScript: The browser engine then executes the JavaScript code on the web page. which involve updating the DOM tree, animating elements, or performing other tasks.
  • Blink (Chrome)
  • Gecko (firefox)
  • WebKit (Safari)

https://medium.com/@rahul660singh/web-browsers-engine-5a4522621f00
https://web.dev/articles/howbrowserswork?hl=ru
https://habr.com/ru/companies/ruvds/articles/351802/

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

Современные фреймворки разработки веб-приложений

A
  1. Angular - Google
  2. React - Facebook
  3. Vue

https://webformyself.com/sravnenie-angular-react-i-vue-v-2019-godu/

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

Стратегии развертывания в DevOps

A
  1. Повторное создание (Recreate)
  2. Постепенное развертывание (Rolling)
  3. Мультиверсии
  4. Сине-зеленое развертывание (Blue/Green)
  5. Канареечное развертывание (Canary)
  6. A/B-тестирование

Повторное создание (Recreate):

Стратегия состоит из двух шагов:

  • удаление текущей версии приложения;
  • развертывание новой версии.

Это самая простая стратегия, но в то же время наименее оптимальная: у вас будет простой на время деплоя новой версии, а если что-то пойдет не так, то сложно будет откатиться к предыдущей версии.

Постепенное развертывание (Rolling)

В этой стратегии все инстансы приложения будут последовательно обновляться до новой версии. Каждый инстанс проходит следующий цикл:

  • удаляется один из инстансов со старой версией приложения (остальные продолжают работать);
  • запускается инстанс с новой версией;
  • проверяется корректный запуск нового инстанса. Если все хорошо, переходим к следующему инстансу и проделываем то же самое.

Мультиверсии

В рамках этой стратегии в продуктиве поддерживаются сразу несколько версий приложения. Ее используют, когда в новой версии приложения запланированы какие-то значительные изменения в функционале: такой апдейт даст пользователям время адаптироваться к нововведениям. В других случаях трудозатраты на тесты и поддержку разных версий на продуктиве просто неоправданны.

Сине-зеленое развертывание (Blue/Green)

Эта стратегия базируется на двух продуктивных средах:

  • «синяя» — там, где живут старые версии приложения;
  • «зеленая» — зона, где мы запускаем новую версию приложения.

Когда «зеленая» зона готова стать продуктивом (после тщательного тестирования, конечно же), на нее переключается пользовательский трафик. Если с «зеленой» версией приложения возникают проблемы, трафик снова можно переключить на старую, «синюю» версию.

Канареечное развертывание (Canary)

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

A/B-тестирование

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

Эта стратегия используется больше в экспериментах, для проверки идей и гипотез. Например, с помощью такой стратегии релиза можно узнать, как пользователи реагируют на слайдер из баннеров на главной странице в новой версии сайта.

https://mws.ru/blog/strategii-razvertyvaniya-v-devops/

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

TCP - расшифровка

A

Transmission Control Protocol

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

TCP - суть

A

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

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

UDP - расшифровка

A

User Datagram Protocol

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

UDP - суть

A

Протокол пользовательских дейтаграмм), является ненадежным протоколом без установления соединения, не использующим последовательное управление потоком протокола TCP, а предоставляющим свое собственное. Он также широко используется в одноразовых клиент-серверных запросах и приложениях, в которых оперативность важнее гарантии отправки всех данных, например при передаче речи и видео (стриминг, онлайн-игры).

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

Суть разницы TCP и UPD

A

Отличаются гарантией доставки сообщений. В TCP происходит переотправка.

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

HTTP, HTTPs - расшифровка

A

HyperText Transfer Protocol
HyperText Transfer Protocol Secure

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

SSL - расшифровка

A

Secure Sockets Layer

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

TLS - расшифровка

A

Transport Layer Security

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

SSL\TLS

A

SSL - изначальный устаревший протокол созданный Netscape в 90-х
TLS - современный протокол на основе SSL

75
Q

HTTP/2

A

Протокол HTTP/2 является бинарным. По сравнению с предыдущим стандартом изменены способы разбиения данных на фрагменты и транспортирования их между сервером и клиентом.

В HTTP/2 сервер имеет право послать то содержимое, которое ещё не было запрошено клиентом. Это позволит серверу сразу выслать дополнительные файлы, которые потребуются браузеру для отображения страниц, без необходимости анализа браузером основной страницы и запрашивания необходимых дополнений.

Также часть улучшений получена (в первом черновике HTTP/2, который представлял собой копию спецификации SPDY) за счёт мультиплексирования запросов и ответов (для преодоления проблемы «head-of-line blocking» протоколов HTTP/1.x), а также за счёт сжатия передаваемых заголовков и введения явной приоритизации запросов.

Шифрование
HTTP/2 определён как для HTTP URI (то есть без шифрования), так и для HTTPS URI (поверх TLS 1.2 и выше).

Хотя стандарт определяет шифрование как необязательное[15], для большинства клиентских реализаций (Firefox[16], Chrome, Safari, Opera, IE, Edge) возможно использование HTTP/2 только поверх TLS.

76
Q

HTTP/3 (HTTP-over-QUIC)

A
77
Q

QUIC

A

Суть: относительно 3-х шагового рукопожатия в TCP - начало шифрования и обмен ключами происходит на первом шаге рукопожатия. Протокол умеет определять потерянные данные и переотправлять их. Работает на транспортном уровне L4.

QUIC, as defined by the Internet Engineering Task Force (IETF), is an encrypted connection-oriented protocol that operates at the Transport Layer, or Layer 4, in the OSI model.

While QUIC was originally an acronym, the official standard in RFC 9000 describes QUIC as a name, not an acronym. Personally, I think Quick UDP Internet Connections is helpful for immediate context, but I have to remind myself that the name is, in fact, just QUIC.

In one word, the motivation behind the development of QUIC is speed. In contrast to HTTPS leveraging TLS, which is built on top of the TCP protocol, QUIC is built on top of UDP. This comes with one clear advantage: the time to the first valuable communication drops significantly.

TCP, being connection-oriented, must perform a three-way handshake to initiate any connection. After this, encryption parameters must be negotiated for TLS. Only then does the data the user was looking for actually start flowing. This means that it takes multiple round trips just to establish a path for two devices to communicate. This results in latency for the user. In a world where every piece of information is a click away, speed is everything, so reducing latency is critical.

Since QUIC uses UDP, there is no need to complete a complex handshake to establish the first connection. The protocol includes initiating encryption, and the exchange of keys, in the initial handshake process. It takes only one round trip to establish a path for communication.

And while UDP itself is a connectionless protocol, and therefore technically unreliable (meaning that packets can get lost), QUIC handles identifying lost data and completing re-transmissions to ensure a seamless user experience.

78
Q

Суть Web

A

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

79
Q

Модель OSI - расшифровка

A

Open Systems Interconnection

80
Q

VLAN - расшифровка

A

Virtual Local Area Network

81
Q

VLAN - суть

A

Группа устройств, имеющих возможность взаимодействовать между собой напрямую на канальном уровне, хотя физически при этом они могут быть подключены к разным сетевым коммутаторам. И наоборот, устройства, находящиеся в разных VLAN’ах, невидимы друг для друга на канальном уровне, даже если они подключены к одному коммутатору, и связь между этими устройствами возможна только на сетевом и более высоких уровнях.

В современных сетях VLAN — главный механизм для создания логической топологии сети, не зависящей от её физической топологии. VLAN’ы используются для сокращения широковещательного трафика в сети. Имеют большое значение с точки зрения безопасности, в частности как средство борьбы с ARP-spoofing’ом.

http://xgu.ru/wiki/VLAN

82
Q

Зачем нужен VLAN?

A
  1. Гибкое разделение устройств на группы
  2. Уменьшение количества широковещательного трафика в сети
  3. Увеличение безопасности и управляемости сети

Гибкое разделение устройств на группы
Как правило, одному VLAN соответствует одна подсеть. Устройства, находящиеся в разных VLAN, будут находиться в разных подсетях. Но в то же время VLAN не привязан к местоположению устройств и поэтому устройства, находящиеся на расстоянии друг от друга, все равно могут быть в одном VLAN независимо от местоположения
Уменьшение количества широковещательного трафика в сети
Каждый VLAN — это отдельный широковещательный домен. Например, коммутатор — это устройство 2 уровня модели OSI. Все порты на коммутаторе с лишь одним VLAN находятся в одном широковещательном домене. Создание дополнительных VLAN на коммутаторе означает разбиение коммутатора на несколько широковещательных доменов. Если один и тот же VLAN настроен на разных коммутаторах, то порты разных коммутаторов будут образовывать один широковещательный домен.
Увеличение безопасности и управляемости сети
Когда сеть разбита на VLAN, упрощается задача применения политик и правил безопасности. С VLAN политики можно применять к целым подсетям, а не к отдельному устройству. Кроме того, переход из одного VLAN в другой предполагает прохождение через устройство 3 уровня, на котором, как правило, применяются политики, разрешающие или запрещающие доступ из VLAN в VLAN.

http://xgu.ru/wiki/VLAN

83
Q

Port-based VLAN

A

Наиболее популярный тип VLAN

IEEE 802.1Q, often referred to as Dot1q, is the networking standard that supports virtual local area networking (VLANs) on an IEEE 802.3 Ethernet network. The standard defines a system of VLAN tagging for Ethernet frames and the accompanying procedures to be used by bridges and switches in handling such frames. The standard also contains provisions for a quality-of-service prioritization scheme commonly known as IEEE 802.1p and defines the Generic Attribute Registration Protocol.

Portions of the network which are VLAN-aware (i.e., IEEE 802.1Q conformant) can include VLAN tags. When a frame enters the VLAN-aware portion of the network, a tag is added to represent the VLAN membership.[a] Each frame must be distinguishable as being within exactly one VLAN. A frame in the VLAN-aware portion of the network that does not contain a VLAN tag is assumed to be flowing on the native VLAN.

The standard was developed by IEEE 802.1, a working group of the IEEE 802 standards committee, and continues to be actively revised with notable amendments including IEEE 802.1ad, IEEE 802.1ak and IEEE 802.1s. The 802.1Q-2014 revision incorporated the IEEE 802.1D-2004 standard.[1]

https://en.wikipedia.org/wiki/IEEE_802.1Q

84
Q

CIDR - расшифровка

A

Classless Inter-Domain Routing

https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation

85
Q

CIDR - суть

A
86
Q

Маска подсети

A

Маска подсети — битовая маска для определения по IP-адресу адреса подсети и адреса узла (хоста, компьютера, устройства) этой подсети. В отличие от IP-адреса маска подсети не является частью IP-пакета.

Благодаря маске можно узнать, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой сети.

Например, узел с IP-адресом 12.34.56.78 и маской подсети 255.255.255.0, с длиной префикса 24 бита (/24), находится в сети 12.34.56.0.

Маски подсети являются основой метода бесклассовой маршрутизации (англ. CIDR). При этом подходе маску подсети записывают вместе с IP-адресом в формате «IP-адрес/количество единичных бит в маске». Число после знака дроби (т. н. длина префикса сети) означает количество единичных разрядов (бит) в маске подсети.

Рассмотрим пример записи диапазона IP-адресов в виде 10.96.0.0/11. В этом случае маска подсети будет иметь двоичный вид 1111_1111.1110_0000.0000_0000.0000_0000, или то же самое в десятичном виде: 255.224.0.0.
11 разрядов IP-адреса отводятся под адрес сети, а остальной 32-11=21 разряд полного адреса (1111_1111.1110_0000.0000_0000.0000_0000) — под локальный адрес в этой сети. Итого, 10.96.0.0/11 означает диапазон адресов от 10.96.0.0 до 10.127.255.255.

87
Q

IP адрес

A

IP-адрес (IP - Internet Protocol) - уникальный адрес устройства в сети.

Есть две версии: IPv4 и IPv6

Адреса IPv4 записываются в виде четырёх чисел, разделённых точками, например: 192.168.2.10. Это 32-битный адрес.

Ввиду ограниченного количества IPv4 в 1999 году была представлены 128-битная версия адреса IPv6. Например, 3ffe: 1900: fe21: 4545: 0000: 0000: 0000: 0000.

Также разделяют статические и динамические адреса.

Статические адреса назначаются одному устройству и не меняются.
Динамические адреса будут меняться при каждом новом подключении к сети.

IP-адреса имеют псевдонимы - доменные имена. Именно их вы видите в браузере.

Доменное имя

Доменные имена - ключевая составляющая инфраструктуры Интернета. Они предоставляют человеко-читаемые адреса веб-серверов, доступных в Интернете.

https://stepik.org/lesson/1036754/step/3?unit=1045239

88
Q

MAC адрес

A

MAC-адрес — уникальный идентификатор, присваиваемый каждой единице активного оборудования или некоторым их интерфейсам в компьютерных сетях Ethernet.

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

MAC-адрес состоит из шести групп по два символа, разделённых двоеточиями, например, 00:1B:44:11:3A:B7.

https://stepik.org/lesson/1036754/step/3?unit=1045239

89
Q

DNS

A

DNS-сервер (Domain Name System)

DNS ― это система, которая позволяет браузеру найти запрошенный пользователем сайт по имени домена.

Работу с DNS-сервером можно описать так:

Ввод адреса целевого сайта в адресную строку в браузере
Обращение к DNS-кэшу (временное хранилище) на вашем компьютере или провайдере: знает ли он какому IP соответствует домен. Если такое имя есть, то вы переходите на целевой ресурс.
Если в кэше этой информации нет, то компьютер обращается к DNS-серверу. После чего вы получите соответствующий IP-адрес. Существует несколько уровней DNS-серверов, про которые вы можете почитать здесь

https://stepik.org/lesson/1036754/step/5?unit=1045239

https://help.reg.ru/support/dns-servery-i-nastroyka-zony/obshchaya-informatsiya-o-dns-serverakh/chto-takoye-dns-prostymi-slovami

90
Q

telnet

A
  1. Проверка доступности сервера telnet 192.168.1.243
    1. Альтернативы - ping, traceroute
  2. Проверка порта telnet localhost 22
    1. Альтернатива - Nmap
  3. Выполнение HTTP-запроса

Telnet – это протокол и одноименная утилита, которая позволяет установить соединение и интерактивный канал связи с любым портом удаленного устройства. При помощи telnet можно передавать команды на удаленное устройство, с которым установлено соединение.

Раньше Telnet использовался для удаленного доступа к управлению компьютерами или серверами с Linux. С появлением более современных протоколов управления удаленными устройствами Telnet отошел на второй план и стал использоваться для более точечных задач, например, для проверки сети или доступности портов, а также управления различными IoT-устройствами и роутерами.

91
Q

curl - расшифровка

A

Client for URL

92
Q

curl

A

Without passing any flags or options, the cURL command defaults to making a GET request to the specified URL.

Get the main page from a web-server:

curl https://www.example.com/

Get a webpage from a server using port 8000:

curl http://www.example.com:8000/

93
Q

СКС

A

Структурированная кабельная система — это определение вы в любом яндексе найдёте. На деле это все провода, розетки, патчпанели и патчкорды, то есть грубо говоря, это физика вашей сети в узком смысле, в широком — это совокупность сетей: ЛВС, телефонные сети, системы видеонаблюдения и прочее.

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

94
Q

ЛВС\LAN

A

Локальная Вычислительная Сеть, LAN — Local Area Network. Актуальность слова “Вычислительная” сейчас можно поставить под сомнение, так же, как в слове ЭВМ. Всё-таки, говоря о современных сетях и устройствах, мы давно уже не держим в уме термин «вычисления», несмотря на то, что глубинная суть осталась неизменной. В этом плане буржуйские термин более универсален и даёт более простое представление о своём значении.
Итак, локальная сеть — в первом приближении — это сеть вашей организации. Вот, к примеру, обслуживаем мы сейчас сеть компании «Лифт ми Ап» с двумя офисам, так вот сети этих двух офисов и будут являться локальной сетью.
При втором приближении, локальной называют сеть, которая находится под управлением одного сетевого администратора. То есть, например, вы отвечаете за районный сегмент сети провайдера, в таком случае ваша районная сеть со всеми подсетями будет являться локальной, в то время, как вышестоящая сеть и сети других районов уже нет, так как за них отвечает уже другие люди. Вообще говоря, это уже MAN — Metropolian Area Network — сеть уровня города. Но в какой-то степени к ней можно применить понятие LAN и уж тем более VLAN.

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

95
Q

IP-адресация

A

Все IP адреса делятся на приватные (private, он же внутренний, “серый”, локальный), и публичные. Публичные используются в интернет, каждый адрес уникален, их распределение контролирует организация IANA(Internet Assigned Numbers Authority).

Приватные используются для адресации хостов (ну, строго говоря, не хостов, а интерфейсов) внутри ЛВС, их распределение никто не контролирует. Для них выделили три диапазона адресов (по одному из каждого класса):

10.0.0.0 — 10.255.255.255
172.16.0.0 — 172.31.255.255
192.168.0.0 — 192.168.255.255

Важный момент касаемо “классов адресов”, об этом уже как-то писали на хабре: классов адресов уже давно не существует. Позже мы обстоятельно поговорим об адресации, но пока рекомендация такая: забыть про существование классов адресов, чтобы не попасть впросак на собеседовании или в разговоре.

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

https://linkmeup.gitbook.io/sdsm/2.-switching/00-teoriya/02-ip-adresaciya

http://citforum.ru/nets/ip/glava_3.shtml

96
Q

Широковещательный домен

A

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

О чём это мы тут говорим? Ну, например, послал ваш компьютер широковещательный запрос в сеть в поисках DHCP-сервера. Фрейм этот (он же кадр) адресован всем устройствам и имеет MAC-адрес получателя FF:FF:FF:FF:FF:FF. Сначала он попадает на коммутатор, с которого его копии рассылаются на все порты. Потом часть попадает на другие компьютеры, часть уходят в соседние коммутаторы, кто-то доходит до маршрутизатора, а одну копию принимает-таки DHCP-сервер. И вот участок сети, внутри которого могут жить эти кадры и называется широковещательным доменом. А кончают свою жизнь они на конечных хостах (компьютеры, серверы) или на маршрутизаторах, которые их отбрасывают, если они им не предназначены.

Если же на коммутаторе заведены VLAN’ы, то они также разделяют широковещательные домены, потому что пакет между ними обязательно должен проходить через маршрутизатор, который отбросит широковещательные сообщения. Таким образом, один VLAN — это один широковещательный домен.

Ещё раз: у нас есть три способа разграничить широковещательные домены:

Поставить маршрутизатор и разнести хосты в разные подсети

Разделить сеть VLAN’ами

Порвать кабель

https://linkmeup.gitbook.io/sdsm/2.-switching/00-teoriya/03-shirokoveshatelnyi-domen

97
Q

Веб-страница (web page)

A

документ, который может быть отображён веб-браузерами

98
Q

Веб-сайт (website)

A

коллекция веб-страниц под одним доменным именем, связанных между собой какими-либо способами.

99
Q

Веб-приложение (web application)

A

программное обеспечение, которое запускается в веб-браузере.

Пример, онлайн-банкинг, в котором вы можете осуществлять сложные операции.

100
Q

Веб-сервер (web server)

A

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

101
Q

Веб-сервис (web service)

A

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

Это реализация API (интерфейс программирования приложения), с помощью которого два и более веб-приложения могут взаимодействовать между собой.

102
Q

Серверный кэш

A

Если данные для создания страницы не изменялись, этот файл веб-страницы будет отправлен пользователю при запросе страницы напрямую.

Если данных много, то запросы по созданию страницы могут приводить к значительным затратам ресурсов сервера. Серверное кэширование дает серьезную их экономию, ускоряя отдачу в десятки, а то и сотни раз.

Что можно упростить за счет использования серверного кэширования:

Выдачу страницы целиком. Это трудоемкий процесс, поскольку чем больше информации из разных источников на странице (допустим, вам нужно выдать пользователю целые таблицы данных, чтобы он еще и мог вносить в них изменения), тем чаще обновляется конечное содержимое. Нужно подходить к созданию страниц так, чтобы при максимально однотипных запросах они выдавали однотипные ответы.
Результаты компиляции PHP. Поскольку этот язык программирования сайтов собирает данные из разных источников, можно хранить в кэше уже готовые файлы собранных страниц.
Кэширование отдельных блоков на странице. Здесь сложность заключается в том, чтобы разграничить кэшируемые и динамические части страниц, использовать разные виды кэша на отдельных блоках. Но такой способ отлично помогает сократить время на загрузку тех частей, которые лучше подвергаются сохранению в буфере.
Кэш MySQL-запросов к базам данных. Если сбор данных из БД в некоторые моменты времени выдает один и тот же результат, можно кэшировать его и не запрашивать новые данные из базы. Здесь важно грамотно расставить статусы, определяющие время для обновления данных по запросу.

103
Q

XML - расшифровка

A

eXtensible Markup Language

104
Q

XSD - расшифровка

A

XML Schema Definition

105
Q

WSDL - расшифровка

A

Web Services Description Language

106
Q

DNS - расшифровка

A

Domain Name System

107
Q

Bash - расшифровка

A

Bourne Again SHell

108
Q

Паттерн проектирования SPA

A

single page application — это фронтенд приложение, в основу которого закладываются понятия тонкий бекенд и толстый клиент

SPA — обширно используют API браузера, могут работать без интернет соединения и имеют большой набор функциональности.

109
Q

TypeScript

A

Добавляет статическую типизацию в JavaScript

110
Q

На мобильных браузерах как работает чекбокс - Desktop site?

A
  1. Подмена User-Agent
  2. В chrome так же игнорируется viewport meta tag
111
Q

Что происходит, когда кончается хранилище кэша браузера?

A

Удаляются старые файлы

112
Q

Инвалидация кэша

A
  1. Ручная очистка кэша
  2. Временная метка устарела
  3. HTTP заголовок указывающий браузеру, что ресурс был изменен и требуется обновленная версия. Например, заголовок “Cache-Control: no-cache” или “Set-Cookie” могут инвалидировать кэш.
  4. Хэширование ресурсов (js и css) - при изменении хэша загружается новая версия
113
Q

Как сервер отличает сессии клиента

A

Передаётся в http запросе
web session id - id сессии
cookie id - id пользовтаеля

114
Q

HTTP заголовки

A

Заголовки HTTP позволяют клиенту и серверу отправлять дополнительную информацию с HTTP запросом или ответом. В HTTP-заголовке содержится не чувствительное к регистру название, а затем после (:) непосредственно значение. Пробелы перед значением игнорируются.

115
Q

За счёт чего обеспечивается большая безопасность в SOAP?

A
  1. WS-Security

Оба могут использовать SSL, но SOAP использует дополнительно Web Services Security

116
Q

Авторизованная зона

A

Область, в которую пользователь попадает после авторизации. Без подтверждения личности доступен меньший функционал.

117
Q

HTTP ошибка 401

A

401 Unauthorized
Неавторизован

118
Q

HTTP ошибка 403

A

403 Forbidden
Доступ запрещен

119
Q

HTTP ошибка 405

A

405 Method Not Allowed

120
Q

HTTP ошибка 404

A

404 Not found

121
Q

HTTP 201

A

Created - после создания сущности через POST

122
Q

HTTP 204

A

204 No Content — наиболее распространённый статус для успешного удаления. Указывает на то, что запрос обработан, и сущность была удалена, но содержимого для возврата нет.

123
Q

HTTP 301

A

301 Moved Permanently

Когда ожидается: Ресурс был перемещён на другой URL.
Пример: Запрос к старому URL ресурса, который перенаправляется на новый адрес

124
Q

HTTP 302

A

302 Found
Когда ожидается: Ресурс временно доступен по другому URL.
Пример: Временный редирект при запросе к ресурсу.

125
Q

HTTP 304

A

304 Not Modified
Когда ожидается: Ресурс не изменился с момента последнего запроса.
Пример: Использование кэша данных, если ресурс не был обновлён.

126
Q

HTTP 400

A

400 Bad Request
Когда ожидается: Неверный запрос, не соответствующий спецификации API.
Пример: Некорректные параметры запроса (например, пропущены обязательные поля).

127
Q

HTTP 500

A

500 Internal Server Error
Когда ожидается: Общая ошибка на стороне сервера.
Пример: Проблемы с сервером или непредвиденные исключения в коде.

128
Q

Как могут между собой общаться сервисы?

A

Через API или через брокеры сообщений

129
Q

Какие существуют брокеры сообщений?

A
  1. RabbitMQ
  2. Kafka
130
Q

gRPC

A
  • http/2
  • бинарный формат
  • быстрый

Суть: gRPC (Google Remote Procedure Call) — это фреймворк для удалённого вызова процедур. Он использует протокол HTTP/2 и бинарный формат сериализации Protocol Buffers (Protobuf) для передачи данных. Это быстрый и эффективный способ построения микросервисов.

Плюсы:
Высокая производительность: Использует бинарные данные и HTTP/2, что даёт меньшую задержку и большую пропускную способность.
Поддержка стриминга: Клиент-сервер могут обмениваться данными в режиме реального времени (bidirectional streaming).
Строго типизированные API: Протоколы описываются с помощью Protobuf, что предотвращает ошибки на этапе компиляции.
Многоязычная поддержка: gRPC поддерживает широкий спектр языков программирования (Python, Java, Go и др.).
Эффективная сериализация: Бинарный формат передачи данных значительно уменьшает объем передаваемых данных.
Минусы:
Сложность дебага: Труднее читать и отлаживать бинарные данные по сравнению с текстовыми (JSON).
Сложность интеграции с браузерами: gRPC использует HTTP/2, что делает его менее совместимым с обычными веб-браузерами без дополнительных надстроек.
Ограниченная гибкость: Тесно связана с протокольной схемой, что требует частых обновлений при изменениях API.

131
Q

GraphQL

A
  • Гибкий
  • Позволяет клиенту запрашивать только те данные, которые ему нужны, и объединять несколько запросов в один.
  • Меньше запросов за счёт объединения ресурсов в один запрос

Суть: GraphQL — это язык запросов для API, разработанный Facebook. Он позволяет клиенту запрашивать только те данные, которые ему нужны, и объединять несколько запросов в один.

Плюсы:
Гибкость запросов: Клиент может запрашивать только нужные поля данных, избегая лишней нагрузки.
Меньше запросов: Возможность объединить несколько ресурсов в один запрос, уменьшая количество HTTP-запросов.
Документация и автокомплит: Схема данных четко описана, что облегчает документирование и работу с API.
Удобство для клиентских приложений: Не нужно ожидать обновлений сервера, чтобы получать только необходимые данные.
Минусы:
Сложность выполнения запросов: Неправильно сформированные запросы могут привести к избыточной нагрузке на сервер (запрос слишком большого объема данных).
Оверхед на сервере: Из-за того, что клиент может запрашивать любые поля, серверу нужно выполнять больше логики для обработки запросов.
Кэширование сложнее: В отличие от REST API, кэшировать результаты запросов сложнее, так как каждый запрос может быть уникальным.
Нужна схема: API требует заранее подготовленной схемы, что может затруднять динамическое изменение данных.

132
Q

gRPC vs GraphQL

A

gRPC лучше для высокопроизводительных, строго типизированных микросервисов, где важна скорость и бинарные данные, особенно в сервисах backend-to-backend.
GraphQL более гибок и удобен для клиентских приложений, где важно получать только необходимые данные, но может приводить к нагрузкам на сервер.

133
Q

Почему POST не идемпотентный?

A

Т.к. каждый запрос может приводить к изменению состояния (но не обязан).

Примеры ситуаций, где POST не идемпотентен:

Создание ресурса: Каждый раз при выполнении запроса POST, сервер может создавать новый ресурс, например, новую запись в базе данных.
Изменение состояния: Если POST отправляет форму, которая увеличивает количество товаров в корзине, каждый новый запрос будет увеличивать это количество.

134
Q

Самые распространённые хедеры?

A
  1. Authorisation (token)
  2. User-Agent (browser)
  3. ContentType (json)
  4. Accept (json)
  5. Cache-Control (no-cache, no-store)
  6. X-Request-ID (отслеживание запросов в распределенных системах)
135
Q

Заголовок Cache-Control

A
  1. Почему важно: Управляет политиками кэширования на клиенте и сервере. Особенно важно в нагрузочном тестировании, чтобы убедиться, что ресурсы кэшируются или обновляются правильно.
    Пример: Cache-Control: no-cache, no-store
    Использование: Проверка на корректное поведение кэширования, предотвращение проблем с устаревшими данными.

max-age: Указывает максимальное время в секундах, в течение которого ответ может быть кеширован. Например, Cache-Control: max-age=3600 означает, что ответ может храниться в кеше в течение одного часа.

136
Q

Заголовок X-Request-ID

A

(или аналогичный заголовок для трассировки запросов)
Почему важно: Используется для отслеживания и корреляции запросов в распределенных системах. Очень важен для отладки и анализа логов, особенно в микросервисных архитектурах.
Пример: X-Request-ID: 12345-abcde
Использование: Облегчает диагностику проблем, отладку и сбор метрик по запросам.

137
Q

Виды токенов

A
  1. JWT - json web token
  2. OAuth access token
  3. CSRF token - cross-site request forgery
  4. session token
  5. api token

JWT (JSON Web Token)
Используется для аутентификации и авторизации в веб-приложениях. JWT передает закодированные данные между клиентом и сервером в виде JSON-объекта, который подписан и часто зашифрован. Важно проверять токен на истечение срока действия, его целостность и корректную валидацию.

OAuth Access Token
Эти токены используются в системах, поддерживающих OAuth 2.0, например, для доступа к API. Access token выдается после успешной аутентификации и используется для авторизации доступа к защищённым ресурсам. В тестах можно проверять истечение срока действия токенов, их обновление (refresh token) и правильность авторизации с ними.

CSRF Token (Cross-Site Request Forgery)
Этот токен используется для предотвращения атак типа “межсайтовая подделка запросов”. Он передается вместе с запросом и проверяется сервером для того, чтобы убедиться, что запрос был выполнен от легитимного источника. В тестировании важно проверять наличие и валидацию CSRF-токена.

Session Token (сессионный токен)
Часто используется для управления пользовательскими сессиями в веб-приложениях. Сессионный токен связывает пользователя с его сессией на сервере. В тестах необходимо проверять срок действия токена, безопасность хранения и завершение сессии.

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

138
Q

Особенности JWT-токена

A

Используется не только для валидации, но и для передачи информации.

Sensitive информацию передавать нельзя (по спеке), т.к. может быть перехвачен и использован злоумышленниками

139
Q

Разница local storage, session storage и куки

A
  1. В куках хранятся данные передаваемые серверу
  2. В local storage - только данные нужные клиенту
140
Q

Cookie размер

A

Примерно 4кб на одну куку

141
Q

Cookie - отправка на сервер

A

Отправляются с каждым запросом на сервер

142
Q

LocalStorage - цель

A

Хранение данных в браузере на длительный срок. Например пользовательские настройки.
То что не нужно хранить в сессии.

Чаще всего используется для хранения информации, которая не зависит от сессии пользователя, например, пользовательские настройки.

143
Q

SessionStorage - цель

A

Хранение данных в пределах одной сессии браузера. Полезен для временного хранения данных, которые нужны только в текущей сессии (например, данные формы).

144
Q

Размер local и session storage

A

5-10 Мб

145
Q

Cookie - срок хранения

A

Куки могут иметь заданный срок жизни (через Expires или Max-Age). Если срок жизни не указан, они удаляются, когда пользователь закрывает браузер.

146
Q

Local и session storage - срок хранения

A

Данные сохраняются бессрочно до тех пор, пока не будут удалены вручную или через JavaScript.

147
Q

Kafka - суть

A

Apache Kafka — это распределённая платформа для потоковой передачи данных, которая служит для публикации, хранения и обработки потоков событий в режиме реального времени. В отличие от RabbitMQ, Kafka изначально проектировалась для обработки больших объёмов данных с высокой пропускной способностью.

Основные концепции:

  • Producer (производитель) — публикует сообщения (события) в топики (topics).
  • Topic (топик) — это категория или канал, куда отправляются и из которого читаются сообщения. Сообщения в топике хранятся в упорядоченном виде.
  • Consumer (получатель) — подписывается на топики и извлекает сообщения.
  • Broker — узел, управляющий топиками и распределяющий сообщения по кластеру.
  • Partition — разделение данных внутри топика для параллельной обработки, что позволяет масштабировать систему.

Плюсы Kafka:

  • Высокая пропускная способность и возможность обрабатывать миллионы событий в секунду.
  • Поддержка горизонтального масштабирования и отказоустойчивости за счёт кластеров.
  • Подходит для систем с требованием к обработке данных в реальном времени и анализа больших потоков данных, таких как логи, телеметрия, аналитика.
148
Q

Kafka - основные концепции

A

Основные концепции:

  • Producer (производитель) — публикует сообщения (события) в топики (topics).
  • Topic (топик) — это категория или канал, куда отправляются и из которого читаются сообщения. Сообщения в топике хранятся в упорядоченном виде.
  • Consumer (получатель) — подписывается на топики и извлекает сообщения.
  • Broker — узел, управляющий топиками и распределяющий сообщения по кластеру.
  • Partition — разделение данных внутри топика для параллельной обработки, что позволяет масштабировать систему.
149
Q

Kafka - плюсы

A

Плюсы Kafka:

  • Высокая пропускная способность и возможность обрабатывать миллионы событий в секунду.
  • Поддержка горизонтального масштабирования и отказоустойчивости за счёт кластеров.
  • Подходит для систем с требованием к обработке данных в реальном времени и анализа больших потоков данных, таких как логи, телеметрия, аналитика.
150
Q

RabbitMQ - суть

A

RabbitMQ — это брокер сообщений, который реализует принцип обмена сообщениями между различными сервисами или приложениями. Он работает по модели “отправитель-получатель”, обеспечивая асинхронную коммуникацию и очереди сообщений.

151
Q

RabbitMQ - основные концепции

A

Основные концепции:

  • Producer (производитель) — отправляет сообщения в очередь.
  • Queue (очередь) — хранит сообщения до тех пор, пока их не обработает получатель.
  • Consumer (получатель) — извлекает и обрабатывает сообщения из очереди.
  • Exchange (обменник) — маршрутизирует сообщения к соответствующим очередям, используя различные типы маршрутизации (direct, topic, fanout).
152
Q

RabbitMQ - Плюсы

A

Плюсы RabbitMQ:

  • Поддержка различных сценариев обмена сообщениями (отправка и получение, широковещание, маршрутизация).
  • Возможность обработки большого объема данных.
  • Гибкость и надежность в передаче сообщений между разными компонентами системы, что помогает масштабировать приложения и снижать их взаимозависимость.
153
Q

Отличия Kafka от RabbitMQ

A

Основные отличия Kafka от RabbitMQ:

Модель обработки сообщений:

  • RabbitMQ: работает по модели “отправитель-получатель” с использованием очередей. Сообщения извлекаются из очереди и удаляются после обработки. Очереди могут поддерживать подтверждение доставки.
  • Kafka: работает по модели “публикация-подписка” (pub/sub). Сообщения записываются в топики и остаются в них на определённый срок. Подписчики читают сообщения, не удаляя их, что позволяет разным потребителям читать одни и те же сообщения.

Назначение:

  • RabbitMQ: идеально подходит для обработки задач, которые требуют мгновенной доставки сообщений, балансировки нагрузки и асинхронного взаимодействия между сервисами.
  • Kafka: лучше всего подходит для потоковой передачи данных в реальном времени, например для обработки логов, телеметрии, анализа событий и работы с большими данными.

Производительность:

  • RabbitMQ: оптимизирован для низкой задержки и быстрой доставки сообщений в реальном времени, но может быть ограничен в пропускной способности при обработке очень больших объёмов данных.
  • Kafka: создан для высокой пропускной способности и может обрабатывать миллионы событий в секунду, что делает его более эффективным для передачи и хранения больших потоков данных.

Сохранение сообщений:

  • RabbitMQ: сообщения обычно удаляются после их успешного получения и подтверждения потребителем.
  • Kafka: сообщения сохраняются в топиках на определённый срок (определяется настройками хранения) и могут быть прочитаны многократно разными потребителями.

Масштабирование:

  • RabbitMQ: хорошо масштабируется для обработки задач в пределах одного кластера, но имеет ограничения по горизонтальному масштабированию.
  • Kafka: легко масштабируется за счёт использования разделов (partitions) и распределения нагрузки между брокерами, что делает его лучшим выбором для работы в больших распределённых системах.

Поддержка транзакций:

  • RabbitMQ: поддерживает подтверждение доставки сообщений и транзакции на уровне очередей.
  • Kafka: поддерживает транзакции на уровне топиков, что позволяет гарантировать атомарность операций записи и чтения в нескольких топиках.
154
Q

Server Side Rendering

A

Генерация отрендеренной HTML страницы на сервере

155
Q

Client Side Rendering

A

Классический подход - клиент запрашивает данные и рендерит веб страницу сам

156
Q

HTTP Безопасные методы

A
  • Get
  • Head
  • Options

Метод HTTP является безопасным, если он не меняет состояние сервера. Другими словами, безопасный метод проводит операции “только чтение” (read-only). Несколько следующих методов HTTP безопасные: GET, HEAD или OPTIONS. Все безопасные методы являются также идемпотентными, как и некоторые другие, но при этом небезопасные, такие как PUT или DELETE.

157
Q

Что проверять в тестировании API у токенов

A
  1. Корректная выдача и авторизация с токеном
  2. Отсутствие доступа без токена
  3. Срок дейтсвия токена
  4. Отзыв токена
158
Q

Как происходит рендеринг веб страницы браузером

A
  1. Получение HTML
    Браузер получает HTML-документ от сервера через HTTP-запрос.
  2. Парсинг HTML
    Браузер начинает парсить HTML, создавая DOM (Document Object Model) — дерево элементов страницы.
  3. Получение и обработка ресурсов
    Браузер загружает дополнительные ресурсы (CSS, JavaScript, изображения) по мере их обнаружения в HTML.
    CSS: Создается CSSOM (CSS Object Model) для стилизации элементов.
  4. Создание Render Tree
    Браузер комбинирует DOM и CSSOM в Render Tree, который представляет, как элементы будут отображаться на странице, включая стили и визуальные свойства.
  5. Расчет Layout
    На основе Render Tree происходит расчет Layout (позиционирование элементов), где определяется, где и как каждый элемент будет отображаться на экране.
  6. Рендеринг
    Браузер отрисовывает элементы на экране. Этот процесс может быть оптимизирован с помощью технологий, таких как GPU-рендеринг.
  7. Обработка JavaScript
    JavaScript может изменять DOM и CSSOM, что может вызвать повторные расчеты Layout и рендеринг.
  8. Обработка событий
    Браузер реагирует на взаимодействия пользователя (клики, прокрутка и т.д.), что может инициировать дополнительные изменения в DOM и рендеринг.
159
Q

DOM - расшифровка

A

Document Object Model

160
Q

DOM - суть

A
  • Иерархическая модель для HTL и XML документов, с которой можно взаимодействовать динамически

DOM (Document Object Model) — это программный интерфейс для HTML и XML документов, который представляет структуру документа в виде объектов. Основные аспекты:

  1. Иерархическая структура: DOM представляет документ как дерево узлов, где каждый узел соответствует элементу, атрибуту или тексту.
  2. Динамическое взаимодействие: Позволяет изменять содержимое, структуру и стиль веб-страницы в реальном времени с помощью языков программирования, таких как JavaScript.
  3. Универсальность: DOM поддерживает взаимодействие с различными типами документов (HTML, XML) и позволяет работать с ними одинаково.
  4. События: DOM поддерживает обработку событий, что позволяет реагировать на действия пользователя, такие как клики и нажатия клавиш.

Суть DOM заключается в том, чтобы обеспечить разработчикам удобный способ взаимодействия с документами, делая веб-страницы интерактивными и динамичными.

161
Q

Метод HTTP HEAD

A

Используется для получения метаданных (заголовков)

162
Q

CSRF атака суть

A

CSRF (Cross-Site Request Forgery) — это атака, при которой злоумышленник заставляет аутентифицированного пользователя выполнить нежелательные действия на сайте. Это происходит, когда пользователь открывает вредоносную ссылку, что приводит к отправке поддельного запроса на сайт, где он уже аутентифицирован.

Методы защиты от CSRF:

  • Токены CSRF: Генерация уникального токена для каждого запроса, который должен быть включен в форму.
  • Проверка реферера: Проверка заголовка Referer для подтверждения источника запроса.
  • Использование методов HTTP: Ограничение критических операций методами, отличными от GET, например, POST.
163
Q

CSRF - расшифровка

A

Cross-Site Request Forgery

164
Q

Передача авторизационных данных в query параметрах запроса GET - какие проблемы с безопасностью?

A
  1. Данные авторизации (например, логин и пароль) могут передаваться в URL. Это делает их видимыми в истории браузера, логах сервера и может привести к утечке данных.
  2. Запросы GET могут кэшироваться браузером и прокси-серверами, что может привести к тому, что предыдущие данные авторизации будут использованы повторно, даже если пользователь попытался авторизоваться заново.
165
Q

Максимальная длина URL

A
  1. Google Chrome, Firefox и другие современные браузеры: поддерживают URL длиной до 8192 символов (или больше).
166
Q

Чем авторизация через GET нарушает идемпотентность

A
  1. Авторизация — это операция, которая изменяет состояние пользователя на сервере. Когда пользователь проходит авторизацию, сервер изменяет его статус с “неавторизованного” на “авторизованного”. Таким образом, использование GET нарушает идемпотентность, так как при повторном вызове будет происходить повторная авторизация, что может изменить состояние сеанса.
  2. Веб-браузеры и прокси-серверы могут автоматически повторять запросы GET, если они сталкиваются с определенными проблемами (например, разрыв соединения). Если авторизация реализована через GET, это может привести к нежелательным повторным авторизациям, что нарушает корректное поведение системы. Например, прокси-сервер может случайно повторить GET-запрос авторизации, что приведет к созданию новой сессии, сбросу текущей или другим неожиданным последствиям.
  3. Запросы GET могут кэшироваться как браузерами, так и промежуточными узлами (например, CDN или прокси-серверами). Это означает, что авторизационный запрос может быть закэширован и использован повторно, что приведет к повторению или использованию устаревшей информации, в то время как авторизация требует актуального состояния. Кэширование GET-запросов особенно опасно, когда передаются чувствительные данные, такие как токены или пароли.
167
Q

Какие бывают типы авторизации?

A
  1. Session Auth
  2. JWT
168
Q

JWT - расшифровка

A

JSON web token

169
Q

Как работает Session (cookie) based - аутентификация?

A
  1. клиент: /логин
    1. сервер: сохраняет сессию
  2. сервер: ответ с id сессии
    1. клиент: сохраняет id сессии в cookie
  3. клиент: делает запрос передавая cookie
    1. сервер проверяет сессию
  4. сервер: ответ

Statefull session - between client and server

170
Q

Минусы session (cookie) based - аутентификации?

A
  1. Хранение id сессии в БД или в памяти сервера
    1. Возникает проблема из-за горизонтального масштабирования - создаёт бутылочное горлышко
  2. Низкий риск CSRF атаки (современные фреймворки особенно его минимизируют)
171
Q

Как работает аутентификация на основе токена? Token-based auth

A
  1. Клиент: /логин
  2. Сервер: создаёт JWT (json web token) и передаёт клиенту
  3. Клиент: сохраняет JWT в local storage (или cookie)
  4. Клиент: при запросах отправляет заголовок Authorization: Bearer <token>
  5. Сервер: проверяет подпись JWT для удостоверения его подлинности. Если токен валидный и не истек (проверка поля exp), сервер обрабатывает запрос.
  6. Сервер: проверяет права доступа клиента, основываясь на данных в полезной нагрузке JWT. Например, проверяет роли пользователя или другие кастомные клеймы.

Обращения к БД не происходит, т.к. необходимые данные хранятся в payload.

172
Q

Плюсы JWT?

A

Более эффективно для распределенных облачных систем

173
Q

Минусы JWT?

A
  1. Токены могут быть захвачены хакерами
  2. Может быть сложно инвалидировать токен
174
Q

Главное отличие сессий и токенов?

A
  1. Менеджмент сессий проходит на сервере - statefull
  2. Менеджмент токенов проходит на клиенте - stateless
175
Q

Из чего состоит JWT токен?

A

Заголовка (header), полезной нагрузки (payload) и подписи (signature):
* Header: содержит тип токена и алгоритм шифрования (например, HS256).
* Payload: содержит данные (клеймы), которые могут быть стандартными (например, sub — идентификатор пользователя, exp — время истечения токена) или кастомными.
* Signature: создается с использованием секрета сервера для защиты токена от изменений.

176
Q

JWT - срок жизни и протухание

A
  1. Срок жизни JWT - в среднем 10-15 минут
  2. После протухания выдаётся за счёт refresh token - новый access token
  3. Refresh token лежит в базе. Тоже может протухать, тогда нужен будет новый логин
177
Q

Как происходит валидация JWT?

A

Сервер хэширует header и payload - затем сравнивает с signature

178
Q

Отличия Access token от Refresh token

A
  1. access токен используется для доступа к системе и имеет короткий срок жизни
  2. refresh токен используется для обновления access токена (без необходимости релогина)
  3. access передаётся с каждым запросом
  4. refresh - передаётся только при обновлении access токена
179
Q

Что такое авторизация через OAuth?

A

Это авторизация через сторонние сайты без логина и пароля.

Используются access и refresh токены.

180
Q

Что такое OpenID?

A

Протокол регистрации пользователя через сторонние сайты (не используя логин и пароль)

181
Q

HTTP 300-ки

A

301 Moved Permanently («перемещено навсегда»)[3];
302 Found («найдено»)[3];
303 See Other («смотреть другое»)[3];
304 Not Modified («не изменялось»)[8];

182
Q

Сколько доступно IP адресов при маске подсети 255.255.255.0?

A

254

183
Q

CIDR диапазон для /24

A

255.255.255.0