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
👩‍💻 Иерархия коллекций Java Collection Framework

Collection — базовый интерфейс, предоставляющий методы для работы с группами объектов;

List — интерфейс, представляющий упорядоченную коллекцию элементов, которые могут дублироваться;

Set — интерфейс, представляющий неупорядоченную коллекцию уникальных элементов;

Queue — интерфейс, представляющий коллекцию элементов, расположенных по порядку;

Deque — интерфейс, представляющий двустороннюю очередь, в которой элементы могут добавляться и удаляться как с конца, так и с начала;

Map — интерфейс, представляющий ассоциативную коллекцию пар "ключ-значение";

SortedSet — интерфейс, представляющий отсортированное множество уникальных элементов.

SortedMap — интерфейс, представляющий отсортированную ассоциативную коллекцию пар "ключ-значение".

Реализации этих интерфейсов можно найти в стандартной библиотеке Java. Например, ArrayList и LinkedList реализуют интерфейс List. HashSet и TreeSetинтерфейс Set. HashMap и TreeMapинтерфейс Map и т.д.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Что выведет код сверху?
Anonymous Quiz
7%
3
8%
2
11%
2.8
53%
2.857142857142857
21%
Ошибка компиляции
📌 Крестики-Нолики на Java — разбор

Создание и описание показано здесьКЛИК
Ссылка на полный, закомментированный проект — КЛИК

Метод printBoard() отвечает за отрисовку игрового поля 3x3;

Метод checkWinner() проверяет текущее состояние игровой доски на наличие победителя. Если такой имеется, метод возвращает символ победителя (X или 0). В противном случае, если все клетки заполнены и нет победителя, функция возвращает «ничью»;

Главный метод main() является точкой входа. В нём происходит инициализация переменных, создание игровой доски, вывод приветствия и текущего состояния доски. Затем игрокам предлагается вводить свои ходы до тех пор, пока не будет победителя или ничьи. После окончания игры выводится результат (победитель или ничья) и программа завершается.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Объединение двух массивов

Наиболее лаконичный способ объединить элементы двух массивов — это воспользоваться классом ArrayUtils из Commons Lang.

Подробнее можно ознакомиться здесь.

Зависимость Maven:

<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.13.0</version>
</dependency>

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 FileOutputStream или FileWriter?

Запись файлов в Java осуществляется двумя способами — FileOutputStream и FileWriter. Какой именно метод выбрать, зависит от конкретной задачи.

FileOutputStream предназначен для записи потоков необработанных байтов. Это делает его идеальным решением для работы, например, с изображениями.

У FileWriter другое призвание — работа с потоками символов. Так что если вы пишете текстовые файлы, выбирайте этот метод.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
📌 Решение задачи c собеседования в Microsoft

Описание, условие и объяснение алгоритма решения задачи на YouTubeКЛИК

subarraySum() — метод для подсчета количества подмассивов в массиве, сумма элементов которых равна заданному числу «k».

Основная идея решения заключается в использовании хэш-таблицы (HashMap) для хранения сумм подмассивов и их частоты:

Инициализируем переменные sum и answer со значением 0;

Создаем новую хэш-таблицу map;

Внутри цикла увеличиваем значение переменной sum на nums[i] (добавляем текущий элемент к текущей сумме);

Проверяем, содержит ли map ключ (sum - k), то есть проверяем, имеется ли уже подмассив с суммой (sum - k). Если да, то добавляем значение-частоту этого подмассива к переменной answer;

Добавляем в map новую пару ключ-значение (sum, map.getOrDefault(sum, 0) + 1), где sum - текущая сумма подмассива, а map.getOrDefault(sum, 0) + 1 — текущая частота для этой суммы в хэш-таблице;

После окончания цикла возвращаем значение переменной answer, которая будет содержать общее количество подмассивов.

Время работы — O(n)
Эта задача на LeetCode —
КЛИК

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

Что такое Casting?

Ответ: Casting, или приведение типов — это процесс преобразования одного типа данных в другой тип данных: вручную (неявное приведение) или автоматически (явное приведение типов).

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Генератор паролей

Метод generatePassword() генерирует случайный пароль заданной длины, используя набор символов, указанный в строке characters. Для генерации случайных чисел используется класс Random, а для построения строки — StringBuilder.

Подробное описание кода на YouTube — КЛИК

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Как называется метод, с выполнения которого виртуальная машина Java начинает свою работу?
Anonymous Quiz
88%
main()
6%
start()
1%
go()
6%
run()
👩‍💻 Бинарный поиск (Binary Search)

В
методе main() задается массив значений типа int и значение, которое нужно найти. Затем вызывается метод binarySearch(), принимающий на вход массив и значение для поиска.

В результате метод вернёт индекс, под которым находится искомый элемент, а если элемента в массиве не окажется — вернёт «-1».

Подробное описание алгоритма на YouTube — КЛИК

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

Как преобразовать строку в целое число? (ответ на картинке)

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Проверка строки на палиндром

Палиндром — слово, фраза или предложение, которое читается одинаково в любую сторону. (Например: шалаш)

В метод isPalindrome() передаётся строка, которую необходимо проверить. В строке clean удаляются все пробелы, а символы приводятся к нижнему регистру. Объект plain переворачивается с помощью метода reverse() и преобразуется в строку методом toString().

Объяснение в формате видео на YouTube — КЛИК

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
11
Что выведет код сверху?
Anonymous Quiz
31%
Ошибка компиляции
43%
[5, 0]
7%
[5, 1]
15%
[0, 5]
4%
[5, 5]
📌 Решение задачи c LeetCode (Contains Duplicate)

Описание, условие и объяснение алгоритма решения задачи на YouTube
КЛИК

Метод containsDuplicate() принимает в качестве аргумента массив nums и возвращает true, если в массиве есть дубликаты, и false — если нет. HashSet<Integer> служит для хранения уникальных значений.

Цикл for проходит по каждому элементу массива nums:

На каждой итерации проверяется, содержится ли текущий элемент в множестве set с помощью метода contains(). Если элемент уже присутствует в множестве, значит дубликат уже есть и функция немедленно возвращает true;

Если элемент не найден, он добавляется в множество set с помощью метода add;

Если метод не обнаружит дубликатов, то вернет false.

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

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Преобразование массива в строку

В этом примере мы используем Stream API, представленный в JDK 8. Arrays.strеam() принимает массив. Метод collect() возвращает результат после выполнения указанной операции над каждым элементом массива.

Здесь мы выполняем операцию Collectors.joining() над элементами массива, которая собирает элементы и объединяет их для возврата в виде целой строки.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Как перевернуть массив?

Внутри цикла for значение текущего элемента сохраняется в переменной temp. Затем текущий элемент заменяется на тот, который находится симметрично относительно середины массива — array.length - 1 - i, где i — индекс текущего элемента.

После завершения цикла, результирующий массив выводится на экран с помощью метода Arrays.toString(array).

Объяснение в формате видео на YouTube — КЛИК

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет код сверху?
Anonymous Quiz
40%
Equal
48%
Not equal
12%
Ошибка компиляции