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

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

По рекламе: @alexzelentsov
Download Telegram
🔍 Ответ на задачу про работу String.valueOf() с null! 💡

String s1 = String.valueOf((Object) null);
String s2 = String.valueOf(null);
System.out.println(Objects.equals(s1, s2));


Вызов String.valueOf((Object) null) в первой строке приводит к тому, что Java воспринимает null как объект, и возвращает строку "null".

Во второй строке, String.valueOf(null) вызывает перегруженный метод, который принимает char[]. Но поскольку передан null, вызов упадет с NPE. 🚀

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

Спасибо, что дочитали до сюда) Не забудьте поставить лайк, оставить комментарий и подписаться! 🙌

#Java #NullPointerException #String #java_interview_tasks
👍32❤6🔥3
🔍 Ответ на задачу про Immutable объекты в Java 🔒

✍️ В Java объект типа String является неизменяемым (immutable). Операция s1.concat(" World") создает новый объект строки и присваивает его s1. Переменная s2 остается ссылаться на старую строку "Hello". Поэтому программа выведет: Hello

Если задача понравилась, ставьте лайк 👍, подписывайтесь на канал и пишите свои ответы и вопросы в комментариях! Обсудим вместе 😊

#java #string #immutable #interview #java_tasks #java_interview_tasks
👍20❤3🔥2😢1
🔍 Ответ на задачу про String Pool: Магия intern() или где живет ваша строка? 🧵

Сравнение строк в Java через == — это классика интервью. Но что произойдет, если мы начнем вручную управлять пулом строк?

Объяснение:
- s1 — это строковый литерал, он сразу попадает в String Pool.
- s2 создается через new String(), поэтому в куче (heap) создается новый объект, отличный от того, что в пуле. Сравнение s1 == s2 дает false.
- Метод intern() ищет строку в пуле. Если она там есть, он возвращает ссылку на объект из пула. Так как "Java" уже там была (от s1), s3 получит ту же самую ссылку.

Вывод:
s1 == s3 вернет true, так как обе переменные теперь ссылаются на один и тот же объект в String Pool.

⚡️ Не перепутайте:
- == сравнивает ссылки.
- equals() сравнивает содержимое.
- intern() — полезный инструмент для экономии памяти, если у вас много повторяющихся строк, созданных динамически.

#java #string #stringpool #intern #jvm #interview #java_interview_tasks
1👍6
🔍 Ответ на задачу про String: replace vs replaceAll 🧐

- replace(CharSequence target, CharSequence replacement) заменяет литеральные строки. Точка воспринимается просто как символ.
- replaceAll(String regex, String replacement) принимает регулярное выражение. В регулярках точка . означает "любой символ". Поэтому replaceAll заменит абсолютно все символы в строке на слэш.

Вывод:
Первая строка выведет java/is/fun, а вторая — ///////////.

⚡️ Не перепутайте:
Если вам не нужны регулярные выражения, всегда используйте replace(). Он быстрее и безопаснее.

#java #string #regex #basics #интервью #java_interview_tasks
👍10🔥6❤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