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

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

Обратная связь: @proglibrary_feedback_bot

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

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
加入频道
Метод hashCode() необходим для вычисления хэш кода переданного в качестве входного параметра объекта. В Java это целое число, в более широком смыле — битовая строка фиксированной длины, полученная из массива произвольной длины. Этот метод реализован таким образом, что для одного и того же входного объекта, хэш код всегда будет одинаковым. Следует понимать, что в Java множество возможных хэш кодов ограничено типом int, а множество объектов ничем не ограничено. Из-за этого, вполне возможна ситуация, что хэш коды разных объектов могут совпасть.

Если хэш коды разные, то и объекты гарантированно разные;
если хэш коды равны, то объекты могут не обязательно равны.
#вопросы_с_собеседований
Приведите примеры структурных шаблонов проектирования.
Адаптер (Adapter) — объект, обеспечивающий взаимодействие двух других объектов, один из которых использует, а другой предоставляет несовместимый с первым интерфейс.
Мост (Bridge) — структура, позволяющая изменять интерфейс обращения и интерфейс реализации класса независимо.
Компоновщик (Composite) — объект, который объединяет в себе объекты, подобные ему самому.
Декоратор (Decorator) — класс, расширяющий функциональность другого класса без использования наследования.
Фасад (Facade) — объект, который абстрагирует работу с несколькими классами, объединяя их в единое целое.
Приспособленец (Flyweight) — это объект, представляющий себя как уникальный экземпляр в разных местах программы, но по факту не являющийся таковым.
Заместитель (Proxy) — объект, который является посредником между двумя другими объектами, и который реализует/ограничивает доступ к объекту, к которому обращаются через него.
Java Design Patterns: A Hands-On Experience with Real-World Examples (2019)

В книге автор делится опытом реализаций 26 наиболее распространённых шаблонов проектирования с использованием Java и Eclipse. Для каждого шаблона вы увидите по крайней мере один вариант использования в реальном проекте и полную реализацию. Книга написана для опытных разработчиков, использующих Java.
Spring Boot — это полезный проект, целью которого является упрощение создания приложений на основе Spring. Он позволяет наиболее простым способом создать web-приложение, требуя от разработчиков минимум усилий по его настройке и написанию кода. Видеокурс по Spring Boot для желающих начать изучение:

https://youtu.be/FyZFK4LBjj0
#вопросы_с_собеседований
Правила переопределения метода Object.equals().
This media is not supported in your browser
VIEW IN TELEGRAM
Помогаем строить карьеру Java-разработчика за 6 месяцев. Это единственная программа в РФ, где выпускники платят за подготовку только после трудоустройства. Если не найдешь работу, то ты ничего не должен. Необходимо пройти отбор.

Получить тестовое задание можно тут 🙋‍♂️👉 https://clck.ru/MQwZ6

Мы будем вести тебя до первого рабочего дня и даже больше.
• Карьерная поддержка после трудоустройства еще 2 года
• Каждый наш выпускник получает около 5 предложений о работе.
• А средняя зарплата уже в первый год после выпуска, примерно, 140 000 рублей.

За свою работу мы попросим 17% процентов от зарплаты разработчика. У нас нет скрытых условий или кредитов. Мы подготовим тебя к трудоустройству и ты заплатишь только за результат.

От тебя мы ждем:
1️⃣ Возможность уделять учебе минимум 25 часов в неделю
2️⃣ Проживание или готовность к переезду в Москву для трудоустройства
Правила переопределения метода Object.equals().
1. Использование оператора == для проверки, является ли аргумент ссылкой на указанный объект. Если является, возвращается true. Если сравниваемый объект == null, должно вернуться false.
2. Использование оператора instanceof и вызова метода getClass() для проверки, имеет ли аргумент правильный тип. Если не имеет, возвращается false.
3. Приведение аргумента к правильному типу. Поскольку эта операция следует за проверкой instanceof, она гарантированно будет выполнена.
4. Обход всех значимых полей класса и проверка того, что значение поля в текущем объекте и значение того же поля в проверяемом на эквивалентность аргументе соответствуют друг другу. Если проверки для всех полей прошли успешно, возвращается результат true, в противном случае - false.
По окончанию переопределения метода equals() следует проверить: является ли порождаемое отношение эквивалентности рефлексивным, симметричным, транзитивным и непротиворечивым? Если ответ отрицательный, метод подлежит соответствующей правке.
#вопросы_с_собеседований
1. Если equals() переопределен, есть ли какие-либо другие методы, которые следует переопределить?
Вопрос: если equals() переопределен, есть ли какие-либо другие методы, которые следует переопределить?
Ответ: равные объекты должны возвращать одинаковые хэш-коды. При переопределении equals() нужно обязательно переопределять и метод hashCode().
Java All-in-One For Dummies (2017)

Если вы всегда хотели научиться программировать на Java, но не знали, с чего начать, эта книга вам подойдет. Она послужит не только учебником, но и сопровождающим в работе справочным материалом, где всегда можно найти ответ на любой вопрос о тонкостях языка.
#вопросы_с_собеседований
Что такое «анонимные классы»? Где они применяются?
Это вложенный локальный класс без имени, который разрешено декларировать в любом месте обрамляющего класса, разрешающем размещение выражений. Создание экземпляра анонимного класса происходит одновременно с его объявлением. В зависимости от местоположения анонимный класс ведет себя как статический либо как нестатический вложенный класс - в нестатическом контексте появляется окружающий его экземпляр.

Анонимные классы имеют несколько ограничений:

✔️Их использование разрешено только в одном месте программы - месте его создания;
✔️Применение возможно только в том случае, если после порождения экземпляра нет необходимости на него ссылаться;
✔️Реализует лишь методы своего интерфейса или суперкласса, т.е. не может объявлять каких-либо новых методов, так как для доступа к ним нет поименованного типа.

Анонимные классы обычно применяются для:

✔️Создания объекта функции (function object), например реализация интерфейса Comparator;
✔️Создания объекта процесса (process object), такого как экземпляры классов Thread, Runnable и подобных;
в статическом методе генерации;
✔️Инициализации открытого статического поля final, которое соответствует сложному перечислению типов, когда для каждого экземпляра в перечислении требуется отдельный подкласс.