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

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

Механизм прерывания работы потока в Java реализован с использованием внутреннего флага, известного как статус прерывания. Прерывание потока вызовом Thread.interrupt() устанавливает этот флаг. Методы Thread.interrupted() и isInterrupted() позволяют проверить, является ли поток прерванным.

Когда прерванный поток проверяет статус прерывания, вызывая статический метод Thread.interrupted(), статус прерывания сбрасывается.

Нестатический метод isInterrupted() используется одним потоком для проверки статуса прерывания у другого потока, не изменяя флаг прерывания.
👍111
#Вопросы_с_собеседования

Напишите пример перехвата и обработки исключения в блоке try — catch метода

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

Сколько различных типов конструкторов существует в Java?

В Java есть 2 типа конструкторов:
1) Конструктор по умолчанию — не принимает никаких параметров.
2) Параметризованный конструктор — принимает как минимум один параметр.
👍33
😱5👍3
Что будет выведено на экран?
Anonymous Quiz
23%
A got caught B got caught
25%
B got caught
32%
Compiler Error
20%
A got caught
🤔19👍16
#Вопросы_с_собеседования

Перечислите все конструкции, к которым применим модификатор static.

☕️ поля;
☕️ методы;
☕️ вложенные классы;
☕️ члены секции import;
☕️ статический блок инициализации.
👍151🤔1
#Вопросы_с_собеседования

Укажите различия между конструктором и методами в Java

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

Можно ли перегружать метод main() в Java?

Да, метод main() может быть перегружен, но JVM или виртуальная машина Java вызывает только исходный метод main().
👍27
Захват координат курсора

Чтобы захватить события мыши, необходимо реализовать интерфейс MouseMotionListener. Когда курсор попадает в определенную область, срабатывает обработчик события mouseMoved, из которого можно получить точные координаты.
👍23
Что выведет код сверху?
Anonymous Quiz
22%
12-1
8%
11-1
5%
11-2
21%
12-2
17%
22-2
27%
Error
👍29🤔11😱6
Как остановить поток?

На данный момент в Java принят уведомительный порядок остановки потока (хотя JDK 1.0 и имеет несколько управляющих выполнением потока методов, например stop(), suspend() и resume() - в следующих версиях JDK все они были помечены как deprecated из-за потенциальных угроз взаимной блокировки).

Для корректной остановки потока можно использовать метод класса Thread - interrupt(). Этот метод выставляет некоторый внутренний флаг-статус прерывания. В дальнейшем состояние этого флага можно проверить с помощью метода isInterrupted() или Thread.interrupted() (для текущего потока). Метод interrupt() также способен вывести поток из состояния ожидания или спячки. Т.е. если у потока были вызваны методы sleep() или wait() – текущее состояние прервется и будет выброшено исключение InterruptedException. Флаг в этом случае не выставляется.

Схема действия при этом получается следующей:

• Реализовать поток.
• В потоке периодически проводить проверку статуса прерывания через вызов isInterrupted().
• Если состояние флага изменилось или было выброшено исключение во время ожидания/спячки, следовательно поток пытаются остановить извне.
• Принять решение – продолжить работу (если по каким-то причинам остановиться невозможно) или освободить заблокированные потоком ресурсы и закончить выполнение.

Возможная проблема, которая присутствует в этом подходе – блокировки на потоковом вводе-выводе. Если поток заблокирован на чтении данных - вызов interrupt() из этого состояния его не выведет. Решения тут различаются в зависимости от типа источника данных. Если чтение идет из файла – долговременная блокировка крайне маловероятна и тогда можно просто дождаться выхода из метода read(). Если же чтение каким-то образом связано с сетью – стоит использовать неблокирующий ввод-вывод из Java NIO.

Второй вариант реализации метода остановки (а также и приостановки) – сделать собственный аналог interrupt(). Т.е. объявить в классе потока флаги – на остановку и/или приостановку и выставлять их путем вызова заранее определённых методов извне. Методика действия при этом остаётся прежней – проверять установку флагов и принимать решения при их изменении. Недостатки такого подхода. Во-первых, потоки в состоянии ожидания таким способом не «оживить». Во-вторых, выставление флага одним потоком совсем не означает, что второй поток тут же его увидит. Для увеличения производительности виртуальная машина использует кеш данных потока, в результате чего обновление переменной у второго потока может произойти через неопределенный промежуток времени (хотя допустимым решением будет объявить переменную-флаг как volatile).
👍17
Задача

Пользователь вводит три слова, программа сортирует их в алфавитном порядке

Пример:
Пользователь вводит слова:
папа
сын
мама

Программа выводит:
мама
папа
сын.
👍191😢1
Три задачи на знание Java от ChatGPT

Попросили языковую модель ChatGPT составить три задачи на знание Java: простую, среднюю и сложную.

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

🎙️ Чем занимается сборка мусора в Java?

Сборка мусора Java — это метод, с помощью которого приложения Java автоматически сохраняют свою память, удаляя или очищая неиспользуемые объекты и пакеты в памяти.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24🔥1😱1
#Вопросы_с_собеседования

🎙️Назовите различные типы загрузчиков классов в Java

Ответ на картинке.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18
Пишем свой первый сервер на Java и Spring Boot

В этой статье мы поговорим о разработке и архитектуре современных web-приложений и разработаем серверную часть простого приложения, добавляющего пользователей и их посты, приложение же напишем на самом распространённом и востребованном Java-фреймворке – Spring Boot.

Смотреть статью
👍16🔥4😱1
#Вопросы_с_собеседования

🎙️ Каковы различия между подклассом и внутренним классом?

Ответ на картинке.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍161
#Вопросы_с_собеседования

Как одной строчкой преобразовать ArrayList в HashSet?

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

🎙️ Какие есть типы данных в Java?

В Java существует 8 типов данных:
1. short
2. byte
3. char
4. int
5. float
6. double
7. long
8. boolean
Please open Telegram to view this post
VIEW IN TELEGRAM
👍33🤔2😢1