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
👩‍💻 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%
Ошибка компиляции
📌 Решение задачи c LeetCode (Move Zeroes)

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

Метод moveZeroes() перемещает все нулевые элементы в конец массива, а ненулевые оставляет на своих местах, без изменения порядка.

Переменная index используется для отслеживания позиции, на которую нужно вставить следующий не нулевой элемент;

Внутри цикла for проверяется текущий элемент. Если он не равен 0, значит его нужно переместить на позицию index в массиве, а затем index увеличивается на 1;

Цикл while заполняет оставшуюся часть массива нулями, начиная с позиции index до конца массива.

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

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

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

Наиболее быстрое решение задачи в комментариях!

subarraySum() — метод для нахождения количества дней до наступления более теплой температуры для каждого дня.

Массив result используется для хранения результатов;

Внешний цикл for проходит по каждому элементу temperatures, начиная с первого и до предпоследнего, а внутренний цикл for проходит по элементам, начиная со следующего после текущего элемента и до конца массива;

Во внутреннем цикле проверяется условие if (temperatures[j] > temperatures[i]), которое сравнивает температуры текущего и следующего дня. Если следующая температура выше текущей, то result[i] присваивается разница между индексами следующего и текущего дня, обозначающая количество дней до наступления более теплой температуры. После этого цикл прерывается с помощью оператора break, чтобы двигаться к следующему дню;

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

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

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

Какими способами можно реализовать «внедрение зависимостей» в Java?

Ответ: Через конструктор, через getter/setter, с помощью механизмов рефлексии.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
📌 Решение задачи c LeetCode (Matrix Diagonal Sum)

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

Метод diagonalSum() находит суммы элементов на главной и побочной диагоналях квадратной матрицы.

Переменная sum инициализируется нулем, а переменная n получает значение длины матрицы.

В цикле от 0 до n - 1 происходит обход матрицы по диагоналям. На каждом шаге цикла к сумме прибавляется текущий элемент на главной диагонали matrix[i][i] и элемент на побочной диагонали matrix[i][n - i - 1];

Если размер матрицы нечетный, из суммы вычитается элемент в центре матрицы matrix[n / 2][n / 2];

Возвращается полученная сумма.

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

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