Backend
3.95K subscribers
38 photos
716 links
Комьюнити Backend программистов.
Python, Java, Golang, PHP, C#, C/C++, DevOps

Сайт easyoffer.ru
Реклама @easyoffer_adv
ВП @easyoffer_vp
Download Telegram
🤔 Что такое CD?

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

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🤔 Чем отличается RIGHT, LEFT, INNER, JOIN?

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

🟠INNER JOIN
Выбирает только те строки, у которых есть совпадения в обеих таблицах. Если в одной из таблиц нет соответствующего значения, строка не попадет в результат.

🟠LEFT JOIN (или LEFT OUTER JOIN)
Возвращает все строки из левой таблицы, а из правой – только совпадающие. Если в правой таблице нет совпадения, в итоговом наборе будут NULL-значения.

🟠RIGHT JOIN (или RIGHT OUTER JOIN)
Возвращает все строки из правой таблицы, а из левой – только совпадающие. Если в левой таблице нет соответствующего значения, в результате появятся NULL.

🟠FULL JOIN (или FULL OUTER JOIN)
Возвращает все строки из обеих таблиц. Если в одной из таблиц нет соответствующей записи, подставляются NULL.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Что такое MVVM?

Это архитектурный паттерн, разделяющий логику приложения на три слоя:
- Model – данные и бизнес-логика.
- View – пользовательский интерфейс.
- ViewModel – связывает данные и интерфейс.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
🤔 Какая разница между аутентификацией и авторизацией?

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

🚩Аутентификация (Authentication)

Она подтверждает, что пользователь является тем, за кого он себя выдает.

🟠Цель
Убедиться, что пользователь действительно тот, кем он себя называет.

🟠Методы аутентификации
Пароли: Пользователь вводит пароль, который проверяется на соответствие сохраненному в системе.
Биометрические данные: Отпечатки пальцев, распознавание лица, голосовая идентификация.
Токены: Аппаратные устройства или программные токены, генерирующие одноразовые коды.
Сертификаты: Использование цифровых сертификатов для проверки подлинности.
Многофакторная аутентификация (MFA): Комбинация нескольких методов (например, пароль + одноразовый код).

🟠Пример
Вход в систему с помощью имени пользователя и пароля.

🚩Авторизация (Authorization)

Она контролирует доступ к ресурсам и действиям на основе уровня доступа пользователя.

🟠Цель
Определить, какие действия пользователю разрешено выполнять и к каким ресурсам он имеет доступ.

🟠Методы авторизации
Ролевое управление доступом (RBAC): Назначение ролей пользователям, каждая из которых имеет определенные права доступа.
Управление доступом на основе атрибутов (ABAC): Использование атрибутов (например, время дня, местоположение) для определения прав доступа.
Списки контроля доступа (ACL): Определение конкретных прав доступа для каждого ресурса и пользователя.

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

🚩Основные различия

🟠Цель
Аутентификация: Подтвердить личность пользователя.
Авторизация: Определить, к каким ресурсам и действиям пользователь имеет доступ.

🟠Когда происходит
Аутентификация: Первым шагом перед предоставлением доступа к системе.
Авторизация: После аутентификации, для контроля доступа к ресурсам и действиям.

🟠Основные вопросы
Аутентификация: Кто вы?
Авторизация: Что вам разрешено делать?

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from easyoffer
💡 В EasyOffer 2.0 появится фильтрация вопросов по грейдам и типам интервью!

📊 Например, вот вероятности ТОП-30 вопросов, которые задают на HR-скрининге Python-разработчику уровня Middle/Senior. Данные основаны на 53 реальных интервью.

97% Какие у тебя зарплатные ожидания
73% Какие у тебя есть вопросы
44% Какие критерии при выборе будущей работы
41% Расскажи о себе
38% Почему ищешь работу
35% Расскажи про свой опыт
35% Расскажи про проект на предыдущей работе
32% Почему уволился с предыдущей работы
29% Где территориально сейчас живешь/находишься
23% Есть ли другие предложения по работе
17% Есть ли военный билет
17% Почему хочешь сменить работу
17% Как проводишь свободное время
17% Расскажи про задачи на предыдущей работе
17% Сколько коммерческого опыта работы с Python
17% С какими БД работал
14% Находишься ли в активном поиске работы
14% С каким стеком работаешь
14% Почему решил откликнуться на нашу вакансию
14% Какой текущий статус поиска работы
11% Почему решил стать программистом
11% С какими фреймворками работал
11% Какую зарплату получал на предыдущей работе
11% Работаешь ли в настоящий момент
11% На какой грейд себя оцениваешь
11% Как быстро можешь приступить к работе после получения офера
11% Расскажи про свои pet-проекты
8% Какие знаешь типы данных в Python
8% Что такое декоратор в Python
8% Что ищешь на новой работе

🚀 Скоро стартует краудфандинговая кампания, которая поможет ускорить разработку EasyOffer 2.0.
Первые спонсоры получат уникальные лимитированные награды!

📢 Если вам это интересно, подписывайтесь на канал 👉 этот телеграм канал
🤔 Что известно про уровни изоляции?

Уровни изоляции транзакций (READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE) предотвращают такие проблемы, как грязные чтения, фантомные записи и потерянные обновления.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 В чём различие между LeftJoin , RightJoin и InnerJoin ?

В SQL, JOIN операторы используются для объединения строк из двух или более таблиц на основе логического отношения между ними. Вот различия между LEFT JOIN, RIGHT JOIN и INNER JOIN:

🟠`INNER JOIN`
INNER JOIN возвращает только те строки, которые имеют совпадения в обеих таблицах, участвующих в соединении.
SELECT A.*, B.*
FROM TableA A
INNER JOIN TableB B ON A.id = B.id;


🟠`LEFT JOIN` (или `LEFT OUTER JOIN`)
LEFT JOIN возвращает все строки из левой таблицы и совпадающие строки из правой таблицы. Если совпадений нет, результат всё равно будет включать строки из левой таблицы с NULL значениями для столбцов из правой таблицы.
SELECT A.*, B.*
FROM TableA A
LEFT JOIN TableB B ON A.id = B.id;


🟠RIGHT JOIN (или RIGHT OUTER JOIN)
RIGHT JOIN возвращает все строки из правой таблицы и совпадающие строки из левой таблицы. Если совпадений нет, результат всё равно будет включать строки из правой таблицы с NULL значениями для столбцов из левой таблицы.
SELECT A.*, B.*
FROM TableA A
RIGHT JOIN TableB B ON A.id = B.id;


INNER JOIN
SELECT Employees.name, Departments.dept_name
FROM Employees
INNER JOIN Departments ON Employees.dept_id = Departments.dept_id;


LEFT JOIN
SELECT Employees.name, Departments.dept_name
FROM Employees
LEFT JOIN Departments ON Employees.dept_id = Departments.dept_id;


RIGHT JOIN
SELECT Employees.name, Departments.dept_name
FROM Employees
RIGHT JOIN Departments ON Employees.dept_id = Departments.dept_id;


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🤔 Какие есть паттерны в объектном проектировании?

Существуют три группы паттернов:
- Порождающие (Singleton, Factory).
- Структурные (Adapter, Proxy).
- Поведенческие (Observer, Strategy).


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🤔 Что такое Docker Compose?

Это инструмент, который позволяет определить и управлять многоконтейнерными Docker приложениями. С помощью Docker Compose можно описать конфигурацию всех сервисов вашего приложения в одном файле и затем легко запустить их вместе с помощью одной команды.

🚩Функции

🟠Определение многоконтейнерного приложения
Docker Compose использует YAML-файл (docker-compose.yml) для описания всех контейнеров (сервисов), которые составляют ваше приложение. В этом файле можно указать образы, настройки сети, монтируемые тома и переменные окружения.

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

🟠Запуск и остановка сервисов
С помощью простой команды docker-compose up можно запустить все контейнеры, указанные в docker-compose.yml. Команда docker-compose down останавливает и удаляет все контейнеры, сети и тома, созданные up.

🟠Поддержка масштабирования
Можно легко масштабировать сервисы (запускать несколько экземпляров одного контейнера) с помощью команды docker-compose up --scale.

🚩Пример использования

docker-compose.yml для веб-приложения, состоящего из веб-сервера и базы данных:
version: '3'
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
depends_on:
- db

db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
- db_data:/var/lib/mysql

volumes:
db_data:


🚩Команды

🟠docker-compose up
Создает и запускает все контейнеры, указанные в docker-compose.yml.
🟠docker-compose down
Останавливает и удаляет все контейнеры, сети и тома, созданные docker-compose up.
🟠docker-compose ps
Показывает статус запущенных контейнеров.
🟠docker-compose logs
Выводит логи всех контейнеров.
🟠docker-compose exec [service] [command]
Выполняет команду в запущенном контейнере.

🚩Плюсы

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

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🤔 Что известно о хеш-функции?

Хеш-функция преобразует данные в хеш-код фиксированной длины. Она используется для индексирования и проверки целостности данных. Эффективность хеш-функции влияет на производительность структур данных, таких как хеш-таблицы.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Что означает принцип open closed?

Принцип "открытости/закрытости" (Open/Closed Principle, OCP) — это один из пяти принципов SOLID, разработанных для создания устойчивого и легко поддерживаемого кода в объектно-ориентированном программировании. Принцип был предложен Бертраном Мейером в 1988 году и заключается в следующем:

🚩Что это означает

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

🟠Закрыты для модификации
Существующий код класса не должен изменяться. Это помогает избежать ошибок, которые могут возникнуть при изменении уже протестированного и проверенного кода.

Без соблюдения принципа OCP
public class Shape {
public void drawCircle() {
// рисуем круг
}

public void drawSquare() {
// рисуем квадрат
}
}

public class GraphicEditor {
private Shape shape;

public GraphicEditor(Shape shape) {
this.shape = shape;
}

public void draw(String shapeType) {
if (shapeType.equals("circle")) {
shape.drawCircle();
} else if (shapeType.equals("square")) {
shape.drawSquare();
}
}
}


С соблюдением принципа OCP
public interface Shape {
void draw();
}

public class Circle implements Shape {
@Override
public void draw() {
// рисуем круг
}
}

public class Square implements Shape {
@Override
public void draw() {
// рисуем квадрат
}
}

public class GraphicEditor {
private Shape shape;

public GraphicEditor(Shape shape) {
this.shape = shape;
}

public void draw() {
shape.draw();
}
}


🚩Плюсы

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

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

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

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🤔 Какие есть уровни изоляции транзакций?

Уровни изоляции:
- READ UNCOMMITTED – минимальная изоляция, допускаются грязные чтения.
- READ COMMITTED – предотвращает грязные чтения.
- REPEATABLE READ – защищает от повторного чтения.
- SERIALIZABLE – полная изоляция, максимальная защита.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Что можешь рассказать про HTML?

HTML (HyperText Markup Language) — это основной язык разметки, используемый для создания и структурирования веб-страниц. HTML позволяет создавать веб-страницы с текстом, изображениями, ссылками, формами и другими элементами, которые могут быть отображены в браузере. Он является фундаментом веб-технологий и работает в тандеме с CSS (Cascading Style Sheets) и JavaScript для создания полноценных веб-приложений.

🚩Основные аспекты HTML:

Структура документа: HTML-документ состоит из различных элементов, каждый из которых представлен тегами. Теги определяют, как различные части документа должны быть отображены в браузере.
🟠 <!DOCTYPE html>: Определяет тип документа и версию HTML.
🟠 <html>: Корневой элемент документа.
🟠<head>: Содержит метаданные о документе, такие как теги <title>, <meta>, стили и скрипты.
🟠 <body>: Содержит видимую часть документа, включая текст, изображения, ссылки и другие элементы.

Элементы и теги: HTML использует теги для определения различных элементов. Теги обычно идут в парах: открывающий тег <tag> и закрывающий тег </tag>. Некоторые теги являются самозакрывающимися, например, <img /> и <br />.
🟠<h1> - <h6>: Заголовки различных уровней.
🟠 <p>: Параграф текста.
🟠<a>: Гиперссылка.
🟠 <img>: Изображение.
🟠<ul>, <ol>, <li>: Ненумерованные и нумерованные списки и элементы списка.
🟠<table>, <tr>, <td>: Таблицы и их элементы.

Атрибуты: Теги могут иметь атрибуты, которые предоставляют дополнительную информацию о элементе. Атрибуты записываются внутри открывающего тега и имеют формат имя="значение".
🟠href для <a>: Указывает URL, на который ведёт ссылка.
🟠src для <img>: Указывает путь к изображению.
🟠alt для <img>: Описывает изображение для поисковых систем и пользователей с ограниченными возможностями.

Формы: HTML позволяет создавать интерактивные формы для сбора данных от пользователей. Формы могут содержать различные типы полей ввода, такие как текстовые поля, радиокнопки, чекбоксы и кнопки отправки.
🟠 <input>: Общее поле ввода. Атрибут type определяет тип ввода (например, text, password, email).
🟠<textarea>: Многострочное текстовое поле.
🟠 <select> и <option>: Выпадающий список.
🟠 <button>: Кнопка.

🚩Преимущества HTML:

🟠Простота использования: HTML легко изучить и использовать. Он не требует сложных инструментов для написания или редактирования.
🟠Совместимость: HTML поддерживается всеми веб-браузерами, что обеспечивает кроссплатформенность и широкую доступность.
🟠Расширяемость: HTML можно расширять с помощью CSS и JavaScript для создания более сложных и интерактивных веб-страниц.
🟠Стандартизация: HTML является стандартом, поддерживаемым W3C (World Wide Web Consortium), что обеспечивает его надежность и предсказуемость.

🚩Как используется HTML:

🟠Создание веб-страниц:
Основное применение HTML — это создание веб-страниц и веб-приложений. Каждый веб-сайт, который вы посещаете, использует HTML для структурирования своего контента.
🟠Электронные письма:
HTML также используется для создания форматированных электронных писем с текстом, изображениями и ссылками.
🟠Документация и справочные системы:
HTML используется для создания интерактивной документации и справочных систем, которые могут включать текст, ссылки, изображения и другие элементы.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Что такое HTTP?

Это протокол передачи гипертекста. Используется для обмена данными между клиентами и серверами в интернете. Версия HTTPS включает шифрование для безопасности.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Какие знаешь принципы ООП?

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

🟠Абстракция (Abstraction)
Абстракция заключается в выделении значимых характеристик объекта и игнорировании незначимых. Это позволяет создавать упрощенные модели реальных объектов.

🟠Инкапсуляция (Encapsulation)
Инкапсуляция скрывает внутренние детали объекта и позволяет взаимодействовать с объектом только через определенные методы. Это защищает данные от некорректного использования и облегчает изменение и поддержку кода.

🟠Наследование (Inheritance)
Наследование позволяет создавать новые классы на основе существующих. Новый класс (наследник) получает все свойства и методы родительского класса и может добавлять новые или изменять существующие.

🟠Полиморфизм (Polymorphism)
Полиморфизм позволяет объектам разных классов обрабатывать запросы одинаковым образом. Это достигается через переопределение методов в наследуемых классах и интерфейсы.

🟠Композиция (Composition)
Композиция предполагает создание объектов других классов внутри данного класса. Это позволяет использовать функциональность существующих классов, не создавая зависимостей через наследование.

🟠Агрегация (Aggregation)
Агрегация - это специальный вид композиции, который позволяет одному объекту быть частью другого с возможностью существования вне этого объекта. Агрегация описывает "имеет" отношения.

🚩Важность принципов ООП

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

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🤔 Какие существуют нормальные формы в SQL?

Нормальные формы (1NF, 2NF, 3NF, BCNF) устраняют избыточность и повышают целостность данных, минимизируя повторяющиеся данные в таблицах.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 В чем разница char и varchar в SQL ?

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

🚩`CHAR` (Fixed-length Character Data)

🟠Фиксированная длина
CHAR(n) хранит строки фиксированной длины n. Если строка короче, она дополняется пробелами до указанной длины.

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

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

🟠Пример использования
Подходит для хранения данных, которые всегда имеют одинаковую длину, например, коды стран, идентификаторы и т.д.

CREATE TABLE example (
fixed_char CHAR(10)
);


🚩`VARCHAR` (Variable-length Character Data)

🟠Переменная длина
VARCHAR(n) хранит строки переменной длины, где n — это максимальная длина строки. Реальная длина строки определяется по количеству символов в ней.

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

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

🟠Пример использования
Подходит для хранения данных, длина которых может варьироваться, например, имена, адреса, описания и т.д.

CREATE TABLE example (
variable_char VARCHAR(50)
);


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🤔 Чем отличается rebase от merge?

- merge объединяет изменения из одной ветки в другую, создавая новый коммит слияния. История остается неизменной, но ветка получает точку слияния.
- rebase переносит коммиты из одной ветки на другую, изменяя историю, но без создания дополнительного коммита.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🤔 Какие минусы есть у индекса?

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

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

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

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

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

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

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

Сложность при изменении структуры данных
Изменение структуры таблиц (например, добавление или удаление колонок) может потребовать перестройки существующих индексов, что может быть трудоемким процессом.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Как выбрать данные из двух таблиц без метода JOIN()?

Можно использовать:
- Подзапросы (SELECT ... WHERE ... IN) – выбираем данные из одной таблицы, используя фильтр из другой.
- Объединение (UNION) – соединение строк двух таблиц, если у них одинаковая структура.
- Перекрестное соединение (CROSS JOIN) – аналог JOIN, но без явного указания соединения.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM