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

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

Сайт: easyoffer.ru/
Реклама: @easyoffer_adv

Решай тесты - t.me/+icUwivvbGOkwNWRi
Нарешивай задачи - t.me/+8eqUTboisnkyZjQy
Ищи работу - t.me/+4pspF5nDjgM4MjQy
Advertising
We recommend to visit
HAYZON
HAYZON
5,791,257 @hayzonn

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

Last updated 1 month, 1 week ago

Architec.Ton is a ecosystem on the TON chain with non-custodial wallet, swap, apps catalog and launchpad.

Main app: @architec_ton_bot
Our Chat: @architec_ton
EU Channel: @architecton_eu
Twitter: x.com/architec_ton
Support: @architecton_support

Last updated 1 month ago

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

Last updated 1 month, 3 weeks ago

1 month ago

*🤔 *Зачем нужен String Pool?

String Pool позволяет экономить память, храня строки в едином пуле и переиспользуя их, если строки имеют одинаковое значение.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай *📚*** Базу знаний

1 month ago
1 month ago

🤔 Взаимодействие JSP - сервлет - JSP?

1⃣Пользовательский запрос
Пользователь отправляет HTTP-запрос (например, через веб-браузер).

2⃣Сервлет
Запрос попадает к сервлету, который обрабатывает бизнес-логику. Сервлет может получать данные от пользователя, обрабатывать их, взаимодействовать с базой данных или другими компонентами приложения.

*3⃣*Передача данных на JSP
После обработки запроса сервлет перенаправляет его на JSP-страницу, передавая необходимые данные (атрибуты) для отображения.

*4⃣*JSP
JSP-страница генерирует HTML-ответ, используя переданные данные, и отправляет его обратно пользователю.

🚩Почему это нужно

1⃣Разделение задач
Сервлеты отвечают за обработку бизнес-логики, а JSP - за представление данных. Это позволяет разделить код на более управляемые части и облегчить сопровождение.

2⃣Повторное использование кода
Логику обработки данных можно легко использовать повторно в различных сервлетах, а JSP-страницы могут использоваться для разных представлений одних и тех же данных.

3⃣Упрощение разработки
Разработчики могут сосредоточиться на своих частях задачи (логика или представление), что ускоряет разработку и делает код более читабельным.

🚩Пример взаимодействия

Пользователь отправляет запрос

GET /users

Сервлет UserServlet

```
@WebServlet("/users")
public class UserServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Логика получения списка пользователей
List users = UserService.getUsers();

// Передача данных на JSP request.setAttribute("users", users); RequestDispatcher dispatcher = request.getRequestDispatcher("users.jsp"); dispatcher.forward(request, response); }

}
```

JSP users.jsp

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


Список пользователей

Список пользователей

  • ${user.name} \- ${user.email}


```

Ставь *👍*** и забирай *📚*** Базу знаний

4 months ago
4 months 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 страницах.

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

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

4 months ago
4 months, 1 week ago
4 months, 1 week ago
4 months, 1 week ago
4 months, 2 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 принципы направлены на создание гибкой, масштабируемой архитектуры, которая легко поддается изменениям и развитию. Используя эти принципы, можно создавать системы, которые легче понимать, поддерживать и расширять.

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

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

We recommend to visit
HAYZON
HAYZON
5,791,257 @hayzonn

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

Last updated 1 month, 1 week ago

Architec.Ton is a ecosystem on the TON chain with non-custodial wallet, swap, apps catalog and launchpad.

Main app: @architec_ton_bot
Our Chat: @architec_ton
EU Channel: @architecton_eu
Twitter: x.com/architec_ton
Support: @architecton_support

Last updated 1 month ago

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

Last updated 1 month, 3 weeks ago