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
#Вопросы_с_собеседования

🎙️ Выполнится ли блок finally, если блок try или catch выполняют инструкцию return?

Да, блок finally выполнится, даже если return выполнился в блоке try или catch. Это один из самых популярных и сложных вопросов по Java. Запомните: единственный способ остановить выполнение блока finally — использовать System.exit().
Please open Telegram to view this post
VIEW IN TELEGRAM
👍64😱8🔥4
Collection только для чтения

В Java есть полезные методы, позволяющие сделать класс Collection доступным только для чтения.

Мы можем сделать коллекцию только для чтения, используя один из следующих методов.
👍18
Метод rotate()

Метод java.util.Collections.rotate() присутствует в классе java.util.Collections. Используется для поворота элементов, присутствующих в указанном списке Коллекции, на заданное расстояние.
👍23🤔4😢1
Нужно ли использовать лямбды для оптимизации кода, либо они предназначены только для улучшения читаемости?
Anonymous Quiz
34%
Только улучшение читаемости
40%
Лучше использовать всегда, т. к. происходит оптимизация
25%
Есть смысл использовать только в циклах заместо анонимных классов
👍19🤔111😢1
Регулярное выражение для электронной почты

Регулярные выражения представляют собой формальный язык поиска и редактирования подстрок в тексте. К примеру, надо провалидировать email адрес. Это будет проверка на наличие имени адреса, домена, символа @, точки и доменной зоны.
👍31😢1
👍4🔥2
Что будет выведено на экран?
Anonymous Quiz
15%
falsetrue
7%
truefalse
36%
Compiler Error
27%
truetrue
14%
falsefalse
👍23😢9🔥1
Какое из следующих утверждений о потоках неверно?

1. Если метод start() вызывается дважды для одного и того же объекта Thread, во время выполнения генерируется исключение.
2. Порядок, в котором запускались потоки, может не совпадать с порядком их фактического выполнения.
3. Если метод run() вызывается напрямую для объекта Thread, во время выполнения генерируется исключение.
4. Если метод sleep() вызывается для потока, во время выполнения синхронизированного кода, блокировка не снимается.

Правильный ответ: 3. Если метод run() вызывается напрямую для объекта Thread, во время выполнения исключение не генерируется. Однако, код, написанный в методе run() будет выполняться текущим, а не новым потоком. Таким образом, правильный способ запустить поток – это вызов метода start(), который приводит к выполнению метода run() новым потоком.

Вызов метода
start() дважды для одного и того же объекта Thread приведёт к генерированию исключения IllegalThreadStateException во время выполнения, следовательно, утверждение 1 верно. Утверждение 2 верно, так как порядок, в котором выполняются потоки, определяется Планировщиком потоков, независимо от того, какой поток запущен первым. Утверждение 4 верно, так как поток не освободит блокировки, которые он держит, когда он переходит в состояние Ожидания.
👍20🔥7
#Вопросы_с_собеседования

Что такое «ссылка на метод»?

Если существующий в классе метод уже делает все, что необходимо, то можно воспользоваться механизмом method reference (ссылка на метод) для непосредственной передачи этого метода. Такая ссылка передается в виде:

имя_класса::имя_статического_метода для статического метода;
объект_класса::имя_метода для метода экземпляра;
название_класса::new для конструктора.
Результат будет в точности таким же, как в случае определения лямбда-выражения, которое вызывает этот метод.

Ссылки на методы потенциально более эффективны, чем использование лямбда-выражений. Кроме того, они предоставляют компилятору более качественную информацию о типе и при возможности выбора между использованием ссылки на существующий метод и использованием лямбда-выражения, следует всегда предпочитать использование ссылки на метод.
👍28🔥3
Как сделать анимацию с помощью MotionLayout

MotionLayout – это контейнер, который позволяет просто создавать сложные анимации, для чего требуется лишь описать сцену.

Смотреть статью
👍10
👍1
Что выведет код сверху?
Anonymous Quiz
11%
100
62%
1
25%
Compilation error
3%
Runtime error
👍30😢7🤔3
#Вопросы_с_собеседования

🎙️ Зачем добавили ArrayList, если уже был Vector?

• Методы класса Vector синхронизированы, а ArrayList - нет;
• По умолчанию, Vector удваивает свой размер, когда заканчивается выделенная под элементы память. ArrayList же увеличивает свой размер только на половину.

Vector это устаревший класс и его использование не рекомендовано.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26🔥1
#Вопросы_с_собеседования

Поддерживает ли язык Java множественное наследование?

Это очень хитрый вопрос. Интервьюеры часто говорят: если язык C++ может поддерживать непосредственное множественное наследование, то почему Java не может?

Ответ несколько более сложен, чем может показаться на первый взгляд, поскольку Java поддерживает множественное наследование типов, ведь интерфейс в нём может расширять другие интерфейсы. Но множественное наследование реализаций язык Java не поддерживает.
👍24😢1
#Вопросы_с_собеседования

🎙️ Как объединить два списка в Java?

Ответ на картинке.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍37😢2
Холостые циклы в Java

Смысл холостого цикла состоит в ожидании события, до наступления которого текущий поток не может двигаться дальше.

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

🎙️ Какие типы наследования существуют в Java?

В Java мы используем ключевые слова extends для наследования атрибутов и методов суперкласса или базового класса. Существует пять типов наследования:
1) Единое наследование (Single Inheritance).
2) Многоуровневое наследование (Multilevel Inheritance).
3) Иерархическое наследование (Hierarchical Inheritance).
4) Множественное наследование через интерфейс (Multiple Inheritance through Interface).
5) Гибридное наследование (Hybrid Inheritance).
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20😱9
Программа на Java, убирающая все переносы в строке

Для замены всех переносов («\n») можно использовать функцию replace(). String replace() возвращает новый объект String, который содержит ту же последовательность символов, что и исходная строка, но с замененным символом.

Таким образом с помощью функции replace() можно заменять любые символы в строке на нужные.
👍19🤔32
Метод compareTo()

В Java метод compareTo() получает значение 0, если аргумент является строкой лексически равной данной строке; значение меньше 0, если аргумент является строкой лексически большей, чем сравниваемая строка; и значение больше 0, если аргумент является строкой лексически меньшей этой строки.
👍25🤔1😢1
Графический интерфейс для bash, делаем работу в командной строке удобнее

Когда пишешь код в IntelliJ IDEA, привыкаешь что везде есть подсказки, везде где можно работает комплишен, всегда можно одним кликом перейти на декларацию метода или на его юсаджи.

Смотреть статью
👍16
👍5