Latest posts

BackendQuiz - задачи с собеседований по бэкенду
22 Sept, 13:41
🤔 Что такое клиент серверная архитектура?Клиент-серверная архитектура — это модель взаимодействия в сетях, где задачи распределяются между поставщиками ресурсов или услуг, называемыми серверами, и потребителями, называемыми клиентами. Это одна из самых распространенных архитектурных моделей в разработке программного обеспечения и сетевых приложений.🚩Основные компоненты клиент-серверной архитектуры🟠Клиент Это программа или устройство, которое инициирует запросы к серверу для доступа к ресурсу или услуге. Отправка запросов к серверу. Получение и отображение данных или выполнения действий на основе ответа от сервера.🟠Сервер Это программа или устройство, которое обрабатывает запросы от клиентов и предоставляет им необходимые ресурсы или услуги. Обработка запросов от клиентов. Управление доступом к ресурсам (например, базам данных, файлам, услугам). Возврат соответствующих данных
BackendQuiz - задачи с собеседований по бэкенду
21 Sept, 13:46
🤔 Что такое миксины?Это один из способов повторного использования кода в объектно-ориентированном программировании. Они представляют собой классы или функции, которые предоставляют методы для других классов, без необходимости быть основой для этих классов. Миксины позволяют «подмешивать» функциональность в другие классы, обеспечивая гибкость и модульность кода.🚩Характеристики🟠Повторное использование кода Миксины позволяют избежать дублирования кода путем инкапсуляции общих методов и свойств, которые могут быть использованы в различных классах. 🟠Множественное наследование В языках, поддерживающих множественное наследование (например, Python), миксины могут быть использованы как базовые классы для других классов, предоставляя дополнительные методы и свойства. Это позволяет создавать классы, комбинируя несколько миксинов для расширения функциональности. 🟠Композиция В языках, где
BackendQuiz - задачи с собеседований по бэкенду
20 Sept, 13:49
🤔 Как защитить куки от воровства и от подделки?🟠Использование HTTPS Передача данных через HTTPS (SSL/TLS) обеспечивает шифрование данных между клиентом и сервером, что предотвращает их перехват и чтение третьими лицами. Настройте ваш веб-сервер для использования HTTPS, получив и установив SSL/TLS сертификат.🟠Флаг Secure Куки передаются только по HTTPS-соединениям. Добавьте флаг Secure при установке куки. Set-Cookie: sessionId=abc123; Secure🟠Флаг HttpOnly Куки недоступны через JavaScript, что предотвращает их кражу с помощью XSS (Cross-Site Scripting) атак. Добавьте флаг HttpOnly при установке куки. Set-Cookie: sessionId=abc123; HttpOnly🟠Флаг SameSite Предотвращает отправку куки на другие сайты, что защищает от CSRF (Cross-Site Request Forgery) атак. Добавьте флаг SameSite при установке куки. Варианты включают Strict, Lax, и None. Set-Cookie: sessionId=abc123; SameSite=Strict
BackendQuiz - задачи с собеседований по бэкенду
19 Sept, 13:53
🤔 Что такое SOLID?Это акроним, представляющий пять основных принципов объектно-ориентированного программирования и дизайна, которые помогают разработчикам создавать более понятный, гибкий и поддерживаемый код. Эти принципы были предложены Робертом Мартином (известным также как Uncle Bob) и являются основополагающими в области программной инженерии.🟠Single Responsibility Principle (Принцип единственной ответственности) Этот принцип гласит, что у каждого класса должна быть только одна причина для изменения, то есть класс должен иметь только одну ответственность или задачу. Это помогает уменьшить сложность и повысить читаемость кода, делая его более управляемым и легким для поддержки. Когда класс выполняет лишь одну задачу, его легче тестировать и изменять без влияния на другие части системы.🟠Open/Closed Principle (Принцип открытости/закрытости) Программные сущности (классы,
BackendQuiz - задачи с собеседований по бэкенду
18 Sept, 13:57
🤔 Что такое XML?XML (Extensible Markup Language) — это расширяемый язык разметки, используемый для представления структурированных данных в формате, который легко читается как человеком, так и машиной. XML разработан для хранения и обмена данными между различными системами и платформами.🚩Основные характеристики🟠Расширяемость XML позволяет создавать собственные теги, что делает его гибким для различных применений и доменов. 🟠Читаемость XML-документы легко читаются и понимаются человеком благодаря текстовому формату. 🟠Структурированность XML-документы имеют четкую иерархическую структуру, которая делает их удобными для хранения сложных данных. 🟠Платформенная независимость XML является текстовым форматом, что делает его совместимым с любыми операционными системами и приложениями.🚩Структура XML-документа🟠Пролог Опциональная часть, которая может содержать информацию о
BackendQuiz - задачи с собеседований по бэкенду
17 Sept, 13:59
🤔 Что такое идемпотентность?Идемпотентность — это свойство операции, при котором повторное выполнение этой операции приводит к тому же результату, что и однократное выполнение. Это понятие часто используется в контексте HTTP методов, API запросов и транзакций в системах с распределенной архитектурой.🚩Основные аспекты идемпотентности🟠Идемпотентные операции GET: Получение ресурса. Повторный запрос не изменяет состояние ресурса. PUT: Обновление или создание ресурса. Повторный запрос с одинаковыми данными приводит к одному и тому же состоянию ресурса. DELETE: Удаление ресурса. Повторный запрос удаляет ресурс, если он существует, или не изменяет состояние, если ресурс уже удален.🟠Неидемпотентные операции POST: Создание нового ресурса. Повторный запрос приводит к созданию нового ресурса с новым идентификатором, что изменяет состояние системы.🚩Примеры идемпотентностиGET запрос
BackendQuiz - задачи с собеседований по бэкенду
16 Sept, 14:04
🤔 Что такое cherrypick?Это команда в системе управления версиями Git, которая позволяет выбрать один или несколько конкретных коммитов из одной ветки и применить их в другую ветку. Это полезно, когда нужно перенести отдельные изменения без необходимости слияния целых веток.🚩Основные аспекты cherry-pick🟠Избирательное применение коммитов Позволяет выбрать конкретные изменения из истории одной ветки и перенести их в другую ветку. 🟠Избежание полного слияния В отличие от обычного слияния (merge), cherry-pick переносит только выбранные коммиты, а не всю историю изменений.🚩Как использовать cherry-pickОсновной синтаксис git cherry-pick🚩Пример использования🟠Переход на целевую ветку Переключитесь на ветку, в которую нужно перенести изменения.
BackendQuiz - задачи с собеседований по бэкенду
15 Sept, 14:07
🤔 Почему синглтон называют антипаттерном?Синглтон считается антипаттерном в некоторых случаях и для некоторых разработчиков, несмотря на его популярность, из-за множества потенциальных проблем, которые он может вызвать.🟠Глобальное состояние Синглтон представляет собой глобальное состояние, которое может изменяться из любого места в программе. Это приводит к трудностям в отслеживании и понимании изменений состояния, что усложняет отладку и тестирование.🟠Нарушение принципов ООП Синглтон нарушает принцип единственной ответственности (SRP - Single Responsibility Principle), так как он сочетает в себе функциональность и управление своим экземпляром. Это также нарушает принцип инверсии зависимостей (DIP - Dependency Inversion Principle), так как клиенты напрямую зависят от конкретного класса.🟠Тестируемость Синглтоны усложняют написание модульных тестов, так как глобальное
BackendQuiz - задачи с собеседований по бэкенду
14 Sept, 14:11
🤔 Что такое рекурсия?Это метод программирования, при котором функция вызывает саму себя для решения подзадачи, являющейся частью общей задачи. Такой подход применяется, когда проблему можно разделить на более мелкие аналогичные части.🚩Как это работает?При вызове рекурсивной функции создается новый контекст выполнения, в котором хранятся ее локальные переменные и текущий прогресс. Каждый новый вызов функции откладывается в стек вызовов, пока не будет достигнуто базовое условие (условие выхода), после чего начинается обратный процесс – возвращение значений и сворачивание стека.🚩Где используется рекурсия?🟠Алгоритмы обхода структур данных например, обход деревьев (DFS) или графов. 🟠Разбиение задач например, алгоритм "разделяй и властвуй" (быстрая сортировка, сортировка слиянием). 🟠Работа с комбинаторикой вычисление факториала, чисел Фибоначчи, генерация перестановок. 🟠Парсинг
BackendQuiz - задачи с собеседований по бэкенду
13 Sept, 14:14
🤔 Что в твоем понимании значит правильный код?Это код, который не только выполняет поставленные задачи, но и соответствует ряду критериев, обеспечивающих его качество, читаемость, сопровождение и эффективность.🚩Характеристики🟠Читаемость Переменные, функции, классы и другие сущности должны иметь понятные и описательные имена, которые отражают их назначение. Следование стандартам кодирования и стиля, включая правильное форматирование, отступы и использование комментариев. Использование комментариев для объяснения сложных или неочевидных частей кода, но не для очевидных вещей, которые можно понять из названий переменных и функций.🟠Сопровождаемость Код должен быть разбит на модули, функции или классы с чётко определёнными задачами. Это упрощает его понимание, тестирование и изменение. Избегание дублирования кода через применение принципа DRY (Don't Repeat Yourself). Код должен
BackendQuiz - задачи с собеседований по бэкенду
12 Sept, 14:18
🤔 Назови четыре уровня изоляции транзакций?🚩Уровни изоляции🟠Read Uncommitted (Чтение незафиксированных данных) Транзакция может читать данные, измененные другой транзакцией, даже если та еще не зафиксирована. Грязные чтения, неповторимые чтения и фантомные чтения. Редко используется на практике из-за высокого риска неконсистентных данных.🟠Read Committed (Чтение зафиксированных данных) Транзакция видит только те изменения, которые были зафиксированы другими транзакциями. Незафиксированные изменения не видны. Неповторимые чтения и фантомные чтения. Широко используется, обеспечивает баланс между производительностью и консистентностью данных.🟠Repeatable Read (Повторяемое чтение) Гарантирует, что если транзакция повторно читает данные, она получит те же самые значения, даже если другие транзакции изменяют данные. Фантомные чтения. Используется, когда требуется более высокий
BackendQuiz - задачи с собеседований по бэкенду
11 Sept, 14:22
🤔 Что такое Scrum?Это методология управления проектами и одна из наиболее популярных реализаций Agile, предназначенная для гибкой разработки программного обеспечения. Scrum помогает командам работать более эффективно и адаптироваться к изменениям в требованиях и приоритетах. Основные концепции и элементы Scrum включают следующие компоненты:🚩Основные концепции🟠Инкрементная и итеративная разработка Scrum разбивает работу над проектом на небольшие итерации, называемые спринтами. Каждый спринт обычно длится от одной до четырех недель и заканчивается созданием работающего инкремента продукта.🟠Самоорганизующиеся команды Команды в Scrum сами управляют своей работой и распределяют задачи между участниками без вмешательства извне.🟠Роли в Scrum В Scrum выделяются три основных роли: Product Owner (Владелец продукта): отвечает за создание и управление бэклогом продукта, определение
BackendQuiz - задачи с собеседований по бэкенду
10 Sept, 14:26
🤔 В чем разница между Postgres и MySQL?Это реляционные системы управления базами данных (СУБД), но у них есть значительные различия, которые влияют на выбор той или иной системы в зависимости от проекта.🟠Архитектура и модель хранения данных PostgreSQL — объектно-реляционная СУБД (ORDBMS), поддерживающая расширяемость, сложные структуры данных и расширенные функции. Она использует MVCC (Multiversion Concurrency Control) для обработки транзакций. MySQL — классическая реляционная СУБД (RDBMS). По умолчанию использует механизм хранения InnoDB, который поддерживает ACID, но менее гибок, чем у PostgreSQL.🟠Язык SQL и расширенные функции PostgreSQL поддерживает более сложные SQL-конструкции, такие как CTE (Common Table Expressions), оконные функции, пользовательские типы данных и полнотекстовый поиск. MySQL менее гибок в плане сложных SQL-запросов, хотя в новых версиях поддержка CTE и
BackendQuiz - задачи с собеседований по бэкенду
9 Sept, 14:30
🤔 Почему возрастает интерес к функциональному программированию (FP)?Интерес к функциональному программированию (Functional Programming) растёт из-за изменений в требованиях к разработке современных приложений, таких как потребность в масштабируемости, управлении сложностью и обработке больших данных. Функциональное программирование предлагает преимущества, которые позволяют решать эти задачи более эффективно.🚩Основные причины роста интереса к FP🟠Эффективная обработка многопоточности и параллелизма Функциональное программирование делает акцент на чистых функциях, которые не имеют побочных эффектов. Это упрощает разработку многопоточных приложений, поскольку отсутствует необходимость синхронизации общего состояния. Языки, такие как Scala, Clojure, и Haskell, предоставляют мощные инструменты для работы с параллелизмом и потоками данных, что важно в эпоху многоядерных процессоров.
BackendQuiz - задачи с собеседований по бэкенду
8 Sept, 14:34
🤔 В чём смысл инкапсуляции?Один из основных принципов объектно-ориентированного программирования (ООП), наряду с наследованием и полиморфизмом. Смысл инкапсуляции заключается в объединении данных и методов, работающих с этими данными, в одном объекте, а также в ограничении доступа к этим данным из внешнего мира.🚩Основные аспекты инкапсуляции🟠Сокрытие данных В инкапсуляции данные (свойства) объекта скрываются от внешнего доступа и защищаются от некорректных изменений. Это достигается путем использования модификаторов доступа (например, private, protected, public).🟠Контролируемый доступ Вместо прямого доступа к данным, предоставляются методы (геттеры и сеттеры) для чтения и изменения значений свойств. Это позволяет контролировать, каким образом данные могут быть изменены или получены.🟠Защита целостности данных Инкапсуляция помогает защитить внутреннее состояние объекта от
BackendQuiz - задачи с собеседований по бэкенду
7 Sept, 14:38
🤔 Что такое ORM?Это технология, которая позволяет разработчикам взаимодействовать с реляционными базами данных, используя объектно-ориентированные парадигмы программирования. ORM автоматизирует преобразование данных между несовместимыми типами систем, таких как объекты в программном коде и таблицы в базе данных.🚩Основные особенности ORM🟠Абстракция базы данных ORM позволяет разработчикам работать с базой данных через объекты, не написав SQL-код напрямую. Это упрощает разработку и делает код более читабельным и поддерживаемым.🟠Маппинг классов и таблиц Классы в приложении сопоставляются с таблицами в базе данных, а свойства классов — со столбцами таблиц. Это позволяет автоматически преобразовывать данные при сохранении и извлечении объектов.🟠Автоматическое управление связями ORM поддерживает управление отношениями между объектами, такими как "один-к-одному", "один-ко-многим"
BackendQuiz - задачи с собеседований по бэкенду
6 Sept, 14:42
🤔 Какая разница у протоколов http и https ?Основное различие между протоколами HTTP (HyperText Transfer Protocol) и HTTPS (HyperText Transfer Protocol Secure) заключается в уровне безопасности, который они обеспечивают при передаче данных между клиентом (например, веб-браузером) и сервером.🚩Основные различия🟠Шифрование HTTP: Данные передаются в открытом виде, что делает их уязвимыми для перехвата и чтения злоумышленниками. HTTPS: Данные передаются в зашифрованном виде с использованием SSL/TLS (Secure Sockets Layer/Transport Layer Security). Это обеспечивает защиту данных от перехвата и несанкционированного доступа.🟠Аутентификация HTTP: Отсутствует механизм аутентификации, что затрудняет проверку подлинности веб-сайта. HTTPS: Использует сертификаты SSL/TLS, которые удостоверяют подлинность веб-сайта, подтверждая, что соединение установлено с тем сервером, с которым
BackendQuiz - задачи с собеседований по бэкенду
5 Sept, 14:47
🤔 Что такое блокировки (локи) в БД?Блокировки (локи) в базе данных - это механизмы, которые управляют доступом к данным, чтобы обеспечить их целостность и предотвратить конфликты при одновременном доступе нескольких транзакций.🚩Основные типы🟠Блокировки уровня таблицы (Table-Level Locks): ACCESS SHARE: Позволяет чтение данных, блокирует команды, изменяющие таблицу. ROW SHARE: Применяется для команд SELECT FOR UPDATE и SELECT FOR SHARE. ROW EXCLUSIVE: Используется при вставке, обновлении или удалении строк. SHARE UPDATE EXCLUSIVE: Используется для команд VACUUM. SHARE: Обеспечивает видимость текущего состояния данных (ANALYZE). SHARE ROW EXCLUSIVE: Используется для операций, требующих более строгого контроля (CREATE INDEX CONCURRENTLY). EXCLUSIVE: Требуется для команд, изменяющих структуру таблицы (ALTER TABLE). ACCESS EXCLUSIVE: Блокирует все команды, включая SELECT (DROP TABLE,
BackendQuiz - задачи с собеседований по бэкенду
4 Sept, 14:51
🤔 Как "под капотом" работает аннотация transactional ?🟠Создание прокси Spring обнаруживает @Transactional и создает прокси для класса или метода. 🟠Перехват вызова Прокси перехватывает вызов метода, аннотированного @Transactional. 🟠Начало транзакции Прокси делегирует управление TransactionInterceptor, который начинает транзакцию через PlatformTransactionManager. 🟠Выполнение метода Исходный метод выполняется. 🟠Фиксация или откат транзакции Если метод завершился успешно, транзакция фиксируется (commit). Если метод выбросил исключение, транзакция откатывается (rollback).Ставь 👍 и 📚@backendquiz
BackendQuiz - задачи с собеседований по бэкенду
3 Sept, 14:55
🤔 Что знаешь о хеш функции?Хеш-функция — это функция, которая принимает входные данные (ключ) и возвращает фиксированное число, называемое хешем (или хеш-значением). Основная цель хеш-функции — преобразовать произвольные данные в числовое значение определенного диапазона.🚩Основные свойства хеш-функции:🟠 Детерминированность: Хеш-функция всегда должна возвращать одно и то же хеш-значение для одного и того же входного значения. 🟠Равномерное распределение: Хорошая хеш-функция должна равномерно распределять хеш-значения по всему диапазону, чтобы минимизировать количество коллизий. 🟠Быстрота вычисления: Хеш-функция должна быть достаточно быстрой, чтобы не замедлять общую производительность алгоритмов, которые её используют. 🟠Минимизация коллизий: Коллизия возникает, когда два разных входных значения дают одно и то же хеш-значение. Хорошая хеш-функция должна минимизировать
Related Channels
Other channels in the same section of the catalogue.
