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

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

Открыть в Telegram

📈 Аналитический обзор Telegram-канала Java | Вопросы собесов

Канал Java | Вопросы собесов (@easy_java_ru) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 11 455 подписчиков, занимая 10 891 место в категории Технологии и приложения и 57 522 место в регионе Россия.

📊 Показатели аудитории и динамика

С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 11 455 подписчиков.

Согласно последним данным от 08 июня, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило 11, а за последние 24 часа — 7, при этом общий охват остаётся высоким.

  • Статус верификации: Не верифицирован
  • Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 10.52%. В первые 24 часа после публикации контент обычно набирает 7.55% реакций от общего числа подписчиков.
  • Охват публикаций: В среднем каждый пост получает 1 205 просмотров. В течение первых суток публикация набирает 865 просмотров.
  • Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 7.
  • Тематические интересы: Контент сосредоточен на ключевых темах, таких как ставь, void, string, строка, static.

📝 Описание и контентная политика

Автор описывает ресурс как площадку для выражения субъективного мнения:
Cайт easyoffer.ru Реклама @easyoffer_adv ВП @easyoffer_vp Тесты t.me/+icUwivvbGOkwNWRi Задачи t.me/+8eqUTboisnkyZjQy Вакансии t.me/+4pspF5nDjgM4MjQy

Благодаря высокой частоте обновлений (последние данные получены 09 июня, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.

11 455
Подписчики
+724 часа
+57 дней
+1130 день
Архив постов
🤔 Что такое AutoCloseable и конструкция try-with-resources? AutoCloseable — это интерфейс, который говорит JVM: «этот ресурс можно закрыть автоматически». try-with-resources — это конструкция, при которой ресурс (например, файл, поток или соединение) автоматически закроется по завершению блока, даже если произойдёт исключение. Удобно, безопасно, уменьшает количество утечек ресурсов. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Слышал ли что то про цикл ForEach? Цикл forEach – это удобный способ перебора элементов коллекций в Java. 🚩Что такое `forEach`? Это специальный цикл, который упрощает перебор элементов коллекций и массивов. Он пришёл на замену классическому for и while, делая код чище.
List<String> names = List.of("Alice", "Bob", "Charlie");

for (int i = 0; i < names.size(); i++) {
    System.out.println(names.get(i));
}
Современный forEach
for (String name : names) {
    System.out.println(name);
}
🚩`forEach` как метод (Java 8+) С выходом Java 8 в интерфейсе Iterable появился метод forEach(), который принимает лямбда-выражение.
List<String> names = List.of("Alice", "Bob", "Charlie");

names.forEach(name -> System.out.println(name));
Или с ссылкой на метод (::)
names.forEach(System.out::println);
🚩Как работает `forEach()` с Map? Метод forEach() можно применять и к Map, передавая BiConsumer<K, V>.
Map<Integer, String> users = Map.of(1, "Alice", 2, "Bob");

users.forEach((id, name) -> System.out.println(id + " -> " + name));
Ставь 👍 и забирай 📚 Базу знаний

🤔 Какие есть классические функциональные интерфейсы? Из java.util.function наиболее часто используются: - Function<T, R> — принимает T, возвращает R. - Consumer<T> — принимает T, ничего не возвращает. - Supplier<T> — ничего не принимает, возвращает T. - Predicate<T> — принимает T, возвращает boolean. - UnaryOperator<T> — унарная операция, возвращает T. - BinaryOperator<T> — бинарная операция на двух объектах одного типа. Они активно используются в Stream API, Optional, Collectors, и при лямбда-выражениях. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

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

Релиз через два дня. Код готов. Почти... Остались тесты. Ну, точнее — покрытие. Потому что QA уже дышит в затылок, а ты сидиш
Релиз через два дня. Код готов. Почти... Остались тесты. Ну, точнее — покрытие. Потому что QA уже дышит в затылок, а ты сидишь и выбираешь: спать или корпеть до утра. Explyt Test умеет создавать тесты под твой код — сам. Быстро. В IDE. Без плясок. Хочешь, чтобы релиз прошёл, а не пролетел? Попробуй бесплатно! 👉 explyt.ai

🤔 Что такое wildcards? Wildcards (?) — универсальные типы в дженериках. Используются: - ? — любой тип; - ? extends T — любой подкласс T; - ? super T — любой родитель T. Они повышают гибкость обобщённых методов и коллекций. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Устали от продакшн-огня, но не хотите уходить из IT? ❤️‍🔥 В автоматизации тестирования не горит и обычно не падает в пятницу вечером. Зато кодить всё ещё нужно. Приходите на вебинар «Автотест на Java и карьера QA-автоматизатора» — в четверг, 5 июня. ▶️▶️ Занять место ▶️ Занятие проводят инженеры QA.GURU, создатели авторской программы по обучению автоматизации. Что будет? — узнаете, чем отличается Manual от Automation QA; — разберетесь, куда двигается рынок, и почему автоматизаторы нужны всем. А еще на занятии вы: — напишете свой автотест на Java: логин, поиск в Google шаг за шагом; — подключите Web, Mobile и API в одном проекте. Спикер, Станислав Васенков — QA-инженер, 10+ лет в автоматизации, ex-Head of QAA pflb.ru и автор библиотеки allure-notifications, спикер QA-митапов. Победитель хакатона по автоматизации тестирования от Epam. На нашей встрече Стас покажет, как специалисту с бэкграундом в разработке стартовать в автоматизации. 🎯 Будет интересно,если вы: — Java-разработчик, который хочет уйти от багфиксов, но остаться в IT; — ищете менее выгорающий трек с хорошей техбазой; — хотите понять, как устроена современная автоматизация и где вы в ней можете быть полезны. Участие бесплатное, но нужна регистрация. ▶️ Занять место можно до четверга. Реклама. Рекламодатель: ИП Васенков Станислав Олегович, ИНН 774335827403, erid: 2VtzqxNhbPT

🤔 Назови основные свойства транзакции В базах данных и многопоточных системах транзакция — это атомарная последовательность операций, которая должна выполняться корректно и полностью. 🚩Атомарность (Atomicity) — "всё или ничего" Транзакция выполняется полностью или не выполняется вовсе. Перевод 1000 рублей с одного счёта на другой: - Списать 1000 рублей с А - Зачислить 1000 рублей на B Если вторая операция не удалась, первая должна быть отменена.
try {
    connection.setAutoCommit(false); // Отключаем автокоммит
    withdraw(accountA, 1000);
    deposit(accountB, 1000);
    connection.commit(); // Подтверждаем транзакцию
} catch (Exception e) {
    connection.rollback(); // Откат в случае ошибки
}
🚩Согласованность (Consistency) — "данные остаются корректными" После транзакции данные должны оставаться в логически правильном состоянии. 🚩Изолированность (Isolation) — "отдельно от других транзакций" Одна транзакция не должна мешать выполнению другой. Два клиента одновременно бронируют одно и то же место в самолёте. Система должна обработать их по очереди, а не одновременно. В Java изолированность регулируется уровнями транзакций (TRANSACTION_READ_COMMITTED, TRANSACTION_REPEATABLE_READ и т. д.), чтобы избежать проблем, таких как "грязное чтение" или "фантомные записи".
connection.setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ);
🚩Долговечность (Durability) — "данные не теряются" После успешного завершения транзакции данные не должны теряться даже при сбоях (например, отключении электричества). Ставь 👍 и забирай 📚 Базу знаний

🤔 Какие виды отношений существуют в структурной диаграмме классов? - Ассоциация; - Агрегация; - Композиция; - Наследование (генерализация); - Реализация интерфейса. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Базовые отличия между List и Linked List? В Java List — это интерфейс, а его самые популярные реализации — ArrayList и LinkedList. Они имеют разную структуру данных, что влияет на производительность и область применения. 🚩Структура данных ArrayList использует динамический массив, который хранит элементы в непрерывной области памяти. LinkedList — это двусвязный список, где каждый элемент (Node) содержит ссылку на предыдущий и следующий элементы. 🚩Использование памяти ArrayList требует непрерывного блока памяти, что может быть проблемой при нехватке места. LinkedList требует дополнительной памяти на хранение ссылок (prev и next), что увеличивает общий размер. Пример кода: разница в скорости вставки в середину списка
import java.util.*;

public class ListComparison {
    public static void main(String[] args) {
        List<Integer> arrayList = new ArrayList<>();
        List<Integer> linkedList = new LinkedList<>();

        int size = 100000;
        
        // Заполнение списков
        for (int i = 0; i < size; i++) {
            arrayList.add(i);
            linkedList.add(i);
        }

        // Вставка в середину
        long start = System.nanoTime();
        arrayList.add(size / 2, 999);
        long end = System.nanoTime();
        System.out.println("ArrayList вставка в середину: " + (end - start) + " нс");

        start = System.nanoTime();
        linkedList.add(size / 2, 999);
        end = System.nanoTime();
        System.out.println("LinkedList вставка в середину: " + (end - start) + " нс");
    }
}
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что известно о паттерне Наблюдатель? - Позволяет одному объекту (наблюдаемому) оповещать множество подписанных объектов (наблюдателей) об изменениях; - Часто используется для реализации событийных систем (UI, подписки); - Примеры в Java: интерфейсы Observer и Observable. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что должно быть если объект equals нал? Метод equals() в Java предназначен для проверки равенства двух объектов. Если объект, переданный в метод equals(), равен null, метод должен возвращать `false`, так как объект не может быть равен null по определению. Рассмотрим этот случай более подробно. 🚩Почему важно обрабатывать `null` в `equals()`? 🟠Контракт метода `equals()` Согласно спецификации Java, метод equals() должен возвращать false, если объект, переданный в метод, равен null. Это необходимо для корректного сравнения объектов. Симметричность: Если a.equals(b) возвращает true, то b.equals(a) также должно возвращать true. Для null: Вызов x.equals(null) всегда должен возвращать false. 🟠Предотвращение `NullPointerException` Если метод equals() не проверяет, является ли объект null, попытка доступа к его полям или методам вызовет NullPointerException. 🚩Как правильно реализовать метод `equals()`? Вот стандартный способ реализации метода equals()
@Override
public boolean equals(Object obj) {
    // Проверяем, равен ли объект null
    if (obj == null) {
        return false;
    }
    
    // Проверяем, является ли объект тем же самым
    if (this == obj) {
        return true;
    }

    // Проверяем, принадлежит ли объект тому же классу
    if (getClass() != obj.getClass()) {
        return false;
    }

    // Приводим объект к текущему типу
    MyClass other = (MyClass) obj;

    // Сравниваем необходимые поля
    return this.field.equals(other.field);
}
🚩Что происходит, если игнорировать проверку `null`? Если вы не проверяете null, код вроде следующего приведет к ошибке
MyClass obj1 = new MyClass("Hello");
MyClass obj2 = null;

System.out.println(obj1.equals(obj2)); // Если нет проверки null -> NullPointerException
Пример с проверкой null
class MyClass {
    private String value;

    public MyClass(String value) {
        this.value = value;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (this == obj) {
            return true;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        MyClass other = (MyClass) obj;
        return value.equals(other.value);
    }
}

public class Main {
    public static void main(String[] args) {
        MyClass obj1 = new MyClass("Hello");
        MyClass obj2 = null;

        System.out.println(obj1.equals(obj2)); // false
    }
}
Ставь 👍 и забирай 📚 Базу знаний

Дизайнерская мебель со скидкой — используйте промокод. Лето пролетит быстро — успейте и отдохнуть, и обновить интерьер Пока д
Дизайнерская мебель со скидкой — используйте промокод. Лето пролетит быстро — успейте и отдохнуть, и обновить интерьер Пока действует скидка 5% на мягкую мебель по промокоду SUNNY. Действует до 8 июня. Узнать больше #реклама skdesign.ru О рекламодателе

🤔 Есть ли итератор в Stream? Нет, у Stream нет обычного Iterator. Поток обрабатывает элементы один за другим, применяя промежуточные и терминальные операции. Однако: - Stream.iterator() существует, но используется внутри и редко вручную. - Он не предназначен для классического обхода. В отличие от Iterable, Stream — одноразовый и однопроходный. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Регистрируйтесь на вебинар SIEM UserGate 💻Расскажет о том, как экосистема и SIEM UserGate помогает бороться с фишинговыми атаками в рамках демонстрации конкретного кейса. На вебинаре будет: - Вступительное слово - Экспертиза UserGate и сценарий конкретного кейса - Демонстрация кейса защиты от фишинговой атаки - Ответы на вопросы 👌Расскажем, как защитить вашу компанию. Регистрируйтесь — будет интересно! Зарегистрироваться #реклама 16+ webinar.usergate.com О рекламодателе

🤔 К какой категории сущности относится Primary Key? Primary Key (первичный ключ) в базах данных относится к категории ограничений (constraints). Это специальное ограничение, которое накладывается на столбец или группу столбцов таблицы, чтобы однозначно идентифицировать каждую строку (запись) в таблице. 🚩Основные свойства Primary Key 🟠Уникальность Значение первичного ключа должно быть уникальным для каждой строки. Это исключает дублирование записей. 🟠Не может быть NULL Столбец (или столбцы), определённый как Primary Key, не допускает значения NULL, так как NULL не может однозначно идентифицировать строку. 🟠Только один Primary Key на таблицу Таблица может иметь только один первичный ключ, но он может состоять из одного столбца (простой ключ) или нескольких (составной ключ). 🚩Зачем нужен Primary Key? Для однозначной идентификации записей в таблице. Для создания связей между таблицами в реляционных базах данных (внешние ключи ссылаются на первичный ключ другой таблицы). Для ускорения поиска и манипуляций с данными за счёт создания индекса на столбец первичного ключа. 🚩Пример использования Primary Key Простой первичный ключ
CREATE TABLE Users (
    user_id INT PRIMARY KEY,
    username VARCHAR(50),
    email VARCHAR(100)
);
Составной первичный ключ
CREATE TABLE Orders (
    order_id INT,
    product_id INT,
    PRIMARY KEY (order_id, product_id)
);
Ставь 👍 и забирай 📚 Базу знаний

Начните работу легко, даже если у вас лапки Работаете в программах 1С? Попробуйте современное решение! 1С:Фреш — это облачный
Начните работу легко, даже если у вас лапки Работаете в программах 1С? Попробуйте современное решение! 1С:Фреш — это облачный сервис, который открывает доступ ко всем популярным программам 1С: Бухгалтерии, Рознице, Зарплата и управление персоналом и другим. Чем 1С:Фреш отличается от локальных версий программ: — Автообновление 1С всегда до последней версии, не нужно ждать специалистов; — Синхронизация данных между программами 1С; — Безопасность данных, вся информация передается в зашифрованном виде и доступна только вам. ⚡Зарегистрируйтесь, и получите 30 дней тестового доступа к полному функционалу! Зарегистрироваться #реклама 16+ pcs.ru О рекламодателе

🤔 Какую идею реализует LinkedList? LinkedList реализует двусвязный список: - каждый элемент содержит ссылку на предыдущий и следующий; - хорошо подходит для частых вставок/удалений в начало, конец и середину; - имеет более медленный доступ по индексу, чем ArrayList. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Курс «Бизнес-аналитик» - поможем с трудоустройством! Освойте высокооплачиваемую IT-профессию с нуля за 7 месяцев. Выдаём дипл
Курс «Бизнес-аналитик» - поможем с трудоустройством! Освойте высокооплачиваемую IT-профессию с нуля за 7 месяцев. Выдаём диплом, помогаем с трудоустройством. Excel, SQL, PowerBI, Python, BPMN, UML, EPC, IDEF. Преимущества обучения в Академии Eduson: 🎓 официальный государственный диплом 🎓 рассрочка 0% на 24 мес. 🎓 22 реальных бизнес-кейса 🎓 бессрочный доступ к лекциям и материалам, которые регулярно обновляются 🎓 личный куратор с Вами на связи Начните обучаться онлайн и получать стабильный доход уже во время обучения! Получить консультацию #реклама 16+ eduson.academy О рекламодателе

🤔 Что за исключение Interrupted Exception? InterruptedException — это проверяемое исключение (checked exception) в Java, которое выбрасывается, когда поток (Thread) прерывается во время выполнения метода, который поддерживает прерывание (например, sleep(), wait(), join() и др.). 🚩Почему `InterruptedException` существует? В многопоточной среде иногда требуется прервать выполнение потока, например, для завершения долгой задачи или для корректной остановки программы. Вместо грубого завершения потока (Thread.stop(), который устарел и считается небезопасным) Java предлагает мягкий способ прерывания через флаг прерывания и обработку InterruptedException. 🚩Когда выбрасывается `InterruptedException`? Это исключение выбрасывается, если поток: 1. Ожидает (wait(), join()) 2. Спит (sleep()) 3. Блокируется на очереди (BlockingQueue.take(), LockSupport.park()) И при этом его прерывают с помощью метода interrupt(). Пример кода: обработка InterruptedException
class MyThread extends Thread {
    public void run() {
        try {
            System.out.println("Поток засыпает...");
            Thread.sleep(5000); // Поток засыпает на 5 секунд
        } catch (InterruptedException e) {
            System.out.println("Поток был прерван во время сна!");
        }
        System.out.println("Поток продолжает работу...");
    }
}

public class Main {
    public static void main(String[] args) {
        MyThread t = new MyThread();
        t.start();

        try {
            Thread.sleep(2000); // Даем потоку 2 секунды поработать
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        t.interrupt(); // Прерываем поток
    }
}
Вывод программы
Поток засыпает...
Поток был прерван во время сна!
Поток продолжает работу...
🚩Что делать после `InterruptedException`? 1. Просто обработать исключение (как в примере выше). 2. Передать исключение дальше — например, если метод не может корректно обработать прерывание, он передает его вызывающему коду:
   void myMethod() throws InterruptedException {
       Thread.sleep(1000); // Может выбросить исключение
   }
🟠Восстановить флаг прерывания если прерывание важно для логики программы:
   catch (InterruptedException e) {
       Thread.currentThread().interrupt(); // Восстанавливаем флаг прерывания
   }
Ставь 👍 и забирай 📚 Базу знаний

Java | Вопросы собесов - Статистика и аналитика Telegram-канала @easy_java_ru