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
8%
10
63%
5
17%
2
12%
1
📌 Решение задачи c собеседования в Big Tech компании

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

numSplits() — метод, который используется для подсчета количества сплитов строки s, которые разделяют строку на две части, такие что количество уникальных символов слева равно количеству уникальных символов справа.

Метод создает два объекта типа HashMap<Character, Integer> — left и right для подсчета уникальных символов. Затем в цикле проходит по каждому символу строки s и считает количество каждого символа в right;

Далее обновляются left и right для текущего символа, увеличивая значение в left и уменьшая значение в right. Если значение в right становится меньше или равно 0, символ удаляется из right.

После обновления left и right проверяется их размер. Если они равны, то значение счетчика count увеличивается на 1.

В конце метода возвращается значение count.

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

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

Какими значениями инициализируются переменные по умолчанию?

Ответ: Числа инициализируются 0 или 0.0; char — \u0000; boolean — false; Объекты (в том числе String) — null.

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

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

maxIceCream() — метод, который принимает массив costs, содержащий стоимость каждого мороженого, и целое число coins, которое представляет количество монет, доступных для покупки мороженого;

Массив costs сортируется в порядке возрастания с помощью Arrays.sort(costs), чтобы последовательно выбирать мороженое наименьшей стоимости;

Затем цикл for проходит по каждому элементу массива costs. Внутри цикла проверяется, если значение переменной coins (количество доступных монет) уменьшается на стоимость текущего мороженого coins -= costs[i] и становится отрицательным, значит у нас больше нет нужного количества монет для покупки следующего мороженого.

В этом случае метод вернёт текущее значение переменной i, которая представляет количество мороженого, которое можно было купить до достижения coins.

Если после выполнения цикла for не было выполнено условие if, значит всё мороженое может быть куплено. В этом случае метод вернёт длину массива costs, т.к. оно представляет общее количество мороженого.

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

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет код сверху?
Anonymous Quiz
30%
true, false
21%
false, true
25%
true, true
24%
false, false
⌨️ Жизненный цикл сервлета

Жизненный цикл сервлета состоит из 5 этапов:

Сервлет загружен;
Сервлет создан;
Сервлет инициализирован;
Обслужить запрос;
Сервлет уничтожен;

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
⌨️ Можно ли в конструкторе использовать return?

Можно, но без возвращаемого значения справа от return. То есть можно использовать return как вспомогательную конструкцию при вычислениях в конструкторе, чтобы срочно закончить (прервать) выполнение дальнейшего кода и завершить инициализацию объекта.

Например, у нас есть класс Cat, и если Cat бездомный — isHomeless = true, нам нужно закончить инициализацию и не заполнять другие поля (ведь они нам неизвестны, так как котик бездомный).

Но если говорить о конкретных значениях, конструктор не может использовать return для возврата какого-то значения, потому что:

При объявлении конструктора у вас не будет ничего похожего на возвращаемый тип;

Как правило, конструктор неявно вызывается во время создания экземпляра;

Конструктор — это не метод: это отдельный механизм, единственная цель которого — инициализировать переменные экземпляра.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет код сверху?
Anonymous Quiz
26%
Ha169
56%
HaHa
7%
Ha
11%
Ошибка компиляции
Вопрос с собеседования

Для чего в JUnit используется аннотация @Ignore?

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

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

LinkedHashSet представляет собой структуру данных, которая хранит элементы в порядке их добавления, а также не допускает дублирования элементов, как и HashSet.

Однако, в отличие от HashSet, LinkedHashSet сохраняет порядок добавления элементов, что может быть полезно в некоторых случаях.

Как видно из примера, элементы были добавлены в множество в порядке их добавления, а дубликат элемента "Java" не был добавлен в множество.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет код сверху?
Anonymous Quiz
1%
8
28%
24
4%
33
67%
32
📌 Решение задачи c собеседования в Google

numIslands() — метод для подсчета количества островов на карте, представленной в виде двумерного массива символов.

Внутри циклов for проверяется, является ли текущий элемент равным символу '1'. Если это так, то увеличивается счетчик count и вызывается метод clearRestOfLand, который помечает все смежные элементы с символом '1' как '0', чтобы очистить остров отметок.

clearRestOfLand принимает параметры grid, i и j, которые представляют текущие координаты элемента. Сначала проверяется, находятся ли координаты внутри границ массива и является ли текущий элемент равным '0'. Если это так, то метод завершает свою работу.

Если текущий элемент равен символу '1', то он помечается как '0' и рекурсивно вызываются методы clearRestOfLand для соседних элементов вверх, вниз, вправо и влево от текущего элемента.

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

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
2
⚡️ Наш чат для Java-разработчиков

Здесь вы можете помогать друг другу в изучении языка, задавать вопросы и общаться в комфортной обстановке:

https://news.1rj.ru/str/+2uXOfZcyhYI1ZmQy
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопрос с собеседования

Почему в некоторых интерфейсах вообще не определяют методов?

Ответ: Это так называемые маркерные интерфейсы. Они просто указывают, что класс относится к определенному типу. Примером может послужить интерфейс Clonable, который указывает на то, что класс поддерживает механизм клонирования.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
📌 Задача с LeetCode (Ransom Note)

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

Цель состоит в том, чтобы определить, возможно ли создать записку, используя символы из журнала. Проще говоря, требуется проверить, может ли первая строка (записка) быть получена из букв второй строки (журнал). При этом каждая буква второй строки может быть использована один раз.

Сначала создается HashMap, в котором будут храниться символы из журнала и их количество.

Затем происходит перебор каждого символа в строке журнала. Если символ отсутствует в словаре, он добавляется со значением 1. Если символ уже присутствует, его количество увеличивается на 1.

Далее происходит перебор каждого символа в строке записки. Проверяется, присутствует ли символ в словаре и его количество больше 0. Если оба условия выполняются, количество символа в словаре уменьшается. Если символ отсутствует в словаре или его количество равно 0, возвращается false.

Если все символы в записке с выкупом были успешно проверены, возвращается true.

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

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет код сверху?
Anonymous Quiz
14%
0
48%
10
2%
-1
37%
Ошибка компиляции
📌 Задача с LeetCode (Plus One)

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

plusOne() — метод, который увеличивает целое число, представленное в виде массива, на единицу.

Например:
Число 123 в виде массива [1, 2, 3]. Увеличим на единицу — [1, 2, 4]
Число 9 в виде массива [9]. Увеличим на единицу — [1, 0]

Начинаем перебор массива digits с конца i = digits.length - 1 и идем в обратном порядке;

Если текущая цифра digits[i] равна 9, то меняем ее на 0.

Если текущая цифра digits[i] не равна 9, то увеличиваем ее на 1 и возвращаем массив digits.

Если весь массив digits состоит из цифры 9 (то есть не сработал return внутри цикла), то создаем новый массив digits размером на 1 больше и устанавливаем первую цифру равной 1.

Возвращаем полученный массив digits.

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

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