Javazavr. Обучение Java.
4.22K subscribers
36 photos
55 links
Главный канал по Java.

Контент на любой вкус.
1. Туториалы
2. Видео
3. Задачи
4. Тесты
И многое другое.

Реклама: @anothertechrock
Download Telegram
Почему в некоторых интерфейсах вообще не определяют методов?

Пишите в комментариях ваш вариант. Ответ будет у нас в канале.

#вопросы_с_собеседований
👍3
Ответ на "Почему в некоторых интерфейсах вообще не определяют методов?"

Это так называемые маркерные интерфейсы. Они просто указывают что класс относится к определенному типу. Примером может послужить интерфейс Clonable, который указывает на то, что класс поддерживает механизм клонирования.

#вопросы_с_собеседований
👍7
Какие подкасты вы слушаете?
Расскажите в комментариях ⬇️
🤡11🤔1
Какой способ клонирования предпочтительней?

Пишите в комментариях ваш вариант. Ответ будет у нас в канале.

#вопросы_с_собеседований
Ответ на "Какой способ клонирования предпочтительней?"

Наиболее безопасным и, следовательно, предпочтительным способом клонирования является использование специализированного конструктора копирования:
• Отсутствие ошибок наследования (не нужно беспокоиться, что у наследников появятся новые поля, которые не будут склонированы через метод clone());
• Поля для клонирования указываются явно;
• Возможность клонировать даже final поля.

#вопросы_с_собеседований
Дайте определение понятию «конструктор».

Пишите в комментариях ваш вариант. Ответ будет у нас в канале.

#вопросы_с_собеседований
Ответ на "Дайте определение понятию «конструктор»."

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

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

Пишите в комментариях ваш вариант. Ответ будет у нас в канале.

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

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

public class ClassName() {}

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

#вопросы_с_собеседований
Java Pro - блог ведущего дата саентиста, Ozon tech.

Здесь разобраны реальные практические задачи по работе с данными с собеседований крупных компаний.

Java программисты с глубоким знанием языка, пишет код в разы эффективнее специалистов с базовыми навыками.

Java Pro - это первоисточник материала, который появляется в платных курсах и блогах.

Рекомендуем подписаться!
👍4🔥21👎1😁1
Чем отличаются конструктор по-умолчанию, конструктор копирования и конструктор с параметрами?

Пишите в комментариях ваш вариант. Ответ будет у нас в канале.

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

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

#вопросы_с_собеседований
👍4
Зачем нужен equals(). Чем он отличается от операции ==?

Пишите в комментариях ваш вариант. Ответ будет у нас в канале.

#вопросы_с_собеседований
👍1
Ответ на "Зачем нужен equals(). Чем он отличается от операции ==?"

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

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

#вопросы_с_собеседований
Если equals() переопределен, есть ли какие-либо другие методы, которые следует переопределить?

Пишите в комментариях ваш вариант. Ответ будет у нас в канале.

#вопросы_с_собеседований
Ответ на "Если equals() переопределен, есть ли какие-либо другие методы, которые следует переопределить?"

Равные объекты должны возвращать одинаковые хэш коды. При переопределении equals() нужно обязательно переопределять и метод hashCode().

#вопросы_с_собеседований
Что будет, если переопределить equals() не переопределяя hashCode()? Какие могут возникнуть проблемы?

Пишите в комментариях ваш вариант. Ответ будет у нас в канале.

#вопросы_с_собеседований
👍2
Ответ на "Что будет, если переопределить equals() не переопределяя hashCode()? Какие могут возникнуть проблемы?"

Классы и методы, которые используют правила этого контракта могут работать некорректно. Так для HashMap это может привести к тому, что пара «ключ-значение», которая была в неё помещена при использовании нового экземпляра ключа не будет в ней найдена.

#вопросы_с_собеседований
👍42
Каким образом реализованы методы hashCode() и equals() в классе Object?

Пишите в комментариях ваш вариант. Ответ будет у нас в канале.

#вопросы_с_собеседований
Ответ на "Каким образом реализованы методы hashCode() и equals() в классе Object?"

Реализация метода Object.equals() сводится к проверке на равенство двух ссылок:

 public boolean equals(Object obj) {
return (this == obj);
}

Реализация метода Object.hashCode() описана как native, т.е. определенной не с помощью Java кода и обычно возвращает адрес объекта в памяти:

public native int hashCode();

#вопросы_с_собеседований
👍3😁2