Подклассом класса RuntimeException является?
Anonymous Quiz
23%
IOException
11%
FileNotFoundException
36%
NullPointerException
24%
Exception
6%
Узнать ответ
👍16😱5❤2🤔1
#Вопросы_с_собеседования
Как написать immutable класс?
Чтоб написать immutable неизменяемый класс, нужно следовать простым пунктам:
• сделать класс финальным.
• сделать все поля приватными и создать только геттеры к ним. Сеттеры, разумеется, не нужно.
• Сделать все mutable поля final, чтобы установить значение можно было только один раз.
• инициализировать все поля через конструктор, выполняя глубокое копирование (то есть, копируя и сам объект, и его переменные, и переменные переменных, и так далее)
• клонировать объекты mutable переменных в геттерах, чтобы возвращать только копии значений, а не ссылки на актуальные объекты.
Как написать immutable класс?
Чтоб написать immutable неизменяемый класс, нужно следовать простым пунктам:
• сделать класс финальным.
• сделать все поля приватными и создать только геттеры к ним. Сеттеры, разумеется, не нужно.
• Сделать все mutable поля final, чтобы установить значение можно было только один раз.
• инициализировать все поля через конструктор, выполняя глубокое копирование (то есть, копируя и сам объект, и его переменные, и переменные переменных, и так далее)
• клонировать объекты mutable переменных в геттерах, чтобы возвращать только копии значений, а не ссылки на актуальные объекты.
👍27❤2🔥2
Java 20: огромные разреженные сегменты памяти
Знаете ли вы, что можно выделять сегменты памяти, которые больше, чем физический размер оперативной памяти вашего компьютера, и даже больше, чем размер всей вашей файловой системы?
Смотреть статью
Знаете ли вы, что можно выделять сегменты памяти, которые больше, чем физический размер оперативной памяти вашего компьютера, и даже больше, чем размер всей вашей файловой системы?
Смотреть статью
Хабр
Java 20: огромные разреженные сегменты памяти
Знаете ли вы, что можно выделять сегменты памяти, которые больше, чем физический размер оперативной памяти вашего компьютера, и даже больше, чем размер всей вашей файловой системы? Прочтите эту...
👍4
Загрузка изображения
Первое, что нужно сделать, когда вы хотите поработать с изображениями - это создать объект BufferedImage из изображения, сохраненного на нашем диске.
Подробную инструкцию по работе с изображениями можно найти здесь.
Первое, что нужно сделать, когда вы хотите поработать с изображениями - это создать объект BufferedImage из изображения, сохраненного на нашем диске.
Подробную инструкцию по работе с изображениями можно найти здесь.
❤13👍7
#Вопросы_с_собеседования
❓Почему необходимо переопределить только init() метод без аргументов?
Метод init() переопределяется, если необходимо инициализировать какие-то данные до того как сервлет начнет обрабатывать запросы.
При переопределении метода init(ServletConfig config), первым должен быть вызван метод super(config), который обеспечит вызов метода init(ServletConfig config) суперкласса. GenericServlet предоставляет другой метод init() без параметров, который будет вызываться в конце метода init(ServletConfig config).
Необходимо использовать переопределенный метод init() без параметров для инициализации данных во избежание каких-либо проблем, например ошибку, когда вызов super() не указан в переопределенном init(ServletConfig config).
❓Почему необходимо переопределить только init() метод без аргументов?
Метод init() переопределяется, если необходимо инициализировать какие-то данные до того как сервлет начнет обрабатывать запросы.
При переопределении метода init(ServletConfig config), первым должен быть вызван метод super(config), который обеспечит вызов метода init(ServletConfig config) суперкласса. GenericServlet предоставляет другой метод init() без параметров, который будет вызываться в конце метода init(ServletConfig config).
Необходимо использовать переопределенный метод init() без параметров для инициализации данных во избежание каких-либо проблем, например ошибку, когда вызов super() не указан в переопределенном init(ServletConfig config).
❤5👍4
#Вопросы_с_собеседования
❓Каков результат операции
0, так как XOR возвращает единицу тогда, когда один из аргументов равен нулю, а второй единице.
❓Каков результат операции
1 XOR 1?👍20🤔1😱1
#Вопросы_с_собеседования
❓Может ли объект получить доступ к члену класса, объявленному как private? Если да, то каким образом?
• Внутри класса доступ к приватной переменной открыт без ограничений;
• Вложенный класс имеет полный доступ ко всем (в том числе и приватным) членам содержащего его класса;
• Доступ к приватным переменным извне может быть организован через отличные от приватных методов, которые предоставлены разработчиком класса. Например: getX() и setX().
• Через механизм рефлексии (Reflection API) (см картинку).
❓Может ли объект получить доступ к члену класса, объявленному как private? Если да, то каким образом?
• Внутри класса доступ к приватной переменной открыт без ограничений;
• Вложенный класс имеет полный доступ ко всем (в том числе и приватным) членам содержащего его класса;
• Доступ к приватным переменным извне может быть организован через отличные от приватных методов, которые предоставлены разработчиком класса. Например: getX() и setX().
• Через механизм рефлексии (Reflection API) (см картинку).
👍22❤2
#Вопросы_с_собеседования
❓Опишите специальные коллекции для перечислений. Каковы преимущества их внедрения по сравнению с обычными коллекциями?
EnumSet и EnumMap — это специальные реализации интерфейсов Set и Map соответственно. Всегда стоит использовать эти реализации, когда имеете дело с перечислениями, потому что они очень эффективны.
EnumSet — это просто битовый вектор с «единицами» в позициях, соответствующих порядковым значениям перечислений, присутствующих в множестве. Чтобы проверить, находится ли значение перечисления в множестве, реализация просто должна проверить, является ли соответствующий бит в векторе «единицей», что является очень простой операцией. Точно так же EnumMap — это массив, доступ к которому осуществляется с помощью порядкового значения перечисления в качестве индекса. В случае с EnumMap нет необходимости вычислять хеш-коды или разрешать коллизии.
❓Опишите специальные коллекции для перечислений. Каковы преимущества их внедрения по сравнению с обычными коллекциями?
EnumSet и EnumMap — это специальные реализации интерфейсов Set и Map соответственно. Всегда стоит использовать эти реализации, когда имеете дело с перечислениями, потому что они очень эффективны.
EnumSet — это просто битовый вектор с «единицами» в позициях, соответствующих порядковым значениям перечислений, присутствующих в множестве. Чтобы проверить, находится ли значение перечисления в множестве, реализация просто должна проверить, является ли соответствующий бит в векторе «единицей», что является очень простой операцией. Точно так же EnumMap — это массив, доступ к которому осуществляется с помощью порядкового значения перечисления в качестве индекса. В случае с EnumMap нет необходимости вычислять хеш-коды или разрешать коллизии.
👍13❤2
Создание HTTP-сервера на Java
В создание HTTP-сервера на Java используются только средства из стандартной библиотеки(Java SE).
Смотреть видео
В создание HTTP-сервера на Java используются только средства из стандартной библиотеки(Java SE).
Смотреть видео
YouTube
Создание HTTP-сервера на Java
В данном видео я покажу, как создать HTTP-сервер на чистой Java и на сокетах. Итоговое приложение будет раздавать файлы из указанной при запуске директории. В создании http-сервера на Java я буду использовать только средства из стандартной библиотеки (Java…
👍12❤3🔥1
#Вопросы_с_собеседования
❓Может ли конструктор класса вернуть любое значение?
Нет, у конструктора нет возвращаемого типа, поэтому он не может возвращать любое значение.
❓Может ли конструктор класса вернуть любое значение?
👍22❤5😱2😢1
Как добавить локализацию в приложениях Spring MVC?
Spring обеспечивает отличную поддержку локализации или i18n через пакеты ресурсов. Основные шаги, необходимые для локализации нашего приложения:
Создание пакетов ресурсов сообщений для разных локалей, таких как messages_en.properties, messages_fr.properties и т. д.
Определение bean-компонента messageSource в файле конфигурации bean-компонента Spring типа ResourceBundleMessageSource или ReloadableResourceBundleMessageSource.
Для изменения поддержки локали определите bean-компонент localeResolver типа CookieLocaleResolver и настройте перехватчик LocaleChangeInterceptor. Пример конфигурации показан на картинке.
Используйте элемент spring:message на страницах просмотра с ключевыми именами, DispatcherServlet выбирает соответствующее значение и отображает страницу в соответствующей локали и возвращает в качестве ответа.
Spring обеспечивает отличную поддержку локализации или i18n через пакеты ресурсов. Основные шаги, необходимые для локализации нашего приложения:
Создание пакетов ресурсов сообщений для разных локалей, таких как messages_en.properties, messages_fr.properties и т. д.
Определение bean-компонента messageSource в файле конфигурации bean-компонента Spring типа ResourceBundleMessageSource или ReloadableResourceBundleMessageSource.
Для изменения поддержки локали определите bean-компонент localeResolver типа CookieLocaleResolver и настройте перехватчик LocaleChangeInterceptor. Пример конфигурации показан на картинке.
Используйте элемент spring:message на страницах просмотра с ключевыми именами, DispatcherServlet выбирает соответствующее значение и отображает страницу в соответствующей локали и возвращает в качестве ответа.
👍17❤2
Ключевое слово abstract в Java
abstract - это модификатор, применимый для классов, методов, но не для переменных. Он используется для достижения абстракции, которая является одним из столпов объектно-ориентированного программирования. Рассмотрим варианты применения abstract:
1. Класс, имеющий частичную реализацию (т.е. не все методы, присутствующие в классе, определены).
2. Иногда требуется объявление нереализованного метода в суперклассе. Этого можно добиться, указав модификатор abstract.
abstract - это модификатор, применимый для классов, методов, но не для переменных. Он используется для достижения абстракции, которая является одним из столпов объектно-ориентированного программирования. Рассмотрим варианты применения abstract:
1. Класс, имеющий частичную реализацию (т.е. не все методы, присутствующие в классе, определены).
2. Иногда требуется объявление нереализованного метода в суперклассе. Этого можно добиться, указав модификатор abstract.
👍20❤2
#Вопросы_с_собеседования
❓Расположите в виде иерархии следующие интерфейсы: List, Set, Map, SortedSet, SortedMap, Collection, Iterable, Iterator, NavigableSet, NavigableMap
Ответ на картинке.
❓Расположите в виде иерархии следующие интерфейсы: List, Set, Map, SortedSet, SortedMap, Collection, Iterable, Iterator, NavigableSet, NavigableMap
Ответ на картинке.
👍30❤3
#Вопросы_с_собеседования
❓Что такое double checked locking Singleton?
double checked locking Singleton - это один из способов создания потокобезопасного класса реализующего шаблон Одиночка. Данный метод пытается оптимизировать производительность, блокируясь только случае, когда экземпляр одиночки создаётся впервые.
Следует заметить, что требование volatile обязательно. Проблема Double Checked Lock заключается в модели памяти Java, точнее в порядке создания объектов, когда возможна ситуация, при которой другой поток может получить и начать использовать (на основании условия, что указатель не нулевой) не полностью сконструированный объект. Хотя эта проблема была частично решена в JDK 1.5, однако рекомендация использовать volatile для Double Cheсked Lock остаётся в силе.
❓Что такое double checked locking Singleton?
double checked locking Singleton - это один из способов создания потокобезопасного класса реализующего шаблон Одиночка. Данный метод пытается оптимизировать производительность, блокируясь только случае, когда экземпляр одиночки создаётся впервые.
Следует заметить, что требование volatile обязательно. Проблема Double Checked Lock заключается в модели памяти Java, точнее в порядке создания объектов, когда возможна ситуация, при которой другой поток может получить и начать использовать (на основании условия, что указатель не нулевой) не полностью сконструированный объект. Хотя эта проблема была частично решена в JDK 1.5, однако рекомендация использовать volatile для Double Cheсked Lock остаётся в силе.
👍15❤1🤔1
#Вопросы_с_собеседования
❓При помощи чего формируются запросы к базе данных?
Для выполнения запросов к базе данных в Java используются три интерфейса:
☕️
☕️
☕️
Объекты-носители интерфейсов создаются при помощи методов объекта java.sql.Connection:
☕️
☕️
☕️
❓При помощи чего формируются запросы к базе данных?
Для выполнения запросов к базе данных в Java используются три интерфейса:
☕️
java.sql.Statement - для операторов SQL без параметров;☕️
java.sql.PreparedStatement - для операторов SQL с параметрами и часто выполняемых операторов;☕️
java.sql.CallableStatement - для исполнения хранимых в базе процедур.Объекты-носители интерфейсов создаются при помощи методов объекта java.sql.Connection:
☕️
java.sql.createStatement() возвращает объект Statement;☕️
java.sql.prepareStatement() возвращает объект PreparedStatement;☕️
java.sql.prepareCall() возвращает объект CallableStatement;👍14❤1
Collections.min/max
Удивительно, насколько часто можно встретить написанный вручную код, который находит максимальный или минимальный элемент чего-то по какому-нибудь критерию.
Казалось бы, такая тривиальная задача должна быть давно решена. На самом деле она и так давно решена: есть методы Collections.min и Collections.max. Раньше было не очень удобно писать компараторы, но в Java-8 всё стало легче.
К примеру, вам нужно найти ключ в Map, соответствующий максимальному значению. Воспользуйтесь кодом с картинки.
Удивительно, насколько часто можно встретить написанный вручную код, который находит максимальный или минимальный элемент чего-то по какому-нибудь критерию.
Казалось бы, такая тривиальная задача должна быть давно решена. На самом деле она и так давно решена: есть методы Collections.min и Collections.max. Раньше было не очень удобно писать компараторы, но в Java-8 всё стало легче.
К примеру, вам нужно найти ключ в Map, соответствующий максимальному значению. Воспользуйтесь кодом с картинки.
👍22❤1
#вопросы_с_собеседований
Какие промежуточные методы работы со стримами вы знаете?
filter() отфильтровывает записи, возвращая только записи, соответствующие условию;
skip() позволяет пропустить определённое количество элементов в начале;
distinct() возвращает стрим без дубликатов (для метода equals());
map() преобразует каждый элемент;
peek() возвращает тот же стрим, применяя к каждому элементу функцию;
limit() позволяет ограничить выборку определенным количеством первых элементов;
sorted() позволяет сортировать значения либо в натуральном порядке, либо задавая Comparator;
mapToInt(), mapToDouble(), mapToLong() - аналоги map() возвращающие стрим числовых примитивов;
flatMap(), flatMapToInt(), flatMapToDouble(), flatMapToLong() - похожи на map(), но могут создавать из одного элемента несколько.
Для числовых стримов дополнительно доступен метод mapToObj(), который преобразует числовой стрим обратно в объектный.
Какие промежуточные методы работы со стримами вы знаете?
filter() отфильтровывает записи, возвращая только записи, соответствующие условию;
skip() позволяет пропустить определённое количество элементов в начале;
distinct() возвращает стрим без дубликатов (для метода equals());
map() преобразует каждый элемент;
peek() возвращает тот же стрим, применяя к каждому элементу функцию;
limit() позволяет ограничить выборку определенным количеством первых элементов;
sorted() позволяет сортировать значения либо в натуральном порядке, либо задавая Comparator;
mapToInt(), mapToDouble(), mapToLong() - аналоги map() возвращающие стрим числовых примитивов;
flatMap(), flatMapToInt(), flatMapToDouble(), flatMapToLong() - похожи на map(), но могут создавать из одного элемента несколько.
Для числовых стримов дополнительно доступен метод mapToObj(), который преобразует числовой стрим обратно в объектный.
❤14👍6