TGViewer
Channel Public Channel
Java Learning

Java Learning

@java_per_month

№ 5079899194

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

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

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

Реклама на бирже - https://telega.in/c/Java_per_month
Subscribers
16.6K
Photos
1.6K
Videos
1
Links
1K

Showing posts older than #3053 · Back to latest

Older Posts 20 shown
Post #3051 2.92K
❓ Вопрос на собеседовании

Что такое volatile в Java и в каких случаях его следует использовать?

Ответ ⬇️
Ключевое слово volatile в Java используется для указания, что значение переменной может быть изменено несколькими потоками. Когда переменная объявляется как volatile, изменения, сделанные одним потоком, становятся видимыми для других потоков немедленно, избегая кеширования значения в локальной памяти потока. Это гарантирует "свежесть" значения, что важно в многопоточных программах для обеспечения корректного взаимодействия между потоками.

Однако volatile не заменяет блокировку (synchronized) и не обеспечивает атомарности операций. Его рекомендуется использовать для переменных, доступ к которым происходит через чтение/запись, но не требует сложной синхронизации, например, для флагов или индикаторов состояния.


Пример использования ⚙️
public class VolatileExample {
private volatile boolean flag = true;

public void run() {
new Thread(() -> {
while (flag) {
System.out.println("Работаем...");
}
System.out.println("Остановка");
}).start();

try {
Thread.sleep(1000);
flag = false; // изменение станет сразу видимым для первого потока
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}

public static void main(String[] args) {
new VolatileExample().run();
}
}


Java Learning 👩‍💻
  • 👍 15
  • 🔥 3
Post #3047 2.85K
⌛ Что будет выведено при выполнении кода?

Пояснение
⬇️
Поле x в классе Parent не переопределяется, поэтому obj.x указывает на x в Parent. Однако метод getX() вызывается из Child, возвращая 20.

Java Learning 👩‍💻
  • 👍 7
  • 🤔 5
  • 😱 1
Post #3046 2.74K
➡️ Vaadin Flow — фреймворк для веб-приложений на чистой Java

Vaadin Flow — это фреймворк для создания веб-приложений на Java без написания JavaScript и HTML. Он позволяет создавать интерфейсы и логику приложения полностью на Java.

• Полная разработка на Java.
• Компоненты для UI и двусторонняя привязка данных.
• Интеграция с Spring Boot.

🔗 Ссылочка на доку

Java Learning 👩‍💻
  • 👍 13
Post #3043 2.55K
➡️ Quarkus — быстрый и лёгкий фреймворк для Java-приложений

Quarkus — оптимизированный фреймворк для создания Java-приложений с низким временем запуска и минимальным потреблением памяти. Подходит для облачных и серверлесс-приложений.

• Быстрый старт с нативной компиляцией на GraalVM.
• Оптимизация для облака и контейнеров.
• Совместимость с Java API и фреймворками Spring, Hibernate.
• Горячая перезагрузка для ускорения разработки.

🔗 Ссылочка на доку

Java Learning 👩‍💻
  • 👍 5
Post #3042 2.88K
⚙️ Collectors.joining()

В Java метод Collectors.joining() из пакета java.util.stream позволяет объединить элементы потока в одну строку с опциональным разделителем, префиксом и суффиксом. Это удобно для создания строковых представлений коллекций.

Java Learning 👩‍💻
  • 👍 14
Post #3041 2.88K
⚙️ Collectors.flatMapping()

В Java метод Collectors.flatMapping() разворачивает вложенные коллекции в потоке и собирает их в одну. Это удобно для обработки коллекций коллекций, когда требуется плоская структура данных.

Java Learning 👩‍💻
  • 👍 15
  • 🤔 6
Post #3039 3.13K
⚙️ computeIfPresent

В Java метод computeIfPresent интерфейса Map обновляет значение для существующего ключа с помощью указанной функции. Если ключ отсутствует, метод ничего не делает. Это удобно для выборочного обновления значений в коллекциях.

Java Learning 👩‍💻
  • 👍 15
Post #3038 3.08K
⚙️ Stream.mаp()

В Java метод map() в Stream преобразует элементы потока, применяя к каждому из них функцию. Это идеальный способ быстро выполнить преобразования коллекций.

Java Learning 👩‍💻
  • 🔥 9
  • 👍 3
  • 😱 1
Post #3036 3.51K
⌛ Что будет выведено при выполнении кода?

Пояснение
⬇️
Метод changeValue изменяет value объекта t на 20, так как переменная obj в методе указывает на t. Однако присвоение obj = new Test(5) не влияет на исходный объект t.

Java Learning 👩‍💻
  • 👍 7
Post #3033 2.78K
👩‍💻 Задача по Java: Сортировка списка строк по длине

Напишите Java-программу, которая принимает список строк, сортирует его по длине строки в порядке возрастания и выводит отсортированный список в консоль. Если строки имеют одинаковую длину, сохраняйте их исходный порядок.

Пример:

["apple", "banana", "kiwi", "grape", "orange"]

kiwi
apple
grape
banana
orange


Решение задачи на картинке ☝

Java Learning 👩‍💻
  • 👍 12
Post #3032 2.72K
⚙️ Stream.filter()

В Java метод filter() в Stream позволяет отбирать элементы, соответствующие условию. Полезен для создания потоков данных, соответствующих определённым критериям.

Java Learning 👩‍💻
  • ❤‍🔥 9
  • 👍 4
  • 🎄 2
  • 🔥 1
Post #3031 2.76K
#Вопросы_с_собеседования
В чем разница между Thread.sleep() и Thread.yield()?

Thread.sleep(): Этот метод приостанавливает выполнение текущего потока на заданное количество времени. Время задается в миллисекундах и указывается в качестве аргумента метода. При вызове Thread.sleep(), поток переходит в состояние ожидания и не выполняет код в течение указанного периода времени. После истечения времени поток снова становится готовым к выполнению. Вызов Thread.sleep() может сгенерировать исключение InterruptedException, поэтому необходимо обрабатывать его или пробрасывать.

Thread.yield(): Этот метод предоставляет намек планировщику потоков на то, что поток, вызвавший yield(), готов уступить процессорное время другим потокам с тем же приоритетом. Однако это рекомендация, а не гарантия. Вызов Thread.yield() приводит к тому, что текущий поток переходит из исполняемого в состояние готовности, чтобы другие потоки могли получить доступ к процессору. Однако, если нет других готовых потоков с тем же приоритетом, поток может продолжить выполнение.

Java Learning 👩‍💻
  • 👍 9
  • 🔥 1
Post #3029 2.77K
⚙️ Optional.ofNullable()

В Java метод Optional.ofNullable() создаёт объект Optional, который может содержать значение или быть пустым. Полезен для избежания NullPointerException и обработки необязательных значений.

Java Learning 👩‍💻
  • 👍 12
  • 🔥 1
  • 🎄 1
Post #3026 2.57K
➡️ Feign: Секрет быстрого и чистого вызова REST API в Java

Feign – библиотека для Java, автоматизирующая вызов REST API. Она сокращает код, создавая запросы и обрабатывая исключения без лишних конструкций. Идеально подходит для работы с несколькими API и упрощает тестирование.

• Автоматическая генерация кода для вызова API, избавляя от рутины.
• Лёгкость тестирования и расширяемость при добавлении новых API.

🔗 Ссылочка на доку

Java Learning 👩‍💻
  • 👍 12
Post #3025 2.59K
Преобразование файла в строку

В нашем первом примере мы используем встроенный пакет файлов Java 1.11+. Этот метод работает с Java 1.11+.

Также рассмотрим еще один вариант преобразования, а именно использование встроенного пакета Streams Java 1.8+.

Java Learning 👩‍💻
  • 👍 8
Post #3023 2.51K
➡️ Сравнение методов get() и orElse() в Java Optional

Методы get() и orElse() в классе Optional оба служат для извлечения значения, но используются по-разному:

✔️ get() — возвращает значение, если оно присутствует, но выбрасывает NoSuchElementException, если значение отсутствует.
✔️ orElse() — возвращает значение, если оно присутствует, а если нет — указанное значение по умолчанию.

• Метод get() рекомендуется использовать, когда точно известно, что значение присутствует.
• orElse() удобен для значений, которые могут отсутствовать.

🔗 Подробнее тут

Java Learning 👩‍💻
  • 👍 10
Post #3020 2.53K
⚙️ Stream.allMatch()

В Java метод allMatch() из Stream проверяет, удовлетворяют ли все элементы условию. Полезен для валидации, например, чтобы убедиться, что все элементы имеют нужное значение.

Java Learning 👩‍💻
  • 👍 9
Post #3019 2.67K
❓ Вопрос на собеседовании

Что такое функциональный интерфейс в Java, и как он используется в лямбда-выражениях?

Ответ ⬇️
Функциональный интерфейс в Java — это интерфейс с единственным абстрактным методом, который может использоваться как целевая конструкция для лямбда-выражений и ссылок на методы. Они помогают писать более чистый и выразительный код, позволяя передавать поведение (функции) как параметры. Аннотация @FunctionalInterface проверяет, что интерфейс соответствует требованиям функционального интерфейса и помогает избежать случайного добавления методов.

Пример использования ⚙️
@FunctionalInterface
interface MyFunctionalInterface {
void printMessage(String message);
}

public class Main {
public static void main(String[] args) {
MyFunctionalInterface printer = message -> System.out.println("Сообщение: " + message);
printer.printMessage("Привет, мир!"); // Сообщение: Привет, мир!
}
}


Java Learning 👩‍💻
  • 👍 15
  • 🔥 2
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →