Java Backend | YeaHub
490 subscribers
101 photos
22 videos
2 files
216 links
Теория, подготовка к интервью и курсы для Java разработчиков

YeaHub — это платформа для IT-специалистов, объединяющая обучение, карьерный рост, развитие и сообщество единомышленников.

Платформа: https://yeahub.ru

Для связи: @ruslan_kuyanets
Download Telegram
#Собес
🤔 Что такое Bean?

Bean в Spring - это объект, который управляется контейнером Spring loC (Inversion of Control). Бины обычно создаются, настраиваются и используются для инкапсуляции бизнес-логики, управления данными или предоставления сервисов. Контейнер Spring автоматически управляет жизненным циклом бина, его зависимостями и настройками.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
👨‍💻 Сортировка пузырьком

Один из самых простых алгоритмов сортировки

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🤓 Миграция от монолита к микросервисам в Spring Boot Java

🟠Определите границы контекста —> используйте Domain-Driven Design (DDD) для логического разделения модулей

🟠Модульность внутри приложения —> применяйте модули и пакеты Spring для изоляции сервисов

🟠Вынос в микросервисы —> начинайте перенос модулей (например, пользователь, заказы) в отдельные сервисы

🟠Внедрение API Gateway и сервис-дискавери —> используйте Spring Cloud Gateway и Eureka/Nacos

🟠Безопасность взаимодействия —> добавьте уровни безопасности OAuth2/JWT

🟠CI/CD пайплайн —> автоматизируйте сборку, тестирование и деплой с помощью Jenkins/GitHub Actions

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😇 Уровни доступа при наследовании

Подкласс:

private —> Не видно в подклассе

default —> Видно, если в одном пакете

protected —> Видно в подклассе

public —> Видно всем

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Какие Spring Scope знаешь?

Основные области видимости Spring: Singleton, Prototype, Request, Session, Application, WebSocket.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😴 ByteArrayOutput
Stream.writeTo()

Метод ByteArrayOutputStream.writeTo() позволяет записывать содержимое байтового массива (ByteArrayOutputStream) напрямую в другой выходной поток (OutputStream). Это удобно, когда нужно перенаправить данные, например, в файл или сетевой сокет, без промежуточного копирования.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
📞 Pattern.asMatch
Predicate()


Метод Pattern.asMatchPredicate(), добавленный в Java 11, позволяет преобразовать регулярное выражение в предикат, который можно использовать для фильтрации потоков или проверки строк на полное совпадение с шаблоном.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
🤯 Быстрее находите и устраняйте ошибки в коде с IntelliJIDEA

Используйте ⇧F2 (macOS) / Shift + F2 (Windows, Linux), чтобы переходить между проблемами.

Куда бы ни был установлен курсор, IDE сразу перенесёт вас к проблеме с полезными объяснениями и предложениями по быстрому исправлению

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 В чем разница между = = и equals()?

Оператор == сравнивает ссылки на объекты, то есть проверяет, указывают ли две переменные на один и тот же объект в памяти. Метод equals() сравнивает содержимое объектов, что важно, если нужно проверить равенство значений объектов.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЛитКод
Задача: 563. Binary Tree Tilt

Дано корневое значение бинарного дерева. Вернуть сумму значений наклонов всех узлов дерева.

Наклон узла дерева - это абсолютная разница между суммой всех значений узлов левого поддерева и всех значений узлов правого поддерева. Если у узла нет левого потомка, то сумма значений узлов левого поддерева считается равной 0. То же правило применяется, если у узла нет правого потомка.

Пример:
Input: root = [1,2,3]
Output: 1
Explanation:
Tilt of node 2 : |0-0| = 0 (no children)
Tilt of node 3 : |0-0| = 0 (no children)
Tilt of node 1 : |2-3| = 1 (left subtree is just left child, so sum is 2; right subtree is just right child, so sum is 3)
Sum of every tilt : 0 + 0 + 1 = 1


👨‍💻 Алгоритм:

1⃣Определите рекурсивную функцию, которая вычисляет сумму значений узлов поддерева и наклон текущего узла.

2⃣Для каждого узла вычислите сумму значений левого и правого поддерева, а также их наклон, добавляя наклон к общей сумме.

3⃣Верните общую сумму наклонов всех узлов.

😎 Решение:
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode() {}
TreeNode(int val) { this.val = val; }
TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}

public class Solution {
private int totalTilt = 0;

public int findTilt(TreeNode root) {
sumAndTilt(root);
return totalTilt;
}

private int sumAndTilt(TreeNode node) {
if (node == null) {
return 0;
}
int leftSum = sumAndTilt(node.left);
int rightSum = sumAndTilt(node.right);
int nodeTilt = Math.abs(leftSum - rightSum);
totalTilt += nodeTilt;
return node.val + leftSum + rightSum;
}
}


👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👍 JWT vs Сессии — что выбрать для авторизации?

Кратко и наглядно разобрали плюсы и минусы двух популярных подходов

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🥺 Генератор надёжных паролей на Java

Пароль с заглавными, строчными, цифрами и спецсимволами? Легко.

С помощью библиотеки Passay можно сгенерировать крепкий 10-символьный пароль буквально в пару строк.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Какая разница между String, StringBuffer и StringBuilder?

String - неизменяемый класс, каждый раз при изменении строки создаетсяновый обьект.
StringBuffer - изменяемый класс, потокобезопасен, но менее эффективен,чем StringBuilder.
StringBuilder - изменяемый класс, не является потокобезопасным, но более эффективен в однопоточных приложениях.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🏕 Типы выходных файлов, создаваемых при компиляции Java-кода

.class — > Выполняется в JVM
.jar — > Упаковка кода для повторного использования
.jmod — >Поддерживает модульные Java-приложения
Native Image — > Нативный образ — > Работает без JVM
.war — >Развёртывание веб-приложений на Java
.ear — > Развёртывание корпоративных Java-приложений
.apk — > Установка Java-приложений на Android
.so — > Компиляция в нативный код (shared object)

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🤯 Лучшие советы по API REST

Скачать PDF на русском — здесь

Сохрани себе для быстрой шпаргалки

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
😬 Повышайте качество кода, сохраняя его чистым и единообразным

С этим легко справиться благодаря функциям автоформатирования кода в IntelliJIDEA.

Выделите фрагмент кода и нажмите ⌘⌥L (на macOS) или Ctrl+Alt+L (на Windows/Linux), чтобы отформатировать его согласно настройкам стиля вашего проекта

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😎 Продвинутые дженерики в Java

Если ты уже знаком с базовыми дженериками, пора копнуть глубже:

—> Ограниченные типы (<T extends Number>) — позволяют задать верхнюю (или нижнюю) границу для параметра типа.
—> Подстановочные знаки (? extends, ? super) — дают гибкость при работе с обобщёнными методами и коллекциями.
—> Стирание типов (type erasure) — механизм, из-за которого вся информация о типах удаляется во время компиляции, и на этапе выполнения остаются только Object и приведения

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Почему массив символов лучше строки для хранения пароля?

Массив символов предпочтительнее строки для хранения пароля, так как его содержимое можно безопасно очистить после использования. В отличие от строк, которые являются неизменяемыми и не могут быть очищены, массив символов позволяет уничтожить данные, минимизируя риски утечек информации.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🛞 Основы Java Enum

Синтаксис
enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;
}


🟠Все значения — это константы
🟠Java преобразует их в public static final переменные

Особенности

Перечисления (enums) не могут наследовать другие классы, так как уже наследуют java.lang.Enum
Enum может реализовывать интерфейсы
Конструкторы могут быть только приватными, иначе будет выброшено исключение

Пример Enum с конструктором на фото

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
image_2025-04-18_09-03-49.png
1.5 MB
#полезное
😎 Что такое MapStruct?

MapStruct — это мощный процессор аннотаций для Java, который автоматически генерирует мапперы между объектами прямо на этапе компиляции

Очень быстрый, безопасный по типам и отлично работает в IDE

Идеально подходит для преобразования между Entity и DTO в REST API

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👨‍💻 На фото показана проблема N+1 в JPA и её решение.

🟠findAll() — вызывает 1 запрос к авторам + по 1 запросу на книги каждого автора → N+1 запросов

🟠JOIN FETCH в @Query — решает проблему, загружая авторов и их книги одним SQL-запросом

Показана разница в коде и как избежать лишних запросов при загрузке связанных сущностей (Author → Book)

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM