Java Learning
19.4K subscribers
1.58K photos
1 video
3 files
957 links
№ 5079899194

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

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

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

Реклама на бирже - https://telega.in/c/Java_per_month
Download Telegram
Что выведет код сверху?
Anonymous Quiz
24%
9
2%
10
7%
910!
47%
910
8%
09!
11%
Error
👍43
#Вопросы_с_собеседования

Дайте определение понятию «интерфейс». Какие модификаторы по умолчанию имеют поля и методы интерфейсов?

Ключевое слово interface используется для создания полностью абстрактных классов. Основное предназначение интерфейса - определять каким образом мы можем использовать класс, который его реализует. Создатель интерфейса определяет имена методов, списки аргументов и типы возвращаемых значений, но не реализует их поведение. Все методы неявно объявляются как public.

Начиная с Java 8 в интерфейсах разрешается размещать реализацию методов по умолчанию default и статических static методов.

Интерфейс также может содержать и поля. В этом случае они автоматически являются публичными public, статическими static и неизменяемыми final.
👍25😱2
#Вопросы_с_собеседования

Напишите однопоточную программу, которая заставляет коллекцию выбросить ConcurrentModificationException.

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

Аргументы командной строки Java позволяют передавать аргументы во время выполнения программы непосредственно из консоли, к которой будет обращаться метод main(). А также позволяет использовать их в качестве входных данных или обходить аргументы командной строки, передав значения непосредственно методу main().

Смотреть статью
👍8👎1
#Вопросы_с_собеседования

Что такое Optional?

Опциональное значение Optional — это контейнер для объекта, который может содержать или не содержать значение null. Такая обёртка является удобным средством предотвращения NullPointerException, т.к. имеет некоторые функции высшего порядка, избавляющие от добавления повторяющихся if null/notNull проверок.
👍24
Метод Math.random()

Используется для генерации случайного числа в диапазоне от 0.0 до 1.0. Различные диапазоны могут быть достигнуты с помощью арифметики.

Выше приведен пример выбора случайного числа в диапазоне от 0 до 10.
👍25
Какие возможности современных версий Java выделяют разработчики

Здесь собраны некоторые возможности, которые вызвали наибольший интерес.

☕️ Pattern Matching — оператор instanceof с паттерн-матчингом теперь стал стабильной синтаксической конструкцией и больше не требует флага --enable-preview.
☕️ Stream.toList() — метод собирает содержимое Stream в неизменяемый список и возвращает его.
☕️ Stream.mapMulti() — императивный аналог Stream.flatMap(), принимающий процедуру с двумя параметрами, где первый параметр – текущий элемент, а второй – Consumer, в который кладутся значения.
☕️ Records — записи обеспечивают компактный синтаксис для объявления классов, позволяющий в некоторых случаях обойтись без явного определения низкоуровневых методов вроде equals(), hashCode() и toString().
👍14👎2
Метод trim()

Возвращает копию данной строки, в которой удаляются начальные и конечные пробелы, или данную строку, если она не имеет начальных или конечных пробелов.
👍40👎1
#Вопросы_с_собеседования

Что такое «интернационализация», «локализация»?

Интернационализация (internationalization)
- способ создания приложений, при котором их можно легко адаптировать для разных аудиторий, говорящих на разных языках.

Локализация (localization) - адаптация интерфейса приложения под несколько языков. Добавление нового языка может внести определенные сложности в локализацию интерфейса.
👍17
Разница между == и .equals() в Java

Как правило, в Java для сравнения объектов и проверки равенства используются оба equals() и «==», но вот некоторые из различий между ними:

1. Один из них является методом, а другой - оператором.
2. Можно использовать оператор == для сравнения ссылок (адресов в памяти) и метод .equals() для сравнения содержимого. Проще говоря, == проверяет, указывают ли оба объекта на одно и то же место в памяти, тогда как .equals() сравнивает значения в объектах.
3. Если класс не переопределяет метод equals, то по умолчанию он использует метод equals ближайшего родительского класса, который переопределил этот метод.
👍56
#Вопросы_с_собеседования

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

Это оператор throw.
👍36😱11
#Вопросы_с_собеседования

Можно ли использовать строки в конструкции switch?

Да, начиная с Java 7 в операторе switch можно использовать строки, ранние версии Java не поддерживают этого. При этом:

• участвующие строки чувствительны к регистру;
• используется метод equals() для сравнения полученного значения со значениями case, поэтому во избежание NullPointerException стоит предусмотреть проверку на null.
• согласно документации, Java 7 для строк в switch, компилятор Java формирует более эффективный байткод для строк в конструкции switch, чем для сцепленных условий if-else.
👍27
#Вопросы_с_собеседования

Когда вызывается конструктор класса?

Ответ: Конструктор класса вызывается каждый раз, когда создается объект с новым ключевым словом.

Например, в следующем классе два объекта создаются с использованием ключевого слова new, и, следовательно, конструктор вызывается два раза.
👍25👎17
#Вопросы_с_собеседования

Будет ли работать HashMap, если все добавляемые ключи будут иметь одинаковый hashCode()?

Ответ:
Да, будет, но в этом случае HashMap вырождается в связный список и теряет свои преимущества.
👍37
📌 Lombok — библиотека, генерирующая за вас бойлерплейт (шаблонный) код. Даёт возможность создавать классы ускоренно, так как не надо вручную прописывать, например, геттеры и сеттеры, всё делается с помощью аннотаций.

Вы можете создавать неизменяемые классы вместе с типовыми методами и геттерами к ним — с помощью @Value. Все поля класса будут финализированы и сделаны приватными.

Ознакомиться с проектом подробнее можно с помощью документации: https://projectlombok.org/
👍25👎2
#Вопросы_с_собеседования

Какое исключение выбрасывается при возникновении ошибки в блоке инициализации класса?

Если возникшее исключение - наследник RuntimeException:

• для статических блоков инициализации будет выброшено java.lang.ExceptionInInitializerError;
• для нестатических будет проброшено исключение-источник.
Если возникшее исключение - наследник Error, то в обоих случаях будет выброшено java.lang.Error. Исключение: java.lang.ThreadDeath - смерть потока. В этом случае никакое исключение выброшено не будет.
👍14
Метод delete()

Удаляет символы в подстроке данной строки буфера (StringBuffer). Подстрока начинается с указанного начального индекса и распространяется до символа конечного индекса, или до конца StringBuffer, если такого символа не существует.

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

Если start (начальный индекс) равен end (конечный индекс), то изменения не производятся.

Параметры:
• start — начальный индекс, включительно;
• end — конечный индекс, не включая.
👍24