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
Вопрос с собеседования

В чем разница между notify() и notifyAll()?

Ответ: Метод notify() пробуждает только один поток в пуле ожидания, в то время как метод notifyAll() пробуждает все потоки.

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

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

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

Сначала создается stack типа Integer. В стеке будут храниться индексы открывающих скобок '(';

Переменная max будет хранить длину самой длинной последовательности;

Цикл for перебирает все символы в строке. Если текущий символ — открывающая скобка '(', то мы добавляем его индекс в stack. Если текущий символ — закрывающая скобка ')', то извлекаем последний индекс из стека, соответствующий последней открытой скобке;

Проверяем, если stack не пуст, то считаем разницу между текущим индексом и индексом последней открытой скобки. Если значение этой разницы больше текущего max, то обновляем max;

Если stack пуст, значит скобки до этого были закрыты и не образовали последовательность. В этом случае добавляем индекс текущей закрывающей скобки в stack;

После окончания цикла возвращаем max.

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

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
📚 Книги для Java-разработчика

Начинающий разработчик:
«Изучаем Java» — Берт Бейтс, Кэти Сьерра

Средний разработчик:
«Философия Java» — Брюс Эккель;
«Грокаем алгоритмы» — Бхаргава Адитья;


Опытный разработчик:
«Java Эффективное программирование» — Джошуа Блох;
«Чистый код» — Роберт Мартин;
«Структуры данных и алгоритмы на Java» — Роберт Лафоре;


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

Как одной строчкой преобразовать ArrayList в HashSet? (ответ на картинке)

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Быстрая сортировка (Quick Sort)

Быстрая сортировка, также известная как Quick Sort или сортировка Хоара, является одним их самых эффективных алгоритмов. Она включает в себя три этапа:

Из массива выбирается опорный элемент, чаще всего посередине массива;

Другие элементы массива распределяются таким образом, чтобы меньшие размещались до него, а большие — после;

Далее первые шаги рекурсивно применяются к подмассивам, которые разделились опорным элементом на две части — слева и справа от него.

Наш канал об английском языке для программиста — КЛИК

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Spring Boot

Spring Boot — это Java-фреймворк, используемый для создания микросервисов. Это проект, построенный на основе Spring, чтобы упростить задачу задачу развертывания приложений Java. Его двумя основными компонентами являются Spring Framework и встроенные HTTP-серверы.

Spring Boot используется для:

Упрощение процесса разработки готовых к производству пружинных приложений;

Избегания конфигурации XML Spring;

Сокращения времени разработки за счет уменьшения количества необходимых инструкций по импорту;

Обеспечения взвешенного подхода к развитию;

Наш канал об английском языке для программиста — КЛИК

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Модификаторы доступа

public — никаких ограничений доступа;

protected — доступ из всех классов этого пакета и всех наследников;

private — доступ только непосредственно из этого класса и его внутренних / вложенных классов;

package-private — доступ из всех классов этого пакета. Наследники доступа не имеют. Применяется когда модификатор не указан;

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

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👩‍💻 Generics

Generics (Обобщения) — это механизм, позволяющий создавать классы, интерфейсы и методы, которые могут работать с разными типами данных безопасным и типобезопасным способом. Он позволяет параметризовать типы таким образом, чтобы код был более гибким, повышая безопасность типов и устраняя необходимость приведения типов во время выполнения.

Наш канал об английском языке для программиста — КЛИК

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Какой вариант инициализации массива правильный?
Anonymous Quiz
41%
int[] array = new int[];
4%
int[] array = int[];
2%
int[] array = 1, 2, 3;
53%
int[] array = {1, 2, 3};
⌨️ Spring Data JPA

Spring Data JPA — это модуль Spring Data, который использует JPA для хранения данных в реляционной базе данных. Особенностью этого модуля является автоматическое создание реализаций репозиториев из интерфейсов.

В примере мы создаем интерфейс UserRepository, который расширяет JpaRepository. Это позволяет использовать готовые методы для работы с базой данных, такие как save, findAll, delete и др. Также в UserRepository мы добавляем собственный метод findByUsername для поиска пользователя по его имени.

Сервис UserService использует UserRepository и может использоваться в контроллере для обработки запросов от клиента и возвращения данных из базы данных.

Результатом работы этого кода будет возможность поиска пользователя по его имени в базе данных с помощью метода findByUsername из репозитория UserRepository.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN 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