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

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

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

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

Реклама на бирже - https://telega.in/c/Java_per_month
Download Telegram
Что выведет код сверху?
Anonymous Quiz
19%
42 42
15%
42 42
31%
42 -43
35%
42 -42
👍26👎31
#Вопросы_с_собеседования

В чем разница между this() и super()?

super() и this() являются специальными ключевыми словами, которые используются для вызова конструктора.
👍29😱3
#вопросы_с_собеседований
Опишите работу блока try-catch-finally.

try
— это ключевое слово используется для отметки начала блока кода, который потенциально может выдать ошибку. catch — ключевое слово для отметки начала блока кода, предназначенного для перехвата и обработки исключений в случае их возникновения. finally — слово для отметки начала необязательного блока кода. Этот блок помещается после последнего блока catch. Управление передаётся в блок finally вне зависимости от того, было выброшено исключение или нет.

Общий вид конструкции показан на картинке.
👍28
#Вопросы_с_собеседования

Сколько необходимо дополнительной памяти при вызове ArrayList.add()?

Если в массиве достаточно места для размещения нового элемента, то дополнительной памяти не требуется. Иначе происходит создание нового массива размером в 1,5 раза превышающим существующий (это верно для JDK выше 1.7, в более ранних версиях размер увеличения иной).
👍20
TelegramBots

Это библиотека для создания телеграм-ботов на Java. Разработка движется от способности бота вести себя так или иначе. Вы создаёте объект Ability и конкретизируете входные данные, место действия (группа или персональный чат), права доступа (кто может использовать данную способность — кто угодно, админ или только создатель бота), сами действия и то, что происходит после их завершения. Каждая новая функция бота — новая способность, которую вы можете настроить отдельно. Для каждой Ability — своя встроенная база данных.

Бот автоматически ведёт историю контактов с пользователями, актуализирует имена и ники. Есть готовые механизмы разжалования админов, банов и снятия банов.

https://github.com/rubenlagus/TelegramBots
👍17
Какая строка первой вызовет ошибку компиляции?
Anonymous Quiz
43%
L1
7%
L2
7%
L3
21%
L4
21%
Никакая
👍35😱13
#Вопросы_с_собеседования

В чем отличия TreeSet и HashSet?

TreeSet обеспечивает упорядоченно хранение элементов в виде красно-черного дерева. Сложность выполнения основных операций не хуже O(log(N)) (Логарифмическое время).

HashSet использует для хранения элементов такой же подход, что и HashMap, за тем отличием, что в HashSet в качестве ключа и значения выступает сам элемент, кроме того, HashSet не поддерживает упорядоченное хранение элементов и обеспечивает временную сложность выполнения операций аналогично HashMap.
👍19
#вопросы_с_собеседований
Как написать собственное («пользовательское») исключение?

Необходимо унаследоваться от базового класса требуемого типа исключений (например, от Exception или RuntimeException).
👍25
Сколько новых объектов создается в данном коде?
Anonymous Quiz
8%
0
65%
1
26%
2
2%
3
👍25👎31😱1
#Вопросы_с_собеседования

Чем различаются Thread и Runnable?

Thread - это класс, некоторая надстройка над физическим потоком.

Runnable - это интерфейс, представляющий абстракцию над выполняемой задачей.

Помимо того, что Runnable помогает разрешить проблему множественного наследования, несомненный плюс от его использования состоит в том, что он позволяет логически отделить логику выполнения задачи от непосредственного управления потоком.
👍24
#вопросы_с_собеседований
Как отсортировать список строк с помощью лямбда-выражения?

Ответ на картинке.
👍34
#Вопросы_с_собеседования

Какова роль equals() и hashCode() в HashMap?

hashCode позволяет определить корзину для поиска элемента, а equals используется для сравнения ключей элементов в списке корзины и искомого ключа.
👍27
#Вопросы_с_собеседования

В чём заключается разница между методами start() и run()?

Несмотря на то, что start() вызывает метод run() внутри себя, это не то же самое, что просто вызов run(). Если run() вызывается как обычный метод, то он вызывается в том же потоке и никакой новый поток не запускается, как это происходит, в случае, когда вы вызываете метод start().
👍25
Guava

Guava — это сборник множества библиотек от Google. Он включает в себя:

☕️ несколько новых типов коллекций, неизменяемые коллекции;
☕️ библиотеку, реализующую работу с графами;
☕️ работу с вводом\выводом, хешированием, кэшированием, строками и многим другим.

Например, часто в коде можно встретить повторяющиеся блоки, реализующие низкоуровневую конкатенацию строк (см. пример кода). Согласитесь, код с Guava выглядит лаконичнее, понятнее, а главное, выполняет эту операцию самым оптимальным образом.

На эту библиотеку определённо стоит обратить внимание как минимум по причинам. Во-первых, она разработана спецами из Google. Во-вторых, эти же спецы из Google сами её используют. Репозиторий с документацией и инструкцией к установке тут.
👍21
#Вопросы_с_собеседования
Можно ли из конструктора бросить исключение?

С исключениями конструкторы работают точно так же, как и методы.

И если методы позволяют нам пробрасывать исключения, прописывая в заголовке метода throws <ТипИсключения>, то и конструктор позволяет нам это делать, и так же при наследовании и определении конструктора наследника мы можем расширять тип исключения. Например, IOException -> Exception (но не наоборот).

В качестве примера для пробрасывания конструктором исключения возьмем класс Cat. Допустим, при его создании мы хотим вводить имя и возраст с консоли(см картинку).

Так как reader.readLine() бросает исключение IOException, в заголовке мы его прописываем как возможное выбрасываемое исключение.
👍19