Java Learning
18.8K subscribers
1.61K photos
1 video
3 files
992 links
№ 5079899194

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

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

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

Реклама на бирже - https://telega.in/c/Java_per_month
Download Telegram
#Вопросы_с_собеседования

Можно ли перегружать метод 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
#Вопросы_с_собеседования

🎙️ Что такое исключение? Какой пакет содержит все определения классов исключений в Java?

Исключения (Exceptions) — это нештатные ситуации, возникающие во время выполнения программы. Они могут произойти в результате неправильного ввода пользователем или неправильной логики кодера. Пакет java.lang.Exception содержит все определения классов исключений в Java.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍27🤔2
🤔2👍1
👍32🤔1
#Вопросы_с_собеседования

🎙️ Выполнится ли блок 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