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

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

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

Реклама на бирже: https://telega.in/c/java_tg
Download Telegram
👩‍💻 Функциональные интерфейсы

Функциональный интерфейс — это интерфейс, который определяет только один абстрактный метод. Это позволяет передавать поведение как значение — например, в виде лямбды или ссылки на метод.

Рассмотрим простейший пример:
@FunctionalInterface
interface Greeting {
void say(String message);
}

Greeting g = msg -> System.out.println("Привет, " + msg);
g.say("мир!");

Аннотация @FunctionalInterface не обязательна, но рекомендуема — она защищает от случайного добавления лишнего абстрактного метода.


Интерфейс может содержать сколько угодно default- и static-методов и при этом оставаться функциональным, так как они не считаются абстрактными.

В Java предусмотрен набор стандартных функциональных интерфейсов — в пакете java.util.function. Вот наиболее часто используемые:
▶️ Predicate<T> — проверяет условие, возвращает true или false
▶️ Function<T, R> — преобразует один тип в другой
▶️ Consumer<T> — принимает значение, ничего не возвращает
▶️ Supplier<T> — возвращает значение, ничего не принимает
▶️ UnaryOperator<T> и BinaryOperator<T> — частные случаи Function, когда вход и выход одного типа


Пример использования Predicate:
Predicate<String> isLong = s -> s.length() > 5;
System.out.println(isLong.test("Java")); // false


Функциональные интерфейсы активно используются в Stream API, Optional, Comparator, CompletableFuture и других частях стандартной библиотеки. Это удобный способ описать поведение без лишнего кода.

— если было полезно

📱 Java Developer | #обучение
Please open Telegram to view this post
VIEW IN TELEGRAM
24👍6🔥4👨‍💻2
Вопрос с собеседования

Что такое Redis и зачем он используется?

Ответ: Redis — это хранилище данных в оперативной памяти, предназначенное для быстрого доступа к информации. Он поддерживает разные структуры данных — строки, списки, множества, словари — и применяется там, где важна скорость: кэширование, хранение сессий, подсчёт событий, временные блокировки и очереди. Благодаря работе в памяти, Redis обеспечивает отклик за миллисекунды и часто используется в высоконагруженных системах и микросервисной архитектуре.

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

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22🔥73
👩‍💻 Делаем свою простейшую систему сборки для Java

Многие новички в программировании привыкают к тому, что для запуска Java-приложения достаточно создать Gradle/Maven-проект, нажать кнопку в IDE — и все работает.

Но стоит выйти за рамки стандартных сценариев, как процесс сборки превращается в “черный ящик”, а разобраться, что происходит под капотом, становится непросто.

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

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

tags: #статья

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

Какими основными способами можно конфигурировать бины в Spring?

Ответ: В Spring бины можно конфигурировать следующими способами:

▶️ XML-конфигурация

▶️ Аннотации (например, @Component, @Service, @Repository)

▶️ Java-классы с аннотацией @Configuration и методами, помеченными @Bean

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

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17👨‍💻32🤔1
💻 Вопросы по SQL, которые часто задают на собеседовании

В этом цикле статей автор делится вопросами по SQL, с которыми вы можете столкнуться на собеседовании.

В первой части — базовые темы: первичный и внешний ключ, виды соединений, подзапросы, GROUP BY, CTE и другие часто спрашиваемые концепции.

Первая часть

Во второй — более продвинутые вопросы: подзапросы, индексы, оптимизация запросов, хранимые процедуры, транзакции, представления, функции, денормализация, типы индексов и триггеры.

Вторая часть

tags: #статья

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

Чем CompletableFuture отличается от Future и в чём его преимущества?

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

В отличие от Future, где результат приходится ждать вручную через get(), CompletableFuture позволяет задать цепочку действий, которые автоматически выполнятся после завершения задачи — без блокировки потока.

Он поддерживает композицию (например, через thenCompose, thenCombine), удобную обработку ошибок (exceptionally, handle), и может выполнять задачи в отдельных потоках (supplyAsync).

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


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

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥115
👩‍💻 Как ускорить Maven сборку без переезда на Gradle?

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

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

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

tags: #статья

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥2
1
Что выведет код сверху?
Anonymous Quiz
2%
0
34%
1
40%
2
3%
null
21%
Ошибка компиляции
👍138😁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
👍74🔥2👨‍💻1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁38🤣196👨‍💻4🔥1
Вопрос с собеседования

Как работает механизм автоприведения типов в Java?

Ответ: Java выполняет автоматическое преобразование типов (автокастинг), если тип меньшего размера можно безопасно привести к типу большего размера, например, int в long. Однако преобразование в обратную сторону требует явного приведения типа.

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

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍6🔥2
👩‍💻 Архитектурные принципы Spring Security. Часть вторая

В статье разбирается, как устроены объекты Authentication — из чего они состоят, где хранятся и как безопасно использовать их в разных слоях приложения.

Автор на практике показывает как реализовать свой фильтр для аутентификации внешнего сервиса, создать кастомный AuthenticationToken, передать его в SecurityContext и открыть доступ к защищённым ресурсам.

Что вы узнаете из статьи:
▶️ Что такое Authentication и как работают его компоненты: Principal, Credentials, Authorities, Details?

▶️ Как получить Authentication в контроллере, сервисе и глубоко внутри бизнес-логики?

▶️ Зачем нужен SecurityContextHolder и как он работает?

▶️ Почему UsernamePasswordAuthenticationToken не всегда лучший выбор?

▶️ Как сохранять SecurityContext между запросами с помощью SecurityContextRepository?


Продолжение, в котором Spring Security раскрывается без упрощений — с фокусом на архитектуру, реалистичные кейсы и аккуратную работу с контекстом безопасности.

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

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


tags: #статья

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

Что такое livelock?

Ответ: livelock — тип взаимной блокировки, при котором несколько потоков выполняют бесполезную работу, попадая в зацикленность при попытке получения каких-либо ресурсов.

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


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

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
14🔥4👨‍💻2👍1
👩‍💻 100+ ресурсов по System Design

Репозиторий best-system-design-resources — это аккуратно собранная подборка ресурсов по системному дизайну: книги, статьи, видео, курсы и разборы архитектур.

Что внутри:
Основы: CAP-теорема, масштабирование, консистентность

Разбор ключевых компонентов: кэш, балансировка, шардирование, очереди

Примеры реальных систем: поисковики, видеохостинги, мессенджеры

Курсы и гайды: System Design Primer, Grokking, Gaurav Sen

Задачи и кейсы с интервью


Хорошая база, чтобы структурировать знания и увереннее разбираться в архитектуре крупных систем.

📱 Ссылка на GitHub

tags: #полезное

📱 Java Developer | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥65
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣23😁5🔥32