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
Что выведет программа?
Anonymous Quiz
62%
Hello (бесконечно)
19%
Compiler Error
11%
Hello (5 раз)
8%
Hi
👍20🤔7🔥3
#Вопросы_с_собеседования

Почему char[] предпочтительнее String для хранения пароля?

С момента создания строка остаётся в пуле, до тех пор, пока не будет удалена сборщиком мусора. Поэтому, даже после окончания использования пароля, он некоторое время продолжает оставаться доступным в памяти и способа избежать этого не существует. Это представляет определённый риск для безопасности, поскольку кто-либо, имеющий доступ к памяти сможет найти пароль в виде текста. В случае использования массива символов для хранения пароля имеется возможность очистить его сразу по окончанию работы с паролем, позволяя избежать риска безопасности, свойственного строке.
👍52😱3
#Вопросы_с_собеседования

Что обозначает ключевое слово transient?

Поля класса, помеченные модификатором transient, не сериализуются.

Обычно в таких полях хранится промежуточное состояние объекта, которое, к примеру, проще вычислить. Другой пример такого поля - ссылка на экземпляр объекта, который не требует сериализации или не может быть сериализован.
👍15
#вопросы_с_собеседований
Что такое трассировка стека (stacktrace) и как она связана с исключением?

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

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

Как одной строчкой скопировать элементы любой collection в массив?

Ответ на картинке.
👍23
JEP-400 или UTF-8 РєРѕРґРёСЂРѕРІРєР° РїРѕ умолчанию

Не прошло и пяти лет, как в Java 18 докатилось небольшое, но очень ожидаемое и обсуждаемое изменение. Теперь во всех стандартных API используется UTF-8 кодировка по умолчанию. Это изменение, которое сделает выражение «Write once, run anywhere» действительно правдой, так как теперь поведение приложения будет еще меньше зависеть от системы, где оно запущено.

Смотреть статью
👍12😱4
Метод trim()

Возвращает копию данной строки, в которой удаляются начальные и конечные пробелы, или данную строку, если она не имеет начальных или конечных пробелов.
👍30😱51
Проверяем наличие дубликатов в массиве в Java

Мы можем работать лучше, используя Хеширование. Идея состоит в том, чтобы пройти по заданному массиву и вставить каждый встреченный элемент в HashSet. Теперь, если встреченный элемент уже присутствовал в наборе, он является дубликатом. Временная сложность этого решения O(n) но вспомогательное пространство используется O(n).

Мы знаем это HashSet не допускает дублирования значений в нем. Мы можем использовать это свойство для проверки дубликатов в массиве. Идея состоит в том, чтобы вставить все элементы массива в HashSet. Теперь массив содержит дубликат, если длина массива не равна размеру набора.

Другие способы проверить массив на дубликаты можно найти здесь.
👍172🔥1😱1
Перегрузка в Java

Рассмотрим работу перегрузки методов в Java. Что, если передавать в функцию аргумент, который не вполне соответствует определенным нами аргументам по типу? На этом этапе возможны два исхода.
1. Произойдет преобразование типа, но в более высокий тип (с точки зрения диапазона) в том же семействе.
2. Произойдет преобразование типа в следующее более старшее семейство (предположим, что если нет типа данных long, доступного для типа данных int, тогда будет поиск типа данных с плавающей запятой).
👍172
Telegram-бот счётчик сообщений на Java и Spring Boot

В этой статье автор показывает, как написать Telegram-бот на Java с использованием Spring Boot, PostgreSQL и JPA. Также создаает исполняемый jar-файл. Сам же бот будет подсчитывать сообщения от пользователей и записывать эти данные в БД.

Смотреть статью
👍123😱1
Форматирование строк

Класс String предоставляет возможность создания форматированных строк. За это отвечает статический метод format.
👍272
Что такое пул строк?

Это набор строк, хранящийся в Heap.

☕️ Пул строк возможен благодаря неизменяемости строк в Java и реализации идеи интернирования строк;
☕️ Пул строк помогает экономить память, но по этой же причине создание строки занимает больше времени;
☕️ Когда для создания строки используются ", то сначала ищется строка в пуле с таким же значением, если находится, то просто возвращается ссылка, иначе создается новая строка в пуле, а затем возвращается ссылка на неё;
☕️ При использовании оператора new создаётся новый объект String. Затем при помощи метода intern() эту строку можно поместить в пул или же получить из пула ссылку на другой объект String с таким же значением;
☕️ Пул строк является примером паттерна «Приспособленец» (Flyweight).
👍191
This media is not supported in your browser
VIEW IN TELEGRAM
Сортировка слиянием через рекурсию

В этой статье мы освежим в памяти суть сортировки слиянием.

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

Для чего используется ключевое слово volatile, synchronized, transient, native?

volatile - этот модификатор вынуждает потоки отключить оптимизацию доступа и использовать единственный экземпляр переменной. Если переменная примитивного типа – этого будет достаточно для обеспечения потокобезопасности. Если же переменная является ссылкой на объект – синхронизировано будет исключительно значение этой ссылки. Все же данные, содержащиеся в объекте, синхронизированы не будут!

synchronized - это зарезервированное слово позволяет добиваться синхронизации в помеченных им методах или блоках кода.

Ключевые слова transient и native к многопоточности никакого отношения не имеют, первое используется для указания полей класса, которые не нужно сериализовать, а второе - сигнализирует о том, что метод реализован в платформо-зависимом коде.
👍176
#Вопросы_с_собеседования

Напишите однопоточную программу, которая заставляет коллекцию выбросить ConcurrentModificationException.

Вопрос с подвохом: ConcurrentModificationException к многопоточности никакого отношения не имеет. Возникает эта штука тогда, когда мы пытаемся модифицировать коллекцию во время итерирования по ней.
21👍14😱5
#Вопросы_с_собеседования

Что вы подразумеваете под анонимным классом?

Анонимный внутренний класс в Java не имеет имени и создает только один объект.
👍224
#вопросы_с_собеседований
Какие конечные методы работы со стримами вы знаете?

findFirst()
возвращает первый элемент;
findAny() возвращает любой подходящий элемент;
collect() представление результатов в виде коллекций и других структур данных;
count() возвращает количество элементов;
anyMatch() возвращает true, если условие выполняется хотя бы для одного элемента;
noneMatch() возвращает true, если условие не выполняется ни для одного элемента;
allMatch() возвращает true, если условие выполняется для всех элементов;
min() возвращает минимальный элемент, используя в качестве условия Comparator;
max() возвращает максимальный элемент, используя в качестве условия Comparator;
forEach() применяет функцию к каждому объекту (порядок при параллельном выполнении не гарантируется);
forEachOrdered() применяет функцию к каждому объекту с сохранением порядка элементов;
toArray() возвращает массив значений;
reduce() позволяет выполнять агрегатные функции и возвращать один результат.

Для числовых стримов дополнительно доступны:
sum() возвращает сумму всех чисел;
average() возвращает среднее арифметическое всех чисел.
👍244