#Вопросы_с_собеседования
❓Что будет, если переопределить equals() не переопределяя hashCode()? Какие могут возникнуть проблемы?
Классы и методы, которые используют правила этого контракта могут работать некорректно. Так для HashMap это может привести к тому, что пара «ключ-значение», которая была в неё помещена при использовании нового экземпляра ключа не будет в ней найдена.
❓Что будет, если переопределить equals() не переопределяя hashCode()? Какие могут возникнуть проблемы?
Классы и методы, которые используют правила этого контракта могут работать некорректно. Так для HashMap это может привести к тому, что пара «ключ-значение», которая была в неё помещена при использовании нового экземпляра ключа не будет в ней найдена.
👍19
#Вопросы_с_собеседования
❓Какие типы классов бывают в Java?
☕️ Top level class (Обычный класс):
✔️ Abstract class (Абстрактный класс);
✔️ Final class (Финализированный класс).
☕️ Interfaces (Интерфейс).
☕️ Enum (Перечисление).
☕️ Nested class (Вложенный класс):
✔️ Static nested class (Статический вложенный класс);
✔️ Member inner class (Простой внутренний класс);
✔️ Local inner class (Локальный класс);
✔️ Anonymous inner class (Анонимный класс).
❓Какие типы классов бывают в Java?
☕️ Top level class (Обычный класс):
✔️ Abstract class (Абстрактный класс);
✔️ Final class (Финализированный класс).
☕️ Interfaces (Интерфейс).
☕️ Enum (Перечисление).
☕️ Nested class (Вложенный класс):
✔️ Static nested class (Статический вложенный класс);
✔️ Member inner class (Простой внутренний класс);
✔️ Local inner class (Локальный класс);
✔️ Anonymous inner class (Анонимный класс).
👍46
👍43
#Вопросы_с_собеседования
❓Дайте определение понятию «интерфейс». Какие модификаторы по умолчанию имеют поля и методы интерфейсов?
Ключевое слово interface используется для создания полностью абстрактных классов. Основное предназначение интерфейса - определять каким образом мы можем использовать класс, который его реализует. Создатель интерфейса определяет имена методов, списки аргументов и типы возвращаемых значений, но не реализует их поведение. Все методы неявно объявляются как public.
Начиная с Java 8 в интерфейсах разрешается размещать реализацию методов по умолчанию default и статических static методов.
Интерфейс также может содержать и поля. В этом случае они автоматически являются публичными
❓Дайте определение понятию «интерфейс». Какие модификаторы по умолчанию имеют поля и методы интерфейсов?
Ключевое слово interface используется для создания полностью абстрактных классов. Основное предназначение интерфейса - определять каким образом мы можем использовать класс, который его реализует. Создатель интерфейса определяет имена методов, списки аргументов и типы возвращаемых значений, но не реализует их поведение. Все методы неявно объявляются как public.
Начиная с Java 8 в интерфейсах разрешается размещать реализацию методов по умолчанию default и статических static методов.
Интерфейс также может содержать и поля. В этом случае они автоматически являются публичными
public
, статическими static и неизменяемыми final.👍25😱2
#Вопросы_с_собеседования
❓Напишите однопоточную программу, которая заставляет коллекцию выбросить ConcurrentModificationException.
Вопрос с подвохом: ConcurrentModificationException к многопоточности никакого отношения не имеет. Возникает эта штука тогда, когда мы пытаемся модифицировать коллекцию во время итерирования по ней.
❓Напишите однопоточную программу, которая заставляет коллекцию выбросить ConcurrentModificationException.
Вопрос с подвохом: ConcurrentModificationException к многопоточности никакого отношения не имеет. Возникает эта штука тогда, когда мы пытаемся модифицировать коллекцию во время итерирования по ней.
👍40
Как изменить аргументы командной строки Java
Аргументы командной строки Java позволяют передавать аргументы во время выполнения программы непосредственно из консоли, к которой будет обращаться метод main(). А также позволяет использовать их в качестве входных данных или обходить аргументы командной строки, передав значения непосредственно методу main().
Смотреть статью
Аргументы командной строки Java позволяют передавать аргументы во время выполнения программы непосредственно из консоли, к которой будет обращаться метод main(). А также позволяет использовать их в качестве входных данных или обходить аргументы командной строки, передав значения непосредственно методу main().
Смотреть статью
Tproger
Как изменить аргументы командной строки Java
В этой статье обсудим, что такое аргументы командной строки Java, как они передаются, как работают и как их изменять.
👍8👎1
#Вопросы_с_собеседования
❓Что такое Optional?
Опциональное значение Optional — это контейнер для объекта, который может содержать или не содержать значение null. Такая обёртка является удобным средством предотвращения NullPointerException, т.к. имеет некоторые функции высшего порядка, избавляющие от добавления повторяющихся if null/notNull проверок.
❓Что такое Optional?
Опциональное значение Optional — это контейнер для объекта, который может содержать или не содержать значение null. Такая обёртка является удобным средством предотвращения NullPointerException, т.к. имеет некоторые функции высшего порядка, избавляющие от добавления повторяющихся if null/notNull проверок.
👍24
Какие возможности современных версий Java выделяют разработчики
Здесь собраны некоторые возможности, которые вызвали наибольший интерес.
☕️ Pattern Matching — оператор instanceof с паттерн-матчингом теперь стал стабильной синтаксической конструкцией и больше не требует флага --enable-preview.
☕️ Stream.toList() — метод собирает содержимое Stream в неизменяемый список и возвращает его.
☕️ Stream.mapMulti() — императивный аналог Stream.flatMap(), принимающий процедуру с двумя параметрами, где первый параметр – текущий элемент, а второй – Consumer, в который кладутся значения.
☕️ Records — записи обеспечивают компактный синтаксис для объявления классов, позволяющий в некоторых случаях обойтись без явного определения низкоуровневых методов вроде equals(), hashCode() и toString().
Здесь собраны некоторые возможности, которые вызвали наибольший интерес.
☕️ Pattern Matching — оператор instanceof с паттерн-матчингом теперь стал стабильной синтаксической конструкцией и больше не требует флага --enable-preview.
☕️ Stream.toList() — метод собирает содержимое Stream в неизменяемый список и возвращает его.
☕️ Stream.mapMulti() — императивный аналог Stream.flatMap(), принимающий процедуру с двумя параметрами, где первый параметр – текущий элемент, а второй – Consumer, в который кладутся значения.
☕️ Records — записи обеспечивают компактный синтаксис для объявления классов, позволяющий в некоторых случаях обойтись без явного определения низкоуровневых методов вроде equals(), hashCode() и toString().
👍14👎2
#Вопросы_с_собеседования
Что такое «интернационализация», «локализация»?
Интернационализация (internationalization) - способ создания приложений, при котором их можно легко адаптировать для разных аудиторий, говорящих на разных языках.
Локализация (localization) - адаптация интерфейса приложения под несколько языков. Добавление нового языка может внести определенные сложности в локализацию интерфейса.
Что такое «интернационализация», «локализация»?
Интернационализация (internationalization) - способ создания приложений, при котором их можно легко адаптировать для разных аудиторий, говорящих на разных языках.
Локализация (localization) - адаптация интерфейса приложения под несколько языков. Добавление нового языка может внести определенные сложности в локализацию интерфейса.
👍17
Разница между == и .equals() в Java
Как правило, в Java для сравнения объектов и проверки равенства используются оба equals() и «==», но вот некоторые из различий между ними:
1. Один из них является методом, а другой - оператором.
2. Можно использовать оператор == для сравнения ссылок (адресов в памяти) и метод .equals() для сравнения содержимого. Проще говоря, == проверяет, указывают ли оба объекта на одно и то же место в памяти, тогда как .equals() сравнивает значения в объектах.
3. Если класс не переопределяет метод equals, то по умолчанию он использует метод equals ближайшего родительского класса, который переопределил этот метод.
Как правило, в Java для сравнения объектов и проверки равенства используются оба equals() и «==», но вот некоторые из различий между ними:
1. Один из них является методом, а другой - оператором.
2. Можно использовать оператор == для сравнения ссылок (адресов в памяти) и метод .equals() для сравнения содержимого. Проще говоря, == проверяет, указывают ли оба объекта на одно и то же место в памяти, тогда как .equals() сравнивает значения в объектах.
3. Если класс не переопределяет метод equals, то по умолчанию он использует метод equals ближайшего родительского класса, который переопределил этот метод.
👍56
#Вопросы_с_собеседования
Какой оператор позволяет принудительно выбросить исключение?
Это оператор throw.
Какой оператор позволяет принудительно выбросить исключение?
Это оператор throw.
👍36😱11
#Вопросы_с_собеседования
Можно ли использовать строки в конструкции switch?
Да, начиная с Java 7 в операторе switch можно использовать строки, ранние версии Java не поддерживают этого. При этом:
• участвующие строки чувствительны к регистру;
• используется метод equals() для сравнения полученного значения со значениями case, поэтому во избежание NullPointerException стоит предусмотреть проверку на null.
• согласно документации, Java 7 для строк в switch, компилятор Java формирует более эффективный байткод для строк в конструкции switch, чем для сцепленных условий if-else.
Можно ли использовать строки в конструкции switch?
Да, начиная с Java 7 в операторе switch можно использовать строки, ранние версии Java не поддерживают этого. При этом:
• участвующие строки чувствительны к регистру;
• используется метод equals() для сравнения полученного значения со значениями case, поэтому во избежание NullPointerException стоит предусмотреть проверку на null.
• согласно документации, Java 7 для строк в switch, компилятор Java формирует более эффективный байткод для строк в конструкции switch, чем для сцепленных условий if-else.
👍27