Какой метод HTTP не является неизменяемым?
Если один и тот же запрос всегда возвращает одинаковый результат, то такой HTTP метод называется неизменяемым. Неизменяемыми методами HTTP являются GET, PUT, DELETE, HEAD и OPTIONS. Поэтому для обеспечения постоянного одинакового результата приложение должно быть реализовано таким образом, чтобы эти методы всегда возвращали одинаковый результат.
Если один и тот же запрос всегда возвращает одинаковый результат, то такой HTTP метод называется неизменяемым. Неизменяемыми методами HTTP являются GET, PUT, DELETE, HEAD и OPTIONS. Поэтому для обеспечения постоянного одинакового результата приложение должно быть реализовано таким образом, чтобы эти методы всегда возвращали одинаковый результат.
Можно ли наследоваться от строкового типа?
В Java нельзя наследоваться от строкового типа (String). Строковый тип — это класс String, который является финальным (final) классом, что означает, что его нельзя расширить другим классом. Финальный класс не может иметь подклассов.
Если вам нужно создать свой собственный тип данных для представления строк или добавить дополнительное поведение к строкам, вы можете создать свой собственный класс и включить в него объект типа String в качестве поля.
В Java нельзя наследоваться от строкового типа (String). Строковый тип — это класс String, который является финальным (final) классом, что означает, что его нельзя расширить другим классом. Финальный класс не может иметь подклассов.
Если вам нужно создать свой собственный тип данных для представления строк или добавить дополнительное поведение к строкам, вы можете создать свой собственный класс и включить в него объект типа String в качестве поля.
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Каким образом из вложенного класса получить доступ к полю внешнего класса?
Статический вложенный класс имеет прямой доступ только к статическим полям обрамляющего класса.
Простой внутренний класс, может обратиться к любому полю внешнего класса напрямую. В случае, если у вложенного класса уже существует поле с таким же литералом, то обращаться к такому полю следует через ссылку на его экземпляр. Например: Outer.this.field.
Статический вложенный класс имеет прямой доступ только к статическим полям обрамляющего класса.
Простой внутренний класс, может обратиться к любому полю внешнего класса напрямую. В случае, если у вложенного класса уже существует поле с таким же литералом, то обращаться к такому полю следует через ссылку на его экземпляр. Например: Outer.this.field.
Какие методы можно использовать для реализации «внедрения зависимостей» в Java?
Ответ: Путем использования конструктора, путем использования методов getter/setter и с помощью механизмов рефлексии.
Ответ: Путем использования конструктора, путем использования методов getter/setter и с помощью механизмов рефлексии.
В чем разница между Hashset и Treeset?
Классы HashSet и TreeSet реализуют интерфейс Set и представляют наборы отдельных элементов. Кроме того, TreeSet реализует интерфейс NavigableSet. Этот интерфейс определяет методы, использующие порядок элементов.
HashSet внутренне основан на HashMap, а TreeSet поддерживается экземпляром TreeMap, который определяет их свойства: HashSet не хранит элементы в каком-либо определенном порядке. Итерация по элементам в HashSet проиcходит в перемешанном порядке. TreeSet, с другой стороны, создает элементы по порядку в соответствии с некоторым предопределенным Компаратором.
Классы HashSet и TreeSet реализуют интерфейс Set и представляют наборы отдельных элементов. Кроме того, TreeSet реализует интерфейс NavigableSet. Этот интерфейс определяет методы, использующие порядок элементов.
HashSet внутренне основан на HashMap, а TreeSet поддерживается экземпляром TreeMap, который определяет их свойства: HashSet не хранит элементы в каком-либо определенном порядке. Итерация по элементам в HashSet проиcходит в перемешанном порядке. TreeSet, с другой стороны, создает элементы по порядку в соответствии с некоторым предопределенным Компаратором.
Почему хранить пароль предпочтительнее в char[] или byte[], а не в String?
Ответ: во-первых, строка в виде литерала сразу раскрывает пароль, а также она всегда хранится в string-пуле. Во-вторых, byte[] или char[] можно сбросить после использования и удалить на них все ссылки.
Ответ: во-первых, строка в виде литерала сразу раскрывает пароль, а также она всегда хранится в string-пуле. Во-вторых, byte[] или char[] можно сбросить после использования и удалить на них все ссылки.
Что делает метод repeat()?
Метод repeat() принадлежит классу String и используется для повторения строки заданное количество раз.
Позволяет легко создавать повторяющиеся строки без использования циклов.
Удобно использовать для создания разделителей, оформления вывода и т.д.
#вопросы_с_собеседований
Метод repeat() принадлежит классу String и используется для повторения строки заданное количество раз.
Позволяет легко создавать повторяющиеся строки без использования циклов.
Удобно использовать для создания разделителей, оформления вывода и т.д.
#вопросы_с_собеседований
Какой метод HTTP не является неизменяемым?
Ответ: HTTP метод называется неизменяемым, если он на один и тот же запрос всегда возвращает одинаковый результат. HTTP методы GET, PUT, DELETE, HEAD и OPTIONS являются неизменяемыми, поэтому необходимо реализовывать приложение так, чтобы эти методы возвращали одинаковый результат постоянно.
Ответ: HTTP метод называется неизменяемым, если он на один и тот же запрос всегда возвращает одинаковый результат. HTTP методы GET, PUT, DELETE, HEAD и OPTIONS являются неизменяемыми, поэтому необходимо реализовывать приложение так, чтобы эти методы возвращали одинаковый результат постоянно.
Почему Map не наследуется от Collection?
Это связано с тем, что Map представляет отображение ключ-значение, в то время как Collection представляет коллекцию объектов.
Коллекции работают с объектами на основе их позиции в коллекции, тогда как в Map объекты доступны по ключу. Поэтому операции, определенные в Collection, такие как добавление, получение по индексу и итерация, не имеют смысла для Map.
Вместо этого в Map определены операции для работы с парами ключ-значение, такие как put(), get(), containsKey() и другие. Наследование Map от Collection привело бы к наследованию неподходящих методов.
Это связано с тем, что Map представляет отображение ключ-значение, в то время как Collection представляет коллекцию объектов.
Коллекции работают с объектами на основе их позиции в коллекции, тогда как в Map объекты доступны по ключу. Поэтому операции, определенные в Collection, такие как добавление, получение по индексу и итерация, не имеют смысла для Map.
Вместо этого в Map определены операции для работы с парами ключ-значение, такие как put(), get(), containsKey() и другие. Наследование Map от Collection привело бы к наследованию неподходящих методов.
Что такое immutable и для чего применяется?
Ключевое слово immutable используется для определения неизменяемых (immutable) классов.
Неизменяемый класс — это такой класс, объекты которого не могут быть изменены после создания.
Для создания неизменяемого класса нужно:
— Сделать все поля класса final.
—Не предоставлять методы для изменения состояния объекта.
—Не позволять переопределение методов в подклассах.
— Гарантировать, что внутреннее состояние неизменяемо.
Преимущества неизменяемых классов:
Потокобезопасность, простота кода, кэширование, безопасность при работе в многопоточной среде.
Ключевое слово immutable используется для определения неизменяемых (immutable) классов.
Неизменяемый класс — это такой класс, объекты которого не могут быть изменены после создания.
Для создания неизменяемого класса нужно:
— Сделать все поля класса final.
—Не предоставлять методы для изменения состояния объекта.
—Не позволять переопределение методов в подклассах.
— Гарантировать, что внутреннее состояние неизменяемо.
Преимущества неизменяемых классов:
Потокобезопасность, простота кода, кэширование, безопасность при работе в многопоточной среде.
Назовите основные свойства транзакции.
Атомарность (atomicity) гарантирует, что никакая транзакция не будет зафиксирована в системе частично. Будут либо выполнены все её подоперации, либо не выполнено ни одной.
Согласованность (consistency). Транзакция, достигающая своего нормального завершения и, тем самым, фиксирующая свои результаты, сохраняет согласованность базы данных.
Изолированность (isolation). Во время выполнения транзакции параллельные транзакции не должны оказывать влияние на её результат.
Долговечность (durability). Независимо от проблем на нижних уровнях (к примеру, обесточивание системы или сбои в оборудовании) изменения, сделанные успешно завершённой транзакцией, должны остаться сохранёнными после возвращения системы в работу.
Атомарность (atomicity) гарантирует, что никакая транзакция не будет зафиксирована в системе частично. Будут либо выполнены все её подоперации, либо не выполнено ни одной.
Согласованность (consistency). Транзакция, достигающая своего нормального завершения и, тем самым, фиксирующая свои результаты, сохраняет согласованность базы данных.
Изолированность (isolation). Во время выполнения транзакции параллельные транзакции не должны оказывать влияние на её результат.
Долговечность (durability). Независимо от проблем на нижних уровнях (к примеру, обесточивание системы или сбои в оборудовании) изменения, сделанные успешно завершённой транзакцией, должны остаться сохранёнными после возвращения системы в работу.
Как создать собственный протокол сериализации?
Для создания собственного протокола сериализации достаточно реализовать интерфейс Externalizable, который содержит два метода:
public void writeExternal(ObjectOutput out) throws IOException;
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException;
Для создания собственного протокола сериализации достаточно реализовать интерфейс Externalizable, который содержит два метода:
public void writeExternal(ObjectOutput out) throws IOException;
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException;
Может ли объект получить доступ к члену класса, объявленному как private? Если да, то каким образом?
➖ Внутри класса доступ к приватной переменной открыт без ограничений;
➖ Вложенный класс имеет полный доступ ко всем (в том числе и приватным) членам содержащего его класса;
➖ Доступ к приватным переменным извне может быть организован через отличные от приватных методов, которые предоставлены разработчиком класса. Например: getX() и setX().
➖ Через механизм рефлексии (Reflection API):
➖ Внутри класса доступ к приватной переменной открыт без ограничений;
➖ Вложенный класс имеет полный доступ ко всем (в том числе и приватным) членам содержащего его класса;
➖ Доступ к приватным переменным извне может быть организован через отличные от приватных методов, которые предоставлены разработчиком класса. Например: getX() и setX().
➖ Через механизм рефлексии (Reflection API):
class Victim {
private int field = 42;
}
//...
Victim victim = new Victim();
Field field = Victim.class.getDeclaredField(«field»);
field.setAccessible(true);
int fieldValue = (int) field.get(victim);
//...
Каков порядок вызова конструкторов и блоков инициализации с учётом иерархии классов?
Сначала вызываются все статические блоки в очередности от первого статического блока корневого предка и выше по цепочке иерархии до статических блоков самого класса.
Затем вызываются нестатические блоки инициализации корневого предка, конструктор корневого предка и так далее вплоть до нестатических блоков и конструктора самого класса.
Parent static block(s) → Child static block(s) → Grandchild static block(s)
→ Parent non-static block(s) → Parent constructor →
→ Child non-static block(s) → Child constructor →
→ Grandchild non-static block(s) → Grandchild constructor
Пример:
Результат выполнения:
!!! Static initializer
!!! Non-static initializer
!!! a() called
Сначала вызываются все статические блоки в очередности от первого статического блока корневого предка и выше по цепочке иерархии до статических блоков самого класса.
Затем вызываются нестатические блоки инициализации корневого предка, конструктор корневого предка и так далее вплоть до нестатических блоков и конструктора самого класса.
Parent static block(s) → Child static block(s) → Grandchild static block(s)
→ Parent non-static block(s) → Parent constructor →
→ Child non-static block(s) → Child constructor →
→ Grandchild non-static block(s) → Grandchild constructor
Пример:
public class MainClass {
public static void main(String args[]) {
new TestClass().a();
}
}
public class TestClass {
public static String v = «Some val»;
{
System.out.println(»!!! Non-static initializer»);
}
static {
System.out.println(»!!! Static initializer»);
}
public void a() {
System.out.println(»!!! a() called»);
}
}
Результат выполнения:
!!! Static initializer
!!! Non-static initializer
!!! a() called
public static void main(String[] args) {
byte x = 127;
x += 2;
System.out.println(x);
}
ConcurrentSkipListSet
Это реализация интерфейса Set, предназначенная для хранения уникальных элементов в отсортированном порядке. Она основана на структуре данных, называемой Skip List, и обеспечивает эффективную поддержку многопоточности.
Основные особенности ConcurrentSkipListSet:
🔹 ConcurrentSkipListSet не позволяет хранить дублирующиеся элементы. Если вы попытаетесь добавить в него элемент, который уже существует, операция добавления завершится успешно, но элемент не будет дублироваться.
🔹 Элементы в ConcurrentSkipListSet хранятся в отсортированном порядке по их естественному порядку (если элементы реализуют интерфейс Comparable) или с использованием заданного компаратора.
🔹 ConcurrentSkipListSet является потокобезопасной структурой данных. Она обеспечивает безопасное чтение и запись элементов из нескольких потоков без необходимости явной синхронизации.
Это реализация интерфейса Set, предназначенная для хранения уникальных элементов в отсортированном порядке. Она основана на структуре данных, называемой Skip List, и обеспечивает эффективную поддержку многопоточности.
Основные особенности ConcurrentSkipListSet:
🔹 ConcurrentSkipListSet не позволяет хранить дублирующиеся элементы. Если вы попытаетесь добавить в него элемент, который уже существует, операция добавления завершится успешно, но элемент не будет дублироваться.
🔹 Элементы в ConcurrentSkipListSet хранятся в отсортированном порядке по их естественному порядку (если элементы реализуют интерфейс Comparable) или с использованием заданного компаратора.
🔹 ConcurrentSkipListSet является потокобезопасной структурой данных. Она обеспечивает безопасное чтение и запись элементов из нескольких потоков без необходимости явной синхронизации.
Что выведет код выше?
Anonymous Quiz
7%
1
40%
null
31%
Произойдет ошибка компиляции
22%
Во время исполнения возникнет исключение NullPointerException
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.