Java | Вопросы собесов
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @easyoffer_adv
Show more📈 Analytical overview of Telegram channel Java | Вопросы собесов
Channel Java | Вопросы собесов (@easy_java_ru) in the Russian language segment is an active participant. Currently, the community unites 11 371 subscribers, ranking 10 600 in the Technologies & Applications category and 56 517 in the Russia region.
📊 Audience metrics and dynamics
Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 11 371 subscribers.
According to the latest data from 03 September, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -32 over the last 30 days and by 2 over the last 24 hours, overall reach remains high.
- Verification status: Not verified
- Engagement rate (ER): The average audience engagement rate is 8.48%. Within the first 24 hours after publication, content typically collects 5.67% reactions from the total number of subscribers.
- Post reach: On average, each post receives 964 views. Within the first day, a publication typically gains 645 views.
- Reactions and interaction: The audience actively supports content: the average number of reactions per post is 4.
- Thematic interests: Content is focused on key topics such as ставь, void, string, строка, static.
📝 Description and content policy
The author describes the resource as a platform for expressing subjective opinions:
“Сайт: https://easyoffer.ru/
Все каналы: t.me/+xGeAw6ckJ4liYzQy
Контакт для рекламы: @easyoffer_adv”
Thanks to the high frequency of updates (latest data received on 04 September, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.
sudo mkdir /etc/nginx/ssl
sudo cp /path/to/your_domain_name.crt /etc/nginx/ssl/
sudo cp /path/to/your_private.key /etc/nginx/ssl/
2⃣Настройте виртуальный хост для HTTPS: Добавьте в файл конфигурации Nginx (например, в /etc/nginx/sites-available/default):
server {
listen 80;
server_name your_domain_name;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name your_domain_name;
ssl_certificate /etc/nginx/ssl/your_domain_name.crt;
ssl_certificate_key /etc/nginx/ssl/your_private.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
location / {
root /var/www/html;
index index.html index.htm;
}
}
3⃣Перезапустите Nginx:
sudo systemctl restart nginx
🚩Пример настройки для Tomcat:
1⃣Установка и настройка SSL: Создайте и установите SSL сертификат в Tomcat: Импортируйте сертификат в Java Keystore (если у вас его нет, создайте его):
keytool -import -alias tomcat -file your_domain_name.crt -keystore /path/to/your_keystore.jks
2⃣Настройте файл server.xml: Добавьте следующий блок в файл server.xml (например, в /usr/local/tomcat/conf/server.xml):
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="/path/to/your_keystore.jks"
type="RSA" />
</SSLHostConfig>
</Connector>
3⃣Перезапустите Tomcat:
sudo systemctl restart tomcat
Ставь 👍 и забирай 📚 Базу знанийimport java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@WebFilter("/*")
public class AuthenticationFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;
HttpSession session = httpRequest.getSession(false);
if (session == null || session.getAttribute("user") == null) {
httpResponse.sendRedirect(httpRequest.getContextPath() + "/login.jsp");
} else {
chain.doFilter(request, response);
}
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {}
@Override
public void destroy() {}
}
Ставь 👍 и забирай 📚 Базу знанийHttpSessionBindingListener и HttpSessionListener.
🚩Использование HttpSessionBindingListener:
Этот интерфейс позволяет объекту получать уведомления, когда он добавляется или удаляется из сессии.
🟠Методы:
valueBound(HttpSessionBindingEvent event): Вызывается, когда объект добавляется в сессию.
valueUnbound(HttpSessionBindingEvent event): Вызывается, когда объект удаляется из сессии, либо когда сессия становится недействительной.
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;
public class MySessionObject implements HttpSessionBindingListener {
@Override
public void valueBound(HttpSessionBindingEvent event) {
System.out.println("Object added to session");
}
@Override
public void valueUnbound(HttpSessionBindingEvent event) {
System.out.println("Object removed from session or session invalidated");
}
}
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class SessionServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
MySessionObject obj = new MySessionObject();
session.setAttribute("myObject", obj);
}
}
🚩Использование HttpSessionListener:
Этот интерфейс позволяет сервлету получать уведомления о событиях создания и уничтожения сессии.
🟠Методы:
sessionCreated(HttpSessionEvent se): Вызывается, когда создается новая сессия.
sessionDestroyed(HttpSessionEvent se): Вызывается, когда сессия становится недействительной.
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class MySessionListener implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent se) {
System.out.println("Session created: " + se.getSession().getId());
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
System.out.println("Session destroyed: " + se.getSession().getId());
HttpSession session = se.getSession();
MySessionObject obj = (MySessionObject) session.getAttribute("myObject");
if (obj != null) {
obj.cleanup();
}
}
}
Регистрация HttpSessionListener в web.xml:
<listener>
<listener-class>com.example.MySessionListener</listener-class>
</listener>
Ставь 👍 и забирай 📚 Базу знанийHttpSession session = request.getSession();
session.setAttribute("username", "JohnDoe");
String username = (String) session.getAttribute("username");
Ставь 👍 и забирай 📚 Базу знанийencodeURL() и encodeRedirectURL() используются в сервлетах для управления сессиями и обеспечивают корректную работу URL в случае, если cookies отключены или не поддерживаются клиентом.
🚩Основные цели и отличия:
🟠Назначение:
`encodeURL()`: Используется для добавления идентификатора сессии к URL для обычных ссылок, обеспечивая корректную передачу информации о сессии.
`encodeRedirectURL()`: Используется для добавления идентификатора сессии к URL при перенаправлении, обеспечивая корректную передачу информации о сессии при редиректе.
🟠Контекст использования:
`encodeURL()`: Применяется к URL, который будет отображен на странице в качестве ссылки.
`encodeRedirectURL()`: Применяется к URL, который используется в методе sendRedirect() для перенаправления.
encodeURL():
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class EncodeURLServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
session.setAttribute("user", "John Doe");
String url = response.encodeURL("nextPage.jsp");
response.setContentType("text/html");
response.getWriter().println("<a href=\"" + url + "\">Next Page</a>");
}
}
encodeRedirectURL():
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class EncodeRedirectURLServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
session.setAttribute("user", "John Doe");
String url = response.encodeRedirectURL("nextPage.jsp");
response.sendRedirect(url);
}
}
🚩Принцип работы:
`encodeURL()` и `encodeRedirectURL()` автоматически проверяют, поддерживает ли клиент cookies. Если cookies поддерживаются, методы возвращают исходный URL без изменений. Если cookies не поддерживаются, к URL добавляется идентификатор сессии в качестве параметра.
🚩Пример результата:
Без cookies: http://example.com/nextPage.jsp;jsessionid=1234567890
С cookies: http://example.com/nextPage.jsp
Ставь 👍 и забирай 📚 Базу знанийString url = response.encodeURL("http://example.com/resource");
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class URLRewritingServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
session.setAttribute("user", "John Doe");
String url = response.encodeURL("nextPage.jsp");
response.setContentType("text/html");
response.getWriter().println("<a href=\"" + url + "\">Next Page</a>");
}
}
🚩Основные моменты:
🟠Сохранение идентификатора сессии:
Идентификатор сессии передается как параметр URL, например: http://example.com/resource;jsessionid=1234567890.
🟠Безопасность:
URL Rewriting менее безопасен по сравнению с cookies, так как идентификатор сессии виден в URL и может быть легко скопирован.
Плюсы
Работает без cookies: Подходит для браузеров, где cookies отключены или не поддерживаются.
Минусы:
Безопасность: Идентификатор сессии виден в URL, что делает его более уязвимым к кражам.
Удобство использования: Требуется обновление всех ссылок и форм на странице для включения идентификатора сессии.
Ставь 👍 и забирай 📚 Базу знанийЯ уже устал.. долго учу Java, но так и не начал ходить по собесамУзнаешь себя? Наш знакомый эксперт в Java - Павел Сорокин, разобрал самые частые вопросы с которыми к нему обращаются люди на консультациях👇 1️⃣ Постоянно кажется, что я не готов. Процесс обучения длится уже больше 1.5 года, начинаю забывать основы, которые учил в начале. При обучении одна из самых больших ошибок - это распыление фокуса. Определяешь просто частые технологии и вопросы, которые задают на собесах и идешь строго по ним, не распыляясь писал об этом тут. Первые собесы - тренировочные. Можете от них вообще не ожидать никаких результатов, не надеятся - это ТРЕНИРОВКА. Страх будет всегда, его просто нужно принять и идти дальше. Страх возникает из-за неизвестности, неодобрения со стороны других. Даже если вы провалите собес, что самое плохое случится? Вас не убьют, ничего с вами не сделают, вы и также будете сидеть в своем уютном доме. Любой страх уничтожается действием. 2️⃣ Не понимаю насколько глубоко нужно изучать технологию Каждую технологию необходимо понимать ровно настолько, насколько она необходима тебе. Если работаешь с БД и нет каких-то больших нагрузок, то нет смысла углубляться устройство БД. Не нужно знать как Spring устроен под капотом для того, чтобы найти работу. Рациональный подход - просто учить минимальный достаточный набор и улучшать его по пути. 3️⃣ Конкуренция большая, на собеседования невозможно пробиться Конкуренции на самом деле не существует. Если ты обходишь своих конкурентов по резюме/софт-скиллам/хард-скиллам, то для тебя нет конкуренции, когда ты лучше всех. Единственное, что остается - обойти всех. О двух действенных способах пройти на собес рассказал в полной версии поста ‼️ В своем канале Паша дает много информации по вкату и развитию в Java, можно начать ознакомление с его каналом с этого поста с разбором базовых вопросов на собеседованиях. Также у Паши есть отличные бесплатные видео-материалы - полный гайд по Java Core и Многопоточке и реальное успешное собеседование на Junior Java. Можете забрать их в его боте.
HttpServletRequest `getCookies()`: Возвращает массив всех cookies, отправленных с текущим запросом.
Cookie[] cookies = request.getCookies();
🟠Класс HttpServletResponse:`addCookie(Cookie cookie)`: Добавляет указанную cookie в ответ сервлета.
Cookie cookie = new Cookie("name", "value");
response.addCookie(cookie);
🚩Основные методы класса `Cookie`:
🟠Конструктор:
Cookie cookie = new Cookie("name", "value");
🟠`setMaxAge(int expiry)`: Устанавливает время жизни cookie в секундах.
cookie.setMaxAge(60 * 60 * 24); // 1 день
🟠`setPath(String uri)`: Устанавливает путь, для которого cookie действительна.
cookie.setPath("/app");
🟠`setDomain(String domain)`: Устанавливает домен, для которого cookie действительна.
cookie.setDomain(".example.com");
🟠`setSecure(boolean flag)`: Устанавливает флаг secure для HTTPS.
cookie.setSecure(true);
🟠`setHttpOnly(boolean isHttpOnly)`: Устанавливает флаг HttpOnly для защиты от доступа через JavaScript.
cookie.setHttpOnly(true);
🚩Примеры:
🟠Установка cookie:
Cookie cookie = new Cookie("username", "JohnDoe");
cookie.setMaxAge(60 * 60 * 24); // 1 день
response.addCookie(cookie);
🟠Получение cookie:
Cookie[] cookies = request.getCookies();
for (Cookie cookie : cookies) {
if ("username".equals(cookie.getName())) {
String username = cookie.getValue();
}
}
Ставь 👍 и забирай 📚 Базу знаний