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

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

الذهاب إلى القناة على Telegram

📈 نظرة تحليلية على قناة تيليجرام Java | Вопросы собесов

تُعد قناة Java | Вопросы собесов (@easy_java_ru) في القطاع اللغوي الروسية لاعباً نشطاً. يضم المجتمع حالياً 11 457 مشتركاً، محتلاً المرتبة 10 900 في فئة التكنولوجيات والتطبيقات والمرتبة 57 494 في منطقة روسيا.

📊 مؤشرات الجمهور والحراك

منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 11 457 مشتركاً.

بحسب آخر البيانات بتاريخ 09 يونيو, 2026، تحافظ القناة على نشاط مستقر. خلال آخر 30 يوماً تغيّر عدد الأعضاء بمقدار 13، وفي آخر 24 ساعة بمقدار -1، مع بقاء الوصول العام مرتفعاً.

  • حالة التحقق: غير موثّقة
  • معدل التفاعل (ER): يبلغ متوسط تفاعل الجمهور 10.15‎%. وخلال أول 24 ساعة من النشر يحصد المحتوى عادةً 7.30‎% من ردود الفعل نسبةً إلى إجمالي المشتركين.
  • وصول المنشورات: يحصل كل منشور على متوسط 1 162 مشاهدة. وخلال اليوم الأول يجمع عادةً 836 مشاهدة.
  • التفاعلات والاستجابة: يتفاعل الجمهور بانتظام؛ متوسط التفاعلات لكل منشور يبلغ 6.
  • الاهتمامات الموضوعية: يركز المحتوى على مواضيع رئيسية مثل ставь, void, string, строка, static.

📝 الوصف وسياسة المحتوى

يصف المؤلف القناة بأنها مساحة للتعبير عن الآراء الذاتية:
Cайт easyoffer.ru Реклама @easyoffer_adv ВП @easyoffer_vp Тесты t.me/+icUwivvbGOkwNWRi Задачи t.me/+8eqUTboisnkyZjQy Вакансии t.me/+4pspF5nDjgM4MjQy

بفضل وتيرة التحديث المرتفعة (أحدث البيانات بتاريخ 10 يونيو, 2026) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.

11 457
المشتركون
-124 ساعات
+47 أيام
+1330 أيام
أرشيف المشاركات
🤔 Как бы выразил полиморфизм в коде? Это способность объектов разных классов реагировать на одинаковые методы по-разному. В Java полиморфизм достигается через наследование, переопределение методов и использование абстрактных классов или интерфейсов. 🚩Пример полиморфизма в коде Наследование и переопределение методов
class Animal {
    public void sound() {
        System.out.println("Animal makes a sound");
    }
}

class Dog extends Animal {
    @Override
    public void sound() {
        System.out.println("Dog barks");
    }
}

class Cat extends Animal {
    @Override
    public void sound() {
        System.out.println("Cat meows");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal myDog = new Dog();  // Полиморфизм
        Animal myCat = new Cat();  // Полиморфизм

        myDog.sound();  // Вывод: Dog barks
        myCat.sound();  // Вывод: Cat meows
    }
}
Использование интерфейсов
interface Shape {
    void draw();
}

class Circle implements Shape {
    @Override
    public void draw() {
        System.out.println("Drawing a Circle");
    }
}

class Rectangle implements Shape {
    @Override
    public void draw() {
        System.out.println("Drawing a Rectangle");
    }
}

public class Main {
    public static void main(String[] args) {
        Shape shape1 = new Circle();    // Полиморфизм
        Shape shape2 = new Rectangle(); // Полиморфизм

        shape1.draw();  // Вывод: Drawing a Circle
        shape2.draw();  // Вывод: Drawing a Rectangle
    }
}
Реальный пример использования полиморфизма
class Animal {
    public void sound() {
        System.out.println("Some generic animal sound");
    }
}

class Dog extends Animal {
    @Override
    public void sound() {
        System.out.println("Woof Woof");
    }
}

class Cat extends Animal {
    @Override
    public void sound() {
        System.out.println("Meow");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal[] animals = {new Dog(), new Cat(), new Animal()};

        for (Animal animal : animals) {
            animal.sound();  // Полиморфный вызов
        }
    }
}
Результат
Woof Woof
Meow
Some generic animal sound
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое столп "наследование"? Это один из столпов ООП, позволяющий создавать новый класс на основе существующего. 1. Оно позволяет переиспользовать код базового класса. 2. Поддерживает полиморфизм, что упрощает работу с типами Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как найти ошибку в программе? Это процесс отладки (debugging), который позволяет выявить и исправить дефекты в коде. Ошибки в программе могут быть синтаксическими, логическими или связанными с выполнением программы. 1⃣Понимание ошибки Симптомы ошибки: Программа выдает ошибочное поведение, например, неожиданный результат, исключение или сбой. Типы ошибок: Синтаксические: Ошибки в написании кода (например, пропущенная точка с запятой). Логические: Код выполняется без ошибок, но результат не соответствует ожиданиям. Ошибки выполнения: Программа завершает работу из-за исключения (например, деление на ноль). 2⃣Использование сообщений об ошибках Компилятор/интерпретатор: Сообщает о синтаксических ошибках и указывает строку, где возникла проблема. Стек вызовов (stack trace): Для ошибок выполнения предоставляет информацию о том, где произошла ошибка. Пример:
Exception in thread "main" java.lang.ArithmeticException: / by zero
    at Main.main(Main.java:5)
3⃣Ручное исследование кода Прочитайте проблемный участок кода и проверьте его на соответствие логике задачи. Ищите типичные ошибки, такие как: Неправильное использование переменных. Ошибки в условных операторах (if, switch). Пропущенные или лишние элементы кода. 4⃣Использование инструментов отладки Отладчик (Debugger): Отладчики встроены в IDE, такие как IntelliJ IDEA, Eclipse или NetBeans. Позволяют ставить точки останова (breakpoints), чтобы программа останавливалась в конкретных местах. Позволяют пошагово выполнять код и проверять значения переменных. Логирование (Logging): Используйте System.out.println для вывода промежуточных данных:
       System.out.println("Value of x: " + x);
       
Пример
     import org.slf4j.Logger;
     import org.slf4j.LoggerFactory;

     public class Main {
         private static final Logger logger = LoggerFactory.getLogger(Main.class);

         public static void main(String[] args) {
             int x = 10;
             int y = 0;
             try {
                 int result = x / y;
             } catch (ArithmeticException e) {
                 logger.error("Division by zero!", e);
             }
         }
     }
     
5⃣Тестирование Покрытие тестами: Напишите автоматические тесты для выявления ошибки. Используйте фреймворки, такие как JUnit или TestNG.
       import org.junit.jupiter.api.Test;
       import static org.junit.jupiter.api.Assertions.assertEquals;

       public class CalculatorTest {
           @Test
           void testAddition() {
               assertEquals(5, Calculator.add(2, 3));
           }
       }
       
6⃣Анализ чужого кода Если ошибка в сторонней библиотеке, проверьте документацию и известные проблемы. Убедитесь, что вы правильно используете методы и классы. 7⃣Рефакторинг и исправление Исправьте ошибку, убедившись, что исправление не приводит к новым ошибкам. Проверьте весь код на предмет аналогичных ошибок. Ставь 👍 и забирай 📚 Базу знаний

Бесплатный интенсив: Java-разработчик: старт в профессии с нуля. 📆 Когда: 20-21 января в 19:00 по мск. За два дня интенсива
Бесплатный интенсив: Java-разработчик: старт в профессии с нуля. 📆 Когда: 20-21 января в 19:00 по мск. За два дня интенсива в прямом эфире, под руководством опытного Java-разработчика, вы сможете: ✔️ Изучить базовые конструкции языка — переменные, типы данных, условные конструкции, циклы, импорты библиотек. ✔️ Написать свой первый проект и определить, подходит ли вам профессия разработчика. ✔️ Создать консольное приложение и протестировать собственного бота. ✔️ Узнать ответы на интересующие вас вопросы. ✔️ Получить доступ к закрытому профессиональному сообществу. 🎁 Подарки для участниковинтенсива: гайд «Как заговорить на сленге IT-специалистов», карта компетенций начинающего Java-разработчика!

Нужен человек, для сбора вопросов из собеседований на должность Java разработчик. Что надо делать: 1. Смотреть записи собеседований (список будет дан) 2. Выписывать вопросы, которые задают кандидату Ставка: 450 руб. / час Примерная ЗП: 54 000 руб. / месяц (4 часа в день) Если интересно и можешь уделять работе от 4 часов / день, то отправь сообщение и сразу напиши какие языки программирования знаешь и какие лучше всего?

🤔 Как ты можешь описать абстракцию? Это процесс выделения значимых характеристик объекта, скрывая его внутренние детали. 1. Она помогает сосредоточиться на функциональности, игнорируя реализацию. 2. В программировании реализуется через абстрактные классы, интерфейсы и методы. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое cookies? Cookies — это небольшие фрагменты данных, которые сервер сохраняет на устройстве пользователя и отправляет обратно серверу при последующих запросах. Они используются для хранения информации о состоянии сеанса, персонализации и отслеживания пользователей. 🚩Пример создания и получения cookies в Java: Установка cookie:
Cookie cookie = new Cookie("username", "JohnDoe");
cookie.setMaxAge(60 * 60 * 24); // 1 день
response.addCookie(cookie);
Получение cookie:
Cookie[] cookies = request.getCookies();
for (Cookie cookie : cookies) {
    if ("username".equals(cookie.getName())) {
        String username = cookie.getValue();
        // Использование cookie
    }
}
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое принципы SOLID? Это набор из пяти принципов объектно-ориентированного программирования для написания гибкого и поддерживаемого кода: 1. S: Single Responsibility Principle (единственная ответственность). 2. O: Open-Closed Principle (открытость для расширения, закрытость для изменений). 3. L: Liskov Substitution Principle (принцип подстановки Барбары Лисков). 4. I: Interface Segregation Principle (разделение интерфейсов). 5. D: Dependency Inversion Principle (инверсия зависимостей). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что известно о языке выражений JSP ,JSP Expression Language – EL ? Это язык выражений, встроенный, который упрощает доступ к данным и взаимодействие с ними в JSP страницах. JSP EL позволяет обращаться к объектам и свойствам в различных областях видимости (например, request, session, application) с помощью простого синтаксиса, аналогичного JavaScript. 🚩Основные особенности 🟠Простота использования EL позволяет обращаться к данным и свойствам объектов с помощью простого синтаксиса ${...}, что упрощает код JSP страниц. 🟠Области видимости (scopes) EL автоматически ищет объекты и их свойства в различных областях видимости: page, request, session, application. 🟠Доступ к свойствам JavaBeans EL поддерживает доступ к свойствам JavaBeans и методам геттеров. 🟠Поддержка операторов и функций EL поддерживает различные операторы (арифметические, логические, сравнения) и может использоваться для выполнения простых логических операций и выражений. 🟠Безопасность и защита от ошибок EL защищает от ошибок NullPointerException, возвращая пустую строку или значение по умолчанию, если объект или свойство не найдено. 🚩Основные элементы 🟠Обращение к свойствам объектов Использование точечной нотации для доступа к свойствам объектов. Пример: ${user.name} 🟠Обращение к элементам коллекций и массивов Использование квадратных скобок для доступа к элементам коллекций и массивов. Пример: ${users[0].name} или ${map['key']} 🟠Операторы Арифметические операторы: +, -, *, /, % Логические операторы: &&, ||, ! Операторы сравнения: ==, !=, <, >, <=, >= Условный оператор: ?: 🟠Функции EL поддерживает вызов функций, определенных в JSTL (JavaServer Pages Standard Tag Library) и пользовательских тегах. 🚩Примеры использования Доступ к свойствам объекта
<%
    User user = new User();
    user.setName("John Doe");
    request.setAttribute("user", user);
%>
<p>Username: ${user.name}</p>
Доступ к элементам коллекции
<%
    List<User> users = new ArrayList<>();
    users.add(new User("John Doe"));
    users.add(new User("Jane Smith"));
    request.setAttribute("users", users);
%>
<c:forEach var="user" items="${users}">
    <p>User: ${user.name}</p>
</c:forEach>
Использование операторов
<%
    int num1 = 5;
    int num2 = 10;
    request.setAttribute("num1", num1);
    request.setAttribute("num2", num2);
%>
<p>Sum: ${num1 + num2}</p>
<p>Is num1 less than num2? ${num1 < num2}</p>
🚩Интеграция с JSTL (JavaServer Pages Standard Tag Library) JSP EL тесно интегрирован с JSTL, что позволяет использовать различные теги JSTL для выполнения общих задач.
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%
    User user = new User();
    user.setName("John Doe");
    request.setAttribute("user", user);
%>
<c:if test="${user.name != null}">
    <p>User is logged in as ${user.name}</p>
</c:if>
🚩ПлюсыЧистый и понятный код EL позволяет писать более чистый и читаемый код по сравнению с использованием скриплетов. ➕Разделение логики и представления EL способствует лучшему разделению логики и представления, оставляя JSP страницы сфокусированными на отображении данных. ➕Легкость поддержки и тестирования Код, использующий EL, легче поддерживать и тестировать, поскольку он не смешивает бизнес-логику с представлением. ➕Безопасность EL обеспечивает защиту от ошибок, связанных с отсутствующими или нулевыми значениями. Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое Spring Boot и в чём его основное преимущество? Это фреймворк для создания приложений на основе Spring, упрощающий их настройку и запуск. 1. Он предоставляет преднастроенные зависимости и автоматическую конфигурацию. 2. Устраняет необходимость вручную создавать XML-конфигурации. 3. Основное преимущество — быстрое создание прототипов и упрощённое управление инфраструктурой приложения. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как определить класс внутри JSP страницы ? Определение классов внутри JSP страниц считается плохой практикой и не рекомендуется, так как это нарушает принципы разделения логики и представления, усложняет поддержку и тестирование кода. 🚩Определение класса внутри страницы Класс можно определить внутри страницы с помощью деклараций (<%! ... %>). Декларации позволяют определять поля, методы и классы, которые будут скомпилированы в сервлет, генерируемый из страницы.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Define Class in JSP</title>
</head>
<body>
    <h1>Class Definition Example</h1>
    
    <%! 
        // Определение внутреннего класса внутри JSP страницы
        public class Greeting {
            private String message;
            
            public Greeting(String message) {
                this.message = message;
            }
            
            public String getMessage() {
                return message;
            }
        }
    %>
    
    <%
        // Создание экземпляра класса и использование его методов
        Greeting greeting = new Greeting("Hello, World!");
        out.println("<p>Greeting Message: " + greeting.getMessage() + "</p>");
    %>
</body>
</html>
🚩Почему не рекомендуется использовать классы 🟠Нарушение принципа разделения логики и представления Предназначена для представления данных, а не для обработки бизнес-логики или определения классов. Логика должна быть размещена в сервлетах, контроллерах или других бизнес-слоях. 🟠Проблемы с поддержкой Смешивание кода Java и HTML делает код трудночитаемым и сложным для поддержки. Трудно отлаживать и тестировать такой код. 🟠Модульность и повторное использование Классы, определенные внутри JSP страниц, не могут быть легко использованы в других частях приложения. 🟠Совместимость и переносимость Код, написанный в JSP, ограничен по сравнению с использованием полноценных Java классов в отдельных файлах, что затрудняет переносимость и совместимость кода. 🚩Рекомендуемые альтернативы 🟠Servlets и контроллеры Используйте сервлеты и контроллеры для обработки бизнес-логики и данных, а затем передавайте результаты JSP для отображения.
      @WebServlet("/greeting")
   public class GreetingServlet extends HttpServlet {
       protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
           Greeting greeting = new Greeting("Hello, World!");
           request.setAttribute("greeting", greeting);
           request.getRequestDispatcher("/greeting.jsp").forward(request, response);
       }
   }
   
   public class Greeting {
       private String message;
       
       public Greeting(String message) {
           this.message = message;
       }
       
       public String getMessage() {
           return message;
       }
   }
🟠JSP Expression Language (EL) и JSTL Для доступа к данным и выполнения логических операций без написания Java кода внутри JSP.
      <%@ page contentType="text/html;charset=UTF-8" language="java" %>
   <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
   <html>
   <head>
       <title>Greeting Example</title>
   </head>
   <body>
       <h1>Greeting Example</h1>
       <p>Greeting Message: ${greeting.message}</p>
   </body>
   </html>
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что значит реляционная база данных? Реляционная база данных организует данные в виде таблиц, где строки представляют записи, а столбцы — атрибуты. 1. Взаимосвязь между таблицами осуществляется через первичные и внешние ключи. 2. Она поддерживает запросы на основе языка SQL, что упрощает выборку и модификацию данных. 3. Пример: PostgreSQL, MySQL. Ставь 👍 и забирай 📚 Базу знаний

🤔 Почему не рекомендуется использовать скриплеты, скриптовые элементы в JSP ? Использование скриплетов и скриптовых элементов (Java код внутри JSP страниц) не рекомендуется по ряду причин, связанных с лучшими практиками разработки, поддержкой, безопасностью и архитектурными принципами. 🚩Причины 🟠Поддерживаемость и читабельность кода Смешивание Java кода с HTML делает страницы трудночитаемыми и сложно поддерживаемыми. Когда бизнес-логика внедряется прямо в JSP страницы, это усложняет понимание и поддержку кода, особенно для больших проектов. 🟠Разделение логики и представления Использование нарушает принцип разделения логики и представления (Separation of Concerns). Логика должна быть размещена в сервлетах, контроллерах или других бизнес-слоях, тогда как JSP страницы должны быть ответственны только за представление данных. 🟠Трудности с тестированием Тестирование кода, включенного в скриплеты, сложнее, так как он тесно переплетается с HTML разметкой. Отладка логики, встроенной в JSP, затруднена, так как она находится в представлении, а не в логическом слое. 🟠Безопасность Смешивание логики и представления может привести к уязвимостям, таким как XSS (Cross-Site Scripting), если входные данные не обрабатываются должным образом. Центральная логика, размещенная в одном месте (например, в сервлетах), позволяет легче управлять безопасностью и обработкой исключений. 🟠Переход на современные технологии Современные технологии и фреймворки, такие как JavaServer Faces (JSF), Spring MVC, и другие, предоставляют более структурированные подходы к разработке веб-приложений. Эти фреймворки способствуют лучшему разделению логики и представления и предлагают более мощные инструменты для разработки и поддержки приложений. 🚩Альтернативные подходы 🟠JSP Expression Language (EL) Позволяет доступ к данным и выполнение простых операций без использования скриплетов. Более читаема и поддерживаемая, так как она не смешивает Java код с HTML.
<p>Username: ${user.name}</p>   
🟠JSTL (JavaServer Pages Standard Tag Library) Предоставляет набор стандартных тегов для выполнения общих задач, таких как итерация, условные конструкции, работа с форматированием и интернационализацией. Улучшает читабельность кода и способствует разделению логики и представления.
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:if test="${user.loggedIn}">
  <p>Welcome, ${user.name}</p>
</c:if>   
🟠MVC (Model-View-Controller) архитектура Использование данной позволяет разделить бизнес-логику, управление данными и представление. Сервлеты и контроллеры (например, Spring MVC) обрабатывают бизнес-логику и данные, а JSP используется только для отображения данных.
   @WebServlet("/user")
public class UserController extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        User user = new User("John Doe", true);
        request.setAttribute("user", user);
        request.getRequestDispatcher("/user.jsp").forward(request, response);
    }
}   
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое Parallel Stream? Это способ обработки потоков данных в Java параллельно с использованием нескольких ядер процессора. 1. Он автоматически разбивает поток данных на подзадачи, выполняемые одновременно. 2. Используется для увеличения производительности в задачах, где данные можно обрабатывать независимо. 3. Но его применение может усложнять отладку и требует учёта потокобезопасности. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как сконфигурировать параметры инициализации для 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>
Ставь 👍 и забирай 📚 Базу знаний

🧠 Machine Learning — авторский канал, где собрана вся база по ИИ и машинному обучению. Senior разработчик AI-алгоритмов и ав
+5
🧠 Machine Learning — авторский канал, где собрана вся база по ИИ и машинному обучению. Senior разработчик AI-алгоритмов и автономных агентов, разбирает гайды, редкую литературу и код топовых моделей машинного обучения и искусственного интеллекта. В 2025 году ИИ выйдет на совершенно новый уровень тот, кто не успеет за прогрессом - отстанет, а кто разберется - сорвет куш. Стоит подписаться: t.me/ai_machinelearning_big_data

🤔 В чём различие между Left Join, Right Join и Inner Join? 1. Left Join: возвращает все записи из левой таблицы и совпадающие из правой, незаполненные поля заполняются NULL. 2. Right Join: возвращает все записи из правой таблицы и совпадающие из левой, с аналогичным заполнением NULL для отсутствующих значений. 3. Inner Join: возвращает только те записи, которые совпадают в обеих таблицах. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что известно о PageContext и какие преимущества его использования? Это один из неявных объектов, который предоставляет доступ ко всем другим неявным объектам и различным областям видимости (scope) в странице. Он служит как контейнер для информации, связанной с обработкой страницы и предоставляет методы для взаимодействия с атрибутами, управления выходными потоками и получения информации о среде выполнения. 🚩Основные функции 🟠Доступ ко всем областям видимости (scope): Предоставляет методы для работы с атрибутами во всех областях видимости (page, request, session, application). Методы: setAttribute(), getAttribute(), removeAttribute(), findAttribute(). 🟠Управление выходными потоками Предоставляет доступ к JspWriter через метод getOut(), который используется для вывода данных на страницу. 🟠Работа с неявными объектами Предоставляет методы для получения ссылок на другие неявные объекты, такие как request, response, session, application, config, и page. 🟠Обработка исключений PageContext может использоваться для обработки исключений, которые происходят в JSP странице. 🚩Примеры Доступ к атрибутам в различных областях видимости
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
    <title>PageContext Example</title>
</head>
<body>
    <h1>PageContext Example</h1>
    
    <%-- Установка атрибутов в различные области видимости --%>
    <%
        pageContext.setAttribute("pageAttr", "Page Scope Attribute", PageContext.PAGE_SCOPE);
        pageContext.setAttribute("requestAttr", "Request Scope Attribute", PageContext.REQUEST_SCOPE);
        pageContext.setAttribute("sessionAttr", "Session Scope Attribute", PageContext.SESSION_SCOPE);
        pageContext.setAttribute("applicationAttr", "Application Scope Attribute", PageContext.APPLICATION_SCOPE);
    %>
    
    <%-- Получение и вывод атрибутов --%>
    <p>Page Attribute: <%= pageContext.getAttribute("pageAttr", PageContext.PAGE_SCOPE) %></p>
    <p>Request Attribute: <%= pageContext.getAttribute("requestAttr", PageContext.REQUEST_SCOPE) %></p>
    <p>Session Attribute: <%= pageContext.getAttribute("sessionAttr", PageContext.SESSION_SCOPE) %></p>
    <p>Application Attribute: <%= pageContext.getAttribute("applicationAttr", PageContext.APPLICATION_SCOPE) %></p>
    
</body>
</html>
Получение неявных объектов
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
    <title>PageContext Example</title>
</head>
<body>
    <h1>PageContext Example</h1>
    
    <%-- Получение неявных объектов через PageContext --%>
    <p>Request URI: <%= pageContext.getRequest().getRequestURI() %></p>
    <p>Session ID: <%= pageContext.getSession().getId() %></p>
    <p>Servlet Context Name: <%= pageContext.getServletContext().getServletContextName() %></p>
    
</body>
</html>
Ставь 👍 и забирай 📚 Базу знаний

🤔 В чём разница CHAR и VARCHAR? 1. Размер хранения: CHAR — фиксированный размер, добавляет пробелы до нужной длины; VARCHAR — переменный, хранит только фактические символы. 2. Производительность: CHAR быстрее для фиксированных данных, VARCHAR экономит память для переменных данных. 3. Применение: CHAR для одинаковой длины строк (например, коды), VARCHAR для строк переменной длины (например, имена). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний