Java | Вопросы собесов
前往频道在 Telegram
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @easyoffer_adv
显示更多📈 Telegram 频道 Java | Вопросы собесов 的分析概览
频道 Java | Вопросы собесов (@easy_java_ru) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 11 393 名订阅者,在 技术与应用 类别中位列第 10 556,并在 俄罗斯 地区排名第 56 214 位。
📊 受众指标与增长动态
自 невідомо 创建以来,项目保持高速增长,吸引了 11 393 名订阅者。
根据 28 八月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -11,过去 24 小时变化为 -4,整体触达仍然可观。
- 认证状态: 未认证
- 互动率 (ER): 平均受众互动率为 9.07%。内容发布后 24 小时内通常能获得 5.84% 的反应,占订阅者总量。
- 帖子覆盖: 每篇帖子平均可获得 1 033 次浏览,首日通常累积 666 次浏览。
- 互动与反馈: 受众积极参与,单帖平均反应数为 3。
- 主题关注点: 内容集中在 ставь, void, string, строка, static 等核心主题上。
📝 描述与内容策略
作者将该频道定位为表达主观观点的平台:
“Сайт: https://easyoffer.ru/
Все каналы: t.me/+xGeAw6ckJ4liYzQy
Контакт для рекламы: @easyoffer_adv”
凭借高频更新(最新数据采集于 29 八月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。
11 393
订阅者
-424 小时
+27 天
-1130 天
帖子存档
11 390
🤔 Что такое HQL?
HQL (Hibernate Query Language) – это язык запросов, используемый в Hibernate (фреймворке для работы с базами данных в Java), который похож на SQL, но оперирует не таблицами и столбцами, а объектами и их свойствами.
🚩Зачем нужен HQL?
Когда мы работаем с базами данных в Hibernate, мы используем объектно-реляционное отображение (ORM), где каждая таблица представляется как класс, а строки – как объекты. Однако иногда нам нужно делать запросы к базе данных, например:
Получить список объектов, соответствующих определённому критерию
Отфильтровать, отсортировать или объединить данные
Выполнить массовое обновление или удаление
Можно, конечно, использовать чистый SQL, но тогда мы потеряем преимущества ORM, такие как переносимость кода между разными базами данных. HQL решает эту проблему, позволяя писать запросы в объектных терминах, а Hibernate сам преобразует их в правильный SQL для конкретной базы данных.
🚩Как выглядит HQL?
HQL очень похож на SQL, но вместо таблиц и столбцов мы используем имена классов и их полей.
🟠Пример 1: Получение списка объектов
Допустим, у нас есть класс User, связанный с таблицей users:
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private int age;
// Геттеры и сеттеры
}
Теперь напишем HQL-запрос, чтобы получить всех пользователей старше 18 ле
String hql = "FROM User WHERE age > 18";
List<User> users = session.createQuery(hql, User.class).getResultList();
Выборка только имен пользователей
String hql = "SELECT u.name FROM User u";
List<String> names = session.createQuery(hql, String.class).getResultList();
Запрос с параметрами (предотвращает SQL-инъекции)
String hql = "FROM User WHERE name = :name";
Query<User> query = session.createQuery(hql, User.class);
query.setParameter("name", "Иван");
List<User> users = query.getResultList();
🚩Плюсы
➕Независимость от СУБД
HQL автоматически адаптируется под MySQL, PostgreSQL, Oracle и другие базы.
➕Оперирование объектами
вместо таблиц и столбцов мы работаем с сущностями (классами Java).
➕Безопасность
использование параметров (setParameter()) предотвращает SQL-инъекции.
➕Гибкость
поддержка JOIN, GROUP BY, ORDER BY и других SQL-конструкций.
Ставь 👍 и забирай 📚 Базу знаний11 390
🤔 Можно ли понижать уровень модификатора доступа?
Нет, понижать нельзя. При переопределении метода в наследнике доступность можно только сохранять или повышать, но не ограничивать.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
11 390
🤔 Что такое функциональный интерфейс?
Функциональный интерфейс —это интерфейс, который содержит только один абстрактный метод. Это позволяет использовать лямбда-выражения для создания его анонимных реализаций, делая код более лаконичным и читаемым. Функциональные интерфейсы являются основой для лямбда-выражений и методов ссылок, начиная с версии 8.
Примером этого может служить интерфейс
java.util.function.Predicate<T> который принимает объект типа T и возвращает значение типа boolean. Вот пример использования:
Predicate<String> isNotEmpty = s -> !s.isEmpty();
System.out.println(isNotEmpty.test("Hello")); // Выведет true
System.out.println(isNotEmpty.test("")); // Выведет false
Чтобы явно указать, что интерфейс предназначен для использования как функциональный, используется аннотация @FunctionalInterface. Эта аннотация не обязательна (компилятор может определить функциональный интерфейс и без неё), но она помогает в документировании кода и обеспечивает проверку времени компиляции, гарантируя, что интерфейс содержит только один абстрактный метод.
@FunctionalInterface
public interface SimpleFunction {
int apply(int value);
}
// Использование
SimpleFunction triple = value -> value * 3;
System.out.println(triple.apply(5)); // Выведет 15
Ставь 👍 и забирай 📚 Базу знаний11 390
🤔 Какое дерево лежит в реализации TreeSet?
TreeSet основан на Red-Black Tree (красно-чёрное дерево) — это самобалансирующееся двоичное дерево поиска, обеспечивающее логарифмическую сложность операций.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
11 390
Изиоффер переходит в публичное бета-тестирование!
🎉 Что нового:
🟢Анализ IT собеседований на основе 4500+ реальных интервью
🟢Вопросы из собеседований с вероятностью встречи
🟢Видео-примеры ответов на вопросы от Senior, Middle, Junior грейдов
🟢Пример лучшего ответа
🟢Задачи из собеседований
🟢Тестовые задания
🟢Примеры собеседований
🟢Фильтрация всего контента по грейдам, компаниям
🟢Тренажер подготовки к собеседованию на основе интервальных повторений и флеш карточек
🟢Тренажер "Реальное собеседование" с сценарием вопросов из реальных собеседований (скоро)
🟢Автоотклики на HeadHunter
🟢Закрытое сообщество easyoffer
💎 Акция в честь открытия для первых 500 покупателей:
🚀 Скидка 50% на PRO тариф на 1 год
🔥 Акция уже стартовала! 👉 https://easyoffer.ru/pro
11 390
🤔 В чем разница между Statement и PreparedStatement?
Это два интерфейса в JDBC, которые используются для выполнения SQL-запросов к базе данных. Основные различия между ними касаются производительности, безопасности и удобства использования.
🚩Statement
Statement используется для выполнения простых SQL-запросов. Запросы формируются и передаются в базу данных в виде строки. Подходит для простых запросов. Не оптимизирован для повторного выполнения. Каждый раз, когда запрос передается в базу данных, он компилируется и выполняется заново. Уязвим к SQL-инъекциям. Поскольку запрос формируется путем конкатенации строк, злоумышленники могут внедрять вредоносный SQL-код.
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 более удобен для запросов с параметрами.
Ставь 👍 и забирай 📚 Базу знаний11 390
Wink AI Challenge — хакатон на стыке IT и кино. Участников ждут задачи, которые ускорят производство фильмов и сериалов за счёт прикладных AI-решений. Призовой фонд соревнования — 1 125 000 рублей.
Регистрация до 31 октября: https://cnrlink.com/winkaichallengeeasyjava
Приглашаем на первый в России хакатон, посвящённый применению ИИ в кинопроизводстве, ML-инженеров, backend- и frontend-разработчиков, специалистов в DevOps, MLOps, а также инженеров в сфере мультимедиа.
Вы сможете:
🔸 Разработать ML-модель, которую оценят и будут использовать продюсеры популярных российских фильмов и сериалов.
🔸 Решить кейсы, основанные на реальных задачах, с которыми продюсеры сталкиваются каждый день.
🔸 Использовать настоящие сценарии и видеоматериалы для анализа текстов, извлечения сущностей и генерации структуры съёмок.
🔸 Попрактиковаться в применении NLP, NER и мультимодальных данных в задачах кинопроизводства.
Регистрируйтесь на Wink AI Challenge, чтобы разработать ИИ-ассистента, который станет частью производства фильмов и сериалов: https://cnrlink.com/winkaichallengeeasyjava
11 390
Зачем тратить время и деньги
...на десяток приложений для работы, если есть Битрикс24?
Бесплатный онлайн-сервис для совместной работы и бизнеса. ✨Всё нужное здесь, и вот как это работает: внутри одного окна все обсуждения, задачи, встречи, видеозвонки, диалоги с ИИ-помощником и даже с внешними командами в Коллабах.
Команда оценит. Регистрируйтесь и приглашайте всех
Зарегистрироваться
#реклама 16+
office-online.bitrix24.ru
О рекламодателе
11 390
🤔 Как проверить, удерживает ли поток монитор определённого ресурса?
В Java напрямую нельзя узнать, удерживает ли поток монитор объекта. Можно использовать средства профилирования (например, VisualVM, jstack) или синхронизацию состояния вручную.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
11 390
📺 База 1000+ реальных собеседований
На программиста, тестировщика, аналитика, проджекта и другие IT профы.
Есть собесы от ведущих компаний: Сбер, Яндекс, ВТБ, Тинькофф, Озон, Wildberries и т.д.
🎯 Переходи по ссылке и присоединяйся к базе, чтобы прокачать свои шансы на успешное трудоустройство!
11 390
🤔 Что такое шардирование?
Шардирование – это метод горизонтального разделения базы данных на несколько частей (шардов) для повышения производительности и масштабируемости.
🚩Популярные стратегии шардирования
🟠По диапазону (Range-Based Sharding)
Данные делятся по диапазону значений (например,
ID 1–1000, 1001–2000).
🟠По хешу (Hash-Based Sharding)
Данные распределяются с помощью хеш-функции.
int shardNumber = userId % numberOfShards;
🟠Географическое (Geo-Based Sharding)
Данные разделяются по географическому признаку (например, Европа, Азия, США). Минимальная задержка (пользователь получает данные ближе к себе)
Некоторые регионы могут перегружаться.
Ставь 👍 и забирай 📚 Базу знаний11 390
🤔 Какие протоколы передачи данных есть?
Среди основных протоколов: TCP, UDP, FTP, HTTP, HTTPS, SMTP, POP3, IMAP, SSH и другие.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
11 390
🤔 Расскажи про Hash Code & Equals Contract
Когда вы переопределяете методы
equals() и hashCode(), важно соблюдать контракт, иначе объект может вести себя некорректно в коллекциях (HashMap, HashSet и др.).
🚩Контракт `equals()`
Метод equals() определяет, когда два объекта равны.
Рефлексивность – x.equals(x) всегда true.
Симметричность – x.equals(y) == y.equals(x).
Транзитивность – если x.equals(y) и y.equals(z), то x.equals(z).
Согласованность – многократные вызовы x.equals(y) дают один и тот же результат.
Сравнение с null всегда false – x.equals(null) == false.
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true; // Проверка на одинаковые ссылки
if (obj == null || getClass() != obj.getClass()) return false; // Проверка типа
Person person = (Person) obj;
return age == person.age && name.equals(person.name); // Сравнение полей
}
}
🚩Контракт `hashCode()`
Метод hashCode() возвращает числовой хеш-код объекта. Он должен соответствовать equals()!
Если x.equals(y) == true, то x.hashCode() == y.hashCode().
Если x.hashCode() != y.hashCode(), то x.equals(y) == false (но обратное не всегда верно).
Хеш-код должен оставаться неизменным, если объект не изменяется.
@Override
public int hashCode() {
return Objects.hash(name, age);
}
🚩Почему контракт `equals()` и `hashCode()` важен?
В коллекциях, таких как HashSet, HashMap, HashTable, объекты хранятся по хеш-коду.
Что будет, если equals() переопределён, но hashCode() – нет?
Set<Person> people = new HashSet<>();
people.add(new Person("Иван", 25));
people.add(new Person("Иван", 25)); // Ожидаем, что не добавится
System.out.println(people.size()); // ❌ Будет 2, а не 1, если `hashCode()` отсутствует!
Правильный вариант (equals() + hashCode())
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Person person = (Person) obj;
return age == person.age && name.equals(person.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
Ставь 👍 и забирай 📚 Базу знаний11 390
🤔 Что нам даёт Dependency Injection?
- Ослабляет связанность кода (low coupling);
- Повышает тестируемость кода (легко внедрять моки);
- Упрощает сопровождение и масштабирование приложений.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
11 390
Реклама для бизнеса любого уровня в Яндекс Директе
Создайте эффективную рекламную кампанию с алгоритмами Яндекс Директа 👌
Начните прямо сейчас ⚡
Зарегистрироваться
#реклама
direct.yandex.ru
О рекламодателе
11 390
🤔 После какого момента GC понимает, что нужно собирать мусор?
Garbage Collector (GC) в Java начинает сборку мусора, когда объекты в памяти больше не используются и не имеют активных ссылок.
🟠Основное правило: объект считается мусором, если нет на него ссылок
GC понимает, что объект можно удалить, если на него больше не ссылается ни одна переменная или он стал недостижимым.
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) и проверяет, какие объекты достижимы.
Ставь 👍 и забирай 📚 Базу знаний11 390
REKONFA Live
6 ноября приглашаем рекламодателей, агентства и рекламные площадки обсудить технологии, маркетинговые инструменты и актуальные новинки. Ключевые участники рынка поделятся опытом и расскажут:
— О ситуации на рынке рекламы
— Как продвигать и продавать в интернете в 2025 году
— Как бизнесу адаптироваться к меняющимся условиям
Вас ждут доклады на актуальные темы, классный нетворкинг, вдохновляющая атмосфера для творчества и креатива.
Встречаемся 6 ноября в Москве. Для тех, кто не сможет приехать, организуем интерактивное digital-шоу. Мероприятие бесплатное, нужно только зарегистрироваться.
Зарегистрироваться
#реклама 18+
ya.rekonfa.ru
О рекламодателе
11 390
🤔 Что известно о полном синтаксисе SELECT в реляционной БД?
Полный синтаксис SELECT включает:
SELECT [DISTINCT] поля FROM таблицы [JOIN] [WHERE условия] [GROUP BY] [HAVING] [ORDER BY] [LIMIT/OFFSET].
Это мощный оператор, который позволяет извлекать, фильтровать, сортировать и агрегировать данные.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
11 390
🤔 Чем stub отличается от mock?
В тестировании разница между Stub и Mock заключается в их предназначении и способе использования.
🚩Stub (Заглушка)
Stub – это простейший объект-заглушка, который возвращает заранее заданные данные. Он не проверяет, какие методы были вызваны, а просто отвечает на запросы.
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 раз
Ставь 👍 и забирай 📚 Базу знаний11 390
Запишитесь на онлайн-демо МТС Линк и сравнение со Skype
📅 Меньше 30 дней до прекращения поддержки Skype for Business в России. После 14 октября:
• вырастут риски уязвимостей и утечек данных;
• перестанут поддерживаться новые версии операционных систем и SQL-серверов;
• все сбои придётся закрывать силами IT-отдела.
Какие еще риски ждут ИТ-директоров, CTO и техспециалистов?
На какое российское решение стоит заменить Skype?
✅ Запишитесь на онлайн-демонстрацию МТС Линк. Вы узнаете:
- как организовать онлайн-коммуникацию вашей компании;
- как организовать единое пространство для общения коллег;
- возможности для администраторов и пользователей.
🎓 Бонус: руководство по безопасной миграции со Skype на российские платформы.
Забронируйте место на демо по ссылке
Забронировать
#реклама 16+
mts-link.ru
О рекламодателе
