Какое утверждение наиболее точно описывает применение и обработку checked и unchecked исключений в Java?
Anonymous Quiz
8%
Unchecked исключения обязательно должны быть обработаны в программе.
11%
Checked исключения являются подклассами Error и RuntimeException.
78%
Checked исключения проверяются на этапе компиляции, а unchecked — нет.
4%
Все исключения в Java являются checked по умолчанию.
👍10
Является ли коллекция HashMap потоком безопасной ?
Спросят с вероятностью 12%
Коллекция
Для работы в многопоточной среде рекомендуется использовать потокобезопасные альтернативы, такие как:
1️⃣
2️⃣
Использование
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1715 вопроса на Java разработчика. Ставь 👍 если нравится контент
🧩 Идущий | 🔐 Собесы | 🔐 Тестовые
Спросят с вероятностью 12%
Коллекция
HashMap не является потокобезопасной. Это означает, что при одновременном доступе к нему из нескольких потоков без должной синхронизации могут возникнуть проблемы, такие как потеря данных, гонки за данные и другие виды состояний гонки. Если один поток изменяет ее структуру (например, добавляя или удаляя элементы), в то время как другой поток итерирует по ней или также пытается внести изменения, результаты могут быть непредсказуемыми.Для работы в многопоточной среде рекомендуется использовать потокобезопасные альтернативы, такие как:
1️⃣
Collections.synchronizedMap(Map): Оборачивает ее (или любую другую карту) в потокобезопасную обёртку, гарантируя безопасность при доступе из разных потоков. Однако при использовании этого метода важно помнить, что если итерация по коллекции происходит в многопоточной среде, необходимо синхронизировать весь блок итерации на возвращённой карте для предотвращения конкурентных модификаций.Map<String, String> map = Collections.synchronizedMap(new HashMap<>());
2️⃣
ConcurrentHashMap: Предоставляет потокобезопасную реализацию карты без блокировки всей карты. ConcurrentHashMap разработан для высокой конкуренции и эффективности при доступе из множества потоков, обеспечивая лучшую производительность по сравнению с synchronizedMap. ConcurrentHashMap позволяет одновременно читать данные из карты несколькими потоками без блокировки и записывать данные при минимальной блокировке.Map<String, String> concurrentMap = new ConcurrentHashMap<>();
Использование
ConcurrentHashMap является предпочтительным вариантом для многопоточных приложений, где требуются операции чтения и записи в карту, поскольку она специально разработана для таких сценариев, обеспечивая высокую производительность и потокобезопасность.👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1715 вопроса на Java разработчика. Ставь 👍 если нравится контент
Please open Telegram to view this post
VIEW IN TELEGRAM
👍33😁3❤2
Какой метод из класса Object будет вызван по умолчанию, если объект используется в строковой конкатенации?
Anonymous Quiz
3%
finalize()
3%
getClass ( )
4%
hashCode ()
90%
toString()
😁12👍6❤5
Что такое mock ?
Спросят с вероятностью 12%
"mock" (подделка, макет) — это объект, который имитирует поведение реального компонента в контролируемом окружении. Такие объекты часто используются в модульном тестировании для имитации взаимодействия между компонентами программы, позволяя тестировать каждый компонент изолированно от остальных. Это особенно полезно в ситуациях, когда реальные объекты трудно настроить, они медленно работают или их использование в тестах может привести к нежелательным побочным эффектам (например, изменение данных в базе данных).
Ключевые аспекты:
✅ Изоляция тестируемого компонента: Объекты позволяют изолировать тестируемый компонент от его зависимостей, что обеспечивает точность тестирования и помогает точно определить причины возникновения ошибок.
✅ Контроль взаимодействий: С помощью него объектов можно точно определить, как тестируемый компонент взаимодействует с его зависимостями, включая проверку вызовов методов, передачу аргументов и возвращаемые значения.
✅ Тестирование в различных сценариях: Объекты позволяют легко настраивать различные условия тестирования, например, имитируя различные ситуации ошибок или исключительных состояний, которые могут быть трудно воспроизвести с реальными объектами.
✅ Ускорение тестирования: Поскольку такие объекты имитируют только необходимые аспекты реальных объектов, они могут существенно ускорить выполнение тестов по сравнению с использованием реальных компонентов, особенно если последние медленно работают или требуют сложной настройки.
Пример:
В этом примере используется mock объект для зависимости
Mock объекты являются важным инструментом при написании модульных тестов. Они облегчают тестирование, позволяя точно и изолированно проверять поведение компонентов программы в различных сценариях.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1715 вопроса на Java разработчика. Ставь 👍 если нравится контент
🧩 Идущий | 🔐 Собесы | 🔐 Тестовые
Спросят с вероятностью 12%
"mock" (подделка, макет) — это объект, который имитирует поведение реального компонента в контролируемом окружении. Такие объекты часто используются в модульном тестировании для имитации взаимодействия между компонентами программы, позволяя тестировать каждый компонент изолированно от остальных. Это особенно полезно в ситуациях, когда реальные объекты трудно настроить, они медленно работают или их использование в тестах может привести к нежелательным побочным эффектам (например, изменение данных в базе данных).
Ключевые аспекты:
✅ Изоляция тестируемого компонента: Объекты позволяют изолировать тестируемый компонент от его зависимостей, что обеспечивает точность тестирования и помогает точно определить причины возникновения ошибок.
✅ Контроль взаимодействий: С помощью него объектов можно точно определить, как тестируемый компонент взаимодействует с его зависимостями, включая проверку вызовов методов, передачу аргументов и возвращаемые значения.
✅ Тестирование в различных сценариях: Объекты позволяют легко настраивать различные условия тестирования, например, имитируя различные ситуации ошибок или исключительных состояний, которые могут быть трудно воспроизвести с реальными объектами.
✅ Ускорение тестирования: Поскольку такие объекты имитируют только необходимые аспекты реальных объектов, они могут существенно ускорить выполнение тестов по сравнению с использованием реальных компонентов, особенно если последние медленно работают или требуют сложной настройки.
Пример:
import static org.mockito.Mockito.*;
public class SomeTest {
@Test
public void testSomeMethod() {
// Создание mock объекта
MyDependency myMock = mock(MyDependency.class);
// Настройка поведения mock объекта
when(myMock.someMethod()).thenReturn("expected value");
// Создание экземпляра тестируемого класса с mock зависимостью
MyClass myClass = new MyClass(myMock);
// Вызов тестируемого метода
String result = myClass.useDependency();
// Проверка результата
assertEquals("expected value", result);
// Проверка взаимодействия с mock объектом
verify(myMock).someMethod();
}
}
В этом примере используется mock объект для зависимости
MyDependency класса MyClass, что позволяет тестировать поведение MyClass в изоляции от реализации MyDependency, предоставляя при этом контролируемое окружение для проверки взаимодействий и результатов выполнения.Mock объекты являются важным инструментом при написании модульных тестов. Они облегчают тестирование, позволяя точно и изолированно проверять поведение компонентов программы в различных сценариях.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1715 вопроса на Java разработчика. Ставь 👍 если нравится контент
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19
Какое утверждение верно относительно иерархии исключений в Java при использовании пользовательских исключений?
Anonymous Quiz
7%
Пользовательские исключения не могут быть checked.
11%
Пользовательские исключения наследуются от класса Error.
67%
Пользовательские исключения могут расширять Throwable.
15%
Все пользовательские исключения должны быть unchecked.
👍3❤2
Что такое коллекции и зачем они нужны ?
Спросят с вероятностью 12%
Коллекции — это структуры данных, предназначенные для хранения группы объектов. Они представлены Java Collection Framework (JCF), который включает в себя различные интерфейсы и классы, такие как списки (List), множества (Set), очереди (Queue) и карты (Map). Эти структуры данных позволяют эффективно управлять наборами данных, обеспечивая удобный доступ к элементам, их хранение и манипулирование ими.
Зачем они нужны:
1️⃣Гибкое управление данными: Позволяют хранить объекты динамически, в отличие от массивов, размер которых фиксирован. Это означает, что вы можете добавлять, удалять и изменять элементы в коллекции в любое время.
2️⃣Поддержка различных структур данных: Каждая структура данных имеет свои особенности и предназначена для решения определённых задач. Например,
3️⃣Улучшение производительности: Многие реализации коллекций оптимизированы для быстрого выполнения часто используемых операций, таких как поиск, сортировка и вставка элементов.
4️⃣Повышение читаемости и упрощение кода: Использование их и их методов помогает сделать код более понятным и сократить количество написанного кода за счёт использования готовых абстракций.
5️⃣Облегчение выполнения сложных операций: Они в сочетании с Stream API и более новых версиях предоставляют мощные инструменты для обработки данных, включая фильтрацию, преобразование, сортировку и агрегацию.
Пример:
В этом примере используется
Коллекции необходимы для эффективного управления наборами данных. Они предоставляют гибкие и мощные средства для хранения, доступа и манипулирования объектами, делая код более чистым, понятным и эффективным.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1715 вопроса на Java разработчика. Ставь 👍 если нравится контент
🧩 Идущий | 🔐 Собесы | 🔐 Тестовые
Спросят с вероятностью 12%
Коллекции — это структуры данных, предназначенные для хранения группы объектов. Они представлены Java Collection Framework (JCF), который включает в себя различные интерфейсы и классы, такие как списки (List), множества (Set), очереди (Queue) и карты (Map). Эти структуры данных позволяют эффективно управлять наборами данных, обеспечивая удобный доступ к элементам, их хранение и манипулирование ими.
Зачем они нужны:
1️⃣Гибкое управление данными: Позволяют хранить объекты динамически, в отличие от массивов, размер которых фиксирован. Это означает, что вы можете добавлять, удалять и изменять элементы в коллекции в любое время.
2️⃣Поддержка различных структур данных: Каждая структура данных имеет свои особенности и предназначена для решения определённых задач. Например,
List поддерживает упорядоченную коллекцию с дубликатами, Set — набор уникальных элементов, Map — хранение пар ключ-значение.3️⃣Улучшение производительности: Многие реализации коллекций оптимизированы для быстрого выполнения часто используемых операций, таких как поиск, сортировка и вставка элементов.
4️⃣Повышение читаемости и упрощение кода: Использование их и их методов помогает сделать код более понятным и сократить количество написанного кода за счёт использования готовых абстракций.
5️⃣Облегчение выполнения сложных операций: Они в сочетании с Stream API и более новых версиях предоставляют мощные инструменты для обработки данных, включая фильтрацию, преобразование, сортировку и агрегацию.
Пример:
import java.util.ArrayList;
import java.util.List;
public class CollectionExample {
public static void main(String[] args) {
List<String> fruits = new ArrayList<>();
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Cherry");
for (String fruit : fruits) {
System.out.println(fruit);
}
}
}
В этом примере используется
ArrayList, одна из реализаций интерфейса List, для хранения и вывода списка фруктов. ArrayList позволяет легко добавлять новые элементы и автоматически расширяется для их хранения.Коллекции необходимы для эффективного управления наборами данных. Они предоставляют гибкие и мощные средства для хранения, доступа и манипулирования объектами, делая код более чистым, понятным и эффективным.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1715 вопроса на Java разработчика. Ставь 👍 если нравится контент
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26❤2🤯1
Какой принцип SOLID нарушается, если класс выполняет обработку данных и их валидацию, а также управление Ul?
Anonymous Quiz
92%
Принцип единственной ответственности (Single Responsibility Principle)
3%
Принцип открытости/закрытости (Open/Closed Principle)
2%
Принцип подстановки Барбары Лисков (Liskov Substitution Principle)
3%
Принцип инверсии зависимостей (Dependency Inversion Principle)
👍4
В чем разница Spring Boot и Spring ?
Спросят с вероятностью 12%
Spring и Spring Boot являются частью экосистемы, которая предоставляет широкий спектр инструментов для разработки современных Java-приложений. Несмотря на тесную связь, между ними есть ключевые отличия.
Spring Framework
Это мощный и широко используемый фреймворк для разработки приложений на Java. Он предоставляет обширный набор функциональностей, включая инверсию управления (IoC) и внедрение зависимостей (DI), абстракции для работы с транзакциями, обработку исключений, поддержку аспектно-ориентированного программирования (AOP) и многое другое. Он предназначен для упрощения Java EE разработки, обеспечивая легкость создания масштабируемых и легко поддерживаемых приложений.
Основные характеристики:
1️⃣ Повышение производительности и упрощение управления транзакциями.
2️⃣ Облегчение интеграции с другими Java фреймворками и библиотеками.
3️⃣ Поддержка модульного программирования через разделение приложения на отдельные компоненты.
Spring Boot
С другой стороны, представляет собой расширение Spring Framework, предназначенное для упрощения процесса конфигурации и развертывания Spring-приложений. Он автоматизирует многие процессы, предоставляя "готовые к использованию" настройки для быстрого старта проектов и избавления от необходимости вручную определять стандартную конфигурацию.
Основные характеристики:
1️⃣ Автоматическая конфигурация Spring-приложений в соответствии с "лучшими практиками".
2️⃣ Встроенные серверы приложений, такие как Tomcat, Jetty, чтобы можно было запускать веб-приложения без внешнего сервера.
3️⃣ Обширная поддержка стартеров, которые автоматически добавляют зависимости и автоконфигурацию для различных модулей Spring (например, Spring MVC, Spring Data JPA).
4️⃣ Упрощение управления зависимостями и версиями.
5️⃣ Поддержка быстрого создания исполняемых JAR- и WAR-файлов для упрощения развертывания.
Различия
- Цель: Spring Framework предоставляет основу для создания приложений на Java, в то время как Spring Boot предлагает конвенции и автоматическую конфигурацию для быстрого старта и развертывания приложений.
- Конфигурация: В Spring для настройки приложения часто требуется детальная конфигурация, включая XML-файлы или аннотации. Spring Boot стремится уменьшить эту сложность, автоматически конфигурируя компоненты на основе добавленных в проект зависимостей.
- Встроенный сервер: Spring Boot по умолчанию включает в себя встроенный сервер приложений, что упрощает развертывание и тестирование веб-приложений.
Spring Boot не заменяет Spring Framework, а дополняет его, предоставляя более простой и быстрый способ для создания готовых к развертыванию приложений, оптимизируя и автоматизируя многие процессы конфигурации.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1715 вопроса на Java разработчика. Ставь 👍 если нравится контент
🧩 Идущий | 🔐 Собесы | 🔐 Тестовые
Спросят с вероятностью 12%
Spring и Spring Boot являются частью экосистемы, которая предоставляет широкий спектр инструментов для разработки современных Java-приложений. Несмотря на тесную связь, между ними есть ключевые отличия.
Spring Framework
Это мощный и широко используемый фреймворк для разработки приложений на Java. Он предоставляет обширный набор функциональностей, включая инверсию управления (IoC) и внедрение зависимостей (DI), абстракции для работы с транзакциями, обработку исключений, поддержку аспектно-ориентированного программирования (AOP) и многое другое. Он предназначен для упрощения Java EE разработки, обеспечивая легкость создания масштабируемых и легко поддерживаемых приложений.
Основные характеристики:
1️⃣ Повышение производительности и упрощение управления транзакциями.
2️⃣ Облегчение интеграции с другими Java фреймворками и библиотеками.
3️⃣ Поддержка модульного программирования через разделение приложения на отдельные компоненты.
Spring Boot
С другой стороны, представляет собой расширение Spring Framework, предназначенное для упрощения процесса конфигурации и развертывания Spring-приложений. Он автоматизирует многие процессы, предоставляя "готовые к использованию" настройки для быстрого старта проектов и избавления от необходимости вручную определять стандартную конфигурацию.
Основные характеристики:
1️⃣ Автоматическая конфигурация Spring-приложений в соответствии с "лучшими практиками".
2️⃣ Встроенные серверы приложений, такие как Tomcat, Jetty, чтобы можно было запускать веб-приложения без внешнего сервера.
3️⃣ Обширная поддержка стартеров, которые автоматически добавляют зависимости и автоконфигурацию для различных модулей Spring (например, Spring MVC, Spring Data JPA).
4️⃣ Упрощение управления зависимостями и версиями.
5️⃣ Поддержка быстрого создания исполняемых JAR- и WAR-файлов для упрощения развертывания.
Различия
- Цель: Spring Framework предоставляет основу для создания приложений на Java, в то время как Spring Boot предлагает конвенции и автоматическую конфигурацию для быстрого старта и развертывания приложений.
- Конфигурация: В Spring для настройки приложения часто требуется детальная конфигурация, включая XML-файлы или аннотации. Spring Boot стремится уменьшить эту сложность, автоматически конфигурируя компоненты на основе добавленных в проект зависимостей.
- Встроенный сервер: Spring Boot по умолчанию включает в себя встроенный сервер приложений, что упрощает развертывание и тестирование веб-приложений.
Spring Boot не заменяет Spring Framework, а дополняет его, предоставляя более простой и быстрый способ для создания готовых к развертыванию приложений, оптимизируя и автоматизируя многие процессы конфигурации.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1715 вопроса на Java разработчика. Ставь 👍 если нравится контент
Please open Telegram to view this post
VIEW IN TELEGRAM
👍35
Какой интерфейс в иерархии коллекций
Java не наследуется ни от одного другого интерфейса коллекций?
Java не наследуется ни от одного другого интерфейса коллекций?
Anonymous Quiz
4%
List
9%
Set
14%
Queue
73%
Collection
❤7
В чем разница между ArrayList и Вектором ?
Спросят с вероятностью 12%
Основные различия:
1️⃣Синхронизация:
✅Vector: Все методы
✅ArrayList: Методы
2️⃣Рост:
✅Vector: По умолчанию увеличивает свою емкость на 100% (удваивается), когда требуется расширение, если не указан иной коэффициент расширения.
✅ArrayList: Увеличивает свою емкость примерно на 50% при необходимости расширения.
3️⃣Производительность:
✅Из-за синхронизированных методов
4️⃣Использование:
✅Vector считается немного устаревшим и рекомендуется к использованию в особых случаях, когда требуется встроенная потокобезопасность без внешней синхронизации.
✅ArrayList является предпочтительным выбором для новых разработок из-за его производительности в большинстве сценариев.
Пример:
Выбор между
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1715 вопроса на Java разработчика. Ставь 👍 если нравится контент
🧩 Идущий | 🔐 Собесы | 🔐 Тестовые
Спросят с вероятностью 12%
ArrayList и Vector оба реализуют интерфейс List и используются для хранения динамических массивов объектов, но между ними существуют важные различия, которые делают их подходящими для разных сценариев использования.Основные различия:
1️⃣Синхронизация:
✅Vector: Все методы
Vector синхронизированы. Это означает, что они потокобезопасны и могут использоваться без дополнительных мер предосторожности в многопоточных средах. Однако из-за этого Vector может работать медленнее, чем ArrayList, в однопоточных приложениях из-за накладных расходов на синхронизацию.✅ArrayList: Методы
ArrayList не синхронизированы. Это делает ArrayList более быстрым, чем Vector, в средах, где потокобезопасность не является требованием. Для использования в многопоточных средах необходимо обеспечить внешнюю синхронизацию или использовать Collections.synchronizedList() для оборачивания ArrayList.2️⃣Рост:
✅Vector: По умолчанию увеличивает свою емкость на 100% (удваивается), когда требуется расширение, если не указан иной коэффициент расширения.
✅ArrayList: Увеличивает свою емкость примерно на 50% при необходимости расширения.
3️⃣Производительность:
✅Из-за синхронизированных методов
Vector может быть менее производительным в сравнении с ArrayList, особенно в приложениях, где требуется высокая скорость работы с коллекциями в однопоточном режиме.4️⃣Использование:
✅Vector считается немного устаревшим и рекомендуется к использованию в особых случаях, когда требуется встроенная потокобезопасность без внешней синхронизации.
✅ArrayList является предпочтительным выбором для новых разработок из-за его производительности в большинстве сценариев.
Пример:
import java.util.*;
public class ListExample {
public static void main(String[] args) {
List<String> arrayList = new ArrayList<>();
arrayList.add("Java");
arrayList.add("Python");
List<String> vector = new Vector<>();
vector.add("C++");
vector.add("JavaScript");
}
}
Выбор между
ArrayList и Vector зависит от конкретных требований к приложению. Если потокобезопасность является ключевым требованием и вы готовы пожертвовать некоторой производительностью, то Vector может быть подходящим выбором. В большинстве других случаев предпочтительнее использовать ArrayList из-за его лучшей производительности и широкой распространённости в современном коде.👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1715 вопроса на Java разработчика. Ставь 👍 если нравится контент
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤4😁2
Что произойдет, если два ключа в
HashMap имеют одинаковый хэш-код, но они не равны друг другу?
HashMap имеют одинаковый хэш-код, но они не равны друг другу?
Anonymous Quiz
9%
Записи будут храниться в разных бакетах.
18%
Произойдет замена старого значения новым.
63%
Записи будут храниться в одном бакете в виде списка.
10%
HashMap автоматически пересчитает хэш-коды.
❤3
Какие состояния объекта есть в Hibernate ?
Спросят с вероятностью 12%
В Hibernate, фреймворке для отображения объектно-реляционных данных, объект может находиться в одном из трёх основных состояний:
1️⃣Transient (Временное)
✅Объект только что создан с использованием оператора
✅Объект ещё не сохранён в базе данных, и у него нет представления в базе данных.
✅Объект во временном состоянии не управляется Hibernate, и изменения, сделанные в объекте, не отслеживаются.
✅Чтобы сохранить объект в базе данных, его необходимо явно передать в сессию Hibernate с использованием методов
2️⃣Persistent (Постоянное)
✅Объект связан с уникальной сессией Hibernate и имеет соответствующую запись в базе данных.
✅Любые изменения, внесённые в объект в состоянии Persistent, автоматически синхронизируются с базой данных при фиксации транзакции или закрытии сессии (если включено автоматическое применение изменений).
✅Объекты в состоянии Persistent могут быть извлечены из базы данных с помощью запросов или методов
3️⃣Detached (Отсоединённое)
✅Объект был в состоянии Persistent, но его сессия была закрыта.
✅Объект всё ещё имеет соответствующую запись в базе данных, но любые изменения, внесённые в объект после закрытия сессии, не отслеживаются и не синхронизируются с базой данных автоматически.
✅Чтобы снова синхронизировать состояние объекта с базой данных, его необходимо повторно связать с новой сессией Hibernate с использованием методов
4️⃣Removed (Удалённое)
✅Это неформальное состояние, когда объект был в состоянии Persistent, но затем был удалён из базы данных с использованием метода
✅После удаления объект по-прежнему существует в памяти, но больше не имеет соответствующей записи в базе данных и не связан с сессией Hibernate.
Работа с этими состояниями объектов позволяет Hibernate эффективно управлять жизненным циклом объектов, их сохранением, обновлением и удалением в базе данных, а также оптимизировать взаимодействие с базой данных, минимизируя количество необходимых запросов.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1715 вопроса на Java разработчика. Ставь 👍 если нравится контент
🧩 Идущий | 🔐 Собесы | 🔐 Тестовые
Спросят с вероятностью 12%
В Hibernate, фреймворке для отображения объектно-реляционных данных, объект может находиться в одном из трёх основных состояний:
1️⃣Transient (Временное)
✅Объект только что создан с использованием оператора
new и ещё не связан с сессией Hibernate.✅Объект ещё не сохранён в базе данных, и у него нет представления в базе данных.
✅Объект во временном состоянии не управляется Hibernate, и изменения, сделанные в объекте, не отслеживаются.
✅Чтобы сохранить объект в базе данных, его необходимо явно передать в сессию Hibernate с использованием методов
save(), persist() или аналогичных.2️⃣Persistent (Постоянное)
✅Объект связан с уникальной сессией Hibernate и имеет соответствующую запись в базе данных.
✅Любые изменения, внесённые в объект в состоянии Persistent, автоматически синхронизируются с базой данных при фиксации транзакции или закрытии сессии (если включено автоматическое применение изменений).
✅Объекты в состоянии Persistent могут быть извлечены из базы данных с помощью запросов или методов
get(), load().3️⃣Detached (Отсоединённое)
✅Объект был в состоянии Persistent, но его сессия была закрыта.
✅Объект всё ещё имеет соответствующую запись в базе данных, но любые изменения, внесённые в объект после закрытия сессии, не отслеживаются и не синхронизируются с базой данных автоматически.
✅Чтобы снова синхронизировать состояние объекта с базой данных, его необходимо повторно связать с новой сессией Hibernate с использованием методов
update(), merge() или saveOrUpdate().4️⃣Removed (Удалённое)
✅Это неформальное состояние, когда объект был в состоянии Persistent, но затем был удалён из базы данных с использованием метода
delete().✅После удаления объект по-прежнему существует в памяти, но больше не имеет соответствующей записи в базе данных и не связан с сессией Hibernate.
Работа с этими состояниями объектов позволяет Hibernate эффективно управлять жизненным циклом объектов, их сохранением, обновлением и удалением в базе данных, а также оптимизировать взаимодействие с базой данных, минимизируя количество необходимых запросов.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1715 вопроса на Java разработчика. Ставь 👍 если нравится контент
Please open Telegram to view this post
VIEW IN TELEGRAM
👍39❤2🔥2😁1
Какое основное отличие между интерфейсами и абстрактными классами в Java позволяет множественное наследование?
Anonymous Quiz
4%
Интерфейсы могут содержать только final поля.
11%
Абстрактные классы могут содержать конструкторы.
78%
Интерфейсы позволяют множественное наследование.
7%
Абстрактные классы могут полностью скрывать реализацию методов.
😁40👍5🤔5
Какие есть коллекции ?
Спросят с вероятностью 12%
Коллекции — это структуры данных, которые используются для хранения групп объектов. Java Collection Framework предоставляет разнообразный набор классов и интерфейсов для работы с ними, позволяя хранить, извлекать, манипулировать и агрегировать данные. Вот основные интерфейсы и некоторые их реализации:
Основные интерфейсы:
1️⃣Collection: Корневой интерфейс для всех коллекций, кроме карт (maps). Определяет базовые операции (например, добавление, удаление, проверка размера).
2️⃣List: Определяет упорядоченную коллекцию, которая может содержать дублирующиеся элементы. Элементы можно доступать по индексу.
✅ArrayList: Реализация на основе динамического массива. Предоставляет быстрый доступ к элементам по индексу.
✅LinkedList: Связный список, обеспечивающий быстрое вставку и удаление элементов.
3️⃣Set: Коллекция, не содержащая дублирующихся элементов.
✅HashSet: Хэш-таблица, предоставляющая быстрые операции вставки, удаления и поиска.
✅LinkedHashSet: Хэш-таблица с сохранением порядка добавления элементов.
✅TreeSet: Отсортированное множество на основе красно-чёрного дерева.
4️⃣Queue: Коллекция для хранения элементов в порядке обработки. Поддерживает операции вставки, извлечения и инспекции.
✅LinkedList: Может также использоваться как реализация Queue.
✅PriorityQueue: Очередь, организующая элементы согласно их приоритетам.
5️⃣Deque: Двусторонняя очередь, позволяющая вставку и удаление элементов с обоих концов.
✅ArrayDeque: Реализация на основе динамического массива.
Карты (Maps):
1️⃣Map: Объект, который хранит пары ключ-значение. Ключи уникальны, а значения могут дублироваться.
✅HashMap: Хэш-таблица для хранения пар ключ-значение. Не гарантирует порядок элементов.
✅LinkedHashMap: Хэш-таблица с сохранением порядка добавления элементов.
✅TreeMap: Отсортированная мапа на основе красно-чёрного дерева.
✅Hashtable: Потокобезопасная реализация Map (устаревшая, использование ConcurrentHashMap предпочтительнее).
Специализированные коллекции:
✅EnumSet: Высокоэффективная реализация интерфейса Set для использования с перечислениями (enums).
✅EnumMap: Реализация интерфейса Map, предназначенная для использования с ключами типа enum.
Java Collection Framework обеспечивает мощные абстракции для работы с коллекциями данных, позволяя разработчикам выбирать структуры данных, наиболее подходящие под конкретные задачи, учитывая их производительность и особенности работы с данными.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1715 вопроса на Java разработчика. Ставь 👍 если нравится контент
🧩 Идущий | 🔐 Собесы | 🔐 Тестовые
Спросят с вероятностью 12%
Коллекции — это структуры данных, которые используются для хранения групп объектов. Java Collection Framework предоставляет разнообразный набор классов и интерфейсов для работы с ними, позволяя хранить, извлекать, манипулировать и агрегировать данные. Вот основные интерфейсы и некоторые их реализации:
Основные интерфейсы:
1️⃣Collection: Корневой интерфейс для всех коллекций, кроме карт (maps). Определяет базовые операции (например, добавление, удаление, проверка размера).
2️⃣List: Определяет упорядоченную коллекцию, которая может содержать дублирующиеся элементы. Элементы можно доступать по индексу.
✅ArrayList: Реализация на основе динамического массива. Предоставляет быстрый доступ к элементам по индексу.
✅LinkedList: Связный список, обеспечивающий быстрое вставку и удаление элементов.
3️⃣Set: Коллекция, не содержащая дублирующихся элементов.
✅HashSet: Хэш-таблица, предоставляющая быстрые операции вставки, удаления и поиска.
✅LinkedHashSet: Хэш-таблица с сохранением порядка добавления элементов.
✅TreeSet: Отсортированное множество на основе красно-чёрного дерева.
4️⃣Queue: Коллекция для хранения элементов в порядке обработки. Поддерживает операции вставки, извлечения и инспекции.
✅LinkedList: Может также использоваться как реализация Queue.
✅PriorityQueue: Очередь, организующая элементы согласно их приоритетам.
5️⃣Deque: Двусторонняя очередь, позволяющая вставку и удаление элементов с обоих концов.
✅ArrayDeque: Реализация на основе динамического массива.
Карты (Maps):
1️⃣Map: Объект, который хранит пары ключ-значение. Ключи уникальны, а значения могут дублироваться.
✅HashMap: Хэш-таблица для хранения пар ключ-значение. Не гарантирует порядок элементов.
✅LinkedHashMap: Хэш-таблица с сохранением порядка добавления элементов.
✅TreeMap: Отсортированная мапа на основе красно-чёрного дерева.
✅Hashtable: Потокобезопасная реализация Map (устаревшая, использование ConcurrentHashMap предпочтительнее).
Специализированные коллекции:
✅EnumSet: Высокоэффективная реализация интерфейса Set для использования с перечислениями (enums).
✅EnumMap: Реализация интерфейса Map, предназначенная для использования с ключами типа enum.
Java Collection Framework обеспечивает мощные абстракции для работы с коллекциями данных, позволяя разработчикам выбирать структуры данных, наиболее подходящие под конкретные задачи, учитывая их производительность и особенности работы с данными.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1715 вопроса на Java разработчика. Ставь 👍 если нравится контент
Please open Telegram to view this post
VIEW IN TELEGRAM
👍28🤔2
Какое утверждение о различиях между примитивными и ссылочными типами данных в Java верно?
Anonymous Quiz
21%
Ссылочные типы хранятся в стеке, а примитивы — в куче.
2%
Ссылочные и примитивные типы всегда занимают одинаковое количество памяти.
73%
Примитивные типы не могут быть null, в отличие от ссылочных.
3%
Примитивы поддерживают методы, в то время как ссылочные - нет.
👍7❤1
Что такое Vector ?
Спросят с вероятностью 12%
Vector — это класс, который реализует динамический массив для хранения объектов. Он является частью Java Collection Framework и находится в пакете
1️⃣Синхронизация: В отличие от
2️⃣Расширение: Как и
Основные методы:
✅
✅
✅
✅
✅
Пример:
Хотя
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1715 вопроса на Java разработчика. Ставь 👍 если нравится контент
🧩 Идущий | 🔐 Собесы | 🔐 Тестовые
Спросят с вероятностью 12%
Vector — это класс, который реализует динамический массив для хранения объектов. Он является частью Java Collection Framework и находится в пакете
java.util. Он очень похож на ArrayList, но с несколькими ключевыми отличиями:1️⃣Синхронизация: В отличие от
ArrayList, большинство методов в нем синхронизированы, что означает, что они потокобезопасны. Это означает, что объект Vector можно безопасно использовать в многопоточных средах без внешней синхронизации. Однако эта потокобезопасность идёт за счёт производительности, поэтому Vector может работать медленнее ArrayList в однопоточных приложениях.2️⃣Расширение: Как и
ArrayList, он автоматически увеличивает свой размер, когда в него добавляются новые элементы. Однако Vector позволяет указать размер инкремента — значение, на которое будет увеличиваться емкость вектора при необходимости расширения. Если размер инкремента не задан, то по умолчанию он удваивает свой размер.Основные методы:
✅
add(Object element): добавляет элемент в конец вектора.✅
get(int index): возвращает элемент по указанному индексу.✅
remove(int index): удаляет элемент по указанному индексу.✅
size(): возвращает количество элементов в векторе.✅
isEmpty(): возвращает true, если вектор не содержит элементов.Пример:
import java.util.Vector;
public class VectorExample {
public static void main(String[] args) {
Vector<String> vector = new Vector<>();
vector.add("Java");
vector.add("Python");
vector.add("C++");
System.out.println("Первый элемент вектора: " + vector.get(0));
for(String lang : vector) {
System.out.println(lang);
}
}
}
Хотя
Vector и является довольно старым классом, в современном коде он используется реже в пользу более новых классов коллекций, таких как ArrayList или CopyOnWriteArrayList, особенно в однопоточных приложениях или там, где потокобезопасность обеспечивается другими средствами. Основной сценарий использования Vector сегодня — это ситуации, когда требуется встроенная синхронизация доступа к коллекции из разных потоков.👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1715 вопроса на Java разработчика. Ставь 👍 если нравится контент
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
Какое требование к реализации методов
hashCode() n equals () является
необходимым для корректной работы хэш-коллекций в Java?
hashCode() n equals () является
необходимым для корректной работы хэш-коллекций в Java?
Anonymous Quiz
18%
Если equals () возвращает true, hashCode ( ) должен возвращать разные значения.
62%
hashCode ( ) должен использовать все поля, которые используются в equals ( ).
4%
equals ( ) должен быть реализован как статический метод.
16%
hashCode() должен всегда возвращать константу.
👍12🤯1👀1👾1
Для чего используется Spring MVC ?
Спросят с вероятностью 12%
Spring MVC (Model-View-Controller) — это модуль фреймворка Spring, предназначенный для разработки веб-приложений со стороны сервера с использованием модели MVC. Spring MVC обеспечивает гибкую архитектуру для создания легко тестируемых и масштабируемых веб-приложений, поддерживая при этом разделение ответственности между компонентами модели, представления и контроллера. Вот основные аспекты и преимущества использования:
Разделение ответственности
✅Модель (Model) представляет структуру данных приложения, бизнес-логику и функции управления состоянием (например, получение данных из базы данных).
✅Представление (View) отвечает за отображение данных, полученных от модели, пользователю. В Spring MVC для этой цели могут использоваться различные технологии, такие как JSP, Thymeleaf, FreeMarker и другие.
✅Контроллер (Controller) обрабатывает входящие запросы от пользователя, взаимодействует с моделью для получения необходимых данных и определяет, какое представление должно быть отображено пользователю.
Гибкость и мощь
Предоставляет мощные абстракции и аннотации для обработки HTTP-запросов и ответов, валидации данных, обработки исключений и международной поддержки, что делает разработку веб-приложений более простой и удобной.
Простота интеграции
Легко интегрируется с другими модулями Spring, такими как Spring Security для аутентификации и авторизации, Spring Data для работы с базами данных и Spring Boot для упрощения конфигурации и развертывания приложений.
Поддержка REST
Поддерживает создание как традиционных веб-сайтов, так и RESTful веб-сервисов, предоставляя аннотации и утилиты для удобной работы с HTTP-запросами и ответами, форматирования данных в JSON или XML и обработки HTTP-методов (GET, POST, DELETE и т.д.).
Легкость тестирования
Компоненты, разработанные с использованием этого модуля, легко тестируются благодаря поддержке инъекции зависимостей и возможности отделения бизнес-логики от веб-слоя, что позволяет писать модульные и интеграционные тесты.
Spring MVC используется для разработки веб-приложений и сервисов, предоставляя разработчикам гибкий и мощный инструментарий для создания масштабируемых, поддерживаемых и легко тестируемых веб-приложений. Он предлагает полный контроль над HTTP-запросами и ответами и позволяет эффективно управлять состоянием приложения, его логикой и представлением данных пользователю.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1715 вопроса на Java разработчика. Ставь 👍 если нравится контент
🧩 Идущий | 🔐 Собесы | 🔐 Тестовые
Спросят с вероятностью 12%
Spring MVC (Model-View-Controller) — это модуль фреймворка Spring, предназначенный для разработки веб-приложений со стороны сервера с использованием модели MVC. Spring MVC обеспечивает гибкую архитектуру для создания легко тестируемых и масштабируемых веб-приложений, поддерживая при этом разделение ответственности между компонентами модели, представления и контроллера. Вот основные аспекты и преимущества использования:
Разделение ответственности
✅Модель (Model) представляет структуру данных приложения, бизнес-логику и функции управления состоянием (например, получение данных из базы данных).
✅Представление (View) отвечает за отображение данных, полученных от модели, пользователю. В Spring MVC для этой цели могут использоваться различные технологии, такие как JSP, Thymeleaf, FreeMarker и другие.
✅Контроллер (Controller) обрабатывает входящие запросы от пользователя, взаимодействует с моделью для получения необходимых данных и определяет, какое представление должно быть отображено пользователю.
Гибкость и мощь
Предоставляет мощные абстракции и аннотации для обработки HTTP-запросов и ответов, валидации данных, обработки исключений и международной поддержки, что делает разработку веб-приложений более простой и удобной.
Простота интеграции
Легко интегрируется с другими модулями Spring, такими как Spring Security для аутентификации и авторизации, Spring Data для работы с базами данных и Spring Boot для упрощения конфигурации и развертывания приложений.
Поддержка REST
Поддерживает создание как традиционных веб-сайтов, так и RESTful веб-сервисов, предоставляя аннотации и утилиты для удобной работы с HTTP-запросами и ответами, форматирования данных в JSON или XML и обработки HTTP-методов (GET, POST, DELETE и т.д.).
Легкость тестирования
Компоненты, разработанные с использованием этого модуля, легко тестируются благодаря поддержке инъекции зависимостей и возможности отделения бизнес-логики от веб-слоя, что позволяет писать модульные и интеграционные тесты.
Spring MVC используется для разработки веб-приложений и сервисов, предоставляя разработчикам гибкий и мощный инструментарий для создания масштабируемых, поддерживаемых и легко тестируемых веб-приложений. Он предлагает полный контроль над HTTP-запросами и ответами и позволяет эффективно управлять состоянием приложения, его логикой и представлением данных пользователю.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1715 вопроса на Java разработчика. Ставь 👍 если нравится контент
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Какая основная причина делает операцию вставки элемента в середину списка более эффективной для
LinkedList по сравнению с ArrayList?
LinkedList по сравнению с ArrayList?
Anonymous Quiz
6%
LinkedList автоматически расширяется без перераспределения памяти.
9%
LinkedList не требует изменения размера внутреннего массива.
14%
ArrayList требует времени на обновление индекса для всех элементов.
71%
B LinkedList не нужно сдвигать последующие элементы при вставке.
👍1
В чём основное различие между RestController и Controller ?
Спросят с вероятностью 12%
Основное различие между аннотациями
@Controller
Используется для определения классов в Spring MVC, которые работают как контроллеры в модели MVC (Model-View-Controller). Классы, аннотированные как
Пример:
@RestController
Это специализированная версия аннотации
Пример:
Основное различие
✅@Controller используется для веб-приложений с серверной генерацией HTML-страниц (представлений). Для возврата данных в теле ответа необходимо явно использовать
✅@RestController предназначен для создания RESTful веб-сервисов, где все методы автоматически возвращают данные в теле ответа, обычно в формате JSON или XML, что делает его идеальным выбором для API-бэкендов.
Выбор между
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1715 вопроса на Java разработчика. Ставь 👍 если нравится контент
🧩 Идущий | 🔐 Собесы | 🔐 Тестовые
Спросят с вероятностью 12%
Основное различие между аннотациями
@RestController и @Controller заключается в способе обработки HTTP-запросов и возвращаемых ими ответов, а также в предназначении этих аннотаций.@Controller
Используется для определения классов в Spring MVC, которые работают как контроллеры в модели MVC (Model-View-Controller). Классы, аннотированные как
@Controller, обычно возвращают имя представления (view), и Spring использует ViewResolver для определения, какое представление должно быть отображено в ответ на запрос. Также, при необходимости возвращать данные напрямую в теле ответа, в методах контроллера, аннотированных @Controller, используется @ResponseBody.Пример:
@Controller
public class MyController {
@RequestMapping("/greeting")
public String greet(Model model) {
model.addAttribute("message", "Hello World");
return "greeting"; // Имя представления, которое нужно отрендерить
}
}
@RestController
Это специализированная версия аннотации
@Controller, которая предназначена для создания RESTful веб-сервисов. Она объединяет в себе @Controller и @ResponseBody, благодаря чему все методы в классе, аннотированном @RestController, автоматически считаются имеющими аннотацию @ResponseBody. Это означает, что данные, возвращаемые методами, автоматически сериализуются в JSON или XML и возвращаются в теле HTTP-ответа.Пример:
@RestController
public class MyRestController {
@RequestMapping("/data")
public Map<String, String> getData() {
Map<String, String> data = new HashMap<>();
data.put("message", "Hello World");
return data; // Данные автоматически сериализуются в JSON и возвращаются в теле ответа
}
}
Основное различие
✅@Controller используется для веб-приложений с серверной генерацией HTML-страниц (представлений). Для возврата данных в теле ответа необходимо явно использовать
@ResponseBody.✅@RestController предназначен для создания RESTful веб-сервисов, где все методы автоматически возвращают данные в теле ответа, обычно в формате JSON или XML, что делает его идеальным выбором для API-бэкендов.
Выбор между
@Controller и @RestController зависит от конкретных требований к приложению и предпочтительного способа взаимодействия с клиентом или потребителем API.👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1715 вопроса на Java разработчика. Ставь 👍 если нравится контент
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32❤2
Какой принцип ООП наиболее тесно связан с уменьшением зависимости между различными частями программы?
Anonymous Quiz
34%
Инкапсуляция
6%
Наследование
21%
Полиморфизм
39%
Абстракция
🤔30👍8👾3❤2🤯1