gram news
Аватар канала BackendQuiz - задачи с собеседований по бэкенду

BackendQuiz - задачи с собеседований по бэкенду

@backendquiz

Задачки на алгоритмы, на понимание HTTP и сетевого стека вцелом, так же базы данных и хранилища. Подойдет как для начинающих так и для опытных. Языки и технологии: Java, PHP, Ruby, Javascript, SQL Контакт: @cyberJohnny

1,710подписчиков

Открыть канал

Последние посты

  • BackendQuiz - задачи с собеседований по бэкенду

    22 сент., 13:41

    🤔 Что такое клиент серверная архитектура?Клиент-серверная архитектура — это модель взаимодействия в сетях, где задачи распределяются между поставщиками ресурсов или услуг, называемыми серверами, и потребителями, называемыми клиентами. Это одна из самых распространенных архитектурных моделей в разработке программного обеспечения и сетевых приложений.🚩Основные компоненты клиент-серверной архитектуры🟠Клиент Это программа или устройство, которое инициирует запросы к серверу для доступа к ресурсу или услуге. Отправка запросов к серверу. Получение и отображение данных или выполнения действий на основе ответа от сервера.🟠Сервер Это программа или устройство, которое обрабатывает запросы от клиентов и предоставляет им необходимые ресурсы или услуги. Обработка запросов от клиентов. Управление доступом к ресурсам (например, базам данных, файлам, услугам). Возврат соответствующих данных
  • BackendQuiz - задачи с собеседований по бэкенду

    21 сент., 13:46

    🤔 Что такое миксины?Это один из способов повторного использования кода в объектно-ориентированном программировании. Они представляют собой классы или функции, которые предоставляют методы для других классов, без необходимости быть основой для этих классов. Миксины позволяют «подмешивать» функциональность в другие классы, обеспечивая гибкость и модульность кода.🚩Характеристики🟠Повторное использование кода Миксины позволяют избежать дублирования кода путем инкапсуляции общих методов и свойств, которые могут быть использованы в различных классах. 🟠Множественное наследование В языках, поддерживающих множественное наследование (например, Python), миксины могут быть использованы как базовые классы для других классов, предоставляя дополнительные методы и свойства. Это позволяет создавать классы, комбинируя несколько миксинов для расширения функциональности. 🟠Композиция В языках, где
  • BackendQuiz - задачи с собеседований по бэкенду

    20 сент., 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 сент., 13:53

    🤔 Что такое SOLID?Это акроним, представляющий пять основных принципов объектно-ориентированного программирования и дизайна, которые помогают разработчикам создавать более понятный, гибкий и поддерживаемый код. Эти принципы были предложены Робертом Мартином (известным также как Uncle Bob) и являются основополагающими в области программной инженерии.🟠Single Responsibility Principle (Принцип единственной ответственности) Этот принцип гласит, что у каждого класса должна быть только одна причина для изменения, то есть класс должен иметь только одну ответственность или задачу. Это помогает уменьшить сложность и повысить читаемость кода, делая его более управляемым и легким для поддержки. Когда класс выполняет лишь одну задачу, его легче тестировать и изменять без влияния на другие части системы.🟠Open/Closed Principle (Принцип открытости/закрытости) Программные сущности (классы,
  • BackendQuiz - задачи с собеседований по бэкенду

    18 сент., 13:57

    🤔 Что такое XML?XML (Extensible Markup Language) — это расширяемый язык разметки, используемый для представления структурированных данных в формате, который легко читается как человеком, так и машиной. XML разработан для хранения и обмена данными между различными системами и платформами.🚩Основные характеристики🟠Расширяемость XML позволяет создавать собственные теги, что делает его гибким для различных применений и доменов. 🟠Читаемость XML-документы легко читаются и понимаются человеком благодаря текстовому формату. 🟠Структурированность XML-документы имеют четкую иерархическую структуру, которая делает их удобными для хранения сложных данных. 🟠Платформенная независимость XML является текстовым форматом, что делает его совместимым с любыми операционными системами и приложениями.🚩Структура XML-документа🟠Пролог Опциональная часть, которая может содержать информацию о
  • BackendQuiz - задачи с собеседований по бэкенду

    17 сент., 13:59

    🤔 Что такое идемпотентность?Идемпотентность — это свойство операции, при котором повторное выполнение этой операции приводит к тому же результату, что и однократное выполнение. Это понятие часто используется в контексте HTTP методов, API запросов и транзакций в системах с распределенной архитектурой.🚩Основные аспекты идемпотентности🟠Идемпотентные операции GET: Получение ресурса. Повторный запрос не изменяет состояние ресурса. PUT: Обновление или создание ресурса. Повторный запрос с одинаковыми данными приводит к одному и тому же состоянию ресурса. DELETE: Удаление ресурса. Повторный запрос удаляет ресурс, если он существует, или не изменяет состояние, если ресурс уже удален.🟠Неидемпотентные операции POST: Создание нового ресурса. Повторный запрос приводит к созданию нового ресурса с новым идентификатором, что изменяет состояние системы.🚩Примеры идемпотентностиGET запрос
  • BackendQuiz - задачи с собеседований по бэкенду

    16 сент., 14:04

    🤔 Что такое cherrypick?Это команда в системе управления версиями Git, которая позволяет выбрать один или несколько конкретных коммитов из одной ветки и применить их в другую ветку. Это полезно, когда нужно перенести отдельные изменения без необходимости слияния целых веток.🚩Основные аспекты cherry-pick🟠Избирательное применение коммитов Позволяет выбрать конкретные изменения из истории одной ветки и перенести их в другую ветку. 🟠Избежание полного слияния В отличие от обычного слияния (merge), cherry-pick переносит только выбранные коммиты, а не всю историю изменений.🚩Как использовать cherry-pickОсновной синтаксис git cherry-pick🚩Пример использования🟠Переход на целевую ветку Переключитесь на ветку, в которую нужно перенести изменения.
  • BackendQuiz - задачи с собеседований по бэкенду

    15 сент., 14:07

    🤔 Почему синглтон называют антипаттерном?Синглтон считается антипаттерном в некоторых случаях и для некоторых разработчиков, несмотря на его популярность, из-за множества потенциальных проблем, которые он может вызвать.🟠Глобальное состояние Синглтон представляет собой глобальное состояние, которое может изменяться из любого места в программе. Это приводит к трудностям в отслеживании и понимании изменений состояния, что усложняет отладку и тестирование.🟠Нарушение принципов ООП Синглтон нарушает принцип единственной ответственности (SRP - Single Responsibility Principle), так как он сочетает в себе функциональность и управление своим экземпляром. Это также нарушает принцип инверсии зависимостей (DIP - Dependency Inversion Principle), так как клиенты напрямую зависят от конкретного класса.🟠Тестируемость Синглтоны усложняют написание модульных тестов, так как глобальное
  • BackendQuiz - задачи с собеседований по бэкенду

    14 сент., 14:11

    🤔 Что такое рекурсия?Это метод программирования, при котором функция вызывает саму себя для решения подзадачи, являющейся частью общей задачи. Такой подход применяется, когда проблему можно разделить на более мелкие аналогичные части.🚩Как это работает?При вызове рекурсивной функции создается новый контекст выполнения, в котором хранятся ее локальные переменные и текущий прогресс. Каждый новый вызов функции откладывается в стек вызовов, пока не будет достигнуто базовое условие (условие выхода), после чего начинается обратный процесс – возвращение значений и сворачивание стека.🚩Где используется рекурсия?🟠Алгоритмы обхода структур данных например, обход деревьев (DFS) или графов. 🟠Разбиение задач например, алгоритм "разделяй и властвуй" (быстрая сортировка, сортировка слиянием). 🟠Работа с комбинаторикой вычисление факториала, чисел Фибоначчи, генерация перестановок. 🟠Парсинг
  • BackendQuiz - задачи с собеседований по бэкенду

    13 сент., 14:14

    🤔 Что в твоем понимании значит правильный код?Это код, который не только выполняет поставленные задачи, но и соответствует ряду критериев, обеспечивающих его качество, читаемость, сопровождение и эффективность.🚩Характеристики🟠Читаемость Переменные, функции, классы и другие сущности должны иметь понятные и описательные имена, которые отражают их назначение. Следование стандартам кодирования и стиля, включая правильное форматирование, отступы и использование комментариев. Использование комментариев для объяснения сложных или неочевидных частей кода, но не для очевидных вещей, которые можно понять из названий переменных и функций.🟠Сопровождаемость Код должен быть разбит на модули, функции или классы с чётко определёнными задачами. Это упрощает его понимание, тестирование и изменение. Избегание дублирования кода через применение принципа DRY (Don't Repeat Yourself). Код должен
  • BackendQuiz - задачи с собеседований по бэкенду

    12 сент., 14:18

    🤔 Назови четыре уровня изоляции транзакций?🚩Уровни изоляции🟠Read Uncommitted (Чтение незафиксированных данных) Транзакция может читать данные, измененные другой транзакцией, даже если та еще не зафиксирована. Грязные чтения, неповторимые чтения и фантомные чтения. Редко используется на практике из-за высокого риска неконсистентных данных.🟠Read Committed (Чтение зафиксированных данных) Транзакция видит только те изменения, которые были зафиксированы другими транзакциями. Незафиксированные изменения не видны. Неповторимые чтения и фантомные чтения. Широко используется, обеспечивает баланс между производительностью и консистентностью данных.🟠Repeatable Read (Повторяемое чтение) Гарантирует, что если транзакция повторно читает данные, она получит те же самые значения, даже если другие транзакции изменяют данные. Фантомные чтения. Используется, когда требуется более высокий
  • BackendQuiz - задачи с собеседований по бэкенду

    11 сент., 14:22

    🤔 Что такое Scrum?Это методология управления проектами и одна из наиболее популярных реализаций Agile, предназначенная для гибкой разработки программного обеспечения. Scrum помогает командам работать более эффективно и адаптироваться к изменениям в требованиях и приоритетах. Основные концепции и элементы Scrum включают следующие компоненты:🚩Основные концепции🟠Инкрементная и итеративная разработка Scrum разбивает работу над проектом на небольшие итерации, называемые спринтами. Каждый спринт обычно длится от одной до четырех недель и заканчивается созданием работающего инкремента продукта.🟠Самоорганизующиеся команды Команды в Scrum сами управляют своей работой и распределяют задачи между участниками без вмешательства извне.🟠Роли в Scrum В Scrum выделяются три основных роли: Product Owner (Владелец продукта): отвечает за создание и управление бэклогом продукта, определение
  • BackendQuiz - задачи с собеседований по бэкенду

    10 сент., 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 сент., 14:30

    🤔 Почему возрастает интерес к функциональному программированию (FP)?Интерес к функциональному программированию (Functional Programming) растёт из-за изменений в требованиях к разработке современных приложений, таких как потребность в масштабируемости, управлении сложностью и обработке больших данных. Функциональное программирование предлагает преимущества, которые позволяют решать эти задачи более эффективно.🚩Основные причины роста интереса к FP🟠Эффективная обработка многопоточности и параллелизма Функциональное программирование делает акцент на чистых функциях, которые не имеют побочных эффектов. Это упрощает разработку многопоточных приложений, поскольку отсутствует необходимость синхронизации общего состояния. Языки, такие как Scala, Clojure, и Haskell, предоставляют мощные инструменты для работы с параллелизмом и потоками данных, что важно в эпоху многоядерных процессоров.
  • BackendQuiz - задачи с собеседований по бэкенду

    8 сент., 14:34

    🤔 В чём смысл инкапсуляции?Один из основных принципов объектно-ориентированного программирования (ООП), наряду с наследованием и полиморфизмом. Смысл инкапсуляции заключается в объединении данных и методов, работающих с этими данными, в одном объекте, а также в ограничении доступа к этим данным из внешнего мира.🚩Основные аспекты инкапсуляции🟠Сокрытие данных В инкапсуляции данные (свойства) объекта скрываются от внешнего доступа и защищаются от некорректных изменений. Это достигается путем использования модификаторов доступа (например, private, protected, public).🟠Контролируемый доступ Вместо прямого доступа к данным, предоставляются методы (геттеры и сеттеры) для чтения и изменения значений свойств. Это позволяет контролировать, каким образом данные могут быть изменены или получены.🟠Защита целостности данных Инкапсуляция помогает защитить внутреннее состояние объекта от
  • BackendQuiz - задачи с собеседований по бэкенду

    7 сент., 14:38

    🤔 Что такое ORM?Это технология, которая позволяет разработчикам взаимодействовать с реляционными базами данных, используя объектно-ориентированные парадигмы программирования. ORM автоматизирует преобразование данных между несовместимыми типами систем, таких как объекты в программном коде и таблицы в базе данных.🚩Основные особенности ORM🟠Абстракция базы данных ORM позволяет разработчикам работать с базой данных через объекты, не написав SQL-код напрямую. Это упрощает разработку и делает код более читабельным и поддерживаемым.🟠Маппинг классов и таблиц Классы в приложении сопоставляются с таблицами в базе данных, а свойства классов — со столбцами таблиц. Это позволяет автоматически преобразовывать данные при сохранении и извлечении объектов.🟠Автоматическое управление связями ORM поддерживает управление отношениями между объектами, такими как "один-к-одному", "один-ко-многим"
  • BackendQuiz - задачи с собеседований по бэкенду

    6 сент., 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 сент., 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 сент., 14:51

    🤔 Как "под капотом" работает аннотация transactional ?🟠Создание прокси Spring обнаруживает @Transactional и создает прокси для класса или метода. 🟠Перехват вызова Прокси перехватывает вызов метода, аннотированного @Transactional. 🟠Начало транзакции Прокси делегирует управление TransactionInterceptor, который начинает транзакцию через PlatformTransactionManager. 🟠Выполнение метода Исходный метод выполняется. 🟠Фиксация или откат транзакции Если метод завершился успешно, транзакция фиксируется (commit). Если метод выбросил исключение, транзакция откатывается (rollback).Ставь 👍 и 📚@backendquiz
  • BackendQuiz - задачи с собеседований по бэкенду

    3 сент., 14:55

    🤔 Что знаешь о хеш функции?Хеш-функция — это функция, которая принимает входные данные (ключ) и возвращает фиксированное число, называемое хешем (или хеш-значением). Основная цель хеш-функции — преобразовать произвольные данные в числовое значение определенного диапазона.🚩Основные свойства хеш-функции:🟠 Детерминированность: Хеш-функция всегда должна возвращать одно и то же хеш-значение для одного и того же входного значения. 🟠Равномерное распределение: Хорошая хеш-функция должна равномерно распределять хеш-значения по всему диапазону, чтобы минимизировать количество коллизий. 🟠Быстрота вычисления: Хеш-функция должна быть достаточно быстрой, чтобы не замедлять общую производительность алгоритмов, которые её используют. 🟠Минимизация коллизий: Коллизия возникает, когда два разных входных значения дают одно и то же хеш-значение. Хорошая хеш-функция должна минимизировать