Java | Вопросы собесов
前往频道在 Telegram
Cайт easyoffer.ru Реклама @easyoffer_adv ВП @easyoffer_vp Тесты t.me/+icUwivvbGOkwNWRi Задачи t.me/+8eqUTboisnkyZjQy Вакансии t.me/+4pspF5nDjgM4MjQy
显示更多📈 Telegram 频道 Java | Вопросы собесов 的分析概览
频道 Java | Вопросы собесов (@easy_java_ru) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 11 450 名订阅者,在 技术与应用 类别中位列第 10 899,并在 俄罗斯 地区排名第 57 490 位。
📊 受众指标与增长动态
自 невідомо 创建以来,项目保持高速增长,吸引了 11 450 名订阅者。
根据 05 六月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 20,过去 24 小时变化为 6,整体触达仍然可观。
- 认证状态: 未认证
- 互动率 (ER): 平均受众互动率为 7.92%。内容发布后 24 小时内通常能获得 7.61% 的反应,占订阅者总量。
- 帖子覆盖: 每篇帖子平均可获得 907 次浏览,首日通常累积 871 次浏览。
- 互动与反馈: 受众积极参与,单帖平均反应数为 0。
- 主题关注点: 内容集中在 ставь, void, string, строка, static 等核心主题上。
📝 描述与内容策略
作者将该频道定位为表达主观观点的平台:
“Cайт easyoffer.ru
Реклама @easyoffer_adv
ВП @easyoffer_vp
Тесты t.me/+icUwivvbGOkwNWRi
Задачи t.me/+8eqUTboisnkyZjQy
Вакансии t.me/+4pspF5nDjgM4MjQy”
凭借高频更新(最新数据采集于 06 六月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。
11 450
订阅者
+624 小时
-117 天
+2030 天
帖子存档
11 450
🤔 Как одной строчкой скопировать элементы любой collection в массив?
С помощью toArray() — создаётся массив нужного типа с элементами коллекции.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
11 450
🤔 В чём различие между LeftJoin , RightJoin и InnerJoin?
LEFT JOIN, RIGHT JOIN и INNER JOIN являются операциями соединения таблиц, каждая из которых используется для объединения строк из двух или более таблиц на основе связанных столбцов между ними. Различие между этими типами соединений заключается в том, какие строки выбираются для включения в результаты запроса.
🚩INNER JOIN
Возвращает только те строки, которые имеют соответствующие значения в обеих таблицах. Если совпадение не найдено, строки не включаются в результаты. Это наиболее часто используемый тип соединения, так как он обеспечивает строгое соответствие между таблицами.
🚩LEFT JOIN (или LEFT OUTER JOIN)
Возвращает все строки из левой таблицы (
ТаблицаA), а также соответствующие строки из правой таблицы (ТаблицаB). Если совпадение в правой таблице не найдено, результат будет содержать NULL на месте столбцов правой таблицы.
🚩RIGHT JOIN (или RIGHT OUTER JOIN)
Работает аналогично LEFT JOIN, но возвращает все строки из правой таблицы (ТаблицаB), а также соответствующие строки из левой таблицы (ТаблицаA). Если совпадение в левой таблице не найдено, результат будет содержать NULL на месте столбцов левой таблицы.
INNER JOIN используется для получения строк с совпадениями в обеих таблицах.
LEFT JOIN возвращает все строки из левой таблицы и соответствующие строки из правой таблицы; если соответствий нет, вместо столбцов правой таблицы будут NULL.
RIGHT JOIN возвращает все строки из правой таблицы и соответствующие строки из левой таблицы; если соответствий нет, вместо столбцов левой таблицы будут NULL.
Ставь 👍 и забирай 📚 Базу знаний11 450
🤔 Может ли Entity-класс быть абстрактным?
Да, Entity может быть абстрактным, если он служит базой для наследников. Он не будет напрямую мапиться в таблицу, но может содержать общие поля и логику.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
11 450
🤔 Что знаешь об интерфейсе FileFilter?
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);
}
}
}
}
Ставь 👍 и забирай 📚 Базу знаний11 450
🤔 Шаблон Builder — что такое и для каких задач?
Builder позволяет пошагово создавать сложные объекты с множеством параметров, делает код читаемым и облегчает работу с immutable объектами
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
11 450
Repost from easyoffer
База 1000+ реальных собеседований теперь встроена в easyoffer
Смотрите, как другие кандидаты отвечают на вопросы, решают задачи и проходят этапы на реальных собеседованиях от топовых компаний. Подготовьтесь к своему собеседованию с двойной уверенностью.
Напоминаем, что сегодня последний день Чёрной Пятницы
👉 Забрать PRO со скидкой 70%: https://easyoffer.ru/
11 450
🤔 Расскажи про процесс от пуша кода до продакшена
Когда разработчик пушит код, он проходит несколько этапов перед развертыванием в продакшене. Этот процесс автоматизируется с помощью CI/CD (Continuous Integration / Continuous Deployment).
🚩Этапы CI/CD
🟠Разработчик пушит код в Git-репозиторий
- Код отправляется в GitHub, GitLab, Bitbucket или другой репозиторий.
- Открывается Pull Request (PR) для ревью.
git add .
git commit -m "Добавлена новая фича"
git push origin feature-branch
🟠CI (Continuous Integration) – Автоматическая сборка и тестирование
После пуша CI-сервер (Jenkins, GitHub Actions, GitLab CI/CD, CircleCI)** запускает автоматические тесты и сборку.
Клонирование репозитория.
Сборка проекта (например, mvn package для Java).
Запуск юнит-тестов (JUnit, Mockito).
Запуск интеграционных тестов (например, TestContainers).
Анализ кода (SonarQube).
name: CI Pipeline
on:
push:
branches:
- main
- develop
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup Java
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
- name: Build project
run: mvn clean package
- name: Run tests
run: mvn test
🟠CD (Continuous Deployment) – Развёртывание на Staging
После успешного CI код автоматически разворачивается в стейджинг (staging) – это тестовая среда, похожая на продакшен.
Развёртывание может происходить с помощью:
Docker + Kubernetes (K8s)
AWS CodeDeploy, GitLab CD
Terraform + Ansible
FROM openjdk:17
COPY target/app.jar /app.jar
CMD ["java", "-jar", "/app.jar"]
🟠Код проходит код-ревью и одобряется
Проверяется чистота кода, читаемость и ошибки.
В некоторых компаниях код проходит Security Review
git merge feature-branch
git push origin main
🟠CD (Continuous Deployment) – Развёртывание в продакшен
Blue-Green Deployment – новый код разворачивается на отдельном сервере, затем трафик переключается.
Canary Release – новый код деплоится на 5-10% пользователей, если всё хорошо – на всех.
Rolling Deployment – обновление происходит поэтапно, без даунтайма.
deploy:
stage: deploy
script:
- kubectl apply -f deployment.yaml
only:
- main
Ставь 👍 и забирай 📚 Базу знаний11 450
🤔 Что известно про первую и вторую нормальные формы?
- 1NF (Первая нормальная форма):
- Все значения — атомарны.
- Нет повторяющихся групп и вложенных таблиц.
- 2NF (Вторая нормальная форма):
- Данные соответствуют 1NF.
- Все неключевые атрибуты зависят от всего первичного ключа, а не от его части.
Это уменьшает избыточность и устраняет частичную
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
11 450
🤔 Чем отличаются методы Thread.sleep() и Thread.yield()?
Методы
Thread.sleep() и Thread.yield() в Java используются для управления потоком, но работают по-разному.
🚩Thread.sleep()
Метод Thread.sleep(milliseconds) приостанавливает выполнение текущего потока на указанное время.
🚩Как это работает?
Поток уходит в состояние "ожидания" (TIMED_WAITING).
Операционная система не даёт ему процессорное время в течение заданного времени.
После завершения паузы поток снова становится готовым к выполнению (RUNNABLE).
public class SleepExample {
public static void main(String[] args) {
System.out.println("Начало работы...");
try {
Thread.sleep(2000); // Пауза на 2 секунды
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Прошло 2 секунды");
}
}
Результат
Начало работы...
(пауза 2 секунды)
Прошло 2 секунды
🚩Thread.yield()
Метод Thread.yield() даёт возможность другим потокам выполнить работу.
🚩Как это работает?
Текущий поток передаёт управление планировщику (scheduler).
Если есть другие потоки с таким же или более высоким приоритетом, они получат процессорное время.
Если таких потоков нет, то текущий поток продолжит выполняться.
public class YieldExample {
public static void main(String[] args) {
Runnable task = () -> {
for (int i = 1; i <= 5; i++) {
System.out.println(Thread.currentThread().getName() + " - " + i);
Thread.yield(); // Позволяет другим потокам выполняться
}
};
Thread t1 = new Thread(task, "Поток-1");
Thread t2 = new Thread(task, "Поток-2");
t1.start();
t2.start();
}
}
Результат (примерный, зависит от планировщика ОС)
Поток-1 - 1
Поток-2 - 1
Поток-1 - 2
Поток-2 - 2
...
Ставь 👍 и забирай 📚 Базу знаний11 450
🤔 Как обойтись без synchronized в многопоточке на Singleton’е?
С помощью enum, static-инициализации или volatile с double-check (DCL) — всё это потоко-безопасные подходы без явного synchronized.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
11 450
Repost from easyoffer
Черная пятница на easyoffer
Скидка 70% на PRO до 29 ноября.
👉 https://easyoffer.ru/
11 450
🤔 В чем разница Spring Boot и Spring?
Spring и Spring Boot являются частью экосистемы, которая предоставляет широкий спектр инструментов для разработки современных Java-приложений. Несмотря на тесную связь, между ними есть ключевые отличия.
🚩Spring Framework
Это мощный и широко используемый фреймворк для разработки приложений на Java. Он предоставляет обширный набор функциональностей, включая инверсию управления (IoC) и внедрение зависимостей (DI), абстракции для работы с транзакциями, обработку исключений, поддержку аспектно-ориентированного программирования (AOP) и многое другое. Он предназначен для упрощения Java EE разработки, обеспечивая легкость создания масштабируемых и легко поддерживаемых приложений.
🚩Spring Boot
С другой стороны, представляет собой расширение Spring Framework, предназначенное для упрощения процесса конфигурации и развертывания Spring-приложений. Он автоматизирует многие процессы, предоставляя "готовые к использованию" настройки для быстрого старта проектов и избавления от необходимости вручную определять стандартную конфигурацию.
🚩Различия
🟠Цель
Spring Framework предоставляет основу для создания приложений на Java, в то время как Spring Boot предлагает конвенции и автоматическую конфигурацию для быстрого старта и развертывания приложений.
🟠Конфигурация
В Spring для настройки приложения часто требуется детальная конфигурация, включая XML-файлы или аннотации. Spring Boot стремится уменьшить эту сложность, автоматически конфигурируя компоненты на основе добавленных в проект зависимостей.
🟠Встроенный сервер
Spring Boot по умолчанию включает в себя встроенный сервер приложений, что упрощает развертывание и тестирование веб-приложений.
Ставь 👍 и забирай 📚 Базу знаний
11 450
Скидка 20% на аренду серверов с GPU NVIDIA!
Современные ИИ-модели, графические рендеры и вычисления в науке требуют мощных GPU-решений. Мы предлагаем аренду облачных серверов с видеокартами NVIDIA Tesla и RTX.
Вы можете выбрать готовую конфигурацию или собрать собственный сервер под нейросети, глубокое обучение, рендеринг или виртуальные рабочие места (VDI). Серверы размещаются в ЦОД уровня TIER III, обеспечивают SLA 99.982% и работают в режиме 24/7.
Доступные модели GPU:
- NVIDIA Tesla H200, B100, B200, A100, V100, P200, P300
- NVIDIA RTX 4090, 5090, A6000 Ada
GPU-серверы Cloud4Y подходят для задач deep learning, big data-аналитики, 3D-рендеринга и проектирования. Они позволяют ускорить обучение моделей до 8 раз по сравнению с CPU-инфраструктурой и гарантируют стабильную работу даже при максимальной нагрузке.
Попробовать
#реклама 16+
cloud4y.ru
О рекламодателе
11 450
🤔 Известно ли что-то рассказать про планировщика потоков?
В JVM используется предварительно вытесняющий планировщик (preemptive):
- ОС решает, когда приостановить/возобновить поток.
- JVM не гарантирует порядок выполнения.
- Потоки могут быть приоритетными, но это рекомендация, не жёсткое правило.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
11 450
🤔 Что такое as-if-serial semantics?
As-If-Serial Semantics – это принцип оптимизации компилятором, при котором код может перестраиваться, но результат его выполнения остаётся таким же, как если бы инструкции выполнялись строго по порядку.
Обычный код
int a = 10;
int b = 20;
int c = a + b;
System.out.println(c);
Что может сделать компилятор?
int c = 30;
System.out.println(c);
🚩Что можно менять? (Безопасные оптимизации)
Менять порядок инструкций, если это не влияет на результат.
Удалять лишние переменные и вычисления.
Заменять выражения константами (10 + 20 → 30).
int x = 5;
int y = 10;
x = x + 1; // x = 6
System.out.println(y);
Компилятор может поменять местами y и x
int y = 10;
int x = 6;
System.out.println(y);
🚩Что нельзя менять? (Гарантированный порядок исполнения)
int x = 10;
int y = x + 5;
x = 20;
System.out.println(y);
Если поменять порядок
x = 20;
int y = x + 5; // ❌ Неверно! y теперь 25, а должно быть 15
🚩Как `As-If-Serial` влияет на многопоточность?
В многопоточной среде компилятор может менять порядок команд внутри одного потока, но он не знает о другом потоке!
Опасный пример без volatile
boolean ready = false;
int data = 0;
void writer() {
data = 42;
ready = true;
}
void reader() {
if (ready) {
System.out.println(data); // Может напечатать 0 из-за перестановки!
}
}
Решение – volatile для ready
volatile boolean ready = false;
Ставь 👍 и забирай 📚 Базу знаний11 450
🤔 Что такое as-if-serial semantics?
As-if-serial semantics — это гарантия компилятора, что независимо от оптимизаций результат выполнения программы будет таким же, как если бы все инструкции выполнялись последовательно в порядке написания кода.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
11 450
🤔 Слышал ли что то про метод intern?
Метод
intern() в классе String используется для оптимизации памяти.
Он добавляет строку в String Pool и возвращает её ссылку, если строка уже там есть.
🚩Как работает `intern()`?
Без intern() – строки создаются в Heap (куче)
String s1 = new String("Hello"); // В куче (Heap)
String s2 = new String("Hello");
System.out.println(s1 == s2); // false (разные объекты)
С intern() – строки хранятся в String Pool
String s1 = new String("Hello").intern();
String s2 = new String("Hello").intern();
System.out.println(s1 == s2); // true (одна строка в String Pool)
🚩Что такое `String Pool`?
Это специальная область памяти, где хранятся уникальные строковые литералы.
Все строковые литералы ("Hello") по умолчанию хранятся в String Pool.
String s1 = "Hello"; // В String Pool
String s2 = "Hello"; // Ссылается на тот же объект
System.out.println(s1 == s2); // true
🚩Когда использовать `intern()`?
Когда у вас много одинаковых строк в памяти (например, имена, идентификаторы).
Для экономии памяти, если строки часто дублируются.
В парсинге JSON, XML – одни и те же строки могут повторяться тысячи раз.
List<String> names = new ArrayList<>();
for (int i = 0; i < 100000; i++) {
names.add(("User" + (i % 100)).intern()); // Используем String Pool
}
Ставь 👍 и забирай 📚 Базу знаний11 450
🤔 Что такое «интеграционное тестирование»?
Это тип тестирования, при котором проверяются взаимодействия между модулями, сервисами или системами.
Тестируются не отдельные функции, а их совместная работа, например, интеграция базы данных и API.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
11 450
🤔 Какие методы располагаются в интерфейсе?
В интерфейсе могут располагаться различные типы методов, начиная с Java 8, когда в язык были добавлены новые возможности, такие как default методы и static методы. До Java 8 интерфейсы могли содержать только абстрактные методы. Ниже представлены типы методов, которые могут быть объявлены в интерфейсе:
🟠Абстрактные методы
Это методы без тела, предназначенные для переопределения в классах, которые реализуют интерфейс. Абстрактные методы представляют собой контракт, который должен быть выполнен классом-реализатором. Все методы в интерфейсе неявно являются
public abstract, даже если явно не указаны эти модификаторы.
void myMethod();
🟠Default методы (начиная с Java 8)
Позволяют определять реализацию метода непосредственно в интерфейсе. Классы, реализующие интерфейс, могут переопределять эти методы, но это не обязательно. Default методы были введены для обеспечения обратной совместимости, позволяя добавлять новые методы в интерфейсы без нарушения существующих реализаций.
default void defaultMethod() {
// Реализация
}
🟠Static методы (начиная с Java 8)
Позволяют определять методы с реализацией, которые могут быть вызваны без создания экземпляра класса, реализующего интерфейс. Эти методы нельзя переопределить в реализующем интерфейс классе.
static void staticMethod() {
// Реализация
}
🟠Private методы (начиная с Java 9)
Позволяют определять вспомогательные методы, которые предназначены для использования в default или static методах внутри того же интерфейса. Эти методы не могут быть вызваны извне интерфейса или реализующих его классов.
private void privateMethod() {
// Реализация
}
Пример
public interface MyInterface {
// Абстрактный метод
void abstractMethod();
// Default метод
default void defaultMethod() {
System.out.println("Default implementation");
}
// Static метод
static void staticMethod() {
System.out.println("Static implementation");
}
// Private метод (используется внутри интерфейса)
private void privateMethod() {
System.out.println("Private helper method");
}
}
Ставь 👍 и забирай 📚 Базу знаний11 450
🤔 Как получать значения из HashMap?
Через метод get(key):
- Вычисляется хеш ключа.
- Ищется соответствующий бакет.
- Происходит сравнение ключей через equals().
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
现已上线!2025 年 Telegram 研究 — 年度关键洞察 
