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

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

Открыть в Telegram

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

Больше
1 728
Подписчики
Нет данных24 часа
-67 дней
-830 день
Привлечение подписчиков
июнь '26
июнь '26
+8
в 0 каналах
май '26
+3
в 0 каналах
Get PRO
апрель '26
+3
в 0 каналах
Get PRO
март '26
+3
в 0 каналах
Get PRO
февраль '26
+13
в 0 каналах
Get PRO
январь '26
+4
в 0 каналах
Get PRO
декабрь '25
+7
в 0 каналах
Get PRO
ноябрь '25
+13
в 0 каналах
Get PRO
октябрь '25
+7
в 0 каналах
Get PRO
сентябрь '25
+4
в 0 каналах
Get PRO
август '25
+3
в 0 каналах
Get PRO
июль '25
+4
в 0 каналах
Get PRO
июнь '25
+9
в 0 каналах
Get PRO
май '25
+7
в 0 каналах
Get PRO
апрель '25
+9
в 0 каналах
Get PRO
март '25
+13
в 0 каналах
Get PRO
февраль '25
+10
в 0 каналах
Get PRO
январь '25
+10
в 0 каналах
Get PRO
декабрь '24
+1
в 0 каналах
Get PRO
ноябрь '24
+2
в 0 каналах
Get PRO
октябрь '24
+68
в 0 каналах
Get PRO
сентябрь '24
+8
в 0 каналах
Get PRO
август '24
+11
в 0 каналах
Get PRO
июль '24
+8
в 0 каналах
Get PRO
июнь '24
+8
в 0 каналах
Get PRO
май '24
+6
в 0 каналах
Get PRO
апрель '24
+11
в 0 каналах
Get PRO
март '24
+25
в 13 каналах
Get PRO
февраль '24
+16
в 0 каналах
Get PRO
январь '24
+30
в 4 каналах
Get PRO
декабрь '23
+31
в 3 каналах
Get PRO
ноябрь '23
+15
в 0 каналах
Get PRO
октябрь '23
+24
в 0 каналах
Get PRO
сентябрь '23
+41
в 0 каналах
Get PRO
август '23
+10
в 0 каналах
Get PRO
июль '23
+17
в 0 каналах
Get PRO
июнь '23
+18
в 0 каналах
Get PRO
май '23
+27
в 0 каналах
Get PRO
апрель '23
+12
в 0 каналах
Get PRO
март '23
+12
в 0 каналах
Get PRO
февраль '23
+16
в 0 каналах
Get PRO
январь '23
+14
в 0 каналах
Get PRO
декабрь '22
+13
в 0 каналах
Get PRO
ноябрь '22
+83
в 0 каналах
Get PRO
октябрь '22
+33
в 0 каналах
Get PRO
сентябрь '22
+26
в 0 каналах
Get PRO
август '22
+118
в 0 каналах
Get PRO
июль '22
+127
в 0 каналах
Get PRO
июнь '22
+39
в 0 каналах
Get PRO
май '22
+35
в 0 каналах
Get PRO
апрель '22
+35
в 0 каналах
Get PRO
март '22
+6
в 0 каналах
Get PRO
февраль '22
+23
в 0 каналах
Get PRO
январь '22
+23
в 0 каналах
Get PRO
декабрь '21
+24
в 0 каналах
Get PRO
ноябрь '21
+15
в 0 каналах
Get PRO
октябрь '21
+117
в 0 каналах
Get PRO
сентябрь '21
+100
в 0 каналах
Get PRO
август '21
+477
в 0 каналах
Get PRO
июль '21
+330
в 0 каналах
Get PRO
июнь '21
+311
в 0 каналах
Get PRO
май '21
+221
в 0 каналах
Get PRO
апрель '21
+203
в 0 каналах
Get PRO
март '21
+101
в 0 каналах
Get PRO
февраль '21
+67
в 0 каналах
Get PRO
январь '21
+36
в 0 каналах
Get PRO
декабрь '20
+1 942
в 0 каналах
Дата
Привлечение подписчиков
Упоминания
Каналы
30 июня0
29 июня0
28 июня0
27 июня0
26 июня0
25 июня0
24 июня0
23 июня+1
22 июня0
21 июня0
20 июня0
19 июня0
18 июня0
17 июня+1
16 июня0
15 июня0
14 июня0
13 июня0
12 июня+1
11 июня0
10 июня+1
09 июня0
08 июня+2
07 июня0
06 июня+1
05 июня0
04 июня0
03 июня0
02 июня0
01 июня+1
Посты канала
🤔 Как выбрать данные из двух таблиц без метода join()? Для выбора данных из двух таблиц без использования метода JOIN можно использовать подзапросы. Подзапросы позволяют выполнять вложенные запросы, где результат одного запроса используется в другом запросе. 🟠Использование подзапросов в `SELECT` Вы можете использовать подзапрос в операторе SELECT, чтобы извлечь данные из одной таблицы, используя значения из другой таблицы. SELECT o.order_id, o.order_date, (SELECT c.customer_name FROM customers c WHERE c.customer_id = o.customer_id) AS customer_name FROM orders o; 🟠Использование подзапросов в `WHERE` Вы можете использовать подзапрос в операторе WHERE, чтобы фильтровать данные на основе условий из другой таблицы. SELECT o.order_id, o.order_date FROM orders o WHERE o.customer_id IN (SELECT c.customer_id FROM customers c WHERE c.city = 'New York'); 🟠Использование подзапросов в `FROM` Вы можете использовать подзапрос в операторе FROM, чтобы создать временную таблицу и затем выбрать данные из нее. SELECT c.customer_name, latest_orders.order_id, latest_orders.order_date FROM customers c, (SELECT o.customer_id, o.order_id, o.order_date FROM orders o WHERE o.order_date = (SELECT MAX(order_date) FROM orders o2 WHERE o2.customer_id = o.customer_id) ) AS latest_orders WHERE c.customer_id = latest_orders.customer_id; 🟠Использование подзапросов с агрегатными функциями Подзапросы могут быть полезны при использовании агрегатных функций для получения обобщенной информации из одной таблицы, связанной с другой таблицей. SELECT c.customer_name, (SELECT COUNT(*) FROM orders o WHERE o.customer_id = c.customer_id) AS total_orders FROM customers c; 🟠Использование подзапросов с операторами EXISTS Оператор EXISTS проверяет наличие строк в подзапросе и возвращает TRUE, если подзапрос возвращает хотя бы одну строку. SELECT c.customer_name FROM customers c WHERE EXISTS (SELECT 1 FROM orders o WHERE o.customer_id = c.customer_id); Ставь 👍 и 📚 @backendquiz

2
🤔 Какая разница между аутентификацией и авторизацией? Аутентификация — это процесс проверки личности пользователя, чтобы убедиться, что он тот, за кого себя выдает (например, ввод логина и пароля). Авторизация — это процесс предоставления прав доступа к ресурсам после успешной аутентификации, определяющий, что пользователь может или не может делать в системе (например, доступ к определенным файлам или функциям). 🚩Аутентификация (Authentication) Она подтверждает, что пользователь является тем, за кого он себя выдает. 🟠Цель Убедиться, что пользователь действительно тот, кем он себя называет. 🟠Методы аутентификации Пароли: Пользователь вводит пароль, который проверяется на соответствие сохраненному в системе. Биометрические данные: Отпечатки пальцев, распознавание лица, голосовая идентификация. Токены: Аппаратные устройства или программные токены, генерирующие одноразовые коды. Сертификаты: Использование цифровых сертификатов для проверки подлинности. Многофакторная аутентификация (MFA): Комбинация нескольких методов (например, пароль + одноразовый код). 🟠Пример Вход в систему с помощью имени пользователя и пароля. 🚩Авторизация (Authorization) Она контролирует доступ к ресурсам и действиям на основе уровня доступа пользователя. 🟠Цель Определить, какие действия пользователю разрешено выполнять и к каким ресурсам он имеет доступ. 🟠Методы авторизации Ролевое управление доступом (RBAC): Назначение ролей пользователям, каждая из которых имеет определенные права доступа. Управление доступом на основе атрибутов (ABAC): Использование атрибутов (например, время дня, местоположение) для определения прав доступа. Списки контроля доступа (ACL): Определение конкретных прав доступа для каждого ресурса и пользователя. 🟠Пример После входа в систему (аутентификации) пользователь может иметь доступ только к определенным разделам или функциям приложения, в зависимости от его роли (авторизация). 🚩Основные различия 🟠Цель Аутентификация: Подтвердить личность пользователя. Авторизация: Определить, к каким ресурсам и действиям пользователь имеет доступ. 🟠Когда происходит Аутентификация: Первым шагом перед предоставлением доступа к системе. Авторизация: После аутентификации, для контроля доступа к ресурсам и действиям. 🟠Основные вопросы Аутентификация: Кто вы? Авторизация: Что вам разрешено делать? Ставь 👍 и 📚 @backendquiz
75
3
🤔 В чем суть принципа REST? Суть принципа REST (Representational State Transfer) заключается в том, чтобы предоставить простой, масштабируемый и гибкий способ взаимодействия между клиентом и сервером через веб. Основные принципы REST включают: 🟠Клиент-серверная архитектура Клиент и сервер разделены, что позволяет независимое развитие и масштабирование обеих сторон. Клиент делает запросы, а сервер обрабатывает их и возвращает ответы. 🟠Бесподсессионное взаимодействие (stateless) Каждый запрос от клиента к серверу должен содержать всю необходимую информацию для его обработки. Сервер не сохраняет состояние между запросами. 🟠Кешируемость Ответы на запросы могут быть помечены как кешируемые или не кешируемые. Это позволяет клиентам сохранять копии ответов и уменьшать количество запросов к серверу. 🟠Единый интерфейс (Uniform Interface) Определяет единые методы взаимодействия с ресурсами: GET: Получение ресурса. POST: Создание нового ресурса. PUT: Обновление ресурса. DELETE: Удаление ресурса. 🟠Многоуровневая система Архитектура может быть построена из нескольких слоев, что повышает гибкость и возможность кэширования. 🟠Представление ресурсов (Representations) Ресурсы могут представляться в различных форматах (например, JSON, XML). Клиент и сервер договариваются о формате через заголовки HTTP. Ставь 👍 и 📚 @backendquiz
83
4
🤔 Что такое транзакция? Транзакция в контексте баз данных - это последовательность операций, выполняемых как единое целое. Она должна быть полностью выполнена или полностью отменена, чтобы обеспечить целостность и консистентность данных. Основные свойства транзакции определяются набором правил, известных как ACID: 🚩ACID свойства 🟠Atomicity (Атомарность): Транзакция либо выполняется полностью, либо не выполняется вовсе. Если происходит ошибка, все операции транзакции откатываются. Например, в банковской системе перевод денег между счетами требует списания суммы с одного счета и зачисления на другой. Если одна из операций не выполнится, другая также должна быть отменена. 🟠Consistency (Консистентность): После завершения транзакции данные должны оставаться в согласованном состоянии, соответствующем всем определенным правилам и ограничениям. В инвентарной системе при добавлении нового товара должна проверяться допустимость всех значений, таких как положительное количество и правильная категория. 🟠Isolation (Изоляция): Выполнение транзакций изолировано друг от друга, так что параллельные транзакции не влияют на промежуточные состояния друг друга. Если две транзакции пытаются изменить одни и те же данные, одна из них должна завершиться до того, как другая начнет свои изменения, чтобы избежать конфликтов. 🟠Durability (Долговечность): После завершения транзакции её результаты сохраняются даже в случае сбоя системы. Если транзакция по записи данных в базу данных завершилась успешно, данные останутся сохраненными даже после перезагрузки сервера. 🚩Этапы выполнения транзакции 1⃣начало выполнения транзакции. 2⃣Выполняются все необходимые операции (вставка, обновление, удаление и т.д.). 3⃣Если все операции выполнены успешно, изменения фиксируются. 4⃣Если произошла ошибка, все изменения отменяются, возвращая базу данных в исходное состояние. 🚩Применение транзакций 🟠Обеспечивают целостность операций перевода денежных средств. 🟠Гарантируют корректное обновление информации о заказах и инвентаре. 🟠Обеспечивают корректность резервирования мест или ресурсов. Ставь 👍 и 📚 @backendquiz
85
5
🤔 Что такое полиморфизм? Это один из фундаментальных принципов объектно-ориентированного программирования (ООП), который позволяет объектам разного типа обрабатывать данные по-разному, используя один и тот же интерфейс. Основная идея полиморфизма заключается в том, что метод или функция могут принимать объекты разных классов и корректно выполнять для них свою работу, не зная их конкретного типа заранее. 🚩Основные виды полиморфизма 🟠Полиморфизм подтипов (ад-хок полиморфизм) Это форма полиморфизма, при которой функция или метод могут быть применены к аргументам разных типов. В ООП это достигается через наследование и интерфейсы. Классический пример – это использование базового класса или интерфейса, когда конкретная реализация определяется в дочерних классах. Пример: метод draw() может быть определен в интерфейсе Shape, а конкретная реализация этого метода – в классах Circle, Square, Triangle. 🟠Параметрический полиморфизм (универсальный полиморфизм) Это форма полиморфизма, при которой функции или методы могут работать с любыми типами данных. Обычно это реализуется через использование обобщенных типов (generics). Например, в языке Java или C# можно создать класс или метод, который работает с любым типом данных, используя синтаксис шаблонов (generics). 🟠Полиморфизм времени выполнения (динамический полиморфизм) Это форма полиморфизма, при которой метод конкретного объекта выбирается во время выполнения программы. Обычно это достигается с помощью виртуальных функций и механизма позднего связывания (late binding). Пример: вызов метода move() у объекта, который может быть как автомобилем, так и самолетом. Виртуальная функция обеспечивает вызов правильной реализации метода в зависимости от реального типа объекта. 🚩Зачем нужен полиморфизм 🟠Упрощение кода и повышение его гибкости Полиморфизм позволяет писать более общий и абстрактный код. Вместо работы с конкретными типами, программист может работать с более абстрактными интерфейсами или базовыми классами, что упрощает расширение системы и поддержку кода. 🟠Повышение уровня абстракции Полиморфизм позволяет программистам думать о более высокоуровневых концепциях, не углубляясь в детали реализации конкретных классов. Это делает код более понятным и легким для восприятия. 🟠Поддержка принципа "открытости/закрытости" (Open/Closed Principle) Полиморфизм помогает следовать этому принципу, который гласит, что "программные сущности (классы, модули, функции) должны быть открыты для расширения, но закрыты для изменения". То есть, для добавления новых функциональностей не нужно изменять существующий код, достаточно создать новый подкласс или реализовать новый интерфейс. 🟠Снижение дублирования кода: Благодаря полиморфизму, можно избежать дублирования кода, создавая более общие решения и переиспользуя их в разных частях программы. Ставь 👍 и 📚 @backendquiz
84
6
🤔 Что такое чистый код? Это понятие в программировании, обозначающее код, который легко читать, понимать и поддерживать. Принципы чистого кода помогают разработчикам создавать качественные и устойчивые к изменениям программы. Вот основные характеристики и принципы чистого кода: 🚩Основные характеристики чистого кода 🟠Читаемость Код должен быть понятным и легким для чтения другими разработчиками. Имена переменных, функций и классов должны быть осмысленными и описательными. 🟠Простота Код должен быть простым и ясным, избегая излишней сложности. Это делает его более понятным и легким в поддержке. 🟠Последовательность Следование единому стилю кодирования и соглашениям по наименованию. Это упрощает чтение и понимание кода. 🟠Минимум избыточности Избегание дублирования кода, что способствует его упрощению и уменьшению ошибок. 🟠Модульность Разделение кода на независимые модули или компоненты, которые можно разрабатывать, тестировать и поддерживать отдельно. 🟠Тестируемость Код должен быть легким для тестирования. Хорошо написанный код обычно легко покрыть юнит-тестами. 🚩Принципы чистого кода 🟠Именование Имена переменных, функций и классов должны быть осмысленными и описывать их назначение. int age; // Понятно, что переменная хранит возраст 🟠Функции Функции должны быть короткими и выполнять одну задачу. void calculateAndPrintTotal() { int total = calculateTotal(); printTotal(total); } 🟠Комментарии Комментарии должны объяснять, почему был написан определенный код, а не что он делает. Хорошо написанный код должен быть самодокументируемым. // Calculate the total price including tax int totalPrice = calculateTotalPrice(); 🟠Форматирование Единый стиль форматирования делает код более читабельным. Используйте отступы, пробелы и пустые строки для улучшения структуры кода. if (isValid) { process(); } else { handleError(); } 🟠Обработка ошибок Обработка ошибок должна быть понятной и не загромождать основной код. try { processFile(file); } catch (IOException e) { logError(e); } 🟠Магические числа и строки Избегайте использования магических чисел и строк. Вместо этого используйте константы с осмысленными именами. static final int MAX_USERS = 100; Ставь 👍 и 📚 @backendquiz
80
7
🤔 Для чего можно использовать celery? Celery поддерживает различные брокеры сообщений, включая RabbitMQ и Redis, для управления очередями задач. 🚩Основные возможности 🟠Асинхронное выполнение задач Позволяет запускать длительные операции в фоновом режиме, освобождая основной поток выполнения приложения для других задач. 🟠Планирование задач Поддержка периодических и плановых заданий, что позволяет автоматизировать повторяющиеся процессы. 🟠Управление распределёнными системами Способен управлять задачами в распределенной системе, используя несколько рабочих узлов (workers) для параллельного выполнения задач. 🟠Масштабируемость Легко масштабируется, добавляя больше рабочих узлов для увеличения производительности. 🚩Основные задачи 🟠Фоновые задачи Отправка электронной почты: Асинхронная отправка писем для улучшения производительности веб-приложений. Обработка данных: Включает такие задачи, как анализ данных, обработка изображений или видео, преобразование форматов и другие ресурсоемкие операции. Взаимодействие с API: Выполнение запросов к внешним API, которое может быть долгим или неэффективным при синхронном выполнении. 🟠Периодические задачи Обновление данных: Регулярное обновление кэшей, индексов поиска или других данных в базе данных. Мониторинг и сбор метрик: Периодический сбор и обработка метрик для мониторинга состояния системы. Очистка данных: Периодическая очистка устаревших или временных данных из базы данных. 🟠Уведомления и оповещения Уведомления в реальном времени: Отправка уведомлений пользователям через различные каналы (email, SMS, push-уведомления). Событийное оповещение: Реагирование на события и триггеры, такие как изменения в базе данных или действия пользователя. 🟠Работа с большими данными и машинным обучением Параллельная обработка данных: Выполнение параллельных вычислений для обработки больших объемов данных. Машинное обучение: Асинхронное обучение моделей и выполнение предсказаний на больших наборах данных. 🟠Веб-скрейпинг и интеграция данных Веб-скрейпинг: Асинхронный сбор данных с веб-сайтов для агрегации или анализа. Интеграция данных: Асинхронная интеграция данных из различных источников и API. 🚩Примеры использования 🟠Веб-приложения Улучшение производительности веб-приложений за счет выполнения долгих операций в фоне. 🟠Электронная коммерция Обработка заказов, обновление статусов заказов и управление инвентарем в фоновом режиме. 🟠Социальные сети Обработка пользовательских данных, отправка уведомлений и обновление лент новостей. 🟠Научные исследования Выполнение сложных вычислений и обработка больших объемов данных в распределенной среде. Ставь 👍 и 📚 @backendquiz
86
8
Осталось 3 часа до конца акции: «Пожизненный PRO тариф — по цене 1 года» Поиск работы отнимает силы, время и веру в себя, но
Осталось 3 часа до конца акции: «Пожизненный PRO тариф — по цене 1 года» Поиск работы отнимает силы, время и веру в себя, но не у тех кто использует easyoffer PRO. Успей сделать самую выгодную инвестицию в развитие своей карьеры. Акция закончится уже сегодня 23 июня 23:59 по мск: 👉 https://easyoffer.ru/pro @backendquiz
29
9
🤔 Что тебе известно про нереляционные базы данных? Представляют собой системы управления базами данных, которые не используют традиционную реляционную модель. Эти базы данных разработаны для работы с большими объемами данных, высокой скоростью обработки запросов и гибкостью в моделировании данных. 🚩Основные типы нереляционных баз данных: 🟠Документные базы данных Хранят данные в формате документов (например, JSON, BSON, XML). Например, MongoDB, CouchDB. Подходит для приложений, работающих с данными, которые могут иметь гибкую и изменяющуюся структуру. 🟠Колонковые базы данных Хранят данные в виде столбцов, а не строк. Это позволяет эффективно обрабатывать большие объемы данных и выполнять аналитические запросы. Например Apache Cassandra, HBase. Аналитика, обработка больших данных, телекоммуникации. 🟠Ключ-значение базы данных Хранят данные в виде пар "ключ-значение". Очень проста по своей природе и обеспечивает быструю работу. Например Redis, Riak, DynamoDB. Кеширование, сессии пользователей, реализация простых хранилищ данных. 🟠Графовые базы данных Хранят данные в виде графов с узлами, ребрами и свойствами. Отлично подходят для моделирования связей и взаимосвязей между данными. Например Neo4j, OrientDB. Социальные сети, рекомендательные системы, управление сетями. 🚩Плюсы ➕Гибкость модели данных: Легко справляются с изменяющимися и разнообразными данными. ➕Масштабируемость: Хорошо масштабируются как горизонтально (добавление новых серверов), так и вертикально (увеличение мощности серверов). ➕Производительность: Обеспечивают высокую производительность для специфичных типов операций и больших объемов данных. ➕Обработка больших данных: Способны эффективно обрабатывать большие объемы данных и быстро реагировать на запросы. 🚩Минусы ➖Отсутствие стандартов: Разные системы могут использовать разные модели и API, что может усложнять переход между ними. ➖Ограниченная поддержка сложных запросов: Могут не поддерживать сложные SQL-запросы и транзакции, привычные для реляционных баз данных. ➖Консистентность данных: Некоторые NoSQL базы данных жертвуют строгой консистентностью ради доступности и масштабируемости (в соответствии с теоремой CAP). 🚩Примеры использования: 🟠Социальные сети Графовые базы данных для моделирования взаимоотношений между пользователями. 🟠Интернет-магазины Документные базы данных для хранения информации о продуктах с различной структурой данных. 🟠Аналитические платформы Колонковые базы данных для выполнения сложных аналитических запросов на больших объемах данных. 🟠Кеширование Ключ-значение базы данных для быстрого доступа к часто используемым данным. Ставь 👍 и 📚 @backendquiz
97
10
Последний день акции: «Пожизненный PRO тариф — по цене 1 года» 🚀 PRO включает: – Полный доступ ко всем грейдам и профессиям
Последний день акции: «Пожизненный PRO тариф — по цене 1 года» 🚀 PRO включает: – Полный доступ ко всем грейдам и профессиям – База live-coding задач и вопросов из технических собеседований с вероятностью их встречи – Примеры лучших ответов от Senior разработчиков – 1100+ записи реальных собеседований, в том числе в топовые компании (Сбер, Авито, Яндекс, WB, OZON, МТС и др.) – База 400+ тестовых заданий от компаний. – Автоотклики на вакансии в хедхантер – Аналитика ТОП-требований из вакансий для лучшего написания резюме и прохождения ATS систем рекрутеров – Генератор уникального резюме и CV под каждую вакансию – Тренажеры подготовки к собеседованию: «Реальное собеседование» и «Проработка вопросов» по методике интервальных повторений (как Anki) – (скоро) Агрегатор вакансий – (скоро) Сообщество Акция закончится уже сегодня 23 июня 23:59 по мск: 👉 https://easyoffer.ru/pro @backendquiz
37
11
‍Пожизненный PRO тариф — по цене 1 года. Покупаешь один раз — пользуешься всю жизнь: 👉 https://easyoffer.ru/pro 🚀 PRO-доступ закроет 99% проблем на пути к офферу: 1. Полный доступ ко всем грейдам и профессиям. Не важно, Junior вы или Senior, Тестировщик, Разработчик, Проджект — вы получите материалы под ваш текущий уровень и цели, без ограничений. 2. База live-coding задач и вопросов с реальных собесов с уникальной системой вероятности их встречи. Вы будете готовиться не вслепую, а точечно по тем темам, которые спрашивают чаще всего. 3. Эталонные ответы от Senior-разработчиков. Никакой воды и догадок — только четкие, структурированные решения, за которые дают «зеленый свет» к офферу 4. 1100+ записей реальных собеседований (включая топы: Сбер, Авито, Яндекс, WB, OZON, МТС). Вы увидите всё изнутри: как спрашивают, как отвечают сильные кандидаты и на каких ошибках проваливаются 80% проходящих. 5. База 400+ тестовых заданий. Если вы еще студент, то практикуйтесь на решении задач, которые помогут попасть на собес 6. Автоотклики на Хедхантере — пока вы спите, ваше резюме летит к рекрутерам автоматически. Это экономия сотен часов ручного кликанья. 7. Аналитика ТОП-требований из вакансий. Мы парсим рынок и показываем, какие скиллы сейчас в цене. Это позволит вам точечно апгрейдить резюме и проходить суровые ATS-фильтры (которые отсеивают до 75% резюме еще до просмотра рекрутером). 8. Генератор уникального резюме и CV под каждую вакансию. Забудьте про «универсальное» резюме — нейросеть адаптирует ваш опыт под конкретную позицию за минуту, повышая шансы на приглашение в разы. 9. Тренажеры подготовки к собеседованию: «Реальное собеседование» — сценарий вопросов из реальных интервью «Проработка вопросов» — флеш карточки с вопросами/ответами по методике интервальных повторений (как Anki) 10. (Скоро) Агрегатор вакансий — все вакансии из HH, Telegram, LinkedIn и других площадок в одной ленте. 11. (Скоро) Закрытое комьюнити — нетворкинг и помощь в сложных вопросах от таких же целеустремленных айтишников. Завтра последний день акции: 👉 https://easyoffer.ru/pro @backendquiz
63
12
🤔 Какие знаешь принципы ООП? Объектно-ориентированное программирование (ООП) базируется на нескольких ключевых принципах, которые помогают создавать гибкие, понятные и легко поддерживаемые программы. 🟠Абстракция (Abstraction) Абстракция заключается в выделении значимых характеристик объекта и игнорировании незначимых. Это позволяет создавать упрощенные модели реальных объектов. 🟠Инкапсуляция (Encapsulation) Инкапсуляция скрывает внутренние детали объекта и позволяет взаимодействовать с объектом только через определенные методы. Это защищает данные от некорректного использования и облегчает изменение и поддержку кода. 🟠Наследование (Inheritance) Наследование позволяет создавать новые классы на основе существующих. Новый класс (наследник) получает все свойства и методы родительского класса и может добавлять новые или изменять существующие. 🟠Полиморфизм (Polymorphism) Полиморфизм позволяет объектам разных классов обрабатывать запросы одинаковым образом. Это достигается через переопределение методов в наследуемых классах и интерфейсы. 🟠Композиция (Composition) Композиция предполагает создание объектов других классов внутри данного класса. Это позволяет использовать функциональность существующих классов, не создавая зависимостей через наследование. 🟠Агрегация (Aggregation) Агрегация - это специальный вид композиции, который позволяет одному объекту быть частью другого с возможностью существования вне этого объекта. Агрегация описывает "имеет" отношения. 🚩Важность принципов ООП 🟠Упрощение разработки Принципы ООП позволяют создавать более понятный и структурированный код. 🟠Повторное использование кода Наследование и полиморфизм способствуют использованию уже написанных классов в новых контекстах. 🟠Поддерживаемость кода Инкапсуляция и абстракция делают код легче в сопровождении и модификации. Ставь 👍 и 📚 @backendquiz
97
13
🤔 Почему NULL часто называют «Ошибкой на миллиард долларов»? Термин «Ошибка на миллиард долларов» (The Billion Dollar Mistake) был введён Тони Хоаром (Tony Hoare), создателем NULL, который в 2009 году на конференции признался, что введение NULL было его крупнейшей ошибкой. Название связано с тем, что NULL стал причиной множества багов, сбоев в программах и уязвимостей, что привело к огромным финансовым потерям в индустрии. 🚩Какие проблемы вызывает `NULL`? 🟠NullPointerException (NPE) и аварийные сбои - Попытка вызвать метод у NULL приводит к ошибке NullPointerException в Java, NullReferenceException в C# и аналогичным сбоям в других языках. - Это одна из самых распространённых ошибок в программировании. 🟠Дополнительные проверки и сложность кода - Из-за NULL приходится постоянно писать проверки if (x != null), что раздувает код и делает его менее читаемым. - Если забыть такую проверку, можно получить неожиданный сбой. 🟠Слабая типизация и отсутствие явности - NULL можно передавать в любую функцию или объект, что ломает строгую типизацию. - Код становится менее предсказуемым. 🟠Проблемы с базами данных - NULL в SQL ведёт себя неинтуитивно (NULL != NULL, сравнение может давать UNKNOWN). - Может приводить к некорректным вычислениям в агрегатных функциях. 🟠Уязвимости в безопасности - Некоторые атаки используют NULL для взлома систем (например, null dereference в C/C++ может привести к DoS-атаке). - NULL может скрывать ошибки и приводить к утечке данных. 🚩Какие альтернативы `NULL`? 🟠Optional / Maybe (Java, Kotlin, Haskell, Rust) - Использование обёрток вроде Optional (Java) или Option (Rust) позволяет явно указывать возможность отсутствия значения. 🟠Исключения вместо `NULL` (C# и Java) - Вместо возврата NULL можно выбрасывать осмысленные исключения (IllegalArgumentException, NotFoundException). 🟠Специальные значения по умолчанию - Вместо NULL можно использовать дефолтные объекты (EmptyList, GuestUser и т. д.). 🟠Типы-юнит (Tagged Union) в функциональных языках - Например, в Haskell и Rust применяют Either, Option, что делает обработку NULL-подобных случаев более явной. Ставь 👍 и 📚 @backendquiz
108
14
🤔 Что такое HTTP и HTTPs? HTTP (HyperText Transfer Protocol) — это протокол прикладного уровня для передачи гипертекста между клиентом (например, веб-браузером) и сервером. Он является основой для обмена данными в веб-пространстве и используется для передачи HTML-документов, изображений, видео и других ресурсов. 🚩Как работает HTTP 🟠Запрос-ответ HTTP работает по модели запрос-ответ, где клиент отправляет запрос серверу, а сервер возвращает ответ. Запросы и ответы состоят из трех основных частей: Стартовая строка: Определяет метод запроса (например, GET, POST) и URI (Uniform Resource Identifier). Заголовки: Несут метаданные, такие как тип контента, длина контента, информация о сессии и т. д. Тело: Содержит данные, отправляемые в запросе или ответе (например, данные формы, JSON). 🟠Методы HTTP Основные методы включают: GET: Запрашивает данные с сервера. POST: Отправляет данные на сервер для создания или обновления ресурса. PUT: Обновляет существующий ресурс. DELETE: Удаляет ресурс. HEAD: Запрашивает только заголовки без тела ответа. OPTIONS: Запрашивает информацию о возможностях сервера для определенного ресурса. 🟠Статусы ответа Сервер отвечает статусными кодами, которые показывают результат обработки запроса. Например: 200 OK: Запрос успешно обработан. 404 Not Found: Ресурс не найден. 500 Internal Server Error: Внутренняя ошибка сервера. 🚩HTTPS (HyperText Transfer Protocol Secure) HTTPS (HyperText Transfer Protocol Secure) — это расширение HTTP, которое использует шифрование для защиты данных, передаваемых между клиентом и сервером. HTTPS обеспечивает конфиденциальность, целостность и аутентификацию данных. 🚩Как работает HTTPS 🟠Шифрование HTTPS использует протоколы SSL (Secure Sockets Layer) или его более современную версию TLS (Transport Layer Security) для шифрования данных. Это предотвращает перехват и чтение данных третьими лицами. 🟠Аутентификация Серверы, использующие HTTPS, имеют цифровые сертификаты, которые проверяются клиентом. Это гарантирует, что клиент общается с подлинным сервером, а не с мошенником. 🟠Целостность данных Шифрование также обеспечивает целостность данных, предотвращая их изменение или подмену во время передачи. 🚩Как установить HTTPS 1⃣Получение сертификата Для использования HTTPS владелец сайта должен получить цифровой сертификат от доверенного центра сертификации (CA). 2⃣Настройка сервера Установите сертификат на сервере и настройте его для использования HTTPS. 3⃣Перенаправление трафика Обеспечьте перенаправление HTTP-трафика на HTTPS для повышения безопасности. 🚩Преимущества HTTPS ➕Безопасность Защищает данные от перехвата и изменения. ➕Доверие пользователей Пользователи больше доверяют сайтам с HTTPS, что может повысить их активность и лояльность. ➕SEO Поисковые системы, такие как Google, предпочитают сайты с HTTPS, что может улучшить их ранжирование в результатах поиска. Ставь 👍 и 📚 @backendquiz
92
15
Привет, ребята! У нас для вас отличные новости — на easyoffer вышло сразу несколько крупных обновлений: 1. Автоотклики на HeadHunter Снова работают в полную силу — можно смело возвращаться к активному поиску. 2. Новый раздел «Резюмейкер» Теперь вы можете быстро создавать уникальные резюме, адаптированные под каждую вакансию, и сразу добавлять сопроводительное письмо. Это заметно повышает шансы получить приглашение на собеседование. 3. База вопросов стала чище Мы навели порядок и удалили около 30% дубликатов. Ориентироваться стало проще. –––––––––––––––––– 🔥 Акция в честь обновления Пожизненный тариф easyoffer PRO — по цене одного года. Успейте до 23 июня: 👉 https://easyoffer.ru/pro (https://easyoffer.ru/pro?utm_source=tg&utm_medium=my_group&utm_campaign=pro-forever) –––––––––––––––––– Что дальше? В ближайшие пару недель добавим ещё два раздела: 1. Сообщество с чатами по всем профессиональным направлениям. 2. Агрегатор вакансий, чтобы поиск работы стал ещё удобнее. @backendquiz
89
16
🤔 В чем разница между Scrum и Kanban ? Это два популярных метода управления проектами и процессами, используемых в Agile-разработке. Оба они помогают командам улучшать производительность и управление работой, но имеют различные подходы и принципы. Вот основные различия между Scrum и Kanban: 🚩Scrum 🟠Структура Фиксированные спринты: Работа делится на временные интервалы, называемые спринтами, обычно длительностью 2-4 недели. Роли: В Scrum определены конкретные роли, такие как Scrum-мастер, Product Owner и команда разработки. 🟠Процессы и церемонии Планирование спринта: Каждому спринту предшествует планирование, где команда определяет, какие задачи будут выполнены. Ежедневные Scrum-встречи: Короткие ежедневные встречи (Stand-ups) для обсуждения прогресса, препятствий и планов на день. Ретроспектива спринта: В конце каждого спринта команда анализирует, что прошло хорошо, что можно улучшить, и как это сделать. 🟠Артефакты Product Backlog: Список всех задач и требований для продукта. Sprint Backlog: Список задач, выбранных для выполнения в текущем спринте. Burn-down Chart: График, показывающий оставшееся количество работы в спринте. 🟠Изменения в ходе спринта Изменения в задачах не допускаются после начала спринта. Все задачи должны быть зафиксированы до начала спринта. 🚩Kanban 🟠Структура Непрерывный поток работы: Kanban не имеет фиксированных временных интервалов или спринтов. Работа выполняется непрерывно. Роли: В Kanban нет строгих определений ролей. Команда может включать любые роли по мере необходимости. 🟠Процессы и церемонии Визуализация работы: Kanban использует доску с колонками для визуализации рабочего процесса (например, "To Do", "In Progress", "Done"). Лимиты на количество задач в работе (WIP): Ограничивает количество задач, которые могут находиться в определенных колонках одновременно, чтобы предотвратить перегрузку и улучшить поток работы. 🟠Артефакты Kanban-доска: Основной инструмент для визуализации работы и контроля за её состоянием. Карточки задач: Представляют отдельные задачи на Kanban-доске. 🟠Изменения в ходе работы Изменения допускаются в любой момент времени. Задачи могут добавляться, изменяться и удаляться по мере необходимости. Ставь 👍 и 📚 @backendquiz
98
17
Как правильно работать с резервным копированием в облаке? 25 июня приглашаем на бесплатный вебинар от MWS Cloud Platform всех
Как правильно работать с резервным копированием в облаке? 25 июня приглашаем на бесплатный вебинар от MWS Cloud Platform всех, кто работает с облаками. ⚫️Развеем мифы, разберём лучшие современные подходы и инструменты. ⚫️Обсудим интеграцию в процессы, консистентность, точечное восстановление и безопасность. Поговорим о плюсах нативных облачных инструментов. ⚫️Проведём демо в MWS Cloud Platform и ответим на ваши вопросы. Зарегистрируйтесь, чтобы не пропустить! ⏰ 25 июня в 14:00 (мск) ✅ Зарегистрироваться (https://mws.ru/events/tech-webinar25062026/?utm_source=tg_seeding&utm_medium=cpp&utm_campaign=webinar_reserv_copy&utm_content=_&erid=2VfnxvuSQre) @backendquiz
79
18
🤔 Что такое транзакция в БД ? Это последовательность одной или нескольких операций над базой данных, которая выполняется как единое целое. Транзакции обеспечивают, что все операции в рамках транзакции либо успешно выполняются, либо полностью отменяются, что гарантирует целостность данных. 🚩Основные свойства транзакций (ACID) 🟠Atomicity (Атомарность) Транзакция должна быть либо выполнена полностью, либо не выполнена вовсе. Если какая-то часть транзакции не удается, вся транзакция откатывается (roll back) к исходному состоянию. 🟠Consistency (Согласованность) Транзакция переводит базу данных из одного согласованного состояния в другое. Это означает, что после завершения транзакции все правила целостности данных должны быть соблюдены. 🟠Isolation (Изоляция) Результаты выполнения транзакции не должны быть видны другим параллельно выполняющимся транзакциям до тех пор, пока данная транзакция не завершится. Это предотвращает влияние одной транзакции на другую. 🟠Durability (Устойчивость) После успешного завершения транзакции (коммита) ее результаты должны быть зафиксированы в базе данных и сохранены, даже если произойдет сбой системы. 🚩Пример работы с транзакциями На SQL BEGIN TRANSACTION; -- Пример операций внутри транзакции UPDATE accounts SET balance = balance - 100 WHERE account_id = 1; UPDATE accounts SET balance = balance + 100 WHERE account_id = 2; -- Если все операции прошли успешно COMMIT; -- Если произошла ошибка ROLLBACK; Пример на Java (использование JDBC) Connection connection = null; try { connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "user", "password"); connection.setAutoCommit(false); // Начало транзакции // Пример операций внутри транзакции PreparedStatement pstmt1 = connection.prepareStatement("UPDATE accounts SET balance = balance - 100 WHERE account_id = ?"); pstmt1.setInt(1, 1); pstmt1.executeUpdate(); PreparedStatement pstmt2 = connection.prepareStatement("UPDATE accounts SET balance = balance + 100 WHERE account_id = ?"); pstmt2.setInt(1, 2); pstmt2.executeUpdate(); connection.commit(); // Коммит транзакции } catch (SQLException e) { if (connection != null) { try { connection.rollback(); // Откат транзакции при ошибке } catch (SQLException ex) { ex.printStackTrace(); } } e.printStackTrace(); } finally { if (connection != null) { try { connection.close(); } catch (SQLException ex) { ex.printStackTrace(); } } } Ставь 👍 и 📚 @backendquiz
97
19
🤔 Объяснение легаси-кода для непрофессионалов? Это термин, которым называют старый код или программное обеспечение, созданное много лет назад, но до сих пор используемое. Важно понимать, что "легаси" не обязательно означает "плохой". Этот код может быть ценным и выполнять критически важные задачи, но у него есть свои особенности и проблемы, которые делают работу с ним сложной. 🚩Почему появляется легаси-код? 🟠Возраст программного обеспечения. Программы, написанные 5, 10 или даже 20 лет назад, продолжают работать, хотя технологии уже изменились. 🟠Отсутствие документации. Разработчики, написавшие код, могли уйти из компании, не оставив подробных объяснений. 🟠Эволюция требований. Код, который был написан для одних задач, со временем начинает использоваться для других, часто без переработки. 🟠Изменения технологий. Код создавался на старых версиях языков программирования, библиотек или платформ, которые сегодня уже не поддерживаются. 🚩Проблемы легаси-кода 🟠Плохая читаемость Код может быть сложно понять, особенно если он написан без соблюдения современных стандартов или правил. 🟠Отсутствие тестов Старый код часто создавался без автоматизированных тестов, что усложняет внесение изменений. 🟠Зависимость от устаревших технологий Код может использовать библиотеки или платформы, которые больше не обновляются или не поддерживаются. 🟠Сложность изменений Даже небольшие правки могут вызвать неожиданные ошибки, поскольку никто не знает всех последствий изменений. 🚩Зачем сохранять легаси-код? 🟠Работает — не трогай Если код выполняет свою задачу, компании часто решают оставить его как есть. 🟠Критически важные задачи Легаси-код может управлять банковскими системами, производственными линиями или другими системами, от которых зависит бизнес. 🟠Высокая стоимость переписывания Полная переработка кода может занять годы и потребовать огромных ресурсов. 🚩Что с ним делать? 🟠Поддерживать Исправлять ошибки и улучшать работу системы по мере необходимости. 🟠Обновлять Переходить на современные технологии частями, чтобы минимизировать риски. 🟠Переписывать Создать новую систему, если старая больше не отвечает требованиям, но это требует времени и ресурсов. Ставь 👍 и 📚 @backendquiz
115
20
🤔 В чем разница get от post? Методы GET и POST являются двумя наиболее часто используемыми HTTP-методами для передачи данных между клиентом и сервером. Они выполняют разные задачи и имеют свои особенности и случаи применения. 🚩GET 🟠Цель использования Метод GET используется для получения данных с сервера. Это наиболее часто используемый метод для запросов, которые не изменяют состояние сервера. 🟠Передача данных Данные передаются через URL в строке запроса (query string). Это делает данные видимыми и ограничивает их размер. 🟠Кэширование Запросы GET могут кэшироваться браузерами, серверами и прокси-серверами. Это позволяет ускорить повторные запросы и снизить нагрузку на сервер. 🟠Идемпотентность GET-запросы являются идемпотентными, что означает, что повторное выполнение одного и того же GET-запроса приведет к одному и тому же результату, не изменяя состояние ресурса. 🟠Безопасность GET-запросы считаются безопасными, так как они не изменяют данные на сервере. 🚩POST 🟠Цель использования Метод POST используется для отправки данных на сервер, чтобы создать или изменить ресурсы. Это подходящий метод для операций, которые изменяют состояние сервера. 🟠Передача данных Данные передаются в теле запроса. Это позволяет отправлять большие объемы данных и сохранять конфиденциальность данных, поскольку они не видны в URL. 🟠Кэширование Запросы POST не кэшируются браузерами и прокси-серверами по умолчанию. Это обеспечивает, что данные будут отправлены на сервер каждый раз при выполнении запроса. 🟠Идемпотентность POST-запросы не являются идемпотентными. Каждый новый POST-запрос может привести к созданию новых ресурсов или изменению существующих, что делает их выполнение неоднозначным при повторении. 🟠Безопасность POST-запросы более безопасны в плане передачи данных, так как информация передается в теле запроса и не видна в URL. 🚩Примеры использования 🟠GET Получение информации о пользователе, загрузка страницы или получение данных с API. 🟠POST Отправка формы с данными регистрации, добавление нового товара в базу данных, обновление информации о пользователе. Ставь 👍 и 📚 @backendquiz
116