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

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

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

Реклама на бирже: https://telega.in/c/java_tg
Download Telegram
Вопрос с собеседования

Поддерживает ли Java множественное наследование классов?

Ответ: Java не позволяет классу наследоваться сразу от нескольких классов, так как это может привести к конфликтам при разрешении методов.

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


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

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥167👍2
👩‍💻 Нововведения Java 24

18 марта выходит Java 24 с улучшенной работой потоков, байткода и взаимодействия с нативным кодом.

Основные нововведения:
▶️ Stream Gatherers: новый метод gather(Gatherer) для кастомных операций в стримах

▶️ Class-File API: официальное API для работы с байткодом и модификацией классов

▶️ Pattern Matching for switch: расширенная поддержка паттерн-матчинга в switch

▶️ Foreign Function & Memory API: улучшенное взаимодействие с нативным кодом и памятью

▶️ Virtual Threads: виртуальные потоки для более эффективной многопоточности


Подробнее обо всех изменениях можно прочитать в статье.

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

tags: #статья

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
👍147🔥2
2
Что выведет код сверху?
Anonymous Quiz
1%
x + 1 =
42%
x + 1 = 2
45%
x + 1 = 11
12%
Ошибка
👍14🤯11🔥5😁2
👩‍💻 Хэши: виды, применение и примеры

Хэширование — это фундаментальный процесс в программировании, который применяется везде: от защиты паролей до ускорения поиска данных в структурах.

Эта статья поможет разобраться в основных видах хэшей, их применении, а также покажет, как их использовать на практике с примерами на Java.

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

tags: #статья

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

Почему Thread.sleep() не освобождает монитор блокировки?

Ответ: Метод Thread.sleep() приостанавливает выполнение потока на заданное время, но при этом не освобождает монитор, если поток удерживает synchronized-блокировку.

Это происходит потому, что sleep() просто переводит поток в состояние ожидания (TIMED_WAITING), но не влияет на механизмы синхронизации. Пока поток “спит”, другие потоки не могут получить доступ к заблокированному ресурсу, так как монитор остается занятым.

Чтобы освободить монитор и дать другим потокам возможность выполнить код, необходимо использовать wait(), join(), Lock или Condition, которые позволяют явно управлять блокировкой и ожиданием.


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

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥52
👩‍💻 Барьеры и модели памяти

В статье на примере реального кейса из Amazon рассказывается о проблемах, которые могут возникнуть при переносе сервисов между архитектурами x86/64 и ARM из-за различий в моделях памяти.

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

Ссылка на статью

📱 Java Developer | #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣75😁144👻1
Вопрос с собеседования

Почему synchronized не работает с volatile?

Ответ: volatile гарантирует видимость изменений между потоками, но не обеспечивает атомарности операций.

Если несколько потоков одновременно обновляют volatile-переменную, они могут перезаписывать изменения друг друга, так как нет механизма блокировки.

Для атомарных операций лучше использовать synchronized, Lock или Atomic-переменные.


📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
👍184🔥2
👩‍💻 Null-safety в Spring-приложениях с JSpecify и NullAway

NullPointerException — одна из самых неприятных ошибок в Java, которая может неожиданно привести к сбоям в работе приложения и усложнить жизнь пользователям.

В статье рассматриваются современные подходы к обеспечению null-безопасности в Spring-приложениях с использованием JSpecify и NullAway.

Что вы узнаете из статьи?
▶️ Почему NullPointerException остается одной из самых частых ошибок в Java?

▶️ Как JSpecify позволяет управлять nullability на уровне API?

▶️ В чем разница между JSpecify и NullAway, и когда использовать каждый из них?

▶️ Как статический анализ помогает находить потенциальные ошибки на этапе компиляции?

▶️ Как интегрировать null-безопасность в Spring-приложение без лишних сложностей?


Автор делится практическими рекомендациями по внедрению null-безопасности, которые снижают количество ошибок и делают код более устойчивым.

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

tags: #статья #spring

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

Почему Phaser эффективнее, чем CountDownLatch, если фазы неизвестны заранее?

Ответ: В отличие от CountDownLatch, который можно использовать только один раз, Phaser поддерживает многоразовую синхронизацию, что делает его более гибким.

Phaser позволяет:

▶️ Динамически добавлять и удалять потоки во время выполнения

▶️ Использовать несколько фаз без необходимости создания новых объектов

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

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯76👨‍💻3👍2
👩‍💻 Создание HTTP-сервера на Java NIO

Java NIO (Non-blocking I/O) — это часть стандартной библиотеки Java, обеспечивающая работу с неблокирующими вводом-выводом, сокетами и буферами.

В статье рассматривается создание HTTP-сервера с использованием этого API, позволяющего эффективно обрабатывать множество соединений в одном потоке.

Что вы узнаете в статье?
▶️ Как настроить ServerSocketChannel и принимать соединения?

▶️ Как управлять запросами через Selector в одном потоке?

▶️ Как обработать HTTP-запрос и отправить ответ?

▶️ В чем преимущества NIO перед блокирующими серверами?


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

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

tags: #статья

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍3
Наглядный принцип работы SQL-инъекций 😆

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

В чем CompletableFuture лучше, чем Future?

Ответ: CompletableFuture предоставляет более гибкий и асинхронный способ работы с результатами вычислений по сравнению с Future.

Основные преимущества:

Не блокирует поток: Future.get() останавливает выполнение до завершения задачи, а CompletableFuture позволяет устанавливать колбэки (thenApply, thenAccept) и работать без ожидания

Комбинирование задач: CompletableFuture поддерживает цепочки (thenCompose, thenCombine), что упрощает обработку зависимых операций

Поддержка асинхронных методов: можно запускать задачи на другом потоке (supplyAsync())

Обработка исключений: встроенные методы (exceptionally, handle) позволяют работать с ошибками без try-catch

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

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥322
👩‍💻 Взлом JVM-приложения с помощью отладчика IntelliJ IDEA

Что если мы скажем вам, что отладчик может стать не просто инструментом для поиска ошибок, а настоящим «режимом бога» в мире кода?

В статье рассматривается, как можно исследовать память приложения и изменить его функциональность, при этом не затрагивая исходный код, а используя только лишь отладчик IntelliJ IDEA.

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

tags: #статья

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍3🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣11😁5
🔥11👍3