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

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

Відкрити в Telegram

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

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

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

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

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

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

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

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

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

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

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

11 390
Підписники
-224 години
+27 днів
-730 день
Архів дописів
🤔 Какие 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
Ставь 👍 и забирай 📚 Базу знаний

🤔 Как организовать поиск по ArrayList? Поиск может быть двух типов: - линейный — с помощью contains, indexOf, когда список не отсортирован (сложность O(n)). - бинарный — с помощью Collections.binarySearch, если список отсортирован (сложность O(log n)), но в этом случае предварительно надо отсортировать коллекцию. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Используешь в работе Lambda-выражения? Да, лямбда-выражения являются важной частью современной разработки на Java, и я активно их использую в своей работе. Лямбда-выражения помогают писать более лаконичный и выразительный код, особенно при работе с коллекциями и потоками данных. Вот несколько распространенных случаев использования лямбда-выражений в Java: 🟠Итерация по коллекциям Использование лямбда-выражений с методом forEach позволяет компактно и удобно итерировать по элементам коллекций.
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
names.forEach(name -> System.out.println(name));
🟠Фильтрация и преобразование коллекций С использованием Stream API и лямбда-выражений можно легко фильтровать, сортировать и преобразовывать коллекции.
List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David");
List<String> filteredNames = names.stream()
    .filter(name -> name.startsWith("A"))
    .collect(Collectors.toList());

filteredNames.forEach(System.out::println); // Вывод: Alice
🟠Сортировка коллекций Лямбда-выражения упрощают сортировку коллекций с использованием метода sort.
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
names.sort((name1, name2) -> name1.compareTo(name2));
names.forEach(System.out::println);
🟠Использование функциональных интерфейсов Лямбда-выражения широко используются с функциональными интерфейсами, такими как Predicate, Function, Consumer и Supplier.
// Predicate
Predicate<String> startsWithA = s -> s.startsWith("A");
boolean result = startsWithA.test("Alice"); // true

// Function
Function<String, Integer> lengthFunction = s -> s.length();
int length = lengthFunction.apply("Hello"); // 5

// Consumer
Consumer<String> printConsumer = s -> System.out.println(s);
printConsumer.accept("Hello, World!"); // Вывод: Hello, World!

// Supplier
Supplier<String> stringSupplier = () -> "Hello, Supplier!";
String suppliedString = stringSupplier.get();
System.out.println(suppliedString); // Вывод: Hello, Supplier!
🟠Параллельные вычисления Лямбда-выражения с использованием параллельных потоков позволяют легко выполнять параллельные вычисления.
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.parallelStream()
    .mapToInt(Integer::intValue)
    .sum();

System.out.println("Sum: " + sum); // Вывод: Sum: 15
🚩Пример использования в реальном проекте Предположим, у нас есть список сотрудников, и мы хотим отфильтровать и отсортировать их по имени.
import java.util.*;
import java.util.stream.Collectors;

class Employee {
    private String name;
    private int age;

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

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    @Override
    public String toString() {
        return "Employee{name='" + name + "', age=" + age + '}';
    }
}

public class LambdaExample {
    public static void main(String[] args) {
        List<Employee> employees = Arrays.asList(
            new Employee("Alice", 30),
            new Employee("Bob", 25),
            new Employee("Charlie", 35),
            new Employee("David", 28)
        );

        // Фильтрация и сортировка сотрудников по имени
        List<Employee> filteredAndSorted = employees.stream()
            .filter(e -> e.getAge() > 27)
            .sorted(Comparator.comparing(Employee::getName))
            .collect(Collectors.toList());

        filteredAndSorted.forEach(System.out::println);
    }
}
Ставь 👍 и забирай 📚 Базу знаний

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

🤔 Какие способы синхронизации в Java есть? Синхронизация реализуется через synchronized, Lock, ReentrantLock, volatile, Atomic-классы, а также через высокоуровневые конструкции, такие как CountDownLatch, Semaphore, ExecutorService. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какая коллекция реализует дисциплину обслуживания FIFO? FIFO (First-In, First-Out) – это принцип обработки данных: "первым вошёл – первым вышел". 🟠Коллекции, реализующие FIFO Пример работы FIFO с Queue
import java.util.*;

public class FifoExample {
    public static void main(String[] args) {
        Queue<String> queue = new LinkedList<>(); // Можно заменить на ArrayDeque

        queue.add("Первый");
        queue.add("Второй");
        queue.add("Третий");

        System.out.println(queue.poll()); // Первый
        System.out.println(queue.poll()); // Второй
        System.out.println(queue.poll()); // Третий
    }
}
🟠Разница `poll()`, `remove()` и `peek()`
Queue<Integer> queue = new LinkedList<>();
queue.add(10);
System.out.println(queue.peek());  // 10 (но не удаляет)
System.out.println(queue.poll());  // 10 (удаляет)
System.out.println(queue.poll());  // null (очередь пуста)
Ставь 👍 и забирай 📚 Базу знаний

Вебинар TIKITRIK по оценке эффективности ИТ-активов Бесплатный вебинар 11 сентября в 11:00 (мск). Приглашаем вас на вебинар,
Вебинар TIKITRIK по оценке эффективности ИТ-активов Бесплатный вебинар 11 сентября в 11:00 (мск). Приглашаем вас на вебинар, где мы расскажем об оценке экономической эффективности от внедрения ITAM и вместе посчитаем, сколько вы можете сэкономить уже в первый год. Для ИТ - руководителей и ИТ - специалистов. В программе вебинара обсудим технологии в действии и в деньгах, а также продемонстируем наше решение T I K I T R I K Asset Management в режиме реального времени. Зарегистрироваться #реклама 16+ tikitrik.com О рекламодателе

🤔 Какое худшее время работы метода add() для LinkedList? - В конец — O(1), если не пересоздаётся коллекция; - В середину/начало — O(n), из-за поиска позиции. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 В чем разница между 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); // Теперь это точно отдельный объект
Ставь 👍 и забирай 📚 Базу знаний

Онлайн-магистратура с IT специальностями от Яндекса Совместно с ИТМО, МИФИ, МФТИ. Онлайн-магистратура с актуальными программами и гибким графиком обучения. Получите высокооплачиваемую IT профессию, официальный диплом и практические знания. Господдержка оплаты. Совмещение с работой! Подать заявку #реклама 16+ practicum.yandex.ru О рекламодателе

🤔 Чем объект отличается от примитива? - Примитив — это базовый тип (int, boolean и т.д.), он не имеет методов, занимает меньше памяти, работает быстрее. - Объект — экземпляр класса, содержит поля и методы, может быть null, требует больше ресурсов. В Java есть обёртки для примитивов (Integer, Boolean) — это объекты. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Гайд для HRD и HRBP по проведению эффективных вебинаров Как HRD и HRBP ускорить адаптацию и обучение новых сотрудников с помо
Гайд для HRD и HRBP по проведению эффективных вебинаров Как HRD и HRBP ускорить адаптацию и обучение новых сотрудников с помощью вебинаров? Гайд от МТС Линк по подготовке и проведению эффективных вебинаров. ✅ В гайде: - Как лучше использовать вебинары для онбординга и обучения новых сотрудников; - Как упростить рекрутинг и снизить нагрузку на HR-команду; - Как ускорить адаптацию новичков и сократить отток на испытательном сроке; - Как сэкономить время на организации вебинара и пригласить всех участников в 2 клика. Бонус внутри: 5 прикладных советов по контролю внимания участников во время вебинара ✨ Скачайте гайд бесплатно по ссылке Скачать #реклама 16+ mts-link.ru О рекламодателе

🤔 Можно ли одновременно использовать в сервлете PrintWriter и ServletOutputStream? Нет, одновременно использовать PrintWriter и ServletOutputStream в одном сервлете нельзя. Это связано с тем, что эти два класса работают с разными типами данных и открывают ответный поток в разных режимах — PrintWriter для символьных данных, а ServletOutputStream для байтовых данных. 🚩Почему нельзя использовать одновременно: Типы потоков: 🟠`PrintWriter`: Предназначен для записи текстовых данных (символов и строк). 🟠`ServletOutputStream`: Предназначен для записи бинарных данных (байтов и массивов байтов). Конфликт потоков: Открытие одного потока блокирует возможность открытия другого. Попытка использования обоих потоков в одном запросе приведет к исключению IllegalStateException.
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
import javax.servlet.ServletOutputStream;

public class MixedContentServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter writer = response.getWriter();
        ServletOutputStream outputStream = response.getOutputStream(); // Это вызовет IllegalStateException

        writer.println("Hello, World!"); // Пытаемся записать текст
        byte[] imageData = ...; // Получаем бинарные данные
        outputStream.write(imageData); // Пытаемся записать бинарные данные
    }
}
Если требуется отправить как текстовые, так и бинарные данные, это нужно делать последовательно, разделяя логику на отдельные запросы или сервлеты. Отправка текстовых данных:
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;

public class TextServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html><body><h1>Hello, World!</h1></body></html>");
    }
}
Отправка бинарных данных:
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletOutputStream;

public class BinaryServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("application/pdf");
        ServletOutputStream out = response.getOutputStream();
        byte[] pdfData = ...; // Получаем PDF данные
        out.write(pdfData);
    }
}
Ставь 👍 и забирай 📚 Базу знаний

Новые диваны по цене 1 чашки кофе в день?! ⚡Вы не поверите, но реально возможно платить за диван цену 1 чашки кофе за рабочий
Новые диваны по цене 1 чашки кофе в день?! ⚡Вы не поверите, но реально возможно платить за диван цену 1 чашки кофе за рабочий день! 💰Такие низкие цены возможны только в Много Мебели. Как нам удаётся держать выгодные цены для вас: 1. Диваны напрямую с завода без дополнительных наценок; 2. Возможность рассрочки без переплат; 3. Промокод MMSALE для скидки до -3000 рублей! Давайте подсчитаем: средняя стоимость стаканчика кофе составляет 200 рублей, а рабочих дней в месяце 22. Выходит около 4 400 рублей в месяц за кофе. Приобретая диван по цене за 25 000 рублей в рассрочку, вы будете платить в месяц примерно 4 167 рублей То есть, новый диван обойдётся вам даже дешевле 1 чашки кофе в рабочий день! Выгодные покупки только в Много Мебели!✅ Посмотреть каталог #реклама mnogomebeli.com О рекламодателе

🤔 StringBuilder и StringBuffer, в чём различия? StringBuilder быстрее, но не потокобезопасен, тогда как StringBuffer потокобезопасен за счёт синхронизации, но работает медленнее. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 В чем разница между Spring аннотациями Component, Repository и Service? Все три аннотации используются в Spring для создания бинов, но у каждой есть своё предназначение. 🚩`@Component` – базовая аннотация для бина @Component помечает класс как Spring-бин (компонент). Является универсальной аннотацией. Можно применять к любым классам, которые должны управляться Spring-контейнером.
@Component
public class MyComponent {
    public void doWork() {
        System.out.println("Работа компонента");
    }
}
🚩`@Service` – для бизнес-логики @Service – это специализированный @Component, используемый для сервисных классов (логика приложения). Упрощает понимание кода (показывает, что этот класс содержит бизнес-логику).
@Service
public class UserService {
    public String getUser() {
        return "Пользователь Иван";
    }
}
🚩`@Repository` – для работы с базой данных @Repository – это специализированный @Component для слоя доступа к данным (DAO, Repository). Автоматически перехватывает SQL-исключения (PersistenceExceptionTranslationPostProcessor) и преобразует их в DataAccessException.
@Repository
public class UserRepository {
    public String findUserById(int id) {
        return "Пользователь с ID " + id;
    }
}
Ставь 👍 и забирай 📚 Базу знаний

🤔 В чём проблема конкатенации строк в Java? Проблема в том, что строки (String) в Java иммутабельны — при каждой конкатенации создаётся новый объект, а старые уходят в сборку мусора. Это приводит к потере производительности при множественных соединениях. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое адаптер? Адаптер (Adapter) – это шаблон проектирования, который используется для приведения интерфейсов несовместимых классов к единому виду. Он выступает посредником между двумя несовместимыми системами. 🚩Пример: Адаптер в Java (Object Adapter) Допустим, у нас есть старый класс OldCharger, который работает с вольтажем 220V, а мы хотим, чтобы он работал с USB (5V). Старый интерфейс (неподходящий)
class OldCharger {
    void charge220V() {
        System.out.println("Зарядка 220V...");
    }
}
Новый интерфейс (нужный)
interface USBCharger {
    void charge5V();
}
Адаптер, который превращает 220V в 5V
class ChargerAdapter implements USBCharger {
    private OldCharger oldCharger;

    public ChargerAdapter(OldCharger oldCharger) {
        this.oldCharger = oldCharger;
    }

    @Override
    public void charge5V() {
        System.out.println("Преобразуем 220V в 5V...");
        oldCharger.charge220V();
    }
}
Использование адаптера
public class Main {
    public static void main(String[] args) {
        OldCharger oldCharger = new OldCharger();
        USBCharger adapter = new ChargerAdapter(oldCharger);

        adapter.charge5V(); // Теперь старая зарядка работает с 5V!
    }
}
Object Adapter (адаптер-объект) – использует композицию (пример выше). Class Adapter (адаптер-класс) – использует наследование (extends).
class ChargerAdapter extends OldCharger implements USBCharger {
    @Override
    public void charge5V() {
        System.out.println("Преобразуем 220V в 5V...");
        charge220V();
    }
}
Ставь 👍 и забирай 📚 Базу знаний

🤔 Можно ли применить bind на стрелочную функцию? Нет, у стрелочной функции нет собственного this, bind, call, apply не переопределяют контекст, так как this определяется лексически при создании функции. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какие весовые рамки у integer? В Java тип int занимает 4 байта (32 бита) и имеет диапазон: -2^{31} \text{ до } 2^{31} - 1 🚩Точный диапазон `int` 🟠Минимальное значение Integer.MIN_VALUE = -2,147,483,648 🟠Максимальное значение Integer.MAX_VALUE = 2,147,483,647
public class Main {
    public static void main(String[] args) {
        System.out.println("Минимальный int: " + Integer.MIN_VALUE);
        System.out.println("Максимальный int: " + Integer.MAX_VALUE);
    }
}
Вывод:
Минимальный int: -2147483648  
Максимальный int: 2147483647  
🚩Почему именно такой диапазон? 4 байта (32 бита) означают, что у нас 2³² возможных значений. Поскольку int знаковый (поддерживает отрицательные и положительные числа), половина значений отводится подотрицательные числа. Один бит используется для знака (0 – положительное число, 1 – отрицательное). \text{Диапазон} = - (2^{31}) \text{ до } (2^{31} - 1) 🚩Что будет, если выйти за пределы `int`? Если сложить два максимальных значения int, произойдёт переполнение (overflow)
int a = Integer.MAX_VALUE;
int b = 1;
int c = a + b;
System.out.println(c);  // Выведет -2147483648 (переполнение!)
🟠Как работать с числами больше `int`? Использовать `long` (8 байт, диапазон от -2^63 до 2^63 - 1):
long bigNumber = 2_147_483_648L;  // Обязательно добавлять "L" в конце
Использовать BigInteger (неограниченный размер):
BigInteger bigNum = new BigInteger("999999999999999999999999");
Ставь 👍 и забирай 📚 Базу знаний