Java Developer – Telegram
Java Developer
15.7K subscribers
1.87K photos
140 videos
2 files
2.09K links
Авторский канал действующего разработчика — интересные заметки, новые технологии, библиотеки и фреймворки

Сотрудничество: @bape_ads
Прайс: @bape_media

РКН: https://clck.ru/3GHfTK

Реклама на бирже: https://telega.in/c/java_tg
Download Telegram
👩‍💻 Ковариантность типов

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

В примере класс Dog наследует класс Animal. Метод reproduce() в классе Animal возвращает объект типа Animal, а в классе Dog этот же метод переопределен и возвращает объект типа Dog. Таким образом, тип возвращаемого значения стал ковариантным.

Ковариантность типов полезна, когда нужно работать с коллекциями. Например, можно объявить переменную типа List и добавлять в нее объекты типа Dog и других производных классов. Без ковариантности это было бы невозможно.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Run-Time Data Areas

Run-Time Data Areas — это области памяти, которые выделяются для хранения данных во время выполнения Java-программы. В Java существует несколько Run-Time Data Areas:

Method Area — область памяти, которая хранит описания классов, методов и других метаданных;

Heap — область памяти, которая хранит объекты, созданные во время выполнения программы;

Java Stack — область памяти, которая хранит данные локальных переменных и стек вызовов для каждого потока исполнения;

Native Method Stack — область памяти, которая хранит данные для вызова методов на языке, отличном от Java (например, C или C++);

PC Register — регистр, который содержит текущую инструкцию JVM для каждого потока исполнения;

Direct Memory — область памяти, которая используется для работы с прямой буферизацией данных.

Каждая из этих областей памяти имеет свои особенности и используется различными компонентами JVM во время выполнения программы.

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

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

searchMatrix() — метод, который определяет, содержит ли двумерный массив «matrix» заданное значение «k».

При помощи оператора if происходит проверка, является ли массив null или имеет ли он нулевую длину. Если это так, то метод вернёт false.

Переменные m и n хранят количество строк и столбцов, а переменные i и j используются для перебора элементов массива.

Внутри цикла while проверяется текущий элемент matrix[i][j]:

Если он равен k, метод вернёт true;

Если он больше k, тогда j уменьшается на 1 и переходит к следующему элементу в строке;

Если он меньше k, тогда i увеличивается на 1 и переходит к следующей стооке;

Если метод не вернёт true до окончания цикла, значит число k не найдено и метод вернёт false.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Является ли допустимым отсутствие декларации package в исходном коде?
Anonymous Quiz
54%
Да
46%
Нет
👩‍💻 Задачи Spring Data

Spring Data упрощает работу с системами доступа к данным: реляционными и нереляционными базами данных, map-reduce фреймворками и облачными хранилищами. Центральная концепция Spring Data — репозитории из предметно-ориентированного дизайна (Domain-driven design, DDD).

Spring Data состоит из множества отдельных библиотек для разных случаев жизни. Вот самые популярные из них:

Spring Data JPA – адаптер для реализаций Java Persistence API, таких как Hibernate;

Spring Data JDBC – более простой и ограниченный чем JPA адаптер для JDBC-драйверов.

Spring Data REST – создание готовых hypermedia-driven RESTful сервисов на основе репозиториев;

Spring Data KeyValue – работа с хранилищами типа ключ-значение;

Библиотеки поддержки конкретных реализаций хранилищ: MongoDB, Redis, Cassandra, LDAP, и других.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Сколько способов выделения комментариев существует в Java?
Anonymous Quiz
7%
Один
59%
Два
34%
Три
📱 Как стать Java Junior с нуля / Как стать программистом с нуля / Полный план

Смотреть видео

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

Что такое Local Variable?

Ответ: это переменная, которая определена внутри метода и существует вплоть до того момента, пока выполняется этот метод. Как только выполнение закончится, локальная переменная перестанет существовать.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Переименовываем файл

Переименовать файл можно, переместив содержимое первого файла в новый файл и удалив предыдущий файл. Java обрабатывает эту операцию, используя метод resolveSibiling(). Он используется для разрешения данного пути относительно родительского пути этого пути.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет код сверху?
Anonymous Quiz
37%
1 2 3 4
25%
1234
3%
0
35%
Ошибка
📌 Решение задачи c собеседования в Apple и Google

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

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

Цикл for перебирает все элементы массива. Для каждого элемента определяем число, которое необходимо найти, чтобы получить сумму k. Для этого из k вычитается текущий элемент nums[i].

Затем определяется два указателя — left и right. left указывает на следующий элемент после текущего, а right — на последний элемент массива.

Внутри цикла while выполняется бинарный поиск:

Каждая итерация считает средний индекс mid между left и right;

Если nums[mid] равно искомому числу (numberToFind), то возвращается массив с текущим элементом nums[i] и число nums[mid];

Если numberToFind < nums[mid], то right = mid - 1, чтобы продолжить поиск левее;

Если numberToFind > nums[mid], то left = mid + 1, чтобы продолжить поиск правее;

Если внутри цикла while не найдено равное число, то переходим к следующему элементу массива и повторяем процесс поиска. Если после перебора всех элементов не найдена пара чисел, возвращается пустой массив new int[0].

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет код сверху?
Anonymous Quiz
11%
12345
78%
54321
11%
Ошибка
👩‍💻 Классы StringBuilder и StringBuffer

StringBuffer и StringBuilder используются, когда возникает необходимость сделать много изменений в строке символов.

В отличие от строк, объекты типа StringBuffer и StringBuilder могут быть изменены снова и снова, оставляя после себя множество новых неиспользуемых объектов.

Основное различие между StringBuffer и StringBuilder в том, что методы StringBuilder не являются безопасными для потоков (несинхронизированные).

Рекомендуется использовать StringBuilder всякий раз, когда это возможно, потому что он быстрее, чем StringBuffer. Однако, если необходима безопасность потоков, наилучшим вариантом являются объекты StringBuffer.

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

Какое худшее время работы метода contains() для элемента, который есть в LinkedList?

Ответ: O(N). Время поиска элемента линейно пропорционально количеству элементов в списке.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
📌 Telegram бот на Java за 60 секунд — разбор

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

Сервисы, которые использовались в видео:

BotFather

OpenWeatherMap API

Библиотеки:

<dependency>
<groupId>org.telegram</groupId>
<artifactId>telegrambots</artifactId>
<version>6.1.0</version>
</dependency>

<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20230227</version>
</dependency>

Бот написан за 20 минут, ваша задача — разобраться в коде и модернизировать его!

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Метод Collections.shuffle

Метод shuffle() случайным образом перемешивает все элементы переданного списка.

В примере на картинке создаётся список из упорядоченных элементов, затем срабатывает метод shuffle(), элементы перемешиваются в случайном порядке и выводятся на экран при помощи цикла for.

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

Каково максимальное число значений hashCode()?

Ответ: Число значений следует из сигнатуры int hashCode() и равно диапазону типа int — 2^32.

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