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

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

رفتن به کانال در Telegram

📈 تحلیل کانال تلگرام Java | Вопросы собесов

کانال Java | Вопросы собесов (@easy_java_ru) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 11 451 مشترک است و جایگاه 10 914 را در دسته فناوری و برنامه‌ها و رتبه 57 532 را در منطقه روسيا دارد.

📊 شاخص‌های مخاطب و پویایی

از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 11 451 مشترک جذب کرده است.

بر اساس آخرین داده‌ها در تاریخ 04 ژوئن, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر 15 و در ۲۴ ساعت گذشته برابر -3 بوده و همچنان دسترسی گسترده‌ای حفظ شده است.

  • وضعیت تأیید: تأیید نشده
  • نرخ تعامل (ER): میانگین تعامل مخاطب 7.92% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 7.64% واکنش نسبت به کل مشترکان کسب می‌کند.
  • دسترسی پست‌ها: هر پست به طور میانگین 907 بازدید دریافت می‌کند. در اولین روز معمولاً 874 بازدید جمع‌آوری می‌شود.
  • واکنش‌ها و تعامل: مخاطبان به‌طور فعال حمایت می‌کنند؛ میانگین واکنش به هر پست 0 است.
  • علایق موضوعی: محتوا بر موضوعات کلیدی مانند ставь, void, string, строка, static تمرکز دارد.

📝 توضیح و سیاست محتوایی

نویسنده این فضا را محل بیان دیدگاه‌های شخصی توصیف می‌کند:
Cайт easyoffer.ru Реклама @easyoffer_adv ВП @easyoffer_vp Тесты t.me/+icUwivvbGOkwNWRi Задачи t.me/+8eqUTboisnkyZjQy Вакансии t.me/+4pspF5nDjgM4MjQy

به لطف به‌روزرسانی‌های پرتکرار (آخرین داده در تاریخ 05 ژوئن, 2026)، کانال همواره به‌روز و دارای دسترسی بالاست. تحلیل‌ها نشان می‌دهد مخاطبان به‌طور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامه‌ها تبدیل کرده‌اند.

11 451
مشترکین
-324 ساعت
-177 روز
+1530 روز
آرشیو پست ها
🤔 Что такое 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 является корнем иерархии. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний