Please open Telegram to view this post
VIEW IN TELEGRAM
🤣5
Как HashMap устроен внутри
• Вычисляет хеш ключа.
• Определяет индекс корзины во внутреннем массиве.
• Сохраняет запись в узле с хешем, ключом и значением.
• При коллизиях использует связный список, а начиная с Java 8 при определённых условиях преобразует его в красно-чёрное дерево.
Если такой ключ уже существует,
👉 Java Portal
• Вычисляет хеш ключа.
• Определяет индекс корзины во внутреннем массиве.
• Сохраняет запись в узле с хешем, ключом и значением.
• При коллизиях использует связный список, а начиная с Java 8 при определённых условиях преобразует его в красно-чёрное дерево.
Если такой ключ уже существует,
put() заменяет его значение.Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Java, Spring Boot, React, микросервисы… А чем веб-сервер отличается от сервера приложений?
У кандидата в резюме несколько full-stack проектов и внушительный стек. Но простой вопрос на собеседовании поставил его в тупик.
• Веб-сервер принимает HTTP-запросы, отдаёт статические файлы и может перенаправлять запросы приложению как reverse proxy. Примеры: Nginx, Apache HTTP Server.
• Сервер приложений предоставляет среду для выполнения приложения и его бизнес-логики. В экосистеме Java примеры — WildFly и Payara.
При этом граница не строгая: сервер приложений может сам принимать HTTP-запросы. Например, Spring Boot со встроенным Tomcat способен обслуживать их без отдельного Nginx, хотя Tomcat точнее называть контейнером сервлетов.
Собрать проект из десяти технологий полезно. Понимать, за что отвечает каждая, — не менее важно.
👉 Java Portal
У кандидата в резюме несколько full-stack проектов и внушительный стек. Но простой вопрос на собеседовании поставил его в тупик.
• Веб-сервер принимает HTTP-запросы, отдаёт статические файлы и может перенаправлять запросы приложению как reverse proxy. Примеры: Nginx, Apache HTTP Server.
• Сервер приложений предоставляет среду для выполнения приложения и его бизнес-логики. В экосистеме Java примеры — WildFly и Payara.
При этом граница не строгая: сервер приложений может сам принимать HTTP-запросы. Например, Spring Boot со встроенным Tomcat способен обслуживать их без отдельного Nginx, хотя Tomcat точнее называть контейнером сервлетов.
Собрать проект из десяти технологий полезно. Понимать, за что отвечает каждая, — не менее важно.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
3 бесплатных ресурса для изучения Java
• Effective Java — конспект — основные идеи книги Джошуа Блоха о том, как писать качественный Java-код.
• Java Design Patterns — паттерны проектирования с объяснениями и примерами реализации на Java.
• Подготовка к собеседованиям — алгоритмы, структуры данных и примеры решений на Java.
Сохраняйте, чтобы вернуться к практике
👉 Java Portal
• Effective Java — конспект — основные идеи книги Джошуа Блоха о том, как писать качественный Java-код.
• Java Design Patterns — паттерны проектирования с объяснениями и примерами реализации на Java.
• Подготовка к собеседованиям — алгоритмы, структуры данных и примеры решений на Java.
Сохраняйте, чтобы вернуться к практике
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5
Java-совет: делайте строки понятнее с String.format()
Если сообщение состоит из множества фрагментов и переменных, шаблон может быть удобнее цепочки
✅ Шаблон отделён от значений.
✅ Проще менять структуру сообщения и добавлять поля.
✅ Для локализуемых сообщений с числами и датами пригодится
Для простых строк конкатенация вполне уместна: выбирайте форматирование ради читаемости, а не скорости.
👉 Java Portal
Если сообщение состоит из множества фрагментов и переменных, шаблон может быть удобнее цепочки
+:String message = String.format(
"Пользователь %s оформил %d заказов",
name, orderCount
);
✅ Шаблон отделён от значений.
✅ Проще менять структуру сообщения и добавлять поля.
✅ Для локализуемых сообщений с числами и датами пригодится
MessageFormat.Для простых строк конкатенация вполне уместна: выбирайте форматирование ради читаемости, а не скорости.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5
Описывайте состояния через enum вместо строк
Именованные константы помогают избежать опечаток в статусах и явно задают набор состояний.
✅ Используйте
✅ Держите правила допустимых переходов рядом с описанием состояний.
✅ Используйте проверку полноты
Но enum сам по себе не запрещает неверные переходы — эту логику нужно реализовать отдельно.
👉 Java Portal
Именованные константы помогают избежать опечаток в статусах и явно задают набор состояний.
✅ Используйте
PENDING, APPROVED, REJECTED вместо произвольных строк.✅ Держите правила допустимых переходов рядом с описанием состояний.
✅ Используйте проверку полноты
switch, если язык и выбранная конструкция её поддерживают.Но enum сам по себе не запрещает неверные переходы — эту логику нужно реализовать отдельно.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Почему большинство объектов в Java «умирают молодыми»?
Приложение может создавать миллионы объектов:
Многие нужны лишь на время выполнения метода, обработки запроса или промежуточного вычисления. Когда объект становится недостижимым, сборщик мусора может освободить его память.
На этом наблюдении основана слабая поколенческая гипотеза: большинство объектов живут недолго. Поколенческие сборщики мусора используют её так:
• Новые объекты обычно размещаются в молодом поколении.
• Оно очищается чаще: сборщик сохраняет выжившие объекты и освобождает остальную память.
• Достаточно долго живущие объекты переводятся в старое поколение, которое собирается реже.
Так GC может освобождать память короткоживущих объектов, не обрабатывая каждый раз всю кучу.
👉 Java Portal
Приложение может создавать миллионы объектов:
for (int i = 0; i < 1_000_000; i++) {
User user = new User();
}Многие нужны лишь на время выполнения метода, обработки запроса или промежуточного вычисления. Когда объект становится недостижимым, сборщик мусора может освободить его память.
На этом наблюдении основана слабая поколенческая гипотеза: большинство объектов живут недолго. Поколенческие сборщики мусора используют её так:
• Новые объекты обычно размещаются в молодом поколении.
• Оно очищается чаще: сборщик сохраняет выжившие объекты и освобождает остальную память.
• Достаточно долго живущие объекты переводятся в старое поколение, которое собирается реже.
Так GC может освобождать память короткоживущих объектов, не обрабатывая каждый раз всю кучу.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1