Java | Вопросы собесов
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @easyoffer_adv
Больше📈 Аналитический обзор Telegram-канала Java | Вопросы собесов
Канал Java | Вопросы собесов (@easy_java_ru) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 11 385 подписчиков, занимая 10 557 место в категории Технологии и приложения и 56 197 место в регионе Россия.
📊 Показатели аудитории и динамика
С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 11 385 подписчиков.
Согласно последним данным от 31 августа, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило -12, а за последние 24 часа — -1, при этом общий охват остаётся высоким.
- Статус верификации: Не верифицирован
- Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 8.72%. В первые 24 часа после публикации контент обычно набирает 5.78% реакций от общего числа подписчиков.
- Охват публикаций: В среднем каждый пост получает 993 просмотров. В течение первых суток публикация набирает 658 просмотров.
- Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 3.
- Тематические интересы: Контент сосредоточен на ключевых темах, таких как ставь, void, string, строка, static.
📝 Описание и контентная политика
Автор описывает ресурс как площадку для выражения субъективного мнения:
“Сайт: https://easyoffer.ru/
Все каналы: t.me/+xGeAw6ckJ4liYzQy
Контакт для рекламы: @easyoffer_adv”
Благодаря высокой частоте обновлений (последние данные получены 01 сентября, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.
FileFilter — это интерфейс в пакете java.io, используемый для фильтрации файлов в каталогах. Он применяется в методе listFiles(FileFilter filter) класса File и позволяет выбрать только те файлы, которые соответствуют заданным критериям.
🚩Как работает `FileFilter`?
Этот интерфейс содержит всего один метод:
boolean accept(File pathname);
🚩Пример использования `FileFilter`
Допустим, мы хотим отфильтровать все файлы .txt в заданной папке:
import java.io.File;
import java.io.FileFilter;
public class TxtFileFilterExample {
public static void main(String[] args) {
File directory = new File("C:/example"); // Укажите свою папку
// Используем FileFilter для выбора файлов с расширением .txt
FileFilter txtFilter = new FileFilter() {
@Override
public boolean accept(File file) {
return file.isFile() && file.getName().endsWith(".txt");
}
};
// Получаем список файлов, соответствующих фильтру
File[] txtFiles = directory.listFiles(txtFilter);
// Выводим найденные файлы
if (txtFiles != null) {
for (File file : txtFiles) {
System.out.println("Файл: " + file.getName());
}
}
}
}
Выходные данные (если в папке C:/example есть файлы .txt)
Файл: notes.txt Файл: tasks.txt🚩Lambda-версия (Java 8+) Вместо анонимного класса можно использовать лямбда-выражение:
FileFilter txtFilter = file -> file.isFile() && file.getName().endsWith(".txt");
🚩Разница между `FileFilter` и `FilenameFilter`
FileFilter принимает объект File, позволяя фильтровать как файлы, так и каталоги.
FilenameFilter принимает только имя файла (без пути).
import java.io.File;
import java.io.FilenameFilter;
public class TxtFilenameFilterExample {
public static void main(String[] args) {
File directory = new File("C:/example");
// Фильтр для файлов .txt
FilenameFilter txtFilter = (dir, name) -> name.endsWith(".txt");
String[] txtFiles = directory.list(txtFilter);
if (txtFiles != null) {
for (String file : txtFiles) {
System.out.println("Файл: " + file);
}
}
}
}
Ставь 👍 и забирай 📚 Базу знанийjava.util.function, которые представляют функцию, принимающую два аргумента и возвращающую примитивный тип (double, int или long).
🚩`ToDoubleBiFunction<T, U>` – возвращает `double`
Этот интерфейс принимает два объекта и возвращает double.
import java.util.function.ToDoubleBiFunction;
public class Main {
public static void main(String[] args) {
ToDoubleBiFunction<Integer, Integer> average = (math, physics) -> (math + physics) / 2.0;
double result = average.applyAsDouble(85, 90);
System.out.println("Средний балл: " + result); // 87.5
}
}
🚩`ToIntBiFunction<T, U>` – возвращает `int`
Этот интерфейс принимает два объекта и возвращает int.
import java.util.function.ToIntBiFunction;
public class Main {
public static void main(String[] args) {
ToIntBiFunction<String, String> compareLength = (s1, s2) -> s1.length() - s2.length();
int result = compareLength.applyAsInt("Java", "Python");
System.out.println("Разница в длине строк: " + result); // -2 (Java=4, Python=6)
}
}
🚩`ToLongBiFunction<T, U>` – возвращает `long`
Этот интерфейс принимает два объекта и возвращает long.
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
import java.util.function.ToLongBiFunction;
public class Main {
public static void main(String[] args) {
ToLongBiFunction<LocalDate, LocalDate> daysBetween = (start, end) ->
ChronoUnit.DAYS.between(start, end);
long days = daysBetween.applyAsLong(LocalDate.of(2024, 1, 1), LocalDate.of(2024, 3, 1));
System.out.println("Разница в днях: " + days); // 60
}
}
Ставь 👍 и забирай 📚 Базу знанийclass Demo {
int value;
}
public class Main {
public static void main(String[] args) {
Demo obj = new Demo(); // Создан объект в памяти (Heap)
obj = null; // Теперь на него нет ссылки → GC его удалит
}
}
🚩Когда GC запускается?
🟠Недостаток памяти (Low Memory)
Если в куче (Heap) осталось мало свободной памяти, JVM может запустить GC.
🟠Алгоритмы JVM (GC работает автоматически)
GC в Java автоматический, и его запуск зависит от алгоритма сборщика мусора. Некоторые из них:
Serial GC (для маленьких программ)
Parallel GC (по умолчанию в Java 8)
G1 GC (по умолчанию в Java 11+)
ZGC, Shenandoah GC (для высоконагруженных систем)
🚩Способы обнаружения "мусора"
🟠Счётчик ссылок (Reference Counting)
Устарело, потому что не умеет работать с циклическими ссылками.
🟠Алгоритм "Reachability" (Достижимость)
Основной метод, который использует GC в Java.
🟠Алгоритм достижимости (Reachability Analysis)
GC начинает с корневых объектов (GC Roots) и проверяет, какие объекты достижимы.
Ставь 👍 и забирай 📚 Базу знаний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>
Ставь 👍 и забирай 📚 Базу знанийclass UserRepositoryStub implements UserRepository {
@Override
public User findById(Long id) {
return new User(id, "Иван"); // Просто возвращает статичные данные
}
}
🚩Mock (Макет)
Mock – это объект, который имитирует поведение реального объекта и позволяет проверять вызовы методов (сколько раз был вызван, с какими аргументами и т. д.).
UserRepository userRepository = mock(UserRepository.class);
when(userRepository.findById(1L)).thenReturn(new User(1L, "Иван"));
User user = userRepository.findById(1L);
verify(userRepository, times(1)).findById(1L); // Проверяем, что метод был вызван 1 раз
Ставь 👍 и забирай 📚 Базу знаний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)
}
}
Ставь 👍 и забирай 📚 Базу знаний