Java | Вопросы собесов
Cайт easyoffer.ru Реклама @easyoffer_adv ВП @easyoffer_vp Тесты t.me/+icUwivvbGOkwNWRi Задачи t.me/+8eqUTboisnkyZjQy Вакансии t.me/+4pspF5nDjgM4MjQy
Show more📈 Analytical overview of Telegram channel Java | Вопросы собесов
Channel Java | Вопросы собесов (@easy_java_ru) in the Russian language segment is an active participant. Currently, the community unites 11 456 subscribers, ranking 10 894 in the Technologies & Applications category and 57 468 in the Russia region.
📊 Audience metrics and dynamics
Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 11 456 subscribers.
According to the latest data from 10 June, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by 10 over the last 30 days and by 2 over the last 24 hours, overall reach remains high.
- Verification status: Not verified
- Engagement rate (ER): The average audience engagement rate is 10.71%. Within the first 24 hours after publication, content typically collects 7.28% reactions from the total number of subscribers.
- Post reach: On average, each post receives 1 227 views. Within the first day, a publication typically gains 834 views.
- Reactions and interaction: The audience actively supports content: the average number of reactions per post is 6.
- Thematic interests: Content is focused on key topics such as ставь, void, string, строка, static.
📝 Description and content policy
The author describes the resource as a platform for expressing subjective opinions:
“Cайт easyoffer.ru
Реклама @easyoffer_adv
ВП @easyoffer_vp
Тесты t.me/+icUwivvbGOkwNWRi
Задачи t.me/+8eqUTboisnkyZjQy
Вакансии t.me/+4pspF5nDjgM4MjQy”
Thanks to the high frequency of updates (latest data received on 11 June, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.
public class Example {
public static void main(String[] args) {
String password = "secretPassword123"; // Строка хранится в пуле строк
System.out.println("Password is set.");
}
}
🚩Как уменьшить риски
🟠Избегайте использования строк для хранения чувствительных данных
Вместо строк используйте массивы символов (char[]), так как их содержимое можно обнулить после использования.
char[] password = new char[] {'s', 'e', 'c', 'r', 'e', 't'};
// Очистка массива после использования
java.util.Arrays.fill(password, '\0');
🟠Используйте библиотеки безопасности
Используйте специализированные библиотеки, которые обеспечивают более безопасное управление чувствительными данными, такие как Java Cryptography Architecture (JCA).
🟠Минимизируйте использование строковых литералов для чувствительных данных
Не храните пароли, ключи и другие конфиденциальные данные как строковые литералы.
🟠Шифрование данных
Шифруйте данные перед их хранением или передачей. Даже если данные будут извлечены из памяти, без ключа расшифровки они останутся бесполезными.
Ставь 👍 и забирай 📚 Базу знанийpublic class A {
B b;
}
public class B {
A a;
}
public class Main {
public static void main(String[] args) {
A a = new A();
B b = new B();
a.b = b;
b.a = a;
// Теперь a и b ссылаются друг на друга
a = null;
b = null;
// Оба объекта теперь недоступны
// Сборщик мусора сможет их собрать
}
}
🚩Как сборщик мусора обрабатывает циклические ссылки
🟠Маркировка (Mark Phase)
Когда сборщик мусора выполняет фазу маркировки, он начнет с корневых объектов и будет следовать по всем доступным ссылкам. В этом примере, после того как a и b установлены в null, объекты класса A и B больше не будут доступны из корневых объектов.
🟠Сжатие (Sweep Phase)
Объекты A и B не помечены как доступные, поэтому они будут собраны сборщиком мусора.
🚩Демонстрация работы сборщика мусора
Чтобы демонстрировать работу сборщика мусора и показать, что объекты с циклическими ссылками могут быть собраны, можно использовать отладочные инструменты или включить журналирование сборки мусора с помощью аргументов JVM.
java -XX:+PrintGCDetails -XX:+PrintGCTimeStamps Main
Ставь 👍 и забирай 📚 Базу знанийboolean: Представляет логическое значение (true или false).
🟠Символьный тип
char: 16-битный тип данных, представляющий символ Unicode (диапазон от '\u0000' до '\uffff').
🚩Ссылочные типы данных
Ссылочные типы данных представляют собой объекты и массивы. Они хранят ссылку на область памяти, где хранятся данные объекта или массива.
🟠Классы (Classes)
Любой объектный тип данных является экземпляром класса. Классы могут быть как стандартными (например, String, Integer), так и пользовательскими.
🟠Интерфейсы (Interfaces)
Интерфейсы определяют набор методов, которые должны быть реализованы классами, которые их реализуют.
🟠Массивы (Arrays)
Массивы могут быть одномерными или многомерными и могут хранить как примитивные, так и ссылочные типы данных.
🚩Пример примитивных и ссылочных типов данных
public class DataTypesExample {
public static void main(String[] args) {
// Примитивные типы данных
byte aByte = 10;
short aShort = 100;
int anInt = 1000;
long aLong = 10000L;
float aFloat = 10.5f;
double aDouble = 10.55;
boolean aBoolean = true;
char aChar = 'A';
// Ссылочные типы данных
String aString = "Hello, World!";
Integer anInteger = 1000;
int[] anArray = {1, 2, 3, 4, 5};
// Вывод примитивных типов данных
System.out.println("byte: " + aByte);
System.out.println("short: " + aShort);
System.out.println("int: " + anInt);
System.out.println("long: " + aLong);
System.out.println("float: " + aFloat);
System.out.println("double: " + aDouble);
System.out.println("boolean: " + aBoolean);
System.out.println("char: " + aChar);
// Вывод ссылочных типов данных
System.out.println("String: " + aString);
System.out.println("Integer: " + anInteger);
System.out.println("Array: " + java.util.Arrays.toString(anArray));
}
}
Ставь 👍 и забирай 📚 Базу знанийjava -XX:+UseG1GC -Xms512m -Xmx2g MyApplication
Хотя сборка мусора в Java автоматизирована, можно явным образом вызывать сборку мусора, используя System.gc(). Однако это лишь рекомендация для JVM, и она не обязана немедленно выполнять сборку мусора.
public class GarbageCollectorExample {
public static void main(String[] args) {
// Создание объекта
String str = new String("Hello, World!");
// Обнуление ссылки, объект становится доступным для сборки мусора
str = null;
// Явный вызов сборки мусора (не рекомендуется использовать в продакшн-коде)
System.gc();
System.out.println("Garbage Collector called");
}
}
Ставь 👍 и забирай 📚 Базу знанийMANIFEST.MF и находится в директории META-INF JAR-файла. Манифест файл может включать различные атрибуты, которые описывают сам архив, его содержимое, и дополнительные параметры, такие как основной класс для запуска и зависимости.
🚩Создание JAR с манифестом вручную
1⃣Создайте файл MANIFEST.MF с необходимыми атрибутами.
2⃣Используйте команду jar для создания JAR файла и включения манифеста.
jar cmf MANIFEST.MF myapp.jar -C classes/ .
🚩Пример использования Maven
Добавьте информацию о манифесте в pom.xml.
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.example.MyMainClass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
Манифест можно прочитать программно, используя классы из java.util.jar пакета.
import java.io.InputStream;
import java.util.jar.Manifest;
import java.util.jar.Attributes;
public class ReadManifest {
public static void main(String[] args) {
try (InputStream input = ReadManifest.class.getResourceAsStream("/META-INF/MANIFEST.MF")) {
if (input != null) {
Manifest manifest = new Manifest(input);
Attributes attrs = manifest.getMainAttributes();
String version = attrs.getValue("Manifest-Version");
String mainClass = attrs.getValue("Main-Class");
System.out.println("Manifest-Version: " + version);
System.out.println("Main-Class: " + mainClass);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Ставь 👍 и забирай 📚 Базу знанийweb.xml, который находится в директории WEB-INF вашего веб-приложения. Этот файл используется для настройки различных аспектов веб-приложения, включая параметры инициализации для JSP.
🚩Пример конфигурации параметров инициализации для JSP в `web.xml`
🟠Общие параметры инициализации для всех JSP страниц
Можно задать общие параметры инициализации, которые будут доступны на всех страницах JSP через объект ServletContext.
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<context-param>
<param-name>paramName</param-name>
<param-value>paramValue</param-value>
</context-param>
<!-- Другие конфигурации -->
</web-app>
Для доступа к этим параметрам в JSP, можно использовать следующий код
<%= application.getInitParameter("paramName") %>
🟠Параметры инициализации для конкретного сервлета (включая JSP)
Можно также задать параметры инициализации для конкретного сервлета или JSP страницы.
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>exampleServlet</servlet-name>
<jsp-file>/example.jsp</jsp-file>
<init-param>
<param-name>paramName</param-name>
<param-value>paramValue</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>exampleServlet</servlet-name>
<url-pattern>/example</url-pattern>
</servlet-mapping>
<!-- Другие конфигурации -->
</web-app>
Для доступа к этим параметрам в JSP, можно использовать следующий код
<%= config.getInitParameter("paramName") %>
🚩Пример полного `web.xml`
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!-- Общие параметры инициализации -->
<context-param>
<param-name>globalParam</param-name>
<param-value>globalValue</param-value>
</context-param>
<!-- Параметры инициализации для конкретного JSP -->
<servlet>
<servlet-name>exampleServlet</servlet-name>
<jsp-file>/example.jsp</jsp-file>
<init-param>
<param-name>specificParam</param-name>
<param-value>specificValue</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>exampleServlet</servlet-name>
<url-pattern>/example</url-pattern>
</servlet-mapping>
</web-app>
Ставь 👍 и забирай 📚 Базу знанийweb.xml или аннотации в сервлетах. Эти параметры инициализации часто нужны для передачи специфических данных или настроек, которые требуются JSP-страницам при их выполнении.
🚩Способы конфигурации
🟠Конфигурация в `web.xml`
Файл web.xml является частью спецификации Java EE и используется для конфигурации веб-приложений. Для установки параметров инициализации для JSP можно использовать тег <init-param> внутри тега <servlet>. Например:
<web-app>
<servlet>
<servlet-name>exampleJSP</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>exampleJSP</servlet-name>
<url-pattern>/example</url-pattern>
</servlet-mapping>
</web-app>
🟠Аннотаций в сервлетах
В Java EE 6 и более поздних версиях можно использовать аннотации для конфигурации сервлетов и их параметров. Хотя сами JSP-страницы не могут быть аннотированы напрямую, можно создать сервлет, который обрабатывает параметры и перенаправляет запросы на JSP.
@WebServlet("/example")
public class ExampleServlet extends HttpServlet {
@Override
public void init() throws ServletException {
ServletConfig config = getServletConfig();
String param1 = config.getInitParameter("param1");
String param2 = config.getInitParameter("param2");
// Теперь параметры можно использовать в логике сервлета или передать в JSP
getServletContext().setAttribute("param1", param1);
getServletContext().setAttribute("param2", param2);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.getRequestDispatcher("/example.jsp").forward(req, resp);
}
}
🟠Параметров в JSP
Чтобы получить параметры инициализации в JSP, можно использовать выражения JSP или скриптлеты. Например:
<%
String param1 = (String) application.getAttribute("param1");
String param2 = (String) application.getAttribute("param2");
%>
<html>
<head>
<title>Example JSP</title>
</head>
<body>
<p>Param 1: <%= param1 %></p>
<p>Param 2: <%= param2 %></p>
</body>
</html>
Ставь 👍 и забирай 📚 Базу знаний
Available now! Telegram Research 2025 — the year's key insights 
