uz
Feedback
Java | Вопросы собесов

Java | Вопросы собесов

Kanalga Telegram’da o‘tish

📈 Telegram kanali Java | Вопросы собесов analitikasi

Java | Вопросы собесов (@easy_java_ru) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 11 457 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 10 900-o'rinni va Rossiya mintaqasida 57 494-o'rinni egallagan.

📊 Auditoriya ko‘rsatkichlari va dinamika

невідомо sanasidan buyon loyiha tez o‘sib, 11 457 obunachiga ega bo‘ldi.

09 Iyun, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni 13 ga, so‘nggi 24 soatda esa -1 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.

  • Tasdiqlash holati: Tasdiqlanmagan
  • Jalb etish (ER): Auditoriya o‘rtacha 10.15% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 7.30% ini tashkil etuvchi reaksiyalarni to‘playdi.
  • Post qamrovi: Har bir post o‘rtacha 1 162 marta ko‘riladi; birinchi sutkada odatda 836 ta ko‘rish yig‘iladi.
  • Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 6 ta reaksiya keladi.
  • Tematik yo‘nalishlar: Kontent ставь, void, string, строка, static kabi asosiy mavzularga jamlangan.

📝 Tavsif va kontent siyosati

Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
Cайт easyoffer.ru Реклама @easyoffer_adv ВП @easyoffer_vp Тесты t.me/+icUwivvbGOkwNWRi Задачи t.me/+8eqUTboisnkyZjQy Вакансии t.me/+4pspF5nDjgM4MjQy

Yuqori yangilanish chastotasi (oxirgi ma’lumot 10 Iyun, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.

11 457
Obunachilar
-124 soatlar
+47 kunlar
+1330 kunlar
Postlar arxiv
Как синхронизировать команду? Пригласить в Битрикс24. Бесплатный онлайн-сервис для бизнеса и совместной работы. Мессенджер, CRM для продаж, Видеозвонки, Задачи, Календарь, Файлы и ИИ-помощник. Заберите бесплатно 10+ инструментов в одном сервисе. Зарегистрироваться #реклама 16+ office-online.bitrix24.ru О рекламодателе

🤔 Как обеспечить TLS для веб-приложения? 1. Настройте HTTPS: - Установите SSL-сертификат на сервер (например, через Let’s Encrypt). - Настройте сервер (Apache, Nginx) для принудительного использования HTTPS. 2. Редирект HTTP → HTTPS: - Настройте перенаправление на уровне сервера или используйте фильтры. 3. Установите безопасные атрибуты куки: - Используйте Secure и HttpOnly, чтобы защитить куки от утечки. 4. Шифрование данных: - Передавайте конфиденциальные данные только через HTTPS. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Ивент, спецпроект, реклама – где будем обсуждать? В Битрикс24 Коллабы!✨ Создайте пространство для совместных проектов с подря
Ивент, спецпроект, реклама – где будем обсуждать? В Битрикс24 Коллабы!✨ Создайте пространство для совместных проектов с подрядчиками в Битрикс24 Коллабы. Чаты, задачи, файлы и звонки — для продуктивной работы без заморочек. Посмотрите, как это работает. Смотреть #реклама 16+ collabs.bitrix24.ru О рекламодателе

🤔 В чем разница между Statement и PreparedStatement? Это два интерфейса в JDBC, которые используются для выполнения SQL-запросов к базе данных. Основные различия между ними касаются производительности, безопасности и удобства использования. 🚩Statement Statement используется для выполнения простых SQL-запросов. Запросы формируются и передаются в базу данных в виде строки. Подходит для простых запросов. Не оптимизирован для повторного выполнения. Каждый раз, когда запрос передается в базу данных, он компилируется и выполняется заново. Уязвим к SQL-инъекциям. Поскольку запрос формируется путем конкатенации строк, злоумышленники могут внедрять вредоносный SQL-код.
Statement stmt = connection.createStatement();
String query = "SELECT * FROM employees WHERE department = 'HR'";
ResultSet rs = stmt.executeQuery(query);

while (rs.next()) {
    int id = rs.getInt("id");
    String name = rs.getString("name");
    System.out.println("ID: " + id + ", Name: " + name);
}
stmt.close();
🟠PreparedStatement PreparedStatement используется для выполнения предварительно скомпилированных SQL-запросов. Это позволяет повысить производительность и безопасность. Оптимизирован для повторного выполнения. Запрос компилируется только один раз, а затем может многократно выполняться с разными параметрами, что повышает производительность. Защита от SQL-инъекций. Использует параметризованные запросы, которые помогают избежать уязвимостей, связанных с SQL-инъекциями. Удобство работы с параметрами. Позволяет устанавливать значения параметров с использованием методов setInt(), setString() и других.
String query = "SELECT * FROM employees WHERE department = ?";
PreparedStatement pstmt = connection.prepareStatement(query);
pstmt.setString(1, "HR");
ResultSet rs = pstmt.executeQuery();

while (rs.next()) {
    int id = rs.getInt("id");
    String name = rs.getString("name");
    System.out.println("ID: " + id + ", Name: " + name);
}
pstmt.close();
🚩Основные различия 🟠Производительность Statement: Каждый запрос компилируется заново, что снижает производительность при многократном выполнении одного и того же запроса. PreparedStatement: Запрос компилируется один раз и может многократно выполняться с разными параметрами, что повышает производительность. 🟠Безопасность Statement: Уязвим к SQL-инъекциям, поскольку запросы формируются путем конкатенации строк. PreparedStatement: Использует параметризованные запросы, что защищает от SQL-инъекций. 🟠Удобство использования Statement: Подходит для простых, одноразовых запросов. PreparedStatement: Удобен для многократного выполнения запросов с разными параметрами. 🟠Типы запросов Оба интерфейса могут выполнять запросы типа SELECT, INSERT, UPDATE, DELETE, но PreparedStatement более удобен для запросов с параметрами. Ставь 👍 и забирай 📚 Базу знаний

🎓 Буткэмп "Все как на работе" — Прокачай навыки до уровня коммерческого разработчика за месяц + неделя Мы предлагаем практич
🎓 Буткэмп "Все как на работе" — Прокачай навыки до уровня коммерческого разработчика за месяц + неделя Мы предлагаем практическое обучение, максимально приближенное к реальной работе в IT-компании. Подключайся к боевому проекту и изучай технологии, которые используют профессиональные разработчики. Почему этот практикум — уникальная возможность: ✔️ Боевой проект (готов на 60%) — настоящая разработка в команде из 7 программистов ✔️ Полный цикл разработки: 1) Постановка задач в Jira 2) Работа с Git и создание Merge Request 3) Прохождение код-ревью (кросс-ревью и финальное ревью от тимлида) 4) Внедрение CI/CD, тестирование и деплой ✔️ Технологии уровня рынка: Java 17, Spring Boot 3, Hibernate 6 JWT, Spring Security, PostgreSQL Docker, Liquibase, MapStruct JUnit5 / Mockito / Testcontainers Организация обучения: 📅 Длительность: 5 недель 👩‍💻 4 занятия в неделю (Zoom): 2 занятия — изучение технологий 2 занятия — проектная работа Стоимость: 💳 Полная стоимость: 70 000 ₽ 🔥 Ранняя цена до 15 февраля: 49 000 ₽ ✔️ Возможна оплата частями 📅 Старт курса: 9 марта 2025 📍 Осталось мест: 6 из 15 Что вы получите: 🔑 Навык коммерческой разработки с пониманием транзакций, паттернов и ключевых бизнес процессов 🚀 Готовность уверенно работать в профессиональной команде и писать код коммерческого уровня 🔗 Записаться на курс и устроиться мидлом: https://javaguru.by/bootcamp Подробнее в видео: https://rutube.ru/video/91642fe34b761f231bf0c2b63a027662/ #Java #ITОбучение #Практика Реклама: ИП Бруев Алексей Тимофеевич, ИНН: 381258351501

Целевые кибератаки 2024: аналитика и кейсы На вебинаре 27 февраля команда Solar 4RAYS подведет итоги по следам расследований целевых атак 2024 года Вы узнаете, как профессиональные хакеры атакуют российские компании и обходят системы безопасности, когда защита не соответствует уровню угроз. А также какие тактики используют киберпреступники, каков конечный импакт для систем ИБ от воздействия хакеров и как выстроить стратегию защиты. Что будет на вебинаре: - Какие инструменты противодействия актуальны в 2025 году; - Какие отрасли бизнеса подвергались атакам и с какой целью; - Какие интересные техники использовали злоумышленники: разбор кейсов расследований. Все примеры и рекомендации основаны на реальных расследованиях инцидентов в российских организациях. Зарегистрироваться #реклама 16+ rt-solar.ru О рекламодателе

🤔 Какой существует способ удостовериться, что сервлеты доступны только для пользователя с верной сессией? 1. Фильтры (Filters): - Создайте фильтр, который проверяет, существует ли активная сессия, и перенаправляет на страницу входа, если сессия недействительна. 2. Настройка безопасности в web.xml: - Используйте <security-constraint> и роли для ограничения доступа к сервлетам. 3. Проверка в коде: - Проверяйте сессию непосредственно в сервлете с помощью request.getSession(false). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Простая подработка от 2 ч. в день. Обучение бесплатно ИИ-Таргетолог Простой способ начать зарабатывать в интернете! от 30 - 1
Простая подработка от 2 ч. в день. Обучение бесплатно ИИ-Таргетолог Простой способ начать зарабатывать в интернете! от 30 - 150 000 рублей в месяц! Узнаете, как настраивать таргетированную рекламу с помощью нейросетей за 1 видео! Без траты долгих лет на обучение. Без мутных и незаконных схем. Узнать больше #реклама 16+ institute.yagla.ru О рекламодателе

🤔 Является ли пустым пул строк при старте jar файла или там есть какие-то значения? Пул строк в Java не является пустым при старте JAR файла. Он изначально содержит несколько предопределенных строковых литералов, которые JVM использует для своей внутренней работы, а также строковые литералы, используемые в загруженных классах и стандартных библиотеках. 🚩Что изначально содержится 🟠Предопределенные строковые литералы JVM и стандартные библиотеки Java используют различные строковые литералы для своей работы. Эти строки добавляются в пул строк при запуске JVM. Примеры таких строк включают имена основных классов и пакетов (например, "java/lang/Object", "java/lang/String"). 🟠Строковые литералы, используемые в загруженных классах Когда классы загружаются JVM, все строковые литералы, используемые в этих классах, добавляются в пул строк. Это включает строки, используемые в JAR файле, а также строки из стандартных библиотек Java, которые загружаются при старте. 🚩Пример строк в пуле при старте Для демонстрации этого можно написать простой код, который проверяет, присутствуют ли определенные строки в пуле строк при старте программы.
public class StringPoolDemo {
    public static void main(String[] args) {
        // Проверка стандартных строк, которые могут быть в пуле строк
        String str1 = "java";
        String str2 = "lang";
        String str3 = "Object";

        // Вывод строк
        System.out.println("str1: " + str1);
        System.out.println("str2: " + str2);
        System.out.println("str3: " + str3);

        // Проверка строк в пуле строк
        System.out.println("Is 'java' in pool: " + (str1 == "java"));
        System.out.println("Is 'lang' in pool: " + (str2 == "lang"));
        System.out.println("Is 'Object' in pool: " + (str3 == "Object"));
    }
}
🚩Что происходит при старте JVM 🟠Инициализация JVM При запуске JVM загружаются системные классы, такие как java.lang.Object, java.lang.String, java.lang.System, и другие. Строковые литералы, используемые в этих классах, добавляются в пул строк. 🟠Загрузка пользовательских классов Когда JVM загружает пользовательские классы из JAR файла, все строковые литералы в этих классах также добавляются в пул строк. Ставь 👍 и забирай 📚 Базу знаний

Все новости из мира программирования на этом канале @umnyiprogrammist Подписывайтесь, чтобы не упустите ничего важного Ставь
Все новости из мира программирования на этом канале @umnyiprogrammist Подписывайтесь, чтобы не упустите ничего важного Ставь 👍 и забирай 📚 Базу знаний

Ошибки в коде — ключ для атаки на веб-приложения Всего одна ошибка — и данные ваших клиентов могут оказаться в руках мошенников. Иногда достаточно одной неверной строчки кода, чтобы хакеры получили доступ к информации о пользователях. Чтобы этого не произошло, важно позаботиться о безопасности еще на начальном этапе разработки. Как это сделать, расскажут эксперты «Солара» и AppSec Solutions на вебинаре 18 февраля. Вы узнаете: ✅какие языки программирования наиболее уязвимы — исследования от AppSec Solutions, ✅как проверить веб-приложение и ПО на безопасность без навыка разработки, ✅какие новые возможности появились в Solar appScreener 3.15.0. Регистрируйтесь! Зарегистрироваться #реклама 16+ rt-solar.ru О рекламодателе

🤔 Как уведомить объект в сессии, что сессия недействительна или закончилась? 1. Через HttpSessionListener: - Реализуйте этот интерфейс для обработки событий завершения сессии (sessionDestroyed). 2. Через HttpSessionBindingListener: - Добавьте этот интерфейс в объект, который добавляется в сессию, чтобы он мог отреагировать на удаление. 3. События атрибутов: - Используйте HttpSessionAttributeListener для уведомления при удалении атрибута из сессии. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Онлайн-интенсив для ИТ-специалистов в Открытых школах Т1 Уже есть опыт работы в ИТ, но хочешь прокачать скилы и продвинуться в карьере? Тогда скорее залетай на бесплатный ИТ-интенсив в Открытых школах Т1. Открытые школы — это возможность усилить свои навыки и получить оффер в ИТ-холдинг Т1. И все это за месяц, онлайн и в удобное вечернее время. Что ты получишь? ✅ бесплатное обучение в гибком формате: по вечерам, онлайн, из любого города РФ и РБ. ✅ материалы от HR для прокачки резюме и подготовки к интервью в Т1. ✅ много практики и уникальный рыночный опыт. ✅ поддержку опытных преподавателей и карьерный фаст-трек до мидла в Т1 для лучших выпускников. ✅ реальный шанс получить оффер в Т1. Более 1000 специалистов уже прошли этот путь — теперь твоя очередь! Регистрация до 14 марта! Подать заявку #реклама 16+ t1.ru О рекламодателе

🤔 Роль `serialVersionUID` в сериализации Это уникальный идентификатор версии класса, который используется механизмом сериализации для проверки совместимости классов при десериализации объектов. Он играет ключевую роль в предотвращении ошибок при изменении классов, участвующих в сериализации. 🚩Почему `serialVersionUID` важен? 🟠Гарантия совместимости при десериализации Когда объект сериализуется (превращается в поток байтов), вместе с ним сохраняется и serialVersionUID. При десериализации JVM сравнивает serialVersionUID сохранённого объекта с serialVersionUID текущего класса. Если они не совпадают, выбрасывается исключение InvalidClassException, так как структура класса могла измениться. 🟠Предотвращение ошибок при изменениях класса Если класс изменяется (например, добавляется новое поле), но serialVersionUID остаётся неизменным, JVM считает, что класс всё ещё совместим с более старой версией, и десериализация проходит успешно. 🟠Явное управление версиями Если serialVersionUID не указан явно, JVM генерирует его автоматически на основе структуры класса. Это может привести к неожиданным проблемам, если класс изменится, так как автоматически вычисленный serialVersionUID изменится. 🚩Как использовать `serialVersionUID`?
import java.io.*;

class Person implements Serializable {
    private static final long serialVersionUID = 1L; // Версия класса
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{name='" + name + "', age=" + age + "}";
    }
}
🚩Что будет, если не указать `serialVersionUID`? Если не определить serialVersionUID, JVM сгенерирует его автоматически. Однако: Он будет зависеть от структуры класса. Малейшее изменение в коде (даже порядок методов) изменит serialVersionUID. Это может привести к InvalidClassException при десериализации. Ставь 👍 и забирай 📚 Базу знаний

Repost from easyoffer
Ищу работу пол года Практически под каждым постом в этом канале я вижу комментарии от людей, которые ищут работу по полгода. Это перерастает в обсуждение того, как нужно (или не нужно) искать работу, почему процесс найма сломан и как они откликались на фейковые вакансии. Честно говоря, искать работу полгода — это нонсенс. Очевидно, что человек делает что-то не так. Главная ошибка, которую совершают многие, — это создание иллюзии поиска работы. То есть человек вроде бы ищет работу, но делает это неэффективно, тратя время на нецелевые действия. Например: ➖ Просматривает вакансии перед откликом. ➖ Пытается понять, подходит ли он под вакансию. Если считает, что не подходит — не откликается. ➖ Пишет сопроводительные письма (иногда даже уникальные под каждую вакансию). ➖ Заполняет анкеты, проходит тесты. Все эти действия отнимают время, но не приводят к результату. Почему это не работает? HR-менеджер не может вручную отсмотреть 2000 откликов, оценить каждое резюме и прочитать сопроводительные письма. Поэтому компании используют ATS-системы (системы автоматического подбора), которые анализируют резюме и определяют процент его соответствия вакансии. Что делать, чтобы повысить шансы? 1️⃣ Добавить ключевые навыки в резюме — и в основной текст, и в теги. Возьмите их с easyoffer.ru 2️⃣ Убрать нерелевантный опыт, оставить только подходящий. 3️⃣ Оформить опыт так, чтобы он выглядел релевантным. Если у вас его нет, укажите проекты, стажировки или другой опыт, который можно представить как работу от 1 года. Если опыт слишком большой, сузьте его до 6 лет. 4️⃣ Откликаться на все вакансии без разбору. Если вы Junior, не ищите только стажер или Junior-вакансии — пробуйте везде. Не отказывайте себе сами, пусть это решит HR 5️⃣ Сделать резюме публичным, потому что HR-менеджеры часто ищут кандидатов не только среди откликов, но и в базе резюме. 6️⃣ Используйте ИИ по минимуму – ATS-системы считывают это и помечают "сгенерировано ИИ" ‼️ Главное правило: чем больше откликов — тем выше шанс получить оффер. Делайте резюме удобным для ATS-систем, и вас заметят. 1. Посмотрите видео о том как я вывел свою резюме в Топ1 на HH 2. Посмотрите видео как я нашел первую работу 3. Прочитайте этот кейс про оптимизацию резюме Если прям вообще тяжело. Создайте несколько разных резюме. Создайте 2, 3 да хоть 10 резюме. Настройте авто-отлики и ждите приглашения на собесы. Не нужно создавать иллюзию поиска работы, сделайте несколько простых и актуальных действий.

🤔 Что такое «сессия»? Это способ хранения информации о состоянии взаимодействия между клиентом и сервером. Она используется для идентификации пользователя, управления его действиями и передачи данных между запросами. Данные сессии хранятся на сервере, а идентификатор сессии передается клиенту через куки или URL. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как сконфигурировать параметры инициализации для JSP ? Параметры инициализации могут быть настроены через файл конфигурации web.xml или с помощью аннотаций в сервлетах. Могут быть настроены для всего веб-приложения или для конкретных сервлетов и страниц. 🚩Конфигурация параметров инициализации через web.xml 🟠Параметры инициализации для сервлетов и JSP страниц Можно настроить в разделе <servlet> элемента конфигурационного файла web.xml.
<web-app>
    <servlet>
        <servlet-name>ExampleServlet</servlet-name>
        <jsp-file>/example.jsp</jsp-file>
        <init-param>
            <param-name>param1</param-name>
            <param-value>value1</param-value>
        </init-param>
        <init-param>
            <param-name>param2</param-name>
            <param-value>value2</param-value>
        </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>ExampleServlet</servlet-name>
        <url-pattern>/example</url-pattern>
    </servlet-mapping>
</web-app>
Доступ к параметрам инициализации в JSP можно получить через объект config в JSP.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Initialization Parameters Example</title>
</head>
<body>
    <h1>Initialization Parameters Example</h1>
    
    <%
        // Получение параметров инициализации
        String param1 = config.getInitParameter("param1");
        String param2 = config.getInitParameter("param2");
    %>
    
    <p>Param1: <%= param1 %></p>
    <p>Param2: <%= param2 %></p>
</body>
</html>
🟠Параметры инициализации для всего приложения Можно настроить в разделе <context-param> элемента конфигурационного файла web.xml.
<web-app>
    <context-param>
        <param-name>globalParam1</param-name>
        <param-value>globalValue1</param-value>
    </context-param>
    <context-param>
        <param-name>globalParam2</param-name>
        <param-value>globalValue2</param-value>
    </context-param>
</web-app>
Доступ к параметрам инициализации для всего приложения можно получить через объект ServletContext.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Global Initialization Parameters Example</title>
</head>
<body>
    <h1>Global Initialization Parameters Example</h1>
    
    <%
        // Получение глобальных параметров инициализации
        String globalParam1 = application.getInitParameter("globalParam1");
        String globalParam2 = application.getInitParameter("globalParam2");
    %>
    
    <p>Global Param1: <%= globalParam1 %></p>
    <p>Global Param2: <%= globalParam2 %></p>
</body>
</html>
Ставь 👍 и забирай 📚 Базу знаний

🤔 Можно ли одновременно использовать в сервлете PrintWriter и ServletOutputStream? Нет, их одновременное использование в одном ответе запрещено. Это связано с тем, что использование одного из них фиксирует тип потока (символьный или байтовый), и дальнейшая попытка использовать другой поток вызовет исключение IllegalStateException. Вы должны выбрать только один подходящий поток для формирования ответа. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как работать на Spring? Spring – это мощный фреймворк для разработки Java-приложений, который упрощает работу с бэкендом, базами данных и веб-сервисами. 🚩Основные шаги для работы на Spring 1⃣Настроить проект 2⃣Создать контроллеры (обрабатывают HTTP-запросы). 3⃣Добавить сервисы (логика приложения). 4⃣Работать с базой данных (Spring Data JPA, Hibernate). 5⃣Запустить приложение и тестировать. 🚩Настройка проекта (Spring Boot) 🟠Создание проекта через Spring Initializr Самый быстрый способ – использовать [Spring Initializr](https://start.spring.io/). Заходим на [start.spring.io](https://start.spring.io/) Выбираем: Maven / Gradle Java 17+ Spring Boot 3+ Зависимости: Spring Web, Spring Data JPA, PostgreSQL/MySQL (если нужна БД) Скачиваем и открываем в IntelliJ IDEA или VS Code.
<dependencies>
    <!-- Spring Boot Web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    <!-- Spring Boot JPA + Hibernate -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    
    <!-- Драйвер для PostgreSQL -->
    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
    </dependency>
    
    <!-- Lombok (автоматически генерирует геттеры/сеттеры) -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <scope>provided</scope>
    </dependency>
</dependencies>
🚩Создание контроллера (REST API) Контроллер обрабатывает HTTP-запросы (GET, POST, PUT, DELETE).
@RestController
@RequestMapping("/hello")
public class HelloController {

    @GetMapping
    public String sayHello() {
        return "Привет, Spring!";
    }
}
Запрос в браузере
http://localhost:8080/hello
Ответ
Привет, Spring!
🚩Добавление бизнес-логики (Service Layer) Сервисы обрабатывают данные и реализуют бизнес-логику.
@Service
public class UserService {
    
    public String getUserGreeting(String name) {
        return "Привет, " + name + "!";
    }
}
Использование сервиса в контроллере
@RestController
@RequestMapping("/user")
public class UserController {
    
    private final UserService userService;

    @Autowired  // Внедрение зависимости
    public UserController(UserService userService) {
        this.userService = userService;
    }

    @GetMapping("/{name}")
    public String getUserGreeting(@PathVariable String name) {
        return userService.getUserGreeting(name);
    }
}
Запрос в браузере:
http://localhost:8080/user/Иван
Ответ
Привет, Иван!
Ставь 👍 и забирай 📚 Базу знаний