TG Telegram Group Link
Channel: JavaRocks
Back to Bottom
This media is not supported in your browser
VIEW IN TELEGRAM
Python vs Java

На каком языке легче найти работу?

Согласны 👍 если нет то 👎?
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Расскажи про способы оптимизации запросов в БД

Оптимизация запросов в базе данных (БД) — это процесс улучшения их производительности, чтобы они выполнялись быстрее и использовали меньше ресурсов. Рассмотрим основные способы оптимизации SQL-запросов.

🟠Индексы
Индексы ускоряют поиск данных, создавая структуру, похожую на оглавление книги. Вместо полного перебора таблицы (Full Table Scan), БД быстро находит нужные строки по индексу.
CREATE INDEX idx_user_name ON users(name);


🟠Оптимизация `SELECT`
Избегайте SELECT *, так как это нагружает систему избыточными данными.
Плохо
SELECT * FROM users;


Хорошо
SELECT id, name FROM users;


🟠Использование `EXPLAIN`
Перед оптимизацией полезно посмотреть, как БД выполняет запрос.
EXPLAIN SELECT * FROM users WHERE name = 'Ivan';


🟠Ограничение выборки (`LIMIT`, `OFFSET`)
Если вам нужно получить только первые N строк, используйте LIMIT, чтобы БД не грузила лишние данные.
SELECT * FROM users ORDER BY id LIMIT 10;


🟠Оптимизация `JOIN`
Соединение (JOIN) таблиц может быть дорогостоящим. Вот несколько рекомендаций:
- Используйте индексы на полях, участвующих в JOIN.
- Если возможно, замените сложные JOIN на подзапросы (EXISTS, IN).
CREATE INDEX idx_orders_user_id ON orders(user_id);


🟠Кеширование запросов
Часто повторяющиеся запросы можно кэшировать на уровне БД (QUERY CACHE в MySQL) или в приложении (Redis, Memcached).
SET GLOBAL query_cache_size = 1000000;


🟠Нормализация и денормализация
Нормализация уменьшает дублирование данных, разбивая таблицы.
Денормализация может ускорить работу, дублируя данные и уменьшая количество JOIN.

Ставь 👍 и забирай 📚 Базу Java книг
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Можно ли одновременно использовать в сервлете PrintWriter и ServletOutputStream?

Нет, их одновременное использование в одном ответе запрещено. Это связано с тем, что использование одного из них фиксирует тип потока (символьный или байтовый), и дальнейшая попытка использовать другой поток вызовет исключение IllegalStateException. Вы должны выбрать только один подходящий поток для формирования ответа.

Ставь 👍 если знал ответ, 🔥 если нет
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопрос с собеседования

Что произойдет с ArrayList, если из него удалить почти все элементы?

Ответ: Размер внутреннего массива ArrayList не уменьшается автоматически после удаления элементов. Например, если в списке было 1 000 000 элементов, а осталось 100, он все равно занимает память для миллиона элементов, пока не будет вызван trimToSize().

👉 Java Rocks | #собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
Упаси господь

👉 Java Rocks | #мемы
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Как выучить язык программирования Java

👉 Java Rocks
Please open Telegram to view this post
VIEW IN TELEGRAM
🚫 Антипаттерн недели: Использование == для сравнения строк

В Java строки (String) — это объекты, а оператор == сравнивает ссылки, а не их содержимое. Это может привести к неожиданным ошибкам при сравнении строк, особенно если строки создаются динамически.

✔️ Используйте метод equals(), который сравнивает содержимое строк, а не ссылки.

👉 Java Rocks | #полезное
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопрос с собеседования

Что такое "dependency hell", и как его избежать в Java-проектах?

Ответ: Dependency Hell — это ситуация, когда разные библиотеки требуют несовместимых версий одних и тех же зависимостей. Решения:

▶️ Использовать mvn dependency:tree или gradle dependencies

▶️ Контролировать версии через BOM

▶️ Ограничивать транзитивные зависимости (exclude в pom.xml или exclude module в Gradle)

👉 Java Rocks | #собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
От Java к Kotlin

Авторы:
Дункан Макгрегор, Нэт Прай
Год издания: 2023

#java #kotlin #ru #книга

Скачать книгу
Паттерн Посетитель (Visitor)

Visitor — это поведенческий паттерн, который позволяет добавлять новые операции к объектам без изменения их классов. Он выделяет операции в отдельный объект, называемый "посетитель", что позволяет избежать дублирования кода и поддерживать open/closed архитектуру.

Использование:

🟡Когда нужно добавлять новые операции к иерархии классов без изменения их структуры.
🟡Когда объектам требуется обработка, зависящая от их типов, но нежелательно добавлять логику внутрь самих классов.

Преимущества:

1️⃣ Упрощает добавление новых операций.
2️⃣ Логика работы концентрируется в одном месте, а не размазывается по классам.
3️⃣ Сохраняется открытость к изменениям операций и закрытость классов к модификациям.

Недостатки:


1️⃣ Увеличивает количество классов.
2️⃣ Добавление нового типа в иерархию требует обновления всех существующих посетителей.
3️⃣ Работает лучше всего с фиксированной иерархией.

📌 Visitor идеально подходит для сценариев, где требуется частое добавление новых операций при сохранении стабильности классов.

👉 Java Rocks #паттерны
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопрос с собеседования

Почему строка популярна в качестве ключа в HashMap?

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

👉 Java Rocks | #собеседование
Вопрос с собеседования

Поддерживает ли Java множественное наследование классов?

Ответ: Java не позволяет классу наследоваться сразу от нескольких классов, так как это может привести к конфликтам при разрешении методов.

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


tags: #собеседование

👉 Java Rocks | #собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопрос с собеседования

Что нужно делать для того, чтобы метод принимал и возвращал значения?

Ответ: Метод должен:
1. Принимать параметры – через сигнатуру метода.
2. Иметь return – если должен возвращать значение.


tags: #собеседование

👉 Java Rocks | #собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
Java: устранение проблем

Автор:
Лауренциу Спилкэ
Год издания:
2023

Скачать книгу

👉 Java Rocks | #книга
Please open Telegram to view this post
VIEW IN TELEGRAM
HTML Embed Code:
2025/07/05 06:45:18
Back to Top