uk
Feedback

Не попадись на ботовода! Telemetrio знаходить і позначає такі канали мітками 👉 Хочеш бачити мітку, оформляй підписку

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

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

Відкрити в Telegram

Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads

Показати більше

📈 Аналітичний огляд Telegram-каналу Java | Вопросы собесов

Канал Java | Вопросы собесов (@easy_java_ru) у мовному сегменті Російська є активним учасником. На даний момент спільнота об'єднує 11 292 підписників, посідаючи 10 925 місце в категорії Технології та додатки та 56 580 місце у регіоні Росія.

📊 Показники аудиторії та динаміка

З моменту свого створення невідомо, проект продемонстрував стрімке зростання, зібравши аудиторію у 11 292 підписників.

За останніми даними від 01 листопада, 2026, канал демонструє стабільну активність. Хоча за останні 30 днів спостерігається зміна кількості учасників на -44, а за останні 24 години на -1, загальне охоплення залишається високим.

  • Статус верифікації: Не верифікований
  • Рівень залученості (ER): Середній показник залученості аудиторії становить 9.82%. Протягом перших 24 годин після публікації контент зазвичай збирає 5.82% реакцій від загальної кількості підписників.
  • Охоплення публікацій: В середньому кожен допис отримує 1 109 переглядів. Протягом першої доби публікація в середньому набирає 657 переглядів.
  • Реакції та взаємодія: Аудиторія активно підтримує контент: середня кількість реакцій на один пост – 6.
  • Тематичні інтереси: Контент зосереджений навколо ключових тем, таких як ставь, void, string, строка, static.

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

Автор описує ресурс як майданчик для висловлення суб'єктивної думки:
“Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads”

Завдяки високій частоті оновлень (останні дані отримано 02 листопада, 2026), канал підтримує актуальність та високий рівень охоплення публікацій. Аналітика показує, що аудиторія активно взаємодіє з контентом, що робить його важливою точкою впливу в категорії Технології та додатки.

11 292
Підписники
-124 години
-237 днів
-4430 днів
Архів дописів
🤔 Что подразумевается под Классом-обёрткой (Class Wrapper)? Класс-обёртка (Wrapper class) — это объектная оболочка для примитивного типа. В Java каждый примитив имеет соответствующий класс-обёртку: - int → Integer - double → Double - char → Character - и т.д. Зачем нужен: - для использования примитивов там, где требуется объект (например, в коллекциях); - поддержка null значений; - работа с generic-кодом (List<Integer>). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Методичка: как сделать онлайн-встречи эффективнее Надоело ждать коллег, которые постоянно забывают о встречах, а отсутствие п
Методичка: как сделать онлайн-встречи эффективнее Надоело ждать коллег, которые постоянно забывают о встречах, а отсутствие повестки и потерянные договоренности мешают нормально работать? Команда МТС Линк собрала на 37 страницах полезные материалы, чек-листы и кейсы, которые помогают компаниям проводить эффективные совещания в онлайне с помощью сервиса Встречи. Из методички узнаете: - Как создать постоянную ссылку и подключаться на встречи в 2 клика, - Как делать заметки и работать с файлами, не переживая за качество связи и безопасность данных. - Как облегчает жизнь ИИ, который расшифровывает созвоны в текст и автоматически отправляет расшифровку на почту. Еще в методичке описаны 7 способов оценки текущей эффективности ваших онлайн-встреч. Получить гайд можно бесплатно на сайте. Скачать #реклама 16+ mts-link.ru О рекламодателе

🤔 Роль `serialVersionUID` в сериализации Это уникальный идентификатор версии класса, который используется механизмом сериализации для проверки совместимости классов при десериализации объектов. Он играет ключевую роль в предотвращении ошибок при изменении классов, участвующих в сериализации. 🚩Почему `serialVersionUID` важен? 🟠Гарантия совместимости при десериализации Когда объект сериализуется (превращается в поток байтов), вместе с ним сохраняется и serialVersionUID. При десериализации JVM сравнивает serialVersionUID сохранённого объекта с serialVersionUID текущего класса. Если они не совпадают, выбрасывается исключение InvalidClassException, так как структура класса могла измениться. 🟠Предотвращение ошибок при изменениях класса Если класс изменяется (например, добавляется новое поле), но serialVersionUID остаётся неизменным, JVM считает, что класс всё ещё совместим с более старой версией, и десериализация проходит успешно. 🟠Явное управление версиями Если serialVersionUID не указан явно, JVM генерирует его автоматически на основе структуры класса. Это может привести к неожиданным проблемам, если класс изменится, так как автоматически вычисленный serialVersionUID изменится. 🚩Как использовать `serialVersionUID`?
import java.io.*;

class Person implements Serializable {
    private static final long serialVersionUID = 1L; // Версия класса
    private String name;
    private int age;

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

    @Override
    public String toString() {
        return "Person{name='" + name + "', age=" + age + "}";
    }
}
🚩Что будет, если не указать `serialVersionUID`? Если не определить serialVersionUID, JVM сгенерирует его автоматически. Однако: Он будет зависеть от структуры класса. Малейшее изменение в коде (даже порядок методов) изменит serialVersionUID. Это может привести к InvalidClassException при десериализации. Ставь 👍 и забирай 📚 Базу знаний

Радиаторы КЗТО от HOME-HEAT — напрямую с завода Заказывайте радиаторы КЗТО — без переплат напрямую с завода. Более 10 000 поз
Радиаторы КЗТО от HOME-HEAT — напрямую с завода Заказывайте радиаторы КЗТО — без переплат напрямую с завода. Более 10 000 позиций на складе HOME-HEAT. ⚡ Переходите на сайт: Перейти на сайт #реклама home-heat.ru О рекламодателе

🤔 Какие подклассы класса OutputStream есть, для чего они предназначены? - FileOutputStream — запись байтов в файл; - BufferedOutputStream — буферизированная запись для ускорения; - DataOutputStream — запись примитивных типов данных; - ObjectOutputStream — сериализация объектов. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Дарим подписку Mail Space на 1 ТБ на 3 летних месяца. У вас будет 1 ТБ для любых файлов, а еще безлимит — это когда фото и видео с телефона не занимают место в Облаке. Можете фоткать всё, что угодно и не переживать, что место закончится. Не закончится. Совсем. Даже на 1 000 001 фото летней вечеринки. Забрать подарок Узнать больше #реклама 16+ cloud.mail.ru О рекламодателе

🤔 Опиши разницу типов данных DATETIME и TIMESTAMP? В MySQL (и других реляционных БД) типы данных DATETIME и TIMESTAMP используются для хранения даты и времени, но у них есть несколько ключевых отличий. 🚩Когда использовать `DATETIME` и `TIMESTAMP`? Используйте DATETIME, если: Нужно хранить фиксированное значение даты и времени, не зависящее от часового пояса. Работаете с датами за пределами 1970-2038 гг. Требуется удобочитаемый формат (без конверсий). Используйте TIMESTAMP, если: Нужно учитывать часовой пояс (например, хранить время в UTC, а при запросе автоматически конвертировать в локальное). Важно автоматическое обновление при изменении строки (ON UPDATE CURRENT_TIMESTAMP). Нужно экономить память (занимает в 2 раза меньше места, чем DATETIME). 🚩Примеры DATETIME (Фиксированная дата и время)
CREATE TABLE events (
    id INT PRIMARY KEY,
    event_time DATETIME NOT NULL
);

INSERT INTO events VALUES (1, '2025-02-17 12:30:00');
TIMESTAMP (Автообновление + Часовые пояса)
CREATE TABLE logs (
    id INT PRIMARY KEY,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
Если изменим time_zone, TIMESTAMP отобразится в новом часовом поясе.
SET time_zone = 'Europe/Moscow';
SELECT created_at FROM logs;
Ставь 👍 и забирай 📚 Базу знаний

Запустите рекламу в телеграм-каналах с Яндекс Директом Перфоманс-реклама теперь в телеграм-каналах ⚡ Яндекс Директ знает, как
Запустите рекламу в телеграм-каналах с Яндекс Директом Перфоманс-реклама теперь в телеграм-каналах ⚡ Яндекс Директ знает, как привлечь целевую аудиторию 💰👌 Попробовать #реклама yandex.ru О рекламодателе

🤔 Что такое mutual exclusion? Mutual exclusion (взаимное исключение) — это механизм, который обеспечивает, что в критический участок кода в один момент времени может зайти только один поток, предотвращая состояния гонки. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Расскажи об этапах (фазах) жизненного цикла JSP.? 🟠Перевод (Translation) JSP страница переводится в сервлетный Java-код. JSP контейнер анализирует содержимое JSP страницы и создает соответствующий сервлетный исходный код (.java файл). 🟠Компиляция (Compilation) Сервлетный исходный код компилируется в байт-код, создавая .class файл (сервлет). Этот этап аналогичен компиляции обычного Java-кода. 🟠Загрузка (Loading) Скомпилированный класс сервлета загружается в память. Контейнер загружает класс сервлета, чтобы он мог быть выполнен. 🟠Инициализация (Initialization) Контейнер вызывает метод jspInit(). Этот метод вызывается один раз при первом создании сервлета или при перезапуске сервера и предназначен для выполнения инициализационных задач (например, настройка ресурсов). 🟠Обработка запросов (Request Processing) Для каждого HTTP-запроса вызывается метод jspService(). Этот метод обрабатывает входящий запрос и генерирует соответствующий ответ. Основная работа по генерации динамического содержимого происходит на этом этапе. 🟠Завершение (Destruction) Когда JSP страница выводится из эксплуатации (например, при остановке сервера), контейнер вызывает метод jspDestroy(). Этот метод используется для освобождения ресурсов (например, закрытие соединений с базой данных). Ставь 👍 и забирай 📚 Базу знаний

🤔 Можно ли переопределить метод и конструктор? - Методы можно переопределять в дочерних классах, если они не final, не static и не private. - Конструкторы нельзя переопределить, но можно перегрузить, создавая несколько вариантов с разными параметрами. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Для чего нужен функциональный интерфейс BiConsumer<T,U>? BiConsumer<T, U> — это функциональный интерфейс из пакета java.util.function, который принимает два входных аргумента и не возвращает результат. Сигнатура BiConsumer<T, U>
@FunctionalInterface
public interface BiConsumer<T, U> {
    void accept(T t, U u);
}
🚩Вывод пар значений Допустим, у нас есть Map<String, Integer>, и мы хотим вывести все ключи и значения:
import java.util.Map;
import java.util.function.BiConsumer;

public class BiConsumerExample {
    public static void main(String[] args) {
        Map<String, Integer> map = Map.of("Alice", 30, "Bob", 25, "Charlie", 35);

        // Используем BiConsumer для вывода ключа и значения
        BiConsumer<String, Integer> printEntry = (key, value) -> 
            System.out.println("Имя: " + key + ", возраст: " + value);

        // Применяем BiConsumer к каждому элементу Map
        map.forEach(printEntry);
    }
}
Вывод
Имя: Alice, возраст: 30  
Имя: Bob, возраст: 25  
Имя: Charlie, возраст: 35  
🚩Использование `BiConsumer` в `Stream` Допустим, у нас есть список продуктов и их цены. Мы хотим увеличить цену каждого товара и напечатать результат.
import java.util.*;
import java.util.function.BiConsumer;

public class BiConsumerStreamExample {
    public static void main(String[] args) {
        Map<String, Double> products = new HashMap<>();
        products.put("Хлеб", 50.0);
        products.put("Молоко", 80.0);
        products.put("Яблоки", 120.0);

        // BiConsumer, который увеличивает цену и выводит её
        BiConsumer<String, Double> increaseAndPrint = (name, price) -> {
            double newPrice = price * 1.1; // +10%
            System.out.println(name + " теперь стоит " + newPrice);
        };

        products.forEach(increaseAndPrint);
    }
}
Вывод
Хлеб теперь стоит 55.0  
Молоко теперь стоит 88.0  
Яблоки теперь стоят 132.0  
🚩Объединение `BiConsumer` с `andThen()` Метод andThen(BiConsumer<T, U>) позволяет объединять несколько действий в цепочку.
import java.util.function.BiConsumer;

public class BiConsumerChaining {
    public static void main(String[] args) {
        BiConsumer<String, Integer> printUser = (name, age) -> 
            System.out.println("Пользователь: " + name + ", возраст: " + age);

        BiConsumer<String, Integer> checkAdult = (name, age) -> 
            System.out.println(name + (age >= 18 ? " совершеннолетний" : " несовершеннолетний"));

        // Объединяем два BiConsumer'а
        BiConsumer<String, Integer> combined = printUser.andThen(checkAdult);

        combined.accept("Алексей", 20);
        combined.accept("Мария", 16);
    }
}
Вывод:
Пользователь: Алексей, возраст: 20  
Алексей совершеннолетний  
Пользователь: Мария, возраст: 16  
Мария несовершеннолетний
Ставь 👍 и забирай 📚 Базу знаний

🤔 Какие плагины можно поставить при создании виртуальной машины? JVM можно расширить различными инструментами: - JVisualVM или JProfiler для мониторинга производительности и анализа работы JVM. - Heap Dump Analysis Tools для анализа состояния памяти при утечках. - New Relic, Dynatrace для интеграции APM (Application Performance Monitoring). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какие Fetching Types знаешь в Hibernate и чем они отличаются? В Hibernate существует два типа загрузки (Fetching Types) данных: Lazy (ленивая загрузка) Eager (жадная загрузка) Эти типы определяют, как Hibernate загружает связанные сущности при выполнении запроса. 🚩Lazy Fetching (ленивая загрузка) Данные загружаются только при первом обращении к ним. Экономит память и ресурсы, так как ненужные данные не загружаются сразу. Используется по умолчанию в @OneToMany, @ManyToMany.
@Entity
class User {
    @Id @GeneratedValue
    private Long id;
    
    private String name;

    @OneToMany(mappedBy = "user", fetch = FetchType.LAZY)
    private List<Order> orders;  // Загрузятся ТОЛЬКО при первом вызове getOrders()
}
User user = session.get(User.class, 1L);  // Загружается только User
List<Order> orders = user.getOrders();   // Запрос в БД выполняется ТОЛЬКО здесь
🚩Eager Fetching (жадная загрузка) Hibernate загружает все связанные данные сразу, даже если они не нужны. Увеличивает время выполнения запроса, так как делает JOIN или несколько отдельных запросов. Используется по умолчанию в @ManyToOne, @OneToOne.
@Entity
class User {
    @Id @GeneratedValue
    private Long id;
    
    private String name;

    @OneToMany(mappedBy = "user", fetch = FetchType.EAGER)
    private List<Order> orders;  // Загружается сразу при получении User
}
User user = session.get(User.class, 1L);  // Загружается User + сразу все его Orders
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое денормализация баз данных? Денормализация — это сознательное дублирование данных или объединение таблиц, чтобы: - снизить количество JOIN'ов; - ускорить чтение данных; - упростить отчёты или агрегации. Используется, когда производительность важнее избыточности. Пример: хранить имя пользователя рядом с заказом, а не связывать с таблицей пользователей. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что нужно, чтобы написанная на Java программа, заработала? Чтобы написанная на Java программа заработала, необходимо выполнить несколько шагов, начиная с написания кода и заканчивая его запуском. 🚩Шаги 1⃣Написание кода Напишите Java-код в текстовом редакторе или интегрированной среде разработки (IDE), такой как IntelliJ IDEA, Eclipse или NetBeans.
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}
2⃣Установка Java Development Kit (JDK) Убедитесь, что на вашем компьютере установлен JDK (Java Development Kit). JDK включает в себя компилятор (javac) и виртуальную машину Java (JVM). Скачайте и установите последнюю версию JDK с сайта Oracle или OpenJDK. 3⃣Компиляция кода Компилируйте Java-код в байт-код, который будет выполняться на JVM. Для этого используйте команду javac. После компиляции появится файл HelloWorld.class, содержащий байт-код.
javac HelloWorld.java
4⃣Запуск программы Запустите скомпилированный байт-код с помощью виртуальной машины Java (JVM), используя команду java.
java HelloWorld
Вывод должен быть:
Hello, World!
Ставь 👍 и забирай 📚 Базу знаний

⚡️Хотите стать Android-разработчиком и создавать масштабируемые мобильные приложения с нуля? Курс «Android Developer» идеален
⚡️Хотите стать Android-разработчиком и создавать масштабируемые мобильные приложения с нуля? Курс «Android Developer» идеален для новичков, которые хотят попасть в IT, а также для тестировщиков и сисадминов, желающих перейти в разработку. За 10 месяцев обучения вы освоите Kotlin, научитесь разрабатывать приложения на Android SDK, работать с фреймворками Dagger2, RxJava и Jetpack Compose, а также освоите тестирование и CI/CD. Мы научим вас проектировать многомодульные архитектуры, работать с базами данных (Room, DataStore), создавать UI, использовать современные фреймворки и оптимизировать приложения. Все это с реальными задачами, которые помогут вам построить сильное портфолио и стать успешным разработчиком. 📲Оставьте заявку и получите скидку на обучение: https://otus.pw/WqBZ/ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

🤔 Какая основная идея интерфейса List? Интерфейс List в Java представляет упорядоченную коллекцию, в которой: - допускаются дубликаты; - можно обращаться к элементам по индексу; - порядок вставки сохраняется. Он предоставляет методы для работы с индексами (get, add, remove, set) и расширяет Collection. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как бороться в БД с SQL Injection? SQL Injection – это атака, при которой злоумышленник вставляет вредоносный SQL-код в запрос, чтобы получить несанкционированный доступ к данным. Допустим, у нас есть код
String query = "SELECT * FROM users WHERE username = '" + username + "' AND password = '" + password + "'";
Если злоумышленник введёт ' OR '1'='1 в поле пароля, запрос превратится в:
SELECT * FROM users WHERE username = 'admin' AND password = '' OR '1'='1'
🚩Способы защиты от SQL Injection 🟠Использование `PreparedStatement` (РЕКОМЕНДУЕТСЯ) Подготовленные запросы автоматически экранируют входные данные, предотвращая SQL-инъекции.
String sql = "SELECT * FROM users WHERE username = ? AND password = ?";
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setString(1, username);
stmt.setString(2, password);
ResultSet rs = stmt.executeQuery();
🟠Использование ORM (например, Hibernate) ORM-фреймворки (Hibernate, JPA) автоматически генерируют безопасные SQL-запросы.
TypedQuery<User> query = entityManager.createQuery(
    "SELECT u FROM User u WHERE u.username = :username AND u.password = :password", User.class);
query.setParameter("username", username);
query.setParameter("password", password);
User user = query.getSingleResult();
🟠Проверка и экранирование входных данных Если по какой-то причине PreparedStatement использовать нельзя, экранируйте опасные символы (', " и ;).
String safeInput = input.replace("'", "\\'");
🟠Минимизация прав в БД Создавайте отдельного пользователя БД с ограниченными правами: Запрет на DROP, DELETE, UPDATE без WHERE Только доступ к нужным таблицам
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'securepassword';
GRANT SELECT, INSERT, UPDATE ON mydb.users TO 'app_user'@'localhost';
🟠Использование Web Application Firewall (WAF) WAF анализирует HTTP-запросы и блокирует подозрительные SQL-запросы. Пример: ModSecurity – популярный WAF для защиты веб-приложений. Ставь 👍 и забирай 📚 Базу знаний

🔔 Прокачайте системный подход + скидка 🎁 10% на курс до 30 июня Системный дизайн — для тех, кто отвечает за стратегическое
🔔 Прокачайте системный подход + скидка 🎁 10% на курс до 30 июня Системный дизайн — для тех, кто отвечает за стратегическое мышление и принятие архитектурных решений Хотите глубже понимать, как проектируются масштабируемые и устойчивые системы? Курс «System Design» от OTUS — это: — Не просто паттерны, а практика проектирования сложных систем, — Подготовка к архитектурным интервью, — Реальные кейсы из крупных компаний, — Финальный проект, который можно показать в портфолио. Курс подойдёт разработчикам, архитекторам, техническим лидам и DevOps-инженерам, которые хотят повысить квалификацию и системно мыслить при проектировании. 🚀Только до 30 июня — скидка 10% при полной оплате курса. Оставьте заявку, чтобы зафиксировать условия: 🔗 Получить скидку и оставить заявку https://otus.pw/WPpq/ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576