Java | Вопросы собесов
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @easyoffer_adv
Показати більше📈 Аналітичний огляд Telegram-каналу Java | Вопросы собесов
Канал Java | Вопросы собесов (@easy_java_ru) у мовному сегменті Російська є активним учасником. На даний момент спільнота об'єднує 11 400 підписників, посідаючи 10 551 місце в категорії Технології та додатки та 56 128 місце у регіоні Росія.
📊 Показники аудиторії та динаміка
З моменту свого створення невідомо, проект продемонстрував стрімке зростання, зібравши аудиторію у 11 400 підписників.
За останніми даними від 26 серпня, 2026, канал демонструє стабільну активність. Хоча за останні 30 днів спостерігається зміна кількості учасників на -1, а за останні 24 години на 0, загальне охоплення залишається високим.
- Статус верифікації: Не верифікований
- Рівень залученості (ER): Середній показник залученості аудиторії становить 9.29%. Протягом перших 24 годин після публікації контент зазвичай збирає 5.90% реакцій від загальної кількості підписників.
- Охоплення публікацій: В середньому кожен допис отримує 1 059 переглядів. Протягом першої доби публікація в середньому набирає 673 переглядів.
- Реакції та взаємодія: Аудиторія активно підтримує контент: середня кількість реакцій на один пост – 3.
- Тематичні інтереси: Контент зосереджений навколо ключових тем, таких як ставь, void, string, строка, static.
📝 Опис та контентна політика
Автор описує ресурс як майданчик для висловлення суб'єктивної думки:
“Сайт: https://easyoffer.ru/
Все каналы: t.me/+xGeAw6ckJ4liYzQy
Контакт для рекламы: @easyoffer_adv”
Завдяки високій частоті оновлень (останні дані отримано 27 серпня, 2026), канал підтримує актуальність та високий рівень охоплення публікацій. Аналітика показує, що аудиторія активно взаємодіє з контентом, що робить його важливою точкою впливу в категорії Технології та додатки.
Statement stmt = connection.createStatement();
String query = "SELECT * FROM employees WHERE department = 'HR'";
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
System.out.println("ID: " + id + ", Name: " + name);
}
stmt.close();
🟠PreparedStatement
PreparedStatement используется для выполнения предварительно скомпилированных SQL-запросов. Это позволяет повысить производительность и безопасность. Оптимизирован для повторного выполнения. Запрос компилируется только один раз, а затем может многократно выполняться с разными параметрами, что повышает производительность. Защита от SQL-инъекций. Использует параметризованные запросы, которые помогают избежать уязвимостей, связанных с SQL-инъекциями. Удобство работы с параметрами. Позволяет устанавливать значения параметров с использованием методов setInt(), setString() и других.
String query = "SELECT * FROM employees WHERE department = ?";
PreparedStatement pstmt = connection.prepareStatement(query);
pstmt.setString(1, "HR");
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
System.out.println("ID: " + id + ", Name: " + name);
}
pstmt.close();
🚩Основные различия
🟠Производительность
Statement: Каждый запрос компилируется заново, что снижает производительность при многократном выполнении одного и того же запроса.
PreparedStatement: Запрос компилируется один раз и может многократно выполняться с разными параметрами, что повышает производительность.
🟠Безопасность
Statement: Уязвим к SQL-инъекциям, поскольку запросы формируются путем конкатенации строк.
PreparedStatement: Использует параметризованные запросы, что защищает от SQL-инъекций.
🟠Удобство использования
Statement: Подходит для простых, одноразовых запросов.
PreparedStatement: Удобен для многократного выполнения запросов с разными параметрами.
🟠Типы запросов
Оба интерфейса могут выполнять запросы типа SELECT, INSERT, UPDATE, DELETE, но PreparedStatement более удобен для запросов с параметрами.
Ставь 👍 и забирай 📚 Базу знаний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/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 файла, все строковые литералы в этих классах также добавляются в пул строк.
Ставь 👍 и забирай 📚 Базу знаний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);
}
}
}
}
Ставь 👍 и забирай 📚 Базу знаний