Java Learning
18.7K subscribers
1.62K photos
1 video
3 files
998 links
№ 5079899194

Обучающий канал по Java

Ссылка для друга - https://t.iss.one/+ZEYYht6-46w5MDM6

По всем вопросам @mascarov_valentin

Реклама на бирже - https://telega.in/c/Java_per_month
Download Telegram
Hashtable

Hashtable в Java - это реализация коллекции Map, которая была добавлена в Java в версии 1.0.

В этом примере мы создали объект Hashtable, добавили в него три элемента с ключами "A", "B" и "C" и значениями 1, 2 и 3 соответственно. Затем мы вывели на консоль все элементы таблицы, получили значение элемента с ключом "B" и удалили элемент с ключом "C".

Также мы проверили, содержится ли в таблице определенный ключ или значение, а также вывели на консоль размер таблицы.

*Hashtable не рекомендуется к использованию в новых приложениях, вместо нее следует использовать более современную реализацию HashMap или ConcurrentHashMap.
👍12
Каков результат выполнения кода на картинке?
Anonymous Quiz
3%
abc
33%
ac
20%
ace
40%
Ошибка компиляции
4%
Узнать ответ
👍201
Узнаем разницу между 2 датами, представленными в виде строк

Для вычисления разницы между двумя датами, представленными в виде строк, можно использовать классы java.time.LocalDate и java.time.temporal.ChronoUnit из пакета java.time.

В этом примере мы используем метод LocalDate.parse() для преобразования строковых значений в объекты типа LocalDate. Затем мы используем метод ChronoUnit.between() для вычисления разницы между двумя датами в днях, месяцах и годах.

Обратите внимание, что вы должны использовать формат даты "yyyy-MM-dd" для парсинга строковых значений даты. Если ваши строки даты имеют другой формат, вам может потребоваться использовать другой метод для преобразования их в объекты LocalDate.
👍13
#Вопросы_с_собеседования

Что такое double checked locking Singleton?

double checked locking Singleton - это один из способов создания потокобезопасного класса реализующего шаблон Одиночка. Данный метод пытается оптимизировать производительность, блокируясь только случае, когда экземпляр одиночки создаётся впервые.

Следует заметить, что требование volatile обязательно. Проблема Double Checked Lock заключается в модели памяти Java, точнее в порядке создания объектов, когда возможна ситуация, при которой другой поток может получить и начать использовать (на основании условия, что указатель не нулевой) не полностью сконструированный объект. Хотя эта проблема была частично решена в JDK 1.5, однако рекомендация использовать volatile для Double Cheсked Lock остаётся в силе.
👍13😱1
Что такое статическое и динамическое связывание?

Присоединение вызова метода к телу метода называется связыванием. Если связывание проводится компилятором (компоновщиком) перед запуском программы, то оно называется статическим или ранним связыванием (early binding).

В свою очередь, позднее связывание (late binding) это связывание, проводимое непосредственно во время выполнения программы, в зависимости от типа объекта. Позднее связывание также называют динамическим (dynamic) или связыванием на стадии выполнения (runtime binding). В языках, реализующих позднее связывание, должен существовать механизм определения фактического типа объекта во время работы программы, для вызова подходящего метода. Иначе говоря, компилятор не знает тип объекта, но механизм вызова методов определяет его и вызывает соответствующее тело метода. Механизм позднего связывания зависит от конкретного языка, но нетрудно предположить, что для его реализации в объекты должна включаться какая-то дополнительная информация.

Для всех методов Java используется механизм позднего (динамического) связывания, если только метод не был объявлен как final (приватные методы являются final по умолчанию).
👍11
Реализации исключения при делении на ноль

В этом примере мы создаем собственное исключение DivideByZeroException, которое наследуется от класса Exception. Затем, в блоке try мы проверяем, если делитель равен нулю, то мы бросаем это исключение с соответствующим сообщением. В блоке catch мы перехватываем исключение и выводим его сообщение об ошибке.

Обратите внимание, что если вы пытаетесь поделить ноль на ноль, будет брошено исключение типа ArithmeticException, которое уже предусмотрено в Java для обработки ситуаций деления на ноль.
👍6
#Вопросы_с_собеседования

Каким будет результат выполнения следующего кода?

Объяснение: В этом коде мы вызываем метод divide, который выполняет деление двух чисел. При делении на ноль возникает исключение ArithmeticException, которое перехватывается в блоке catch. В блоке finally всегда выполняется инструкция return 0, поэтому в итоге результатом будет значение -1.

Этот вопрос проверяет понимание исключений, блоков try-catch-finally и порядка выполнения кода в Java.
👍10😢4
Может ли статический метод быть переопределён или перегружен?

Перегружен - да. Всё работает точно так же, как и с обычными методами - 2 статических метода могут иметь одинаковое имя, если количество их параметров или типов различается.

Переопределён - нет. Выбор вызываемого статического метода происходит при раннем связывании (на этапе компиляции, а не выполнения) и выполняться всегда будет родительский метод, хотя синтаксически переопределение статического метода - это вполне корректная языковая конструкция.

В целом, к статическим полям и методам рекомендуется обращаться через имя класса, а не объект.
👍9
Функциональное тестирование в SpringBoot

Смотреть статью
👍8
Что будет, если скомпилировать и запустить этот код?
Anonymous Quiz
40%
Ошибка во время компиляции
18%
NullPointerException
9%
StackOverflowException
33%
Код отработает успешно
👍10
Spring Transactions

Spring Transactions - это механизм, предоставляемый Spring Framework, который позволяет управлять транзакциями в Java-приложениях.
Он предоставляет абстракцию уровня транзакций, которая скрывает детали управления транзакциями в низкоуровневых API базы данных, и упрощает создание транзакционных приложений.

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

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

В результате выполнения данного кода, изменения в базе данных будут отменены, так как выполнявшиеся операции были выполнены в контексте транзакции, которая была отменена после генерации исключения.
👍123
Что такое маркерный интерфейс? Каковы известные примеры таких интерфейсов в Java?

Маркерный интерфейс — это интерфейс без каких-либо методов. Обычно он реализуется классом или расширяется другим интерфейсом для обозначения определенного свойства. Наиболее широко известными маркерами в стандартной библиотеке Java являются следующие:

☕️ Serializable используется для явного указания того, что этот класс может быть сериализован;
☕️ Cloneable позволяет клонировать объекты с помощью метода clone (без интерфейса Cloneable этот метод выдает исключение CloneNotSupportedException);
☕️ Remote используется в RMI для указания интерфейса, методы которого можно вызывать удаленно.
👍12
#Вопросы_с_собеседования

🔔 Чем stub отличается от mock?

stub используется как заглушка сервисов, методов, классов и т.д. с заранее запрограммированным ответом на вызовы.

mock использует подмену результатов вызова, проверяет сам факт взаимодействия, протоколирует и контролирует его.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍221
#Вопросы_с_собеседования

Как одной строчкой преобразовать ArrayList в HashSet?

Ответ на картинке.
👍21