TG Telegram Group Link
Channel: Java Developer
Back to Bottom
Мы не ищем легких путей

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

В каких состояниях может находиться поток?

Ответ: Поток в Java может находиться в одном из следующих состояний, определённых перечислением Thread.State:

▶️ NEW — поток создан, но ещё не запущен (метод start() не вызывался)

▶️ RUNNABLE — поток готов к выполнению и может быть выбран планировщиком для исполнения. Это объединяет как активные, так и ожидающие исполнения потоки

▶️ BLOCKED — поток ожидает монитора, чтобы войти в синхронизированный блок/метод, занятый другим потоком

▶️ WAITING — поток ожидает, пока другой поток не вызовет notify(), notifyAll() или join() на объекте. Примеры: Object.wait(), Thread.join()

▶️ TIMED_WAITING — как WAITING, но с таймаутом. Например, sleep(), join(timeout), wait(timeout), LockSupport.parkNanos()

▶️ TERMINATED — поток завершил выполнение либо нормально (метод run() завершён), либо из-за необработанного исключения.

Эти состояния отражают внутреннюю модель выполнения JVM и используются для анализа поведения многопоточных программ.


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

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Основы работы со Stream API

В видео разбирается, как упростить работу с коллекциями с помощью Stream API: фильтрация, сортировка, группировка и проверка условий.

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

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

tags: #полезное

📱 Java Developer | Чат
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
Что выведет код сверху?
Anonymous Quiz
4%
null
29%
Null
31%
NullPointerException
31%
Ошибка
5%
Ничего
👩‍💻 Пишем 3D-игру весом в 600Кб

В статье показано, как с нуля создать простую 3D-игру на Java с графикой и физикой без использования готовых движков и шейдеров.

Автор реализует собственный движок с рендером через OpenGL ES 1.0, палитровыми текстурами, кастомным загрузчиком ресурсов и поддержкой старых устройств.

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

tags: #статья

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

Почему метод clone() объявлен в классе Object, а не в интерфейсе Cloneable?

Ответ: Метод clone() определён в классе Object, потому что он реализует базовый механизм побитового копирования объекта средствами JVM (через native-реализацию). Он объявлен как protected, чтобы не допустить прямого вызова вне класса, если метод не переопределён.

Интерфейс Cloneable при этом — маркерный, без методов. Он служит лишь индикатором того, что объект допускает клонирование. Если объект не реализует Cloneable, а метод clone() всё же вызывается, будет выброшено исключение CloneNotSupportedException. Это позволяет обеспечить контроль над тем, какие классы разрешают копирование, и избежать некорректного поведения при клонировании по умолчанию.


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

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Основы gRPC на практике

В видео разбирается, как работает gRPC и в чем он выигрывает у REST при построении микросервисов с высокой нагрузкой и стримингом данных.

Автор показывает полноценную реализацию серверной и клиентской части на Java и Python, от описания proto-файлов до двунаправленной передачи сообщений.

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

tags: #полезное

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

В чём различие между стеком и кучей в контексте многопоточности?

Ответ: Стек — это область памяти, выделяемая индивидуально для каждого потока. Он используется для хранения примитивов, локальных переменных и адресов возврата. Поскольку стек не разделяется между потоками, доступ к нему изолирован и не требует синхронизации.

Куча — это общая область памяти для всех потоков, где размещаются объекты, созданные с помощью new. Из-за совместного доступа к куче возможны гонки данных и проблемы видимости между потоками. Чтобы гарантировать корректность при многопоточном доступе, применяются механизмы синхронизации (synchronized, ReentrantLock, volatile, атомарные классы и др.).


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

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Как обобрать дерево в несколько потоков?

В статье разбирается, как эффективно обойти файловую систему в Java и почему стандартные методы работают медленно.

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

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

tags: #статья

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет код сверху?
Anonymous Quiz
40%
0
52%
1
9%
Ошибка
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопрос с собеседования

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

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

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


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

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
HTML Embed Code:
2025/06/29 18:55:48
Back to Top