Библиотека задач по Java | тесты, код, задания
5.84K subscribers
567 photos
3 videos
178 links
Задачи и тесты по Java для тренировки и обучения.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/13eb654a

Работать у нас: https://job.proglib.io/

Наши каналы: https://yangx.top/proglibrary/9197
加入频道
Что такое интерфейс Cloneable?

Это маркерный интерфейс, то есть он не содержит никаких методов, а только сигнализирует о том, что объекты класса, реализующего этот интерфейс, могут быть клонированы.
Клонирование объекта означает создание его независимой копии.

Как работает клонирование в Java?

1. Реализация интерфейса Cloneable: Класс, объекты которого вы хотите клонировать, должен реализовывать интерфейс Cloneable.
2. Переопределение метода clone(): Вам необходимо переопределить метод clone() из класса Object в вашем классе. Этот метод возвращает копию объекта.
3. Вызов метода clone(): Чтобы создать копию объекта, вызовите метод clone() у этого объекта.
Как одной строчкой преобразовать HashSet в ArrayList?

Ответ на картинке.
Трюк с битовыми операциями

Этот код демонстрирует обмен значений двух переменных (a и b) без использования дополнительной временной переменной.

Он использует битовую операцию XOR (^). Ключевой момент здесь в том, что XOR двух одинаковых чисел возвращает 0, а XOR числа с 0 возвращает само это число. Таким образом, когда мы применяем XOR к a и b и затем обратно, мы фактически обмениваем их значения.
Array или ArrayList?

Выбор между Array и ArrayList зависит от специфики задачи Java, которую вы хотите решить. Запомните следующие особенности этих типов:

— Массив имеет фиксированный размер, и память для него выделяется во время объявления, а размер ArrayList может динамически меняться.

— Массивы Java работают намного быстрее, а в ArrayList намного проще добавлять и удалять элементы.

— При работе с Array скорее всего возникнет ошибка ArrayIndexOutOfBoundsException.

— ArrayList может быть только одномерным, когда массивы Java могут быть многомерными.
Jackson

Jackson — это популярная библиотека Java для сериализации и десериализации объектов Java в различные текстовые форматы, такие как JSON, XML, YAML и CSV.

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

Jackson поддерживает широкий спектр функций и возможностей, что позволяет настроить его под ваши конкретные нужды. А также его можно расширить с помощью модулей для поддержки дополнительных форматов данных и функций.
Каков результат выполнения кода на картинке?
Anonymous Quiz
22%
"4321".
78%
"1234".
Что выведет код сверху?
Anonymous Quiz
7%
1
32%
5
4%
15
57%
Compiler Error
Задача с LeetCode (Minimum Path Sum)

Дана двумерная матрица M x N, заполненная неотрицательными числами. Необходимо найти путь из левого верхнего угла в правый нижний, который будет иметь наименьшую сумму чисел на своем пути. Двигаться при этом можно только вниз и вправо.

Для решения воспользуемся динамическим программированием:

⏺️ Первые два цикла for обновляют значения в первой строке и первом столбце, добавляя значения ячеек сверху и слева соответственно.

⏺️ Последний цикл for обновляет остальные значения внутри массива grid, выбирая минимальное значение из верхней и левой ячейки и добавляя его к текущей ячейке.

⏺️ Конечный результат возвращается из последней ячейки массива grid.
Какая из следующих баз данных не поддерживается jdbcTemplate?
Anonymous Quiz
4%
MySql
5%
PostgresSql
80%
NoSql
10%
Oracle
Хеш-таблицы в Java: секреты производительности

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

🔗Читать статью
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
-35% на полугодовой курс по алгоритмам!

🌟 Алгоритмы и структуры данных🌟

23 390 рублей 35 990 рублей до 1 апреля

Курс для тех, кто хочет научиться работать с алгоритмами, подготовиться к собеседованию крупную IT-компанию и начать брать более сложные проекты.

🔥 Переходите и активируйте вводные занятия курсаhttps://proglib.io/w/5a72cc41

Вас ждут:

– 150 практических заданий и 47 видеолекций

– бессрочный доступ к обучению

– поддержка преподавателя в чате

А также очень харизматичный спикер из Яндекса 🙌🏻
Плавный переход с Java 11 на Java 21: пошаговое руководство для разработчиков

Наше пошаговое руководство поможет вам осуществить плавную миграцию вашего проекта с Java 11 на Java 21, избегая подводных камней и извлекая максимум пользы из новых возможностей.


Читать статью

#гайд
В чем заключается особенность работы метода clone() с полями объекта типа ссылки?

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

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

На самом деле все довольно просто — для этого вам нужно в каждом классе этих внутренних объектов также переопределить метод clone() и добавить интерфейс маркер — Cloneable. Тогда будут скопированные не ссылки на объекты, а сами объекты, ведь теперь они тоже имеют возможность копировать себя.