Please open Telegram to view this post
VIEW IN TELEGRAM
Почему метод
clone()
объявлен в классе Object
, а не в интерфейсе Cloneable
?Ответ:
Интерфейс Cloneable при этом — маркерный, без методов. Он служит лишь индикатором того, что объект допускает клонирование. Если объект не реализует Cloneable, а метод clone() всё же вызывается, будет выброшено исключение CloneNotSupportedException. Это позволяет обеспечить контроль над тем, какие классы разрешают копирование, и избежать некорректного поведения при клонировании по умолчанию.
tags: #собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
В видео разбирается, как работает gRPC и в чем он выигрывает у REST при построении микросервисов с высокой нагрузкой и стримингом данных.
Автор показывает полноценную реализацию серверной и клиентской части на Java и Python, от описания proto-файлов до двунаправленной передачи сообщений.
tags: #полезное
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
В чём различие между стеком и кучей в контексте многопоточности?
Ответ:
Куча — это общая область памяти для всех потоков, где размещаются объекты, созданные с помощью new. Из-за совместного доступа к куче возможны гонки данных и проблемы видимости между потоками. Чтобы гарантировать корректность при многопоточном доступе, применяются механизмы синхронизации (synchronized, ReentrantLock, volatile, атомарные классы и др.).
tags: #собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
В статье разбирается, как эффективно обойти файловую систему в Java и почему стандартные методы работают медленно.
Автор показывает, как добиться ускорения в несколько раз с помощью рекурсивных, итеративных и многопоточных реализаций на базе ForkJoinPool.
tags: #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Почему
@Transactional
не работает при вызове метода внутри того же класса?Ответ:
Чтобы транзакция была активна, метод должен вызываться через прокси, например, путём внедрения собственного бина или получения его из ApplicationContext. Если требуется перехват внутренних вызовов, стоит использовать AspectJ — он работает на уровне байткода и не зависит от прокси-механизма.
tags: #собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Для чего используются статические блоки инициализации?
Ответ:
tags: #собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
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>
Ускоряет разработку, избавляя от шаблонного и часто ошибочного кода при преобразовании объектов.
tags: #полезное
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет код сверху?
Anonymous Quiz
12%
false true
17%
true false
40%
false false
31%
Ошибка компиляции
В статье рассматривается библиотека Try<T>, созданная автором для элегантной работы с исключениями без явного try/catch, в духе функционального программирования.
Автор показывает, как интегрировать Try с Optional, Stream, цепочками recover и управлением ресурсами, чтобы писать чище и лаконичнее.
tags: #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM