Java Developer – Telegram
Java Developer
15.7K subscribers
1.86K photos
140 videos
2 files
2.09K links
Авторский канал действующего разработчика — интересные заметки, новые технологии, библиотеки и фреймворки

Сотрудничество: @bape_ads
Прайс: @bape_media

РКН: https://clck.ru/3GHfTK

Реклама на бирже: https://telega.in/c/java_tg
Download Telegram
Что выведет код сверху?
Anonymous Quiz
10%
11, 13, 15
10%
14
27%
10, 12, 14
18%
12, 14
35%
10, 14
⌨️ Как не допустить сериализацию?

Чтобы не допустить автоматическую сериализацию можно переопределить private методы для создания исключительной ситуации NotSerializableException.

Любая попытка записать или прочитать этот объект теперь приведет к возникновению исключительной ситуации.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет код сверху?
Anonymous Quiz
42%
9
3%
10
32%
910
12%
910!
11%
Ошибка компиляции
⌨️ Композиция

Композиция — это строгое отношение, где объект A является частью объекта B и не может принадлежать другому объекту того же типа.

Самый простой пример — двигатель автомобиля. Двигатель является частью автомобиля, но не может быть частью другого автомобиля.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопрос с собеседования

Можно ли создать Enum без экземпляров объектов?

Ответ: Да, можно создать перечисление (enum) без экземпляров объектов. Для этого нужно создать пустой список аргументов в определении перечисления, но у этого перечисления всё равно будет один экземпляр, INSTANCE. Этот подход используется часто при реализации паттерна Singleton.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
⌨️ Лямбда-выражения

Лямбда-выражения позволяют создавать анонимные функции, которые можно передавать как параметры или хранить в переменных. Лямбда-выражения облегчают написание чистого, компактного и читаемого кода без необходимости создания отдельных классов.

В данном примере мы создаем список строк и сортируем его с использованием лямбда-выражения (a, b) -> a.compareTo(b). Это выражение задает функцию сравнения двух строк, используемую для сортировки. Затем мы выводим отсортированные элементы списка с помощью метода forEach и лямбда-выражения name -> System.out.println(name).

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет код сверху?
Anonymous Quiz
31%
CD
14%
CDE
28%
D
27%
abcde
👍1
📌 Задача с LeetCode (Unique Paths)

Описание и условие задачи на YouTubeКЛИК

На сетке размером M x N в верхнем левом углу размещен робот. Роботу нужно оказаться в нижнем правом углу, однако перемещаться он может только вниз или вправо. Требуется найти количество уникальных путей, по которым робот доберется до финиша.

Для хранения количества уникальных путей к каждой ячейке используется двумерный массив dp;

В начале инициализируются значения в первом столбце и первой строке массива dp, так как он достижим только из одного направления;

Двумя вложенными циклами заполняется оставшаяся часть массива dp. Каждое значение dp[i][j] вычисляется как сумма количества уникальных путей до клетки сверху dp[i-1][j] и слева dp[i][j-1];

В конце возвращается значение dp[m-1][n-1], представляющее количество уникальных путей до последней клетки в сетке.

Эта задача на LeetCode — КЛИК

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопрос с собеседования

Что подразумевается под статическим блоком в Java?

Ответ: Статический блок используется для инициализации статических переменных класса. Он выполняется только один раз: при первой загрузке класса в память.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
⌨️ Сортировка вставками

Этот алгоритм разделяет оригинальный массив на сортированный и несортированный подмассивы.

Длина сортированной части равна 1 в начале и соответствует первому (левому) элементу в массиве. После этого остается итерировать массив и расширять отсортированную часть массива одним элементом с каждой новой итерацией.

После расширения новый элемент помещается на свое место в отсортированном подмассиве. Это происходит путём сдвига всех элементов вправо, пока не встретится элемент, который не нужно двигать.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
⌨️ Как получить наиболее распространенный элемент в списке?

Здесь используется Java Stream API для подсчета наиболее часто встречающегося элемента в списке.

Сначала создается поток чисел. Затем метод groupingBy группирует элементы по их значению (Function.identity()). После группировки вызывается метод counting() для подсчета количества элементов в каждой группе;

entrySet() преобразует полученную мапу в набор записей (ключ-значение);

Затем записи сортируются по значению в порядке убывания с помощью max(Map.Entry.comparingByValue());

Наконец, если есть максимальное значение, оно выводится с помощью метода ifPresent(System.out::println).

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Что выведет код сверху?
Anonymous Quiz
32%
s1 == s2 is: true
17%
false
44%
s1 == s2 is: false
6%
true
⌨️ Ключевое слово «this»

В Java ключевое слово this используется для ссылки на текущий объект внутри класса.

Это может быть использовано в следующих случаях:

Для ссылки на переменные экземпляра класса, чтобы различать их от локальных переменных или параметров метода, имеющих тот же самый идентификатор;

Для вызова другого конструктора в текущем классе, что позволяет избежать дублирования кода и повторения инициализации полей;

Для передачи ссылки на текущий объект другому методу или конструктору в качестве аргумента.

В примере мы используем this.name вместо name, чтобы указать, что мы обращаемся к переменной экземпляра класса Person, а не к параметру конструктора name.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM