Что выведет программа?
Anonymous Quiz
10%
FRIENDS
5%
ENEMY
1%
Ничего
67%
FRIENDS (бесконечно)
16%
Error
#вопросы_с_собеседований
Почему нельзя объявить метод интерфейса с модификатором final?
В случае интерфейсов указание модификатора
Почему нельзя объявить метод интерфейса с модификатором final?
В случае интерфейсов указание модификатора
final
бессмысленно, т.к. все методы интерфейсов неявно объявляются как абстрактные, т.е. их невозможно выполнить, не реализовав где-то еще, а этого нельзя будет сделать, если у метода идентификатор final
.#вопросы_с_собеседований
В чём заключаются различия между java.util.concurrent.Atomic*.compareAndSwap() и java.util.concurrent.Atomic*.weakCompareAndSwap()?
☕️ weakCompareAndSwap() не создает memory barrier и не дает гарантии happens-before;
☕️ weakCompareAndSwap() сильно зависит от кэша/CPU, и может возвращать false без видимых причин;
☕️ weakCompareAndSwap(), более легкая, но поддерживаемая далеко не всеми архитектурами и не всегда эффективная операция.
В чём заключаются различия между java.util.concurrent.Atomic*.compareAndSwap() и java.util.concurrent.Atomic*.weakCompareAndSwap()?
☕️ weakCompareAndSwap() не создает memory barrier и не дает гарантии happens-before;
☕️ weakCompareAndSwap() сильно зависит от кэша/CPU, и может возвращать false без видимых причин;
☕️ weakCompareAndSwap(), более легкая, но поддерживаемая далеко не всеми архитектурами и не всегда эффективная операция.
Reverse-инжиниринг “чёрного ящика”: зачем поддержке исходный код?
https://habr.com/ru/company/glowbyte/blog/698576/
https://habr.com/ru/company/glowbyte/blog/698576/
Хабр
Reverse-инжиниринг “чёрного ящика”: зачем поддержке исходный код?
Всем привет! Мы команда сопровождения GlowByte, занимаемся решением багов в различных системах крупного бизнеса. Большая часть продуктов, которые мы поддерживаем, – это маркетинговые комплексы банков,...
#вопросы_с_собеседований
Что такое «сессия»?
Сессия - это сеанс связи между клиентом и сервером, устанавливаемый на определенное время. Сеанс устанавливается непосредственно между клиентом и веб-сервером в момент получения первого запроса к веб-приложению. Каждый клиент устанавливает с сервером свой собственный сеанс, который сохраняется до окончания работы с приложением.
Что такое «сессия»?
Сессия - это сеанс связи между клиентом и сервером, устанавливаемый на определенное время. Сеанс устанавливается непосредственно между клиентом и веб-сервером в момент получения первого запроса к веб-приложению. Каждый клиент устанавливает с сервером свой собственный сеанс, который сохраняется до окончания работы с приложением.
#вопросы_с_собеседований
Как уведомить объект в сессии, что сессия недействительна или закончилась?
Чтобы быть уверенным в том, что объект будет оповещён о прекращении сессии, нужно реализовать интерфейс javax.servlet.http.HttpSessionBindingListener. Два метода этого интерфейса: valueBound() и valueUnbound() используются при добавлении объекта в качестве атрибута к сессии и при уничтожении сессии соответственно.
Как уведомить объект в сессии, что сессия недействительна или закончилась?
Чтобы быть уверенным в том, что объект будет оповещён о прекращении сессии, нужно реализовать интерфейс javax.servlet.http.HttpSessionBindingListener. Два метода этого интерфейса: valueBound() и valueUnbound() используются при добавлении объекта в качестве атрибута к сессии и при уничтожении сессии соответственно.
#вопросы_с_собеседований
Как организовать подключение к базе данных, обеспечить журналирование в сервлете?
При работе с большим количеством подключений к базе данных рекомендуется инициализировать их в servlet context listener, а также установить в качестве атрибута контекста для возможности использования другими сервлетами.
Журналирование подключается к сервлету стандартным для логгера способом (например для log4j это может быть property-файл или XML-конфигурация) , а далее эта информация используется при настройке соответствующего context listener.
Как организовать подключение к базе данных, обеспечить журналирование в сервлете?
При работе с большим количеством подключений к базе данных рекомендуется инициализировать их в servlet context listener, а также установить в качестве атрибута контекста для возможности использования другими сервлетами.
Журналирование подключается к сервлету стандартным для логгера способом (например для log4j это может быть property-файл или XML-конфигурация) , а далее эта информация используется при настройке соответствующего context listener.
Forwarded from Библиотека Go-разработчика | Golang
📜 Основные SQL-команды и запросы с примерами, которые должен знать каждый разработчик
В небольшом обзоре разберем наиболее важные команды языка запросов SQL и сделаем шаг в сторону грамотного изучения работы с базами данных.
🔗 Основной сайт
🔗 Зеркало
В небольшом обзоре разберем наиболее важные команды языка запросов SQL и сделаем шаг в сторону грамотного изучения работы с базами данных.
🔗 Основной сайт
🔗 Зеркало
#вопросы_с_собеседований
Что имеет более высокий уровень абстракции - класс, абстрактный класс или интерфейс?
Интерфейс.
Что имеет более высокий уровень абстракции - класс, абстрактный класс или интерфейс?
Что из нижеперечисленного является в Java ключевым словом?
Anonymous Quiz
36%
goto
16%
array
26%
null
22%
true
#вопросы_с_собеседований
К каким конструкциям Java применим модификатор static?
• полям;
• методам;
• вложенным классам;
• членам секции import.
К каким конструкциям Java применим модификатор static?
• полям;
• методам;
• вложенным классам;
• членам секции import.
Чем отличается sendRedirect() от forward()?
forward():
• Выполняется на стороне сервера;
• Запрос перенаправляется на другой ресурс в пределах того же сервера;
• Не зависит от протокола клиентского запроса, так как обеспечивается контейнером сервлетов;
• Нельзя применять для внедрения сервлета в другой контекст;
• Клиент не знает о фактически обрабатываемом ресурсе и
• Выполняется быстрее метода
• Определён в интерфейсе
sendRedirect():
• Выполняется на стороне клиента;
• Клиенту возвращается ответ
• Может использоваться только с клиентами
• Разрешается применять для внедрения сервлета в другой контекст;
•
• Медленнее
• Определён в интерфейсе
forward():
• Выполняется на стороне сервера;
• Запрос перенаправляется на другой ресурс в пределах того же сервера;
• Не зависит от протокола клиентского запроса, так как обеспечивается контейнером сервлетов;
• Нельзя применять для внедрения сервлета в другой контекст;
• Клиент не знает о фактически обрабатываемом ресурсе и
URL
в строке остается прежним;• Выполняется быстрее метода
sendRedirect()
;• Определён в интерфейсе
RequestDispatcher
.sendRedirect():
• Выполняется на стороне клиента;
• Клиенту возвращается ответ
302 (redirect)
и запрос перенаправляется на другой сервер;• Может использоваться только с клиентами
HTTP
;• Разрешается применять для внедрения сервлета в другой контекст;
•
URL
адрес изменяется на адрес нового ресурса;• Медленнее
forward()
т.к. требует создания нового запроса;• Определён в интерфейсе
HttpServletResponse
.Для чего в Java используются статические блоки инициализации?
Статические блоки инициализация используются для выполнения кода, который должен выполняться один раз при инициализации класса загрузчиком классов, в момент, предшествующий созданию объектов этого класса при помощи конструктора. Такой блок (в отличие от нестатических, принадлежащих конкретном объекту класса) принадлежит только самому классу (объекту метакласса
Статические блоки инициализация используются для выполнения кода, который должен выполняться один раз при инициализации класса загрузчиком классов, в момент, предшествующий созданию объектов этого класса при помощи конструктора. Такой блок (в отличие от нестатических, принадлежащих конкретном объекту класса) принадлежит только самому классу (объекту метакласса
Class
).#вопросы_с_собеседований
Что произойдёт, если в блоке инициализации возникнет исключительная ситуация?
Для нестатических блоков инициализации, если выбрасывание исключения прописано явным образом требуется, чтобы объявления этих исключений были перечислены в throws всех конструкторов класса. Иначе будет ошибка компиляции. Для статического блока выбрасывание исключения в явном виде, приводит к ошибке компиляции.
В остальных случаях, взаимодействие с исключениями будет проходить так же, как и в любом другом месте. Класс не будет инициализирован, если ошибка происходит в статическом блоке и объект класса не будет создан, если ошибка возникает в нестатическом блоке.
Что произойдёт, если в блоке инициализации возникнет исключительная ситуация?
Для нестатических блоков инициализации, если выбрасывание исключения прописано явным образом требуется, чтобы объявления этих исключений были перечислены в throws всех конструкторов класса. Иначе будет ошибка компиляции. Для статического блока выбрасывание исключения в явном виде, приводит к ошибке компиляции.
В остальных случаях, взаимодействие с исключениями будет проходить так же, как и в любом другом месте. Класс не будет инициализирован, если ошибка происходит в статическом блоке и объект класса не будет создан, если ошибка возникает в нестатическом блоке.