Java Developer
16.3K subscribers
1.52K photos
100 videos
1 file
1.63K 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
Вопрос с собеседования

Может ли интерфейс содержать поля?

Ответ: Да, но только постоянные значения. Любое поле в интерфейсе автоматически становится public static final, то есть это всегда константа, общая для всех.

Интерфейс не может содержать обычные переменные, потому что он не хранит состояние объектов — только описывает поведение.


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

📱 Java Developer  | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Bazel

Bazel — это высокопроизводительный инструмент сборки от Google, подходящий для Java-проектов любой сложности.

Используется для быстрой, воспроизводимой и масштабируемой сборки, особенно в больших кодовых базах и CI.

Пример java_binary в BUILD-файле:
java_binary(
name = "app",
srcs = ["Main.java"],
deps = [":core"],
main_class = "com.example.Main"
)


Maven-зависимости подключаются через rules_jvm_external и описываются в WORKSPACE-файле.

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

— если использовал
⚡️ — если Gradle лучше

tags: #полезное

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

Могут ли у абстрактного класса быть конструкторы?

Ответ: Да, у абстрактного класса могут быть конструкторы. Они вызываются при создании экземпляров подклассов для инициализации общих переменных. Даже если конструктор не определён явно, компилятор добавляет его по умолчанию, чтобы обеспечить корректную работу цепочки вызовов super().

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

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Проектирование БД рекомендательной системы

В статье рассматривается проектирование системы по подходу DB-first и то, какие проблемы он помогает не просто решить, а устранить как явление.

База данных выступает как полноценный сервис с контрактом в виде схемы, а dbfirst позволяет сгенерировать SDK под эту схему для Java и Haskell.

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

tags: #статья

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
Монолит и микросервисы, наглядно:

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

Как изменится поведение метода wait(), если передать ему аргумент?

Ответ:

▶️ Если wait() вызывается без аргументов, поток переходит в состояние ожидания до вызова notify() или notifyAll()

▶️ Если передать аргумент (время ожидания), поток автоматически возобновит выполнение после истечения указанного времени, даже если notify() не был вызван

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

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

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

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

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

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
4%
1010
60%
1010.2
7%
20.2
29%
Ошибка
👩‍💻 Почему Exceptions в Java не взлетели — и что с этим делать в 2025 году?

В статье рассматриваются причины, по которым исключения в Java не прижились, и предлагаются альтернативные подходы к обработке ошибок — от классических try/catch до Typed Errors с использованием Kotlin и библиотеки Arrow.

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

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

tags: #статья

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
Высшее на новом уровне: онлайн-магистратура от Яндекса и ИТМО. Здесь фундаментальные знания и практика для карьерного роста, а ещё — учёба, которую можно совмещать с работой и жизнью.

IT‑специальность с экспертизой Яндекса + диплом магистра гособразца = новая ступень в карьере. Приёмная кампания уже идёт!

Все подробности — на дне открытых дверей:
— Разбор совместной программы с ИТМО.
— Всё о формате прикладной онлайн-магистратуры: что взяли от классического высшего, а что добавили из опыта специалистов Яндекса.
— Общение с экспертами из вуза и ответы на вопросы.
— Всё про поступление: сроки, экзамены, документы, оплата и образовательный кредит.

▷ Ждём вас 26 июня в 19:00 мск.

→ Зарегистрироваться на встречу
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет код сверху?
Anonymous Quiz
54%
0
4%
1
5%
2
27%
null
10%
ArrayIndexOutOfBoundsException
👩‍💻 Ключевые паттерны системного дизайна

В видео разбираются основные архитектурные паттерны, которые помогают строить надёжные и масштабируемые системы: CQRS, Pub/Sub, Event Sourcing, Circuit Breaker и другие.

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

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

tags: #полезное

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

За счёт чего достигается синхронизация в ConcurrentHashMap?

Ответ:
В ConcurrentHashMap, начиная с Java 8, синхронизация достигается за счёт сочетания атомарных операций и локальной синхронизации на уровне отдельных ячеек (bin) таблицы.

Когда происходит вставка, карта сначала пытается разместить элемент в нужной ячейке массива table с помощью атомарной операции CAS (Compare-And-Swap). Это безблокирующий способ записи: если ячейка пуста, значение вставляется безопасно без захвата монитора.

Если в ячейке уже есть другие элементы и простая вставка невозможна, используется synchronized, но только на уровне конкретного узла (Node). Это означает, что блокировка применяется локально, не затрагивая всю карту, и другие потоки могут параллельно работать с другими ячейками.


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

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM