Функция случайных вопросов поможет вам подумать и проверить свои знания.
Попробуйте ответить на вопросы устно или в уме, а затем нажмите на сам вопрос, чтобы сравнить свой ответ и проанализировать его.
Что вы упустили? А может быть, вы знаете гораздо больше? Так или иначе, это хорошая практика. :)
В базе данных хранится около 500 вопросов, охватывающих различные темы из категорий таких как Core-1, Core-2, Многопоточность, SQL, Hibernate, Spring, Паттерны, Алгоритмы.
В категории M-BOSS находятся вопросы, которые могут встречаться на технических собеседованиях Java - разработчиков. (взято из открытых источников)
Приглашаю вас присоединиться к телеграм-группе для обратной связи и получения информации о будущих обновлениях! Хочу вас также пригласить в дискорд, для общения на различные темы о Java и не только в ламповой атмосфере.
Дискорд будет пополняться не сложными практическими задачами, которые будут помогать прокачивать навыки технического мышления!
Заходите на канал "задачи-по-java" и оттачивайте свои навыки!
Помните: Именно кропотливый труд над собой, делает из вас профессионала высокого уровня!
Приятного обучения!

Расскажите про паттерн «Декоратор» (Decorator)

Паттерны

Паттерн «Декоратор» (Decorator) относится к структурным паттернам проектирования и используется для динамического добавления новых функций или поведения существующим объектам без изменения их основной структуры. Основная идея паттерна «Декоратор» заключается в создании класса-декоратора, который оборачивает и расширяет функциональность другого класса, но при этом сохраняет его интерфейс. Декоратор предоставляет гибкую альтернативу наследованию, позволяя добавлять новые функции динамически во время выполнения. Пример реализации паттерна «Декоратор» на языке Java: // Интерфейс, предоставляющий базовую функциональность public interface Component { void operation(); } // Конкретный класс, реализующий интерфейс Component public class ConcreteComponent implements Component { @Override public void operation() { System.out.println("Выполнение базовой операции"); } } // Абстрактный класс декоратора public abstract class Decorator implements Component { protected Component component; public Decorator(Component component) { this.component = component; } @Override public void operation() { component.operation(); } } // Конкретный класс декоратора, добавляющий новую функциональность public class ConcreteDecorator extends Decorator { public ConcreteDecorator(Component component) { super(component); } @Override public void operation() { super.operation(); additionalOperation(); } private void additionalOperation() { System.out.println("Выполнение дополнительной операции"); } } В данном примере у нас есть интерфейс Component, который предоставляет базовую функциональность. Класс ConcreteComponent реализует этот интерфейс и предоставляет реализацию базовой операции. Абстрактный класс Decorator является базовым классом для всех декораторов. Он содержит ссылку на объект типа Component и делегирует вызовы операций этому объекту. Конкретный класс ConcreteDecorator является расширением Decorator и добавляет дополнительную функциональность, выполняя дополнительную операцию после выполнения базовой операции. Теперь мы можем использовать декораторы для расширения функциональности объектов. Например: Component component = new ConcreteComponent(); Component decoratedComponent = new ConcreteDecorator(component); component.operation(); // Выполнение базовой операции decoratedComponent.operation(); // Выполнение базовой операции, а затем выполнение дополнительной операции Паттерн «Декоратор» позволяет добавлять новую функциональность объектам динамически, не изменяя их основной структуры. Это обеспечивает гибкость и позволяет создавать различные комбинации функциональности.

Открыть

Копировать ссылку

ДРУГОЙ ВОПРОС