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

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

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

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

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

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

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

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

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

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

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

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

11 450
المشتركون
+624 ساعات
-117 أيام
+2030 أيام
أرشيف المشاركات
🤔 Что такое heap, stack? В контексте Java, Heap (куча) и Stack (стек) являются областями памяти, используемыми JVM для управления памятью, необходимой для выполнения программы. Каждая из этих областей имеет свои характеристики и используется для разных целей. 🚩Heap (Куча) Heap — это область памяти, выделенная для динамического распределения памяти объектов и массивов. Все объекты, созданные с использованием оператора new, размещаются в куче. 🟠Особенности Куча разделена на поколения: молодое поколение (Young Generation) и старое поколение (Old Generation). Молодое поколение включает в себя области Eden Space и Survivor Spaces (S0 и S1). Старое поколение хранит долгоживущие объекты. 🟠Управление памятью Куча управляется сборщиком мусора (Garbage Collector), который автоматически освобождает память, занятую объектами, которые больше не используются. 🟠Использование Куча используется для хранения объектов, массивов и классов, информация о которых сохраняется на протяжении всего времени их жизни.
public class Example {
    public static void main(String[] args) {
        Example obj = new Example(); // obj создается в куче
    }
}
🚩Stack (Стек) Стек — это область памяти, используемая для управления вызовами методов и хранения локальных переменных, параметров методов и информации о возвратах. 🟠Особенности Каждый поток имеет свой собственный стек. Стек хранит кадры (frames) для каждого вызова метода. Каждый кадр содержит локальные переменные метода и информацию о вызовах. 🟠Управление памятью Память в стеке автоматически управляется при вызове методов и выходе из них. Когда метод вызывается, создается новый кадр в стеке; когда метод завершает выполнение, его кадр удаляется из стека. 🟠Использование Стек используется для хранения примитивных типов данных и ссылок на объекты, которые находятся в куче. Локальные переменные методов и параметры методов хранятся в стеке.
public class Example {
    public static void main(String[] args) {
        int localVar = 10; // localVar хранится в стеке
        Example obj = new Example(); // Ссылка на obj хранится в стеке, а сам объект — в куче
        obj.method();
    }

    public void method() {
        int anotherVar = 20; // anotherVar хранится в стеке
    }
}
Ставь 👍 и забирай 📚 Базу знаний

🤔 Какие методы класса File есть? Класс File в Java предоставляет методы для работы с файлами и директориями, например: createNewFile(), delete(), exists(), getName(), getPath(), isDirectory(), isFile(), length(), list(), mkdir(), renameTo(File dest) и многие другие. Они позволяют создавать, удалять, переименовывать файлы и папки, а также получать о них информацию. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какие типы данных есть в контексте JVM? В контексте JVM (Java Virtual Machine) типы данных делятся на два основных класса: примитивные типы данных и ссылочные типы данных. 🚩Примитивные типы данных Примитивные типы данных представляют собой базовые типы, которые не являются объектами и хранят непосредственно значения. Они делятся на числовые типы, логический тип и символьный тип. 🟠Числовые типы Целочисленные типы byte: 8-битный знаковый целочисленный тип данных (диапазон от -128 до 127). short: 16-битный знаковый целочисленный тип данных (диапазон от -32,768 до 32,767). int: 32-битный знаковый целочисленный тип данных (диапазон от -2^31 до 2^31-1). long: 64-битный знаковый целочисленный тип данных (диапазон от -2^63 до 2^63-1). Типы с плавающей точкой float: 32-битный IEEE 754 тип данных с плавающей точкой одинарной точности. double: 64-битный IEEE 754 тип данных с плавающей точкой двойной точности. 🟠Логический тип 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));
    }
}
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое «кооперативная многозадачность»? Кооперативная многозадачность — это режим, при котором выполнение задач переключается только тогда, когда текущая задача добровольно уступает управление другим задачам, например, явно вызывая операцию ожидания. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 В чем смысл ограничений? Ограничения (constraints) – это правила, которые ограничивают возможные значения данных или ограничивают поведение системы. 🟠Ограничения в базах данных (SQL Constraints) В SQL ограничения гарантируют корректность данных в таблицах.
CREATE TABLE Users (
    id INT PRIMARY KEY,
    email VARCHAR(255) UNIQUE NOT NULL,
    age INT CHECK (age > 0),
    country VARCHAR(50) DEFAULT 'Unknown'
);
🟠Ограничения в Java Generics (`<T extends ...>`) Ограничения в Generics позволяют задавать допустимые типы.
class Box<T> {
    T value;
    public Box(T value) { this.value = value; }
}
Box<String> strBox = new Box<>("Hello");
Box<Integer> intBox = new Box<>(10);
class NumberBox<T extends Number> { // Ограничение: T должно быть числом
    T value;
    public NumberBox(T value) { this.value = value; }

    public double square() {
        return value.doubleValue() * value.doubleValue();
    }
}
🟠Ограничения в потоках (synchronized, volatile, join) В многопоточности ограничения помогают избежать гонок потоков.
class Counter {
    private int count = 0;

    public synchronized void increment() { // Только один поток может изменять count одновременно
        count++;
    }
}
Ставь 👍 и забирай 📚 Базу знаний

🤔 Можно ли управлять монитором? Да, монитор — это механизм синхронизации. Управлять им можно через блокировку доступа к объекту. Также есть более гибкие инструменты управления, такие как объекты блокировок и условные переменные. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Cтажировки и вакансии для JAVA разработчиков. - Вакансии которых нет на джоб-агрегаторах - Только прямые контакты HR в Telegr
Cтажировки и вакансии для JAVA разработчиков. - Вакансии которых нет на джоб-агрегаторах - Только прямые контакты HR в Telegram 👉 @jobs_java 🤖 ML & DS 👩‍💻 DevOps 👨‍✈️ ИБ & OSINT 👣 Go 👩‍💻 Mobile 👩‍💻 C# 👩‍💻 Node.js 👩‍💻 Python 🔎 QA 👩‍💻 Java 👩‍💻 UX/UI 👩‍💻 Frontend 🖼️ PHP 📋 Analyst 💼 1C 🖥 SQL 👩‍💻 IT HR Пока другие листают джоб-сайты — ты уже пишешь HR в Telegram.

🤔 Что такое heap, stack? В контексте Java, Heap (куча) и Stack (стек) являются областями памяти, используемыми JVM для управления памятью, необходимой для выполнения программы. Каждая из этих областей имеет свои характеристики и используется для разных целей. 🚩Heap (Куча) Heap — это область памяти, выделенная для динамического распределения памяти объектов и массивов. Все объекты, созданные с использованием оператора new, размещаются в куче. 🟠Особенности Куча разделена на поколения: молодое поколение (Young Generation) и старое поколение (Old Generation). Молодое поколение включает в себя области Eden Space и Survivor Spaces (S0 и S1). Старое поколение хранит долгоживущие объекты. 🟠Управление памятью Куча управляется сборщиком мусора (Garbage Collector), который автоматически освобождает память, занятую объектами, которые больше не используются. 🟠Использование Куча используется для хранения объектов, массивов и классов, информация о которых сохраняется на протяжении всего времени их жизни.
public class Example {
    public static void main(String[] args) {
        Example obj = new Example(); // obj создается в куче
    }
}
🚩Stack (Стек) Стек — это область памяти, используемая для управления вызовами методов и хранения локальных переменных, параметров методов и информации о возвратах. 🟠Особенности Каждый поток имеет свой собственный стек. Стек хранит кадры (frames) для каждого вызова метода. Каждый кадр содержит локальные переменные метода и информацию о вызовах. 🟠Управление памятью Память в стеке автоматически управляется при вызове методов и выходе из них. Когда метод вызывается, создается новый кадр в стеке; когда метод завершает выполнение, его кадр удаляется из стека. 🟠Использование Стек используется для хранения примитивных типов данных и ссылок на объекты, которые находятся в куче. Локальные переменные методов и параметры методов хранятся в стеке.
public class Example {
    public static void main(String[] args) {
        int localVar = 10; // localVar хранится в стеке
        Example obj = new Example(); // Ссылка на obj хранится в стеке, а сам объект — в куче
        obj.method();
    }

    public void method() {
        int anotherVar = 20; // anotherVar хранится в стеке
    }
}
Ставь 👍 и забирай 📚 Базу знаний

🤔 Какие распространённые стартеры знаешь в Spring Boot? - spring-boot-starter-web — для создания REST API. - spring-boot-starter-data-jpa — для работы с БД через JPA. - spring-boot-starter-security — для настройки безопасности. - spring-boot-starter-test — всё для тестов. - spring-boot-starter-thymeleaf — шаблонизация UI. - spring-boot-starter-actuator — метрики и мониторинг. Стартеры — это наборы зависимостей, которые подключаются одной строкой и конфигурируются по умолчанию. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Java.hasChosen(you) 🥶😟 Почему Java всё ещё №1 в автотестах? Стас Васенков, основатель школы автотестировщиков @qa_guru, рас
Java.hasChosen(you) 🥶😟 Почему Java всё ещё №1 в автотестах? Стас Васенков, основатель школы автотестировщиков @qa_guru, расскажет про свой мэтч с Java. Чем его зацепил этот язык и куда привёл. И куда Java может привести вас. Приходите на открытый эфир ➡ 27 января ➡ 13:00 (МСК) Что будет: — неочевидные карьерные сценарии — внутрянка: какой стек ждут, когда ищут автоматизатора — кому Java уже не поможет 🐹 Не откладываем в TODO ➡ webinar.join();

🤔 Какая сложность поиска метода по ключу в коллекции TreMap? В TreeMap поиск элемента по ключу выполняется за O(log n). 🚩Почему сложность `O(log n)`? TreeMap основан на красно-чёрном дереве (Red-Black Tree). Красно-чёрное дерево – это самобалансирующееся бинарное дерево. В худшем случае, глубина дерева ≈ log₂(n), поэтому: Поиск (get(key)) выполняется за O(log n). Вставка (put(key, value)) тоже O(log n), так как требует балансировки.
import java.util.TreeMap;

public class TreeMapExample {
    public static void main(String[] args) {
        TreeMap<Integer, String> treeMap = new TreeMap<>();
        treeMap.put(10, "Ten");
        treeMap.put(20, "Twenty");
        treeMap.put(30, "Thirty");

        System.out.println(treeMap.get(20)); // Поиск за O(log n)
    }
}
Ставь 👍 и забирай 📚 Базу знаний

🤔 Какие типы запросов есть? - SELECT — выборка. - INSERT — вставка. - UPDATE — обновление. - DELETE — удаление. - DDL (Data Definition Language) — создание, изменение структуры (CREATE, ALTER, DROP). - DML (Data Manipulation Language) — работа с данными (INSERT, UPDATE, DELETE). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Является ли пустым пул строк при старте 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 файла, все строковые литералы в этих классах также добавляются в пул строк. Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое «селектор»? Селектор в CSS указывает на элемент или группу элементов, к которым будут применяться определённые стили. Это основа для применения стилей к HTML-элементам. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое xml? XML (Extensible Markup Language) — это расширяемый язык разметки, который используется для хранения и передачи данных в формате, удобном для чтения как человеком, так и машиной. 🚩Зачем нужен XML? XML используется для структурированного хранения информации. Он позволяет определять собственные теги и организовывать данные в удобном формате. Основные применения: Обмен данными между системами (например, между сервером и клиентом). Конфигурационные файлы (например, web.xml в Java). Хранение данных (например, в файлах настроек, документах). Веб-сервисы (SOAP использует XML для передачи сообщений). 🚩Как устроен XML? XML-документ состоит из элементов (тегов), которые образуют древовидную структуру. Пример простого XML:
<?xml version="1.0" encoding="UTF-8"?>
<person>
    <name>Иван</name>
    <age>30</age>
    <city>Москва</city>
</person>
🚩Как XML используется в Java? В Java XML часто используется для работы с конфигурациями и веб-сервисами. Популярные библиотеки для работы с XML: DOM (Document Object Model) — загружает весь XML-файл в память, создавая дерево элементов. SAX (Simple API for XML) — обрабатывает XML последовательно, без загрузки в память. JAXB (Java Architecture for XML Binding) — позволяет преобразовывать Java-объекты в XML и обратно.
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlRootElement;
import jakarta.xml.bind.JAXBContext;
import jakarta.xml.bind.JAXBException;
import jakarta.xml.bind.Marshaller;
import java.io.StringWriter;

@XmlRootElement
class Person {
    private String name;
    private int age;

    public Person() {} // Пустой конструктор нужен для JAXB

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

    @XmlElement
    public String getName() { return name; }

    @XmlElement
    public int getAge() { return age; }
}

public class Main {
    public static void main(String[] args) throws JAXBException {
        Person person = new Person("Иван", 30);
        JAXBContext context = JAXBContext.newInstance(Person.class);
        Marshaller marshaller = context.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

        StringWriter writer = new StringWriter();
        marshaller.marshal(person, writer);

        System.out.println(writer.toString());
    }
}
Вывод
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<person>
    <name>Иван</name>
    <age>30</age>
</person>
Ставь 👍 и забирай 📚 Базу знаний

🤔 Назови основные интерфейсы JCF и их реализации. - List — ArrayList, LinkedList, Vector - Set — HashSet, LinkedHashSet, TreeSet - Map — HashMap, LinkedHashMap, TreeMap, Hashtable - Queue — PriorityQueue, ArrayDeque Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Каким образом можно получить синхронизированные объекты стандартных коллекций? В Java стандартные коллекции из java.util (например, ArrayList, HashMap, HashSet) не потокобезопасны. Чтобы использовать их в многопоточной среде, можно применять синхронизированные обёртки** и **коллекции из java.util.concurrent. 🚩Синхронизация с `Collections.synchronizedXXX()` Java предоставляет методы для создания потокобезопасных обёрток над обычными коллекциями:
import java.util.*;

public class SynchronizedCollectionsExample {
    public static void main(String[] args) {
        List<Integer> syncList = Collections.synchronizedList(new ArrayList<>());
        Map<String, String> syncMap = Collections.synchronizedMap(new HashMap<>());
        Set<Integer> syncSet = Collections.synchronizedSet(new HashSet<>());

        syncList.add(1);
        syncMap.put("key", "value");
        syncSet.add(10);
    }
}
🚩Важный момент: Итерация через `synchronized` коллекции Даже если коллекция синхронизирована, её итерация не потокобезопасна.
for (Integer num : syncList) { // Возможен ConcurrentModificationException!
    System.out.println(num);
}
Чтобы избежать ошибок, итерацию нужно делать внутри synchronized блока
synchronized (syncList) {
    for (Integer num : syncList) {
        System.out.println(num);
    }
}
🚩Коллекции из `java.util.concurrent` (рекомендуемый вариант) Вместо Collections.synchronizedXXX() лучше использовать современные конкурентные коллекции из java.util.concurrent. Они спроектированы для многопоточности и работают быстрее.
import java.util.concurrent.*;

public class ConcurrentMapExample {
    public static void main(String[] args) {
        ConcurrentMap<String, Integer> concurrentMap = new ConcurrentHashMap<>();
        concurrentMap.put("one", 1);
        concurrentMap.put("two", 2);

        System.out.println(concurrentMap.get("one")); // 1
    }
}
Пример CopyOnWriteArrayList (потокобезопасный список, работающий через копии)
import java.util.concurrent.CopyOnWriteArrayList;

public class CopyOnWriteExample {
    public static void main(String[] args) {
        CopyOnWriteArrayList<Integer> list = new CopyOnWriteArrayList<>();
        list.add(1);
        list.add(2);

        for (Integer num : list) { // Без ConcurrentModificationException!
            System.out.println(num);
        }
    }
}
Ставь 👍 и забирай 📚 Базу знаний

🤔 Почему методы wait() и notify() вызываются только в синхронизированном блоке? Потому что для вызова этих методов поток должен владеть монитором объекта. Без синхронизации поток не будет иметь права на управление монитором. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 В чем разница между new string и string? В Java строки (String) являются неизменяемыми (immutable) объектами и обрабатываются особым образом, особенно при их создании. 🚩`"Hello"` — строка из пула строк Когда вы пишете:
String str1 = "Hello";
🚩`new String("Hello")` — создание нового объекта Когда вы создаёте строку так:
String str2 = new String("Hello");
🚩Разница в сравнении строк
public class StringTest {
    public static void main(String[] args) {
        String str1 = "Hello";
        String str2 = "Hello";
        String str3 = new String("Hello");

        System.out.println(str1 == str2); // true (ссылаются на один объект в пуле)
        System.out.println(str1 == str3); // false (разные объекты в памяти)
        System.out.println(str1.equals(str3)); // true (содержимое одинаковое)
    }
}
🚩Когда использовать `new String()`? В 99% случаев new String() не нужен. Его создание расходует память и снижает производительность. Но он может быть полезен, если вы намеренно хотите создать новый объект, например, для защиты от изменения ссылок:
String safeCopy = new String(originalString); // Теперь это точно отдельный объект
Ставь 👍 и забирай 📚 Базу знаний

🤔 Какие два класса не наследуются от Object? Все классы наследуются от Object, поэтому классов, не наследующихся от него, не существует. Даже Object является корнем иерархии. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний