Java Interview Tasks
4.83K subscribers
213 photos
1 video
1 file
141 links
Реальные вопросы и задачи с собеседований.
Оригинальный авторский контент.
Актуальный материал.
Уровень вопросов от junior до supersenior.

Автор канала - @alexzelentsov

По рекламе: @alexzelentsov
Download Telegram
🔍 Ответ на задачу про BigDecimal: equals vs compareTo ⚖️

- equals() у BigDecimal сравнивает не только значение, но и scale (точность/количество знаков после запятой). Так как у "1.0" scale=1, а у "1.00" scale=2, они не равны.
- compareTo() сравнивает только математические значения. 1.0 и 1.00 математически равны.

Вывод:
equals вернет false, а compareTo вернет true.

⚡️ Не перепутайте:
Для проверки равенства денежных сумм почти всегда нужно использовать compareTo() == 0.

#java #bigdecimal #math #finance #интервью #java_interview_tasks
👍6🔥3👏1
🔍 Ответ на задачу про String.contains: Ловушка экранирования 🪤

Часто при переходе от регулярных выражений к обычным строковым методам в Java возникает путаница с экранированием.

Многие методы в Java (например, split, replaceAll) принимают регулярные выражения. В regex символ | (pipe) является специальным (логическое ИЛИ) и требует экранирования — \|.

Однако метод String.contains(CharSequence s) ищет буквальное совпадение подстроки.

В данном примере:
- MULTIPLE_VALUES_SPLITTER инициализируется строкой \| (обратный слеш и вертикальная черта).
- Метод contains честно ищет эти два символа подряд.
- В строке "apple|orange|banana" есть только символ |, но нет символа \.

Вывод:
Результат будет false. Для корректной проверки наличия разделителя в данном случае нужно использовать val.contains("|").

⚡️ Не перепутайте:
- Методы contains, indexOf, replace работают с литералами.
- Методы split, replaceAll, matches работают с регулярными выражениями.

#java #string #contains #regex #backslash #интервью #java_interview_tasks
👍8❤1🔥1