Java | Вопросы собесов

Description
Разбираем вопросы с собеседований на Java разработчика. Spring, Hibernate

Сайт: easyoffer.ru/
Реклама: @easyoffer_adv
Advertising
We recommend to visit
HAYZON
HAYZON
6 625 463 @hayzonn

💼 How to create capital and increase it using cryptocurrency

👤 𝐅𝐨𝐮𝐧𝐝𝐞𝐫: @Tg_Syprion
🗓 ᴀᴅᴠᴇʀᴛɪsɪɴɢ: @SEO_Fam
Мои каналы: @kriptofo @mazzafam

Last updated 6 часов назад

Канал для поиска исполнителей для разных задач и организации мини конкурсов

Last updated 2 месяца, 3 недели назад

Новые и перспективные Web3 игры с добычей токенов.

Чат: https://t.me/Crypto_Wolf_Chat

Правила чата смотрите в описании чата.

Все свои вопросы направляйте в чат или главному модератору чата: @Exudna_118

По теме сотрудничества: @Zombini

Last updated 2 месяца, 1 неделя назад

2 months, 1 week ago
2 months, 1 week ago

? Какие есть неявные, внутренние объекты JSP EL и их отличия от объектов JSP ?

? Спрашивают в 6% собеседований

JSP Expression Language (EL) предоставляет набор неявных (внутренних) объектов, которые упрощают доступ к данным и их обработку в JSP страницах. Эти неявные объекты JSP EL различаются от неявных объектов JSP и обеспечивают доступ к контексту выполнения веб-приложения.

? Описание неявных объектов

1️⃣ pageScope
Предоставляет доступ к атрибутам области видимости страницы (page scope).

```
<% pageContext.setAttribute("pageAttribute", "Page Scope Value"); %>

Page Attribute: ${pageScope.pageAttribute}

```

2️⃣ requestScope
Предоставляет доступ к атрибутам области видимости запроса (request scope).

```
<% request.setAttribute("requestAttribute", "Request Scope Value"); %>

Request Attribute: ${requestScope.requestAttribute}

```

3️⃣ sessionScope
Предоставляет доступ к атрибутам области видимости сессии (session scope).

```
<% session.setAttribute("sessionAttribute", "Session Scope Value"); %>

Session Attribute: ${sessionScope.sessionAttribute}

```

4️⃣ applicationScope
Предоставляет доступ к атрибутам области видимости приложения (application scope).

```
<% application.setAttribute("applicationAttribute", "Application Scope Value"); %>

Application Attribute: ${applicationScope.applicationAttribute}

```

5️⃣ param
Предоставляет доступ к параметрам запроса (query parameters) в виде строк.

```

Request Parameter: ${param.name}

```

6️⃣ paramValues
Предоставляет доступ к параметрам запроса в виде массивов строк (для параметров с несколькими значениями).

```

Request Parameter Values: ${paramValues.name[0]}, ${paramValues.name[1]}

```

7️⃣ header
Предоставляет доступ к заголовкам HTTP запроса в виде строк.

```

User\-Agent: ${header['User\-Agent']}

```

8️⃣ headerValues
Предоставляет доступ к заголовкам HTTP запроса в виде массивов строк (для заголовков с несколькими значениями).

```

Header Values: ${headerValues['Accept'][0]}, ${headerValues['Accept'][1]}

```

? Отличия между неявными объектами

1️⃣ Синтаксис и доступность:

JSP: Неявные объекты доступны напрямую в скриптлетах и выражениях внутри JSP страниц (например, request, response, session, application).

JSP EL: Неявные объекты EL доступны через синтаксис ${...} и обеспечивают более чистый и понятный способ доступа к данным.

2️⃣ Область видимости:

JSP: Неявные объекты предоставляют доступ к данным и контексту выполнения напрямую через Java объекты (например, request.getParameter("name")).

JSP EL: Неявные объекты EL упрощают доступ к данным через области видимости, такие как pageScope, requestScope, sessionScope, и applicationScope, что позволяет легко различать источники данных.

3️⃣ Функциональность:

JSP: Обеспечивает полный доступ ко всем методам и свойствам Java объектов.

JSP EL: Обеспечивает ограниченный, но удобный доступ к часто используемым данным и свойствам, улучшая читабельность и поддержку кода.

? Примеры:

JSP

```
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


JSP Example

<% request.setAttribute("attribute", "Request Scope Value"); %>

Request Attribute: <%= request.getAttribute("attribute") %>


```

JSP EL

```
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


JSP EL Example

<% request.setAttribute("attribute", "Request Scope Value"); %>

Request Attribute: ${requestScope.attribute}


```

Неявные объекты JSP EL (pageScope, requestScope, sessionScope, applicationScope, param, paramValues, header, headerValues, cookie, initParam, pageContext) предоставляют удобный и чистый способ доступа к данным и контексту выполнения веб-приложения. В отличие от неявных объектов JSP, они обеспечивают более структурированный и читаемый подход к управлению данными и их обработке в JSP страницах.

? ТОП ВОПРОСОВ С СОБЕСОВ

? База собесов | ? База тестовых

2 months, 1 week ago
2 months, 2 weeks ago
2 months, 2 weeks ago
2 months, 2 weeks ago
2 months, 3 weeks ago

? Что такое SOLID ?

? Спросят с вероятностью 62%

SOLID — это акроним, представляющий пять основных принципов ООП и дизайна, направленных на повышение гибкости, масштабируемости и поддерживаемости ПО. Они помогает избежать проблемы с проектированием, такие как жесткая зависимость между компонентами программы и сложности в внесении изменений или добавлении новых функций.

? Принцип единственной ответственности (SRP)

Подчеркивает важность разделения функциональности, чтобы каждый класс выполнял только одну задачу.

```
class UserSettings {
void changeEmail(User user) {
if(checkAccess(user)) {
// Изменение email пользователя
}
}

boolean checkAccess(User user) { // Проверка прав доступа return true; }

}
```

Здесь класс UserSettings нарушает SRP, если бы в нем также были методы для управления пользователями. Лучше вынести метод checkAccess в отдельный класс.

2️⃣ Принцип открытости/закрытости (OCP): Можно добавлять новую функциональность, не изменяя существующий код.

3️⃣ Принцип подстановки Лисков (LSP): Классы-наследники должны дополнять, а не изменять поведение базовых классов.

4️⃣ Принцип разделения интерфейса (ISP): Этот принцип ведет к созданию узкоспециализированных интерфейсов, вместо одного "толстого" интерфейса.

5️⃣ Принцип инверсии зависимостей (DIP): Оба типа модулей должны зависеть от абстракций. Абстракции не должны зависеть от деталей, а детали должны зависеть от абстракций. Этот принцип направлен на уменьшение зависимостей между модулями программы.

? Суть SOLID

SOLID принципы направлены на создание гибкой, масштабируемой архитектуры, которая легко поддается изменениям и развитию. Используя эти принципы, можно создавать системы, которые легче понимать, поддерживать и расширять.

? ТОП ВОПРОСОВ С СОБЕСОВ

? База собесов | ? База тестовых

2 months, 3 weeks ago
2 months, 3 weeks ago

? Что такое иерархия коллекций ?

? Спросят с вероятностью 62%

Java Server Pages (JSP) является мощной технологией для создания динамически генерируемых веб-страниц на стороне сервера. Предоставляет множество преимуществ и решает ряд задач, которые делают его необходимым в разработке веб-приложений:

? Основные интерфейсы

Collection Interface: Корневой интерфейс иерархии коллекций. Определяет методы, такие как add(), remove(), size(), isEmpty() и iterator(), которые должны быть реализованы всеми коллекциями.

List Interface: Представляет упорядоченную коллекцию. Элементы в списке могут быть доступны по индексам. Допускает дублирование элементов. Реализации включают ArrayList, LinkedList и Vector.

Set Interface: Набор уникальных элементов. Не допускает дублирования элементов. Реализации включают HashSet, LinkedHashSet и TreeSet.

Queue Interface: Для работы с коллекциями, используемыми для хранения элементов перед обработкой. Поддерживает операции вставки, извлечения и инспекции. LinkedList реализует как List, так и Queue. Также есть PriorityQueue для элементов, которые должны обрабатываться в порядке приоритета.

Map Interface: Не наследуется от Collection интерфейса. Описывает структуру для хранения пар ключ/значение. Ключи уникальны, а значения могут дублироваться. Реализации включают HashMap, LinkedHashMap, TreeMap и Hashtable.

? Особенности классов

ArrayList: Динамический массив для хранения элементов, который автоматически расширяется. Предлагает быстрый доступ к элементам по индексу.

LinkedList: Двусвязный список, который обеспечивает эффективное добавление/удаление элементов. Может использоваться как список и очередь.

HashSet: Использует хеш-таблицу для хранения уникальных элементов. Не гарантирует порядок элементов.

LinkedHashSet: Расширяет HashSet, сохраняя порядок вставки элементов.

TreeSet: Хранит элементы в отсортированном и восходящем порядке. Использует красно-черное дерево.

HashMap: Хеш-таблица для хранения пар ключ/значение. Не поддерживает упорядоченность ключей или значений.

LinkedHashMap: Расширяет HashMap, сохраняя порядок вставки ключей.

TreeMap: Реализует красно-черное дерево, сохраняет ключи в отсортированном порядке.

PriorityQueue: Элементы добавляются согласно их приоритету, определенному компаратором.

? Суть иерархии коллекций

Иерархия коллекций обеспечивает унифицированный способ работы с различными типами данных. Она предоставляет гибкость для выбора подходящей структуры данных в зависимости от требований к производительности, порядку элементов и уникальности значений. Использование этих коллекций позволяет разработчикам эффективно хранить, извлекать, удалять и обрабатывать данные в Java-приложениях.

? ТОП ВОПРОСОВ С СОБЕСОВ

? База собесов | ? База тестовых

2 months, 4 weeks ago

? Как мы можем обеспечить transport layer security для нашего веб приложения ?

Спросят с вероятностью 6%

Для обеспечения Transport Layer Security (TLS) в веб-приложении используются протоколы HTTPS (HTTP over TLS/SSL), которые обеспечивают защищенное соединение между клиентом и сервером. Это защищает данные от перехвата и подмены во время передачи. Внедрение его включает несколько шагов:

1️⃣ Получение SSL/TLS сертификата

Для использования HTTPS на вашем веб-сервере, вам потребуется SSL/TLS сертификат, который можно получить у сертификационного центра (CA). Некоторые популярные CA включают:

Let’s Encrypt (бесплатный)

DigiCert

Comodo

GlobalSign

2️⃣ Настройка веб-сервера для использования HTTPS

В зависимости от вашего веб-сервера (Apache, Nginx, Tomcat и т.д.), процесс настройки будет различаться.

Apache HTTP Server

1️⃣ Установка SSL/TLS модуля:

Убедитесь, что модуль mod_ssl установлен и включен.

```
sudo a2enmod ssl
sudo systemctl restart apache2

```

2️⃣ Настройка виртуального хоста для HTTPS:

Отредактируйте файл конфигурации виртуального хоста (например, /etc/apache2/sites\-available/your\-site.conf):

```

ServerName example.com
DocumentRoot /var/www/html

SSLEngine on SSLCertificateFile /path/to/your\_certificate.crt SSLCertificateKeyFile /path/to/your\_private.key SSLCertificateChainFile /path/to/chain\_file.crt <Directory /var/www/html> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>

```

3️⃣ Перезапуск Apache:

```
sudo systemctl restart apache2

```

Nginx

1️⃣ Настройка конфигурации для HTTPS:

Отредактируйте файл конфигурации вашего сайта (например, /etc/nginx/sites\-available/your\-site):

```
server {
listen 443 ssl;
server_name example.com;

ssl\_certificate /path/to/your\_certificate.crt; ssl\_certificate\_key /path/to/your\_private.key; root /var/www/html; index index.html index.htm; location / { try\_files $uri $uri/ =404; }

}

server {
listen 80;
server_name example.com;

return 301 https://$host$request\_uri;

}

```

Перезапуск Nginx:

```
sudo systemctl restart nginx

```

Apache Tomcat

1️⃣ Настройка server.xml для использования HTTPS:

Отредактируйте файл server.xml (например, conf/server.xml):

```
maxThreads="150" SSLEnabled="true">

type="RSA" />

```

2️⃣ Создание Keystore и получение сертификата:

Создайте keystore и получите сертификат от CA, затем импортируйте сертификат в keystore:

```
keytool -genkey -alias tomcat -keyalg RSA -keystore your_keystore.jks
keytool -import -alias tomcat -file your_certificate.crt -keystore your_keystore.jks

```

Перезапуск Tomcat:

```
sudo systemctl restart tomcat

```

3️⃣ Принудительное использование HTTPS

Рекомендуется перенаправлять все HTTP-запросы на HTTPS для обеспечения полной безопасности. Примеры для различных серверов:

Apache HTTP Server
Внутри виртуального хоста для порта 80 добавьте перенаправление:

<VirtualHost *:80> ServerName example.com Redirect permanent / https://example.com/ </VirtualHost>

Для обеспечения Transport Layer Security (TLS) вашего веб-приложения:

1️⃣ Получите SSL/TLS сертификат.

2️⃣ Настройте ваш веб-сервер для использования HTTPS.

3️⃣ Принудительно перенаправляйте HTTP-запросы на HTTPS.

4️⃣ Обновите конфигурацию приложения и все ссылки для использования HTTPS.

5️⃣ Настройте cookies с атрибутом Secure для защиты данных сессий.

Эти шаги помогут вам защитить данные пользователя и предотвратить перехват и подмену данных во время передачи.

? ТОП ВОПРОСОВ С СОБЕСОВ

? База собесов | ? База тестовых

We recommend to visit
HAYZON
HAYZON
6 625 463 @hayzonn

💼 How to create capital and increase it using cryptocurrency

👤 𝐅𝐨𝐮𝐧𝐝𝐞𝐫: @Tg_Syprion
🗓 ᴀᴅᴠᴇʀᴛɪsɪɴɢ: @SEO_Fam
Мои каналы: @kriptofo @mazzafam

Last updated 6 часов назад

Канал для поиска исполнителей для разных задач и организации мини конкурсов

Last updated 2 месяца, 3 недели назад

Новые и перспективные Web3 игры с добычей токенов.

Чат: https://t.me/Crypto_Wolf_Chat

Правила чата смотрите в описании чата.

Все свои вопросы направляйте в чат или главному модератору чата: @Exudna_118

По теме сотрудничества: @Zombini

Last updated 2 месяца, 1 неделя назад