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

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

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

Для связи: @ruslan_kuyanets
Download Telegram
#полезное
🤓 Что такое Spring Boot и чем он отличается от традиционного Spring Framework?

Spring Boot — это упрощённый и удобный фреймворк, построенный на основе Spring Framework. Он значительно облегчает разработку самодостаточных и готовых к продакшену Spring-приложений благодаря следующим особенностям:

🟠Автоконфигурация – автоматически настраивает Spring и сторонние библиотеки в зависимости от присутствующих зависимостей в classpath.

🟠Starter POMs – предоставляет готовые зависимости (starter'ы), упрощая конфигурацию сборки.

🟠Встроенные серверы – включает встроенные сервера, такие как Tomcat и Jetty, устраняя необходимость в сторонних серверных контейнерах.

🟠Без XML-конфигурации – активно использует аннотации, уменьшая количество шаблонного (boilerplate) кода.

Основное отличие от традиционного Spring Framework в том, что Spring Boot автоматизирует настройку, тогда как обычный Spring требует много ручной конфигурации.

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

🟠Типовая безопасность: Предотвращает возникновение ошибки ClassCastException во время выполнения.

🟠Повторное использование кода: Позволяет писать универсальные алгоритмы, которые работают с различными типами.

🟠Проверка на этапе компиляции: Обнаруживает ошибки на этапе компиляции, а не во время выполнения.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#собес
🤔 Может ли статический метод быть переопределенным или перегруженным?

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

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🥺 Параллелизм в Java

Параллельность (Concurrency) включает в себя управление несколькими потоками для одновременного выполнения задач, что критически важно для высокопроизводительных приложений

Как это работает?

1⃣ Инициализируем потоки.
2⃣ Проверяем, готовы ли они.
3⃣ Запускаем задачи одновременно.
4⃣ Дожидаемся завершения и закрываем потоки

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🥺 GIT Workflow

Хотите разобраться, как работает Git? Тогда держите наглядный гайд!

1⃣ Initial State – начальное состояние проекта
2⃣ git clone – клонируем удаленный репозиторий
3⃣ Создание нового файла – добавляем что-то новое в проект
4⃣ git add . – отправляем изменения в staging area
5⃣ git commit – фиксируем изменения локально
6⃣ git push – отправляем изменения на удаленный сервер

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 Есть один отличный фреймворк — Javalin

Если нужно быстро запустить сервер или сделать небольшое приложение — самое то

Он позволяет настроить сервер легко и без лишних зависимостей. Все, что нужно для REST API или WebSocket — уже встроено.

Идеально для пет-проектов, микросервисов и прототипов

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#собес
🤔 Что означает ключевое слово final?

Ключевое слово final используется для обозначения, что объект, переменная или метод не могут быть изменены после их инициализации. Оно может быть применено к переменным, методам и классам.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👍 Как работает Java? Понимание архитектуры языка

Когда мы пишем код на Java, он проходит несколько ключевых этапов перед тем, как стать работающей программой. Вот как это происходит:

1⃣Написав программу, мы получаем исходный код в файле .java.

2⃣Этот код компилируется с помощью компилятора javac, который преобразует его в байт-код (.class). Это промежуточный формат, который понимает только JVM.

3⃣JVM берет этот байт-код и запускает его, выполняя программу.

Внутри JVM происходит:

🟠 Загрузка классов с помощью ClassLoader.
🟠 Управление памятью: разделение на Stack, Heap и Method Area.
🟠 Оптимизация с помощью JIT-компилятора, который превращает байт-код в машинный код для ускорения работы программы.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🤯 Команды Docker для Java-разработчика

1⃣ Проверка версии Docker
2⃣ Работа с образами
3⃣ Запуск Java-приложения в контейнере
4⃣ Сборка и запуск контейнера с Java Spring Boot
5⃣ Управление контейнерами
6⃣ Сетевое взаимодействие в Docker
7⃣ Docker Compose (Java + MySQL)
8⃣ Docker Volumes (персистентные данные)
9⃣ Очистка Docker

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👍 Что такое грациозное завершение работы Spring Boot-приложения?

🟠Приложение перестаёт принимать новые входящие запросы.

🟠Запросы, которые уже обрабатываются, получают возможность завершиться. Для других внутренних задач, таких как запланированные задания или обработка сообщений из очереди (MQ), приложение обеспечивает завершение текущих операций и предотвращает запуск новых.

🟠Перед завершением работы приложение сигнализирует другим сервисам о предстоящем отключении, обеспечивая бесперебойность работы всей системы.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#собес
🤔 Что такое анонимные классы?

Анонимные классы - это классы без имени, которые создаются на месте, обычно для реализации интерфейсов или абстрактных классов. Они позволяют упростить код, создавая объект класса без его явного объявления.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
😊 Совет по IntelliJIDEA

Оставайтесь сосредоточенными на кодинге и оптимизируйте свой рабочий процесс в IntelliJIDEA с помощью Run Anything!

Быстро запускайте конфигурации выполнения/отладки, приложения, скрипты, команды и задачи или даже открывайте недавние проекты – из любого места в IDE

Нажмите ⌃⌃ | Ctrl+Ctrl, чтобы открыть всплывающее окно Run Anything

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😐 @TransactionalEvent
Listener

Это специализированный @EventListener, который слушает событие и ожидает завершения текущей транзакции перед его обработкой. Ожидание консистентного состояния базы данных позволяет гораздо безопаснее реагировать на изменения, внесенные в БД.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🤓 Сравнение Comparator и Comparable в Java

Comparable — для встроенной сортировки. Допустим string, Integer
Comparator — для гибкой сортировки. К примеру, сортировка списка по разным полям

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#собес
🤔 Что такое примитивные классы?

Тримитивные классы - это классы -обертки для примитивных типов данных, которые позволяют использовать примитивы как объекты. Например, Integer для типа int, Double для типа double .

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
Пирамида тестирования Java

1⃣Unit-тесты (JUnit, Mockito) — проверяют отдельные методы и классы.

🟠 Самые быстрые
🟠 Легко писать
🟠 Ловят баги на старте

Пиши как можно больше

2⃣Integration-тесты (Testcontainers) — тестируют взаимодействие между модулями (например, сервис <-> база).

🟠 Работают с реальными зависимостями
🟠 Помогают избежать сюрпризов на проде

3⃣API-тесты (Postman, RestAssured) — проверяют REST-эндпоинты.

🟠 Тесты бизнес-логики
🟠 Можно автоматизировать или делать вручную

4⃣UI-тесты (Selenium) — имитируют действия пользователя.

🟠 Медленные
🟠 Ломаются чаще

Используй по минимуму, только для самых важных сценариев

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Зачем нужен Spring Framework?

Spring Framework - это мощный инструмент для упрощения разработки приложений. Он предоставляет механизм управления зависимостями (Dependency Injection), гибкость конфигурации, интеграцию с различными технологиями и поддержку создания веб-приложений. Благодаря своей модульности и широким возможностям, Spring подходит как для небольших проектов, так и для крупных корпоративных систем.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
🤓 23 шаблона проектирования для 99% разработчиков на Java

В этом исчерпывающем руководстве мы изучим все важные шаблоны ООП для написания кода.

Шаблоны проектирования  —  это испытанный способ решения проблемы в заданном контексте. Они скорее открыты, нежели придуманы, что очевидно и из применения слова «шаблон». Используя шаблон проектирования, вы получаете знания всех сообществ для безопасного решения этой проблемы.

Читать статью

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🥺 Графовые алгоритмы — шпаргалка для Java Developer

Сводная таблица по всем основным алгоритмам на графах: обход, кратчайшие пути, минимальные остовные деревья, циклы, топология, компоненты связности и продвинутые техники

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Какой жизненный цикл Spring Beans?

Жизненный цикл Spring Bean состоит из этапов создания, настройки зависимостей, инициализации, использования и уничтожения. Контейнер автоматически выполняет все эти шаги, вызывая методы, такие как @PostConstruct для настройки перед использованием и @PreDestroy ДЛЯ завершения работы. Пользователи могут настраивать этапы жизненного цикла через интерфейсы или аннотации.

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

🟠Снижение шаблонного кода — Нет необходимости вручную писать конструкторы,
геттеры, equals(), hashCode() и toString()

🟠Неизменяемы по умолчанию — все поля являются final

🟠Эффективны по памяти — JVM оптимизирует выделение памяти.

🟠Без дополнительных зависимостей — являются частью Java с версии 14

🟠Инкапсуляция — данные хорошо структурированы и неизменяемы.

Ограничения Java Records

🟠Нет сеттеров — поля final и не могут быть изменены

🟠Нельзя расширять классы — Records неявно являются final и не могут наследоваться от других классов.

🟠Ограниченная настройка — не поддерживают аннотации вроде @JsonIgnore для полей

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