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
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
👩‍💻 Локальный класс (Local inner class)

Локальный класс — это класс, объявленный внутри метода или блока кода. Он доступен только в пределах этого метода или блока.

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

В примере на картинке внутри метода main() объявлен локальный класс LocalClass. В нем определен метод printMessage(). Далее создается экземпляр LocalClass и вызывается его метод.

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