Библиотека джависта | Java, Spring, Maven, Hibernate
24.8K subscribers
1.88K photos
38 videos
42 files
2.66K links
Все самое полезное для Java-разработчика в одном канале.

Список наших каналов: https://yangx.top/proglibrary/9197

Для обратной связи: @proglibrary_feeedback_bot

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

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
加入频道
#вопросы_с_собеседований
Почему метод clone() объявлен в классе Object, а не в интерфейсе Cloneable?

Метод clone() объявлен в классе Object с указанием модификатора native, чтобы обеспечить доступ к стандартному механизму поверхностного копирования объектов. Одновременно он объявлен и как protected, чтобы нельзя было вызвать этот метод у не переопределивших его объектов. Непосредственно интерфейс Cloneable является маркерным (не содержит объявлений методов) и нужен только для обозначения самого факта, что данный объект готов к тому, чтобы быть клонированным. Вызов переопределённого метода clone() у не Cloneable объекта вызовет выбрасывание CloneNotSupportedException.
🎄🎁 10 оригинальных подарков айтишнику на Новый год

Айтишники – практичные и неординарные люди, и подарки для них должны быть функциональными и нетривиальными. «Библиотека программиста» решила помочь вам в этом нелегком деле и подыскала несколько вариантов оригинальных презентов.

🔗 Основной сайт
🔗 Зеркало
#вопросы_с_собеседований
Для чего нужны функциональные интерфейсы UnaryOperator<T>, DoubleUnaryOperator, IntUnaryOperator и LongUnaryOperator?

UnaryOperator<T> (унарный оператор)
принимает в качестве параметра объект типа T, выполняет над ними операции и возвращает результат операций в виде объекта типа T:

UnaryOperator<Integer> operator = x -> x * x;
System.out.println(operator.apply(5)); // 25

☕️ DoubleUnaryOperator - унарный оператор, получающий на вход Double;
☕️ IntUnaryOperator - унарный оператор, получающий на вход Integer;
☕️ LongUnaryOperator - унарный оператор, получающий на вход Long.
🐔 IT и реальный сектор экономики: как мы цифровизировали птицеводство и что из этого получилось

В то время как лопаются криптовалютные пузыри (история с FTX), мы развиваем сельское хозяйство, внедряя ERP-системы на птицефабриках, чтобы повысить показатели производства и снизить перекрестное заражение птиц.

🔗 Основной сайт
🔗 Зеркало
#вопросы_с_собеседований
Что такое «конструктор по умолчанию»?

Если у какого-либо класса не определить конструктор, то компилятор сгенерирует конструктор без аргументов - так называемый «конструктор по умолчанию».

public class ClassName() {}

Если у класса уже определен какой-либо конструктор, то конструктор по умолчанию создан не будет и, если он необходим, его нужно описывать явно.
JDK Flight Recorder (JFR) - это регистратор событий, встроенный в виртуальную машину Java. 🤓

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

Опыт, приди!
#вопросы_с_собеседований
Чем отличаются конструктор по-умолчанию, конструктор копирования и конструктор с параметрами?

У конструктора по умолчанию отсутствуют какие-либо аргументы. Конструктор копирования принимает в качестве аргумента уже существующий объект класса для последующего создания его клона. Конструктор с параметрами имеет в своей сигнатуре аргументы (обычно необходимые для инициализации полей класса).
#вопросы_с_собеседований
Что такое «денормализация»? Для чего она применяется?

Денормализация базы данных
— это процесс осознанного приведения базы данных к виду, в котором она не будет соответствовать правилам нормализации. Обычно это необходимо для повышения производительности и скорости извлечения данных, за счет увеличения избыточности данных.
#вопросы_с_собеседований
Где и как вы можете использовать приватный конструктор?

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

Комбинирование двух хеш-таблиц вручную через цикл очень неэффективно. Вот альтернативное решение этой проблемы, которое вам возможно понравится.
Шпаргалка: Java коллекции

Друзья, представляем вашему вниманию шпаргалку на тему коллекций в Java. 🤓

Хорошей памяти!

Читать статью
#вопросы_с_собеседований
Как можно вывести на экран уникальные квадраты чисел используя метод map()?

Для этого можно использовать Stream. Ответ на картинке.
Зачем нужен equals(). Чем он отличается от операции ==?

Метод equals() - определяет отношение эквивалентности объектов.

При сравнении объектов с помощью == сравнение происходит лишь между ссылками. При сравнении по переопределённому разработчиком equals() - по внутреннему состоянию объектов.
Пишем плагин для IntelliJ IDEA. Ускоряем написание тестов на DTO

Когда пишешь тесты на обширную модель (DTO), ловишь себя на мысли, что сосредоточен не на тестовых данных, а на том, как ловчее избавить себя от написания boilerplate-кода.

Как это сделать? Поискать готовое решение (плагин).

А если его нет? Тогда – написать плагин.

А если не умеешь? Стоит хотя бы начать :)

Читать статью
🏄 50% скидка на все курсы Proglib academy!

Вжух и мы запускаем распродажу курсов до 10 января:

– Математика для Data Science
– Алгоритмы и структуры данных
– Как айтишнику устроиться в международную компанию
– Основы IT для непрограммистов
– Основы программирования на Python
– Frontend Basic: принцип работы современного веба

Выбрать курс вы можете по ссылке 🔗https://proglib.io/w/03f94f58

🔹На курсах мы делимся экспертизой вместе с ТОП- специалистами из Samsung, Revolut, Яндекс, Тинькофф и т.д;
🔹В процессе обучения вы не только прокачиваете скиллы, но и пополняете портфолио;
🔹Это не самообучение. Мы проводим индивидуальную проверку домашних заданий с разбором ошибок и рекомендаций.

🚀Начни год с прорыва!
👥🗺 Product Discovery: что такое дискавери-команда и чем она занимается

Рассказываем: зачем нужно разделение на «дискавери» и «деливери»; в чём суть работы дискавери-команды и кто в неё входит; как запускать полезные продукты дешевле и быстрее конкурентов.

🔗 Основной сайт
🔗 Зеркало
Сравнение массивов с Arrays.equals

Чтобы проверить, равны ли два массива с точки зрения их содержимого, Java предоставляет статический метод Arrays.equals . Этот метод будет выполнять параллельную итерацию по массивам для каждой позиции и применять оператор == для каждой пары элементов.
📖 Где учить программирование?

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

Чтобы вы зря не тратили драгоценное время, автор этого видео отобрал лучшие книги, ютуб-каналы, блоги и GitHub-репозитории, которые помогут стать true программистом.

https://youtu.be/M8xaRauiDCk
#вопросы_с_собеседований
Расскажите об интерфейсе SingleThreadModel.

Интерфейс SingleThreadModel является маркерным - в нем не объявлен ни один метод, однако, если сервлет реализует этот интерфейс, то метод service() этого сервлета гарантированно не будет одновременно выполняться в двух потоках. Контейнер сервлетов либо синхронизирует обращения к единственному экземпляру, либо обеспечивает поддержку пула экземпляров и перенаправление запроса свободному сервлету. Другими словами, контейнер гарантирует отсутствие конфликтов при одновременном обращении к переменным или методам экземпляра сервлета. Однако существуют также и другие разделяемые ресурсы, которые даже при использовании этого интерфейса остаются всё так же доступны обработчикам запросов в других потоках. Т.е. пользы от использования этого интерфейса немного и в спецификации Servlet 2.4 он был объявлен deprecated.