#вопросы_с_собеседований
Что такое «монитор» в Java?
Монитор, мьютекс (mutex) – это средство обеспечения контроля за доступом к ресурсу. У монитора может быть максимум один владелец в каждый текущий момент времени. Следовательно, если кто-то использует ресурс и захватил монитор для обеспечения единоличного доступа, то другой, желающий использовать тот же ресурс, должен подождать освобождения монитора, захватить его и только потом начать использовать ресурс.
Удобно представлять монитор как id захватившего его объекта. Если этот id равен 0 – ресурс свободен. Если не 0 – ресурс занят. Можно встать в очередь и ждать его освобождения.
В Java у каждого экземпляра объекта есть монитор, который контролируется непосредственно виртуальной машиной. Используется он так: любой нестатический synchronized-метод при своем вызове прежде всего пытается захватить монитор того объекта, у которого он вызван (на который он может сослаться как на this). Если это удалось – метод исполняется. Если нет – поток останавливается и ждет, пока монитор будет отпущен.
Что такое «монитор» в Java?
Монитор, мьютекс (mutex) – это средство обеспечения контроля за доступом к ресурсу. У монитора может быть максимум один владелец в каждый текущий момент времени. Следовательно, если кто-то использует ресурс и захватил монитор для обеспечения единоличного доступа, то другой, желающий использовать тот же ресурс, должен подождать освобождения монитора, захватить его и только потом начать использовать ресурс.
Удобно представлять монитор как id захватившего его объекта. Если этот id равен 0 – ресурс свободен. Если не 0 – ресурс занят. Можно встать в очередь и ждать его освобождения.
В Java у каждого экземпляра объекта есть монитор, который контролируется непосредственно виртуальной машиной. Используется он так: любой нестатический synchronized-метод при своем вызове прежде всего пытается захватить монитор того объекта, у которого он вызван (на который он может сослаться как на this). Если это удалось – метод исполняется. Если нет – поток останавливается и ждет, пока монитор будет отпущен.
👍21
🧑🎨 Искусство новых медиа: как стать цифровым художником?
Давайте вместе разберемся с понятием «искусства новых медиа» (New media Art) и поймем, что нужно, чтобы стать цифровым художником.
https://proglib.io/sh/IC6d9AuSen
Давайте вместе разберемся с понятием «искусства новых медиа» (New media Art) и поймем, что нужно, чтобы стать цифровым художником.
https://proglib.io/sh/IC6d9AuSen
👍1
Как разбить строку на слова?
Вместо него рекомендуется использовать метод
Другой подходящий метод –
StringTokenizer
– специально предназначенный для этого класс стандартной библиотеки Java. Ему нужно задать разделители, по ним строка будет разделена на «токены». Это устаревший класс, он остается в библиотеке только для обратной совместимости.Вместо него рекомендуется использовать метод
String.split()
. Метод принимает строку с регулярным выражением, и опциональный лимит токенов. Реализация особенно оптимизирована для односимвольного разделителя. Но следует помнить, что даже если символ один, это всё ещё регулярное выражение – спецсимвол должен экранироваться.Другой подходящий метод –
Pattern.split()
. Он, наоборот, вызывается у регулярного выражения, а принимает целевую строку. В этот же метод делегируется и выполнение String.split()
. Этот способ предпочтительнее, когда в регулярном выражении больше одного символа, а скомпилированный паттерн применяется повторно.👍21
Какова структура веб-проекта?
src/main/java
Исходники приложения/библиотекиsrc/main/resources
Ресурсные файлы приложения/библиотекиsrc/main/filters
Файлы сервлетных фильтровsrc/main/webapp
Исходники веб-приложенияsrc/test/java
Исходники тестовsrc/test/resources
Ресурсные файлы тестовsrc/test/filters
Тесты сервлетных фильтровsrc/it
Интеграционные тестыsrc/assembly
Описание сборкиsrc/site
СайтLICENSE.txt
Лицензия проектаNOTICE.txt
Замечания и определения библиотек зависимостей.README.txt
Описание проекта🤔24👍12🔥2
Введение в DbChange JUnit расширение
Простой и декларативный способ выполнять SQL запросы в JUnit тестах.
Читать статью
Простой и декларативный способ выполнять SQL запросы в JUnit тестах.
Читать статью
Telegraph
Введение в DbChange JUnit расширение
Простой и декларативный способ выполнять sql запросы в JUnit тестах. Введение Структура JUnit теста следует модели тестового сценария (test case): ПредУсловия (PreConditions) - это действия, которые переводят тестируемую систему в определённое состояние необходимое…
❤7
#вопросы_с_собеседований
Как контейнер сервлетов управляет жизненным циклом сервлета, когда и какие методы вызываются?
Контейнер сервлетов управляет четырьмя фазами жизненного цикла сервлета:
• Загрузка класса сервлета — когда контейнер получает запрос для сервлета, то происходит загрузка класса сервлета в память и вызов его конструктора без параметров.
• Инициализация класса сервлета — после того как класс загружен контейнер инициализирует объект ServletConfig для этого сервлета и внедряет его через
• Обработка запросов — после инициализации сервлет готов к обработке запросов. Для каждого запроса клиента сервлет контейнер порождает новый поток и вызывает метод service() путем передачи ссылки на объекты ответа и запроса.
• Удаление - когда контейнер останавливается или останавливается приложение, то контейнер сервлетов уничтожает классы сервлетов путем вызова
Таким образом, сервлет создаётся при первом обращении к нему и живёт на протяжении всего времени работы приложения (в отличии от объектов классов, которые уничтожаются сборщиком мусора после того, как они уже не используются) и весь жизненный цикл сервлета можно описать как последовательность вызова методов:
•
•
•
Как контейнер сервлетов управляет жизненным циклом сервлета, когда и какие методы вызываются?
Контейнер сервлетов управляет четырьмя фазами жизненного цикла сервлета:
• Загрузка класса сервлета — когда контейнер получает запрос для сервлета, то происходит загрузка класса сервлета в память и вызов его конструктора без параметров.
• Инициализация класса сервлета — после того как класс загружен контейнер инициализирует объект ServletConfig для этого сервлета и внедряет его через
init()
метод. Это и есть место где сервлет класс преобразуется из обычного класса в сервлет.• Обработка запросов — после инициализации сервлет готов к обработке запросов. Для каждого запроса клиента сервлет контейнер порождает новый поток и вызывает метод service() путем передачи ссылки на объекты ответа и запроса.
• Удаление - когда контейнер останавливается или останавливается приложение, то контейнер сервлетов уничтожает классы сервлетов путем вызова
destroy()
метода.Таким образом, сервлет создаётся при первом обращении к нему и живёт на протяжении всего времени работы приложения (в отличии от объектов классов, которые уничтожаются сборщиком мусора после того, как они уже не используются) и весь жизненный цикл сервлета можно описать как последовательность вызова методов:
•
public void init(ServletConfig config)
– используется контейнером для инициализации сервлета. Вызывается один раз за время жизни сервлета.•
public void service(ServletRequest request, ServletResponse response)
– вызывается для каждого запроса. Метод не может быть вызван раньше выполнения init()
метода.•
public void destroy()
– вызывается для уничтожения сервлета (один раз за время жизни сервлета).👍8
В каком случае требуется переопределять метод service()?
Метод
Когда контейнер сервлетов получает запрос клиента, то происходит вызов метода
Метод
service()
переопределяется, когда необходимо, чтобы сервлет обрабатывал все запросы (и GET
, и POST
) в одном методе.Когда контейнер сервлетов получает запрос клиента, то происходит вызов метода
service()
, который в зависимости от поступившего запроса вызывает или метод doGet()
или метод doPost()
.👍4
#вопросы_с_собеседований
Если equals() переопределен, есть ли какие-либо другие методы, которые следует переопределить?
Равные объекты должны возвращать одинаковые хэш коды. При переопределении
Если equals() переопределен, есть ли какие-либо другие методы, которые следует переопределить?
Равные объекты должны возвращать одинаковые хэш коды. При переопределении
equals()
нужно обязательно переопределять и метод hashCode()
.👍23
Как применяете принципы SOLID?
Расскажите в комментариях ⬇️
Расскажите в комментариях ⬇️
#вопросы_с_собеседований
Как получить IP адрес клиента на сервере?
Как получить IP адрес клиента на сервере?
IP
адрес клиента можно получить вызвав request.getRemoteAddr()
.👍10
Пять задач, которые приходится решать при трудоустройстве начинающим Java-разработчикам в 2022 году.
https://habr.com/ru/company/skillbox/blog/689226/
https://habr.com/ru/company/skillbox/blog/689226/
Хабр
Пять задач, которые приходится решать при трудоустройстве начинающим Java-разработчикам в 2022 году
Хабр, привет! Меня зовут Даниил Пилипенко, я программный директор факультета backend-разработки направления «Программирование» Skillbox, директор центра подбора IT-специалистов SymbioWay. Сегодня...
👍5🤔1
#вопросы_с_собеседований
В чем разница между методами GET и POST?
•
• Передача данных методом
•
В чем разница между методами GET и POST?
•
GET
передает данные серверу используя URL
, тогда как POST
передает данные, используя тело HTTP
запроса. Длина URL
ограничена 1024
символами, это и будет верхним ограничением для данных, которые можно отослать через GET
. POST
может отправлять гораздо большие объемы данных. Лимит устанавливается web-server
и составляет обычно около 2 Mb
.• Передача данных методом
POST
более безопасна, чем методом GET
, так как секретные данные (например пароль) не отображаются напрямую в web-клиенте
пользователя, в отличии от URL
, который виден почти всегда. Иногда это преимущество превращается в недостаток - вы не сможете послать данные за кого-то другого.•
GET
метод является неизменяемым, тогда как POST
— изменяемый.👍28❤3🤔1
Что такое cookies?
• аутентификации пользователя;
• хранения персональных предпочтений и настроек пользователя;
• отслеживания состояния сеанса доступа пользователя;
• ведения разнообразной статистики.
Сookies («куки»)
— небольшой фрагмент данных, отправленный web-сервером
и хранимый на устройстве пользователя. Всякий раз при попытке открыть страницу сайта, web-клиент
пересылает соответствующие этому сайту cookies web-серверу
в составе HTTP-запроса
. Применяется для сохранения данных на стороне пользователя и на практике обычно используется для:• аутентификации пользователя;
• хранения персональных предпочтений и настроек пользователя;
• отслеживания состояния сеанса доступа пользователя;
• ведения разнообразной статистики.
👍35
#вопросы_с_собеседований
Что такое «сессия»?
Что такое «сессия»?
Сессия
- это сеанс связи между клиентом и сервером, устанавливаемый на определенное время. Сеанс устанавливается непосредственно между клиентом
и веб-сервером
в момент получения первого запроса к веб-приложению
. Каждый клиент устанавливает с сервером свой собственный сеанс, который сохраняется до окончания работы с приложением.👍13🤯1
☕️ Дорожная карта Java-разработчика в 2022 году
Рассказываем, что изучать и в какой последовательности, чтобы стать хорошим Java-разработчиком.
🔗 Основной сайт
🔗 Зеркало
Рассказываем, что изучать и в какой последовательности, чтобы стать хорошим Java-разработчиком.
🔗 Основной сайт
🔗 Зеркало
👍19😁1
Телеграм-канал про разгон мозга 🧠 — https://yangx.top/mind_rise
1. Объективная информация о том, как повысить продуктивность;
2. Репорты участников про эффективные инструменты и способы разгона мозга;
3. Пруфы, исследования и проверенная информация, готовая к применению на практике.
Подписывайтесь и узнайте подробности— https://yangx.top/mind_rise
#реклама
1. Объективная информация о том, как повысить продуктивность;
2. Репорты участников про эффективные инструменты и способы разгона мозга;
3. Пруфы, исследования и проверенная информация, готовая к применению на практике.
Подписывайтесь и узнайте подробности— https://yangx.top/mind_rise
#реклама
Telegram
Ноотропы и Биохакинг | RISE
Ноотропы, прокачка мозга, саморазвитие, научно доказанные методы биохакинга.
💬 Чат канала: t.me/+S80Iyc4gF6g0MWUy
По вопросам рекламы: [email protected]
💬 Чат канала: t.me/+S80Iyc4gF6g0MWUy
По вопросам рекламы: [email protected]
👍2
Дайте определение терминам «простой», «составной» (composite), «потенциальный» (candidate) и «альтернативный» (alternate) ключ.
Из множества всех потенциальных ключей набора данных выбирают первичный ключ, все остальные ключи называют
Простой ключ
состоит из одного атрибута (поля). Составной - из двух и более.Потенциальный ключ
- простой или составной ключ, который уникально идентифицирует каждую запись набора данных. При этом потенциальный ключ должен обладать критерием неизбыточности: при удалении любого из полей набор полей перестает уникально идентифицировать запись.Из множества всех потенциальных ключей набора данных выбирают первичный ключ, все остальные ключи называют
альтернативными
.👍15