Бэкенд2 Flashcards

1
Q

Заголовок Postman-Token

A

Postman-Token - это заголовок, который иногда используется в HTTP-запросах для управления сеансами в Postman. Он используется для идентификации уникального сеанса. Этот механизм может использоваться для предотвращения повторных запросов в некоторых случаях.

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

Заголовок Content-Type

A

Content-Type - это заголовок HTTP-запроса и ответа, который указывает тип меди-контента, передаваемого в теле запроса или ответа.
Application\json - формат JSON
Application\xml - формат XML
Text\html - формат HTML
multipart\from-data -используется при отправки файлов или форм-данных

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

Заголовок Content-Length

A

Content-Length - это заголовок HTTP, который указывает размер тела запроса или ответа в байтах. Этот заголовок помогает серверу и клиенту определить длину содержимого и, таким образом, корректно прочитать данные.

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

Заголовок User-Agent

A

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

Использование для:
1 - Определение совместимости - сервер может использовать информацию для определения, какой браузер или клиент отправил запрос, и предоставить соответствующий контент
2 - Статистика и аналитика - может использоваться для сбора статистики о том, какие браузеры или клиенты чаще всего посещают сайт.
3 - Обнаружение ботов - для обнаружения посещений от поисковых роботов или других автоматизированных агентов.

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

Заголовок Accept

A

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

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

Заголовок Connection

A

Connection - заголовок в HTTP используется для управления параметрами соединения между сервером и клиентом. Он может содержать различные значения, которые определяют, как следует обрабатывать соединение после завершения текущего запроса-ответа.

close- закрыть соединение
keep-alive - сохранить соединение открытым
upgrade- используется, например, при использование HTTP\2.0, чтобы указать на возможность обновления протокола
TE- указывает, какие кодировки поддерживает клиент, что может использоваться для оптимизации передачи данных.

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

Заголовок Authorization

A

Authorization - заголовок используется для передачи учетных данных в HTTP-запросах.

1 - Basic Auth (Базовая аутентификация)
2 - Bearer Token (Токен аутентификации)
3 - API Key (Ключ API)

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

Для чего нужны логи?

A

Для локализации ошибок

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

Уровни логирования:
Debug
Warning
Error
Fatal

Доп:
Trace
Info

A

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

Warning - обычно выводит нам предупреждения.

Error - направлен на вывод ошибок.

Fatal - выводит ошибки, которые максимально нарушают работу системы, которые “кладут” систему, после которых система не работает.

Trace - очень подробно описывает каждое событие и поэтому очень полезен для тестироващиков, когда нужно локализовать какую-то проблему. Выводит очень много информации и поэтому много весит. Никогда не используется на проме.

Info - зачастую стоит на проде, т.к. этот уровень в основном показывает нам обычные ивенты, кратко описанные.

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

Что такое Kafka Apache и для чего она нужна?

A

Kafka Apache - распределенная система обмена сообщениями между серверными приложениями в режиме реального времени. Написана на языке Java и Scala.

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

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

A

Зачастую kafka используется на больших проектах, таких как банки, для того, чтобы:
-Масштабировать проект
-Отслеживать интеграцию и локализовывать баги быстрее
-Скорость обработки процессов увеличивается

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

Какие ключевые концепции являются в архитектуре Kafka Apache?

A

Продюсер - приложение или процесс, генерирующий и посылающий данные.

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

Сообщение - пакет данных, необходимый для совершения какой-либо операции.

Брокер - узел(диспетчер) передачи сообщений от процесса-продюсеру приложению-потребителю.

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

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

Какие свойства у Kafka?

A

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

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

Из чего состоит Kafka?

A
  1. Broker и Zookeeper (Брокер и Зукипер)
  2. Message(Сообщение)
  3. Topic и Partition (Топик и Партишн)
  4. Producer(Продюсер)
  5. Consumer(Консюмер)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Broker и Zookeeper (Брокер и Зукипер)

A

Функции Брокера: прием сообщений, хранение сообщений, выдача сообщений

Зукипер - служба, которая следит за состоянием всего кластера Кафка. Она отслеживает, какие брокеры активны и какую информацию они хранят.
-Хранение информации, Выбор Лидера, Мониторинг состояния, Управление конфигурацией.

Среди брокеров выбирается один брокер и он называется кафка контроллером. Он обеспечивает консистентность данных.
Кафка сама по себе мастер-слэй система. Зукипер в данном случае используется чтобы тоже выбрать контроллер. Так как представляет собой хранилище настроек-конфигов.

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

Message(Сообщение)

A

Key - ключ используется для распределения сообщений по кластеру.
Value - содержимое сообщения - массив байт
Timestamp - время сообщения.
Headers - набор key-value пар с пользовательскими атрибутами сообщения.

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

Topic и Partition (Топик и Партишн)

A

Топик представляет из себя стрим данных, получение однотипных событий, которые объединены логически. Оно может получаться из разных источников, а может и из одного. Зависит от логики проекта.
В топике выстраивается очередь, в которую вкладываются все наши входящие сообщения и потом от туда извлекаются сообщения. Когда получатель считал сообщение они не удаляются, новый потребитель пришел и считал нужные сообщения.. Это обеспечивается широковещательный режим, когда у нас может быть несколько разных консьюмеров и им необходимо потреблять одни и те же данные.
Функция эта называется FIFO - First in first out.

Иногда нагрузку нужно распределять. При огромном потоке данных для одного микросервиса используется Partition.

Где хранятся данные топика?
В обычных log файлах.
.log - сообщения, которые хранятся с какой-то дополнительно информацией
.index - маппинг офсета на позицию
.timeindex - маппинг тайминдекса на офсет

Репликация данных
Data replication - надежность данных и отказоустойчивость

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

Что произойдет если лидер-реплика упадет?
-в этом случае всегда есть несколько фолловеров, которые подписаны как ISR. Для фолловеров isr идет синхронное сохранение данных, которые попадали в лидер-реплику и при падении лидер реплики они и становятся кандидатами на лидерство.

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

Producer(Продюсер)

A

Продюсеры пишут только в лидер-реплику, а консьюмеры читают тоже только лидер-реплику.

3 режима отправки сообщений:
- acks = 0. Продюсер вообще не ждет подтверждения отправки сообщения.
- acks = 1. Продюсер жде подтверждения только от лидер-реплики.
- acks = all. Продюсер ждет подтверждения отправки сообщения от всех isr и лидер-реплик.

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

Consumer(Консюмер)

A

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

20
Q

Для чего нужен брокер тестировщику?

A

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

ПОЧЕМУ же так работает?
Потому что статус коды/методы запросов и любое другое действие прописывает разработчик и он может написать все что угодно (например что теперь у нас DELETE это метод получения данных и он должен возвращать 895 статус код).

21
Q

Дженкинс это?

A

Инструмент для деплоя версий
Поставка определенной версии на стенде(Деплой)

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

22
Q

Аутентификация\Авторизация - это?

A

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

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

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

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

23
Q

Основные различия Аутентификации и Авторизации:

A

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

24
Q

Синхронность и Асинхронность - это?

A

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

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

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

25
Реляционные базы данных(SQL) - это?
Это набор данных с предопределенными связями между ними, она состоит из таблиц и связей. Таблица - это совокупность строк и столбцов. Столбцы - это поля. В них содержится определенная характеристика. Строки таблицы - это записи. Каждая строка - информация об одном конкретном пользователе(пример). Ячейка - место пересечения строки и столбца, в каждой ячейке содержится значение атрибута
26
Какие бывают типы данных?
Каждое поле имеет какой-либо определенный тип данных. Типы данных SQL - это своего рода маркеры, которые указывают на свойства данных и необходимый объем места для их хранения. Числовое - один из числовых типов данных это integer\int\int4 - целочисленный тип. Строковые - один из строковых типов данных varchar(n) - строка переменной длины, где n - ограничение длины. Логические типы данных - Boolean TRUE - истина, FALSE - ложь, NULL - неизвестно, пусто Дата и время - любые значения даты и времени заключаются в одинарные кавычки. Один из таких типов данных timestamp.
27
Какие бывают типы связей?
"один к одному" - строка в первой таблице связана с одной-единственной строкой во второй таблице "один ко многим" - каждая строка в одной таблице соответствует многим строкам в другой таблице "многие ко многим" - несколько строк одной таблице соответствуют нескольким строкам другой таблицы
28
СУБД - это?
Системы управления базами данных. Для того чтобы управлять базой данных, применяют специальные инструменты - СУБД. Это комплекс программ, который позволяет создать базу данных, пополнить ее новыми таблицами, отобразить содержимое, редактировать существующие таблицы.
29
Нереляционные базы данных(noSQL)-это?
NoSQL(not only SQL, «не только SQL») — это тип баз данных, для работы с которыми используется не только язык SQL, но и столбцовые, графовые, документоориентированные системы, а также системы модели «ключ — значение».
30
Распространенный типы базы данных? База данных это?
Это упорядоченный набор структурированной информации или данных, которые обычно хранятся в электронном виде в компьютерной системе. -Реляционные базы данных (RDBMS): Это один из наиболее широко используемых типов. Данные организованы в виде таблиц, связанных друг с другом ключами. Примеры: MySQL, PostgreSQL, Oracle. -Документоориентированные базы данных: Хранят данные в формате документов, таких как JSON или XML. Это удобно для хранения сложных структур данных. Примеры: MongoDB, Couchbase. -Ключ-значение хранилища: Хранят данные в виде простых ключей и связанных с ними значений. Они предоставляют быстрый доступ к данным, но обычно менее функциональны. Примеры: Redis, DynamoDB. -Сетевые базы данных: Данные представлены в виде сети узлов, связанных между собой. Это редкий тип, который используется в специфических случаях. Примеры: IMS, CODASYL. -Объектно-ориентированные базы данных: Хранят объекты программирования (классы, объекты) непосредственно в базе данных. Примеры: db4o, ObjectDB. Временные базы данных: -Специализированные базы данных для хранения временных данных, которые действительны в определенный период времени. Примеры: TimescaleDB, InfluxDB. -Колоночные базы данных: Данные хранятся колоночно (по столбцам), что обеспечивает высокую производительность при анализе больших объемов данных. Примеры: Amazon Redshift, ClickHouse.
31
Реляционные БД (RDBMS)
Данные организованы в таблицы с жестко определенными структурами, каждая таблица содержит ряды (строки) и колонки (поля). Используют язык SQL для выполнения запросов. Основаны на принципе таблиц, связанных друг с другом ключами. Схема данных четко определена с использованием сущностей (таблиц) и их атрибутов (столбцов). Поддерживают ACID (атомарность, согласованность, изолированность, долговечность) транзакций.
32
Нереляционные БД (NoSQL)
Не требуют строгой схемы или жестко определенных отношений между данными. Могут хранить данные в различных форматах, таких как документы, ключ-значение, столбцы или графы. Могут быть горизонтально масштабируемыми, позволяя легко добавлять новые сервера для увеличения производительности. Отсутствие жесткой схемы делает их гибкими для изменения структуры данных. Могут обеспечивать высокую производительность для определенных типов задач, таких как хранение и обработка больших объемов данных, веб-аналитика и др.
33
Типы данных
INTEGER- данные из целых чисел; FLOAT – данные из дробных чисел, так называемые данные с плавающей точкой; CHAR, VARCHAR – текстовые типы данных (символьные); LOGICAL – логический тип данных (да/нет); DATE/TIME – временные данные. Все данные VARCHAR при сравнении, выводе (не считая выборки данных при select) пишутся как ‘текст’
34
Что такое sql
От англ. Structured Query Language, «язык структурированных запросов». Это язык запросов, с помощью которого можно управлять данными в реляционной базе. Знание SQL позволяет получать, анализировать и манипулировать данными напрямую из баз данных, что может повысить эффективность тестирования, сократить время обнаружения проблем и улучшить качество конечного продукта. С помощью SQL-запросов можно: Создавать и удалять таблицы в реляционной БД Изменять данные в существующих таблицах Наполнять таблицы данными Доставать из таблиц необходимую информацию
35
Запрос - это?
Это команда к базе данных, которая написана в синтаксисе SQL. В запросе пишут, например, какие данные выбрать, как именно их обработать или изменить. Запрос в свою очередь формируется с помощью специальных слов или символов в синтаксисе SQL которые называются – оператор.
36
SELECT
Оператор SELECT является одним из основных операторов и почти всегда знакомство с SQL начинается именно с него. Его используют для получения выборки данных. В запросе два ключевых слова: SELECT и FROM — буквально «выбрать из». SELECT указывает, какие столбцы выбрать из таблицы базы данных. FROM (англ. «из») указывает, из какой таблицы взять данные. Таким образом синтаксис запроса с SELECT выглядит следующим образом: SELECT column_1 FROM table_1; SELECT * FROM table_1;
37
WHERE
Условие в SQL-запросе, которое покажет ограниченную выборку, прописывают командой WHERE (англ. «где»). Оператор проверяет, соответствует ли каждая строчка таблицы условию, и выбирает подходящие. Синтаксис запроса строится так же, как и SELECT, но добавляется WHERE: SELECT column_1 FROM table_1 WHERE column_2 = 'value' При выполнении подобного запроса в результате мы получим один столбец column_1 и все строки, где column_2 = 'value' _________________________ Порядок операторов строго определён. Они должны идти так: SELECT FROM WHERE Обозначить границы выборки в условиях помогают операторы сравнения: = (равно) <>, != (не равно) > (больше) < (меньше) >= (больше или равно) <= (меньше или равно)
38
DISTINCT
SQL оператор DISTINCT используется для удаления дубликатов из результирующего набора оператора SELECT. SELECT DISTINCT column_1 FROM table_1 При выполнении подобного запроса в результате мы получим только уникальные значения, содержащиеся в поле column_1 Если в операторе DISTINCT указано только одно выражение, запрос возвратит уникальные значения для этого выражения. Если в операторе DISTINCT указано несколько выражений, запрос извлекает уникальные комбинации для перечисленных выражений. В SQL оператор DISTINCT не игнорирует значения NULL. Поэтому при использовании DISTINCT в вашем операторе SQL ваш результирующий набор будет содержать значение NULL в качестве отдельного значения.
39
LIKE
LIKE в SQL выполняет функцию оператора, который помогает фильтровать результаты. Оператор LIKE (англ. «подобный») находит схожие значения в таблице. Искать можно не только целое слово, но и его часть. Синтаксис запроса: SELECT column_1, column_2 FROM table_1 WHERE column1 LIKE '%example____'; Перед оператором LIKE указывают столбец, в котором нужно искать, а после LIKE — шаблон для поиска — паттерн. Паттерн (маска) — это шаблон, который позволяет найти целую строку по подстроке. Паттерны построены из символов, которые помогают заменить значение. Например, знак нижнего подчёркивания _ в паттерне заменяет одно подстановочное значение, то есть 1 символ. Знак процента % заменяет любое количество символов. Существует два подстановочных знака, которые используются в сочетании с оператором LIKE SQL: % — знак процента представляет собой ноль, один или несколько символов; _ — подчёркивание представляет собой один символ.
40
INSERT
INSERT помогает добавить новую строку в таблицу (англ. «вводить»). В запросе два ключевых оператора: INSERT INTO и VALUES. INSERT INTO указывает, в какую таблицу добавить данные. VALUES перечисляет данные, которые нужно добавить. Синтаксис запроса следующий: INSERT INTO table_1 (column_1, column_2, column_3) VALUES (values_for_column_1, 'values_for_column_2', values_for_column_3) Название столбцов после названия таблицы перечислять не обязательно. Если после названия таблицы не перечислить названия столбцов, то обязательно необходимо в VALUES передавать данные в строгом порядке. Но также возможно и применение опционального параметра. Зачем применять опциональный параметр, если и без него всё отработало? Во-первых, можно указать столбцы в произвольном порядке. Переставив порядок столбцов, нужно переставить и порядок значений. Во-вторых, можно перечислить не все столбцы, а только «важные». Все неуказанные столбцы заполнятся значениями по умолчанию. Значения по умолчанию — это один из параметров таблицы, создаются вместе с ней.
41
UPDATE
Оператор UPDATE (англ. «обновить») меняет текущую информацию в таблице. В запросе три ключевых оператора: UPDATE, SET и WHERE. UPDATE указывает, в какой таблице изменить данные. SET указывает столбец, в котором необходимо поменять данные. WHERE выбирает строки, опционально. Синтаксис запроса: UPDATE table_1 SET column_2 = 'values' WHERE column_1 = 'values2'
42
DELETE
Оператор DELETE удаляет записи из таблицы (англ. «удалять»). В запросе два ключевых оператора: DELETE FROM и WHERE. DELETE FROM указывает, из какой таблицы удалить записи. WHERE выбирает строки, в которых нужно удалить данные. Синтаксис запроса: DELETE FROM table_1 WHERE column_1 = 'values1'
43
Основные места хранения информации
В рамках клиент-серверной архитектуры нужная для работы информация загружается с сервера и хранится на клиенте. - Кэш - Web storage: Local storage и Session storage - Cookies Не стоит путать эти хранилища Например, кэш нужен для оптимизации скорости загрузки файлов: проще один раз загрузить картинку, сохранить её в кэше и не скачивать её несколько раз. В то время как storage и куки для работы с авторизационными данными, маркетинговыми и т.д.
44
Как передаются куки
В своём браузере вы вводите URL-адрес сайта. Браузер отправляет соответствующий запрос на сайт. Браузер ищет на вашем устройстве файл cookie этого сайта. Если cookie присутствует, он отправляется вместе с URL-адресом на сервер сайта. Если файл не найден, то cookie не отправляется. Когда сервер сайта получает данные cookie, он может их использовать. При отсутствии cookie сервер идентифицирует пользователя как нового посетителя. ⚠️ Куки передаются в заголовках HTTP-запросов
45
Сравнение cookies, local storage и session storage
Для собеседования достаточно запомнить, что размер куки 4кб (точнее 4096 bytes), а остальные хранилища более 5мб.
46
LocalStorage
LocalStorage Это объект, хранящийся в window, который позволяет долговременно сохранять данные в браузере. Работает как хранилище данных в формате ключ-значение — при сохранении данных мы указываем имя поля, в которое должны быть сохранены данные, и затем используем это имя для их получения. Значения хранятся в виде строк. При попытке сохранения других типов данных, они будут приведены к строке. Не имеет ограничений по времени хранения, может быть очищен пользователем вручную или браузером при переполнении автоматически. Максимальный объем данных ограничен размером 5MB. SessionStorage Это объект, хранящийся в window, который позволяет сохранять данные в браузере на время сессии. Этот тип хранилища очень похож на localStorage и работает как хранилище данных в формате ключ-значение. При сохранении данных мы указываем имя поля, в которое должны быть сохранены данные, и затем используем это имя для их получения. Сессия страницы создаётся при открытии новой вкладки браузера. Сессия остаётся активной до тех пор, пока открыта вкладка, а состояние сессии сохраняется между перезагрузками. Открытие новой вкладки с таким же адресом приведёт к созданию новой сессии. Значения хранятся в виде строк. При попытке сохранения других типов данных, они будут приведены к строке. Максимальный объем данных ограничен размером 5MB.