Java Developer
16.2K subscribers
1.56K photos
110 videos
2 files
1.69K links
Авторский канал действующего разработчика — интересные заметки, новые технологии, библиотеки и фреймворки

Сотрудничество: @bape_ads
Прайс: @bape_media

РКН: https://clck.ru/3GHfTK

Реклама на бирже: https://telega.in/c/java_tg
Download Telegram
Please open Telegram to view this post
VIEW IN TELEGRAM
😁40🤣16
Вопрос с собеседования

Почему @Transactional не работает при вызове метода внутри того же класса?

Ответ: Spring активирует @Transactional через прокси, оборачивающие бины и перехватывающие внешние вызовы. Но если метод вызывается изнутри того же класса, прокси не используется — происходит прямой вызов, и аннотация не срабатывает.

Чтобы транзакция была активна, метод должен вызываться через прокси, например, путём внедрения собственного бина или получения его из ApplicationContext. Если требуется перехват внутренних вызовов, стоит использовать AspectJ — он работает на уровне байткода и не зависит от прокси-механизма.


tags: #собеседование

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
👍143🔥1
👩‍💻 Spring Data JPA и Hibernate: ориентируемся на производительность. Часть 2

В статье показано, как сократить число SQL-запросов при работе с Spring Data JPA и Hibernate: от устранения лишних SELECT до борьбы с N+1.

Автор на примерах разбирает, когда использовать getReferenceById, @Version, fetch join и @DynamicUpdate, чтобы ускорить взаимодействие с базой и избежать скрытых тормозов.

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

🔖 Предыдущая часть — КЛИК


tags: #статья

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍2🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣31😁72
Вопрос с собеседования

Для чего используются статические блоки инициализации?

Ответ: Статические блоки инициализации однократно выполняются при инициализации класса — при первом обращении к классу. Они предназначены для выполнения кода, который должен выполниться до создания любых объектов этого класса и до вызова его конструкторов. Эти блоки принадлежат самому классу, а не его экземплярам, и обычно используются для сложной инициализации static-полей.

tags: #собеседование

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥64
👩‍💻 MapStruct

MapStruct — генератор кода для маппинга между Java-классами (например, DTO и Entity).

Вместо ручного написания конвертеров вы описываете интерфейс, а реализация создаётся автоматически на этапе компиляции.

Зависимость Maven:
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>1.5.5.Final</version>
</dependency>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.10.1</version>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.5.5.Final</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>


Ускоряет разработку, избавляя от шаблонного и часто ошибочного кода при преобразовании объектов.

📱 Ссылка на GitHub
📁 Документация

tags: #полезное

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍6🔥5
Please open Telegram to view this post
VIEW IN TELEGRAM
😁31🤣12👀4
Что выведет код сверху?
Anonymous Quiz
12%
false true
17%
true false
39%
false false
32%
Ошибка компиляции
🔥64😁1
👩‍💻 Обработка исключений в функциональном стиле

В статье рассматривается библиотека Try<T>, созданная автором для элегантной работы с исключениями без явного try/catch, в духе функционального программирования.

Автор показывает, как интегрировать Try с Optional, Stream, цепочками recover и управлением ресурсами, чтобы писать чище и лаконичнее.

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

tags: #статья

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍4🔥1
А ведь действительно...

📱 Java Developer | #memes
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣275😁5
Вопрос с собеседования

Каково худшее время работы метода contains() для элемента, который есть в ArrayList?

Ответ: O(N). Время поиска элемента линейно пропорционально количеству элементов в списке.

tags: #собеседование

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
👍154
👩‍💻 Введение в многопоточность в Java

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

Автор показывает на примерах, как потоки выполняются параллельно, в каком порядке работают и что нужно учитывать при их использовании.

📱 Смотреть на YouTube

tags: #полезное

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
9🔥4👍3
Please open Telegram to view this post
VIEW IN TELEGRAM
😁226🔥2
Вопрос с собеседования

Нужно ли переопределять другие методы при переопределении equals()?

Ответ: Да, при переопределении equals() в Java необходимо также переопределить метод hashCode(). Это требование следует из контракта: если два объекта равны по equals(), они должны возвращать одинаковые значения hashCode(). Нарушение этого правила приводит к некорректной работе коллекций, основанных на хэшировании, таких как HashMap, HashSet и Hashtable.

tags: #собеседование

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
👍157🔥1😁1
👩‍💻 Spring Data JPA и Hibernate: ориентируемся на производительность. Часть 3

В статье объясняется, как не потерять достигнутую производительность при работе со Spring Data JPA и Hibernate в команде.

Автор показывает, когда ентити становятся обузой и как перейти на проекции, чтобы читать только нужные данные.

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

🔖 Предыдущая часть — КЛИК


tags: #статья

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
4🔥3
Вопрос с собеседования

Как устроена архитектура брокеров в Kafka?

Ответ: В Kafka каждая партиция топика имеет лидера — брокера, который обрабатывает все запросы на запись и (по умолчанию) чтение. Остальные брокеры, содержащие копии этой партиции, называются фолловерами. Все реплики партиции (включая лидера) формируют группу ISR (in-sync replicas).

Данные всегда пишутся в лидера, который затем асинхронно реплицирует их фолловерам. Если лидер выходит из строя, Kafka автоматически выбирает нового из числа ISR. Это обеспечивает отказоустойчивость, хотя при смене лидера возможна кратковременная задержка в обслуживании.


tags: #собеседование

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍6🤯3
JUnit_Cheat_Sheet.pdf
71.4 KB
👩‍💻 JUnit Cheat Sheet

Эта короткая шпаргалка по JUnit поможет быстро вспомнить, как писать юнит-тесты на Java с использованием аннотаций и ассертов.

Внутри:
▶️ Создание тестов и настройка с @Test, @BeforeEach, @Timeout

▶️ Основные ассерты: assertTrue, assertFalse, assertEquals, assertThrows

▶️ Работа со списками, null-значениями и исключениями

▶️ Пример тестирования ArrayList с реальными кейсами

▶️ Синтаксис и структура JUnit 5 (Jupiter)


tags: #шпаргалка

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
👍143
Please open Telegram to view this post
VIEW IN TELEGRAM
😁244🤯4🤔3💯3
🤣5