#полезное
🤓 Сравнение Comparator и Comparable в Java
Comparable — для встроенной сортировки. Допустим
Comparator — для гибкой сортировки. К примеру, сортировка списка по разным полям
👉 Новости 👉 База вопросов
Comparable — для встроенной сортировки. Допустим
string, Integer
Comparator — для гибкой сортировки. К примеру, сортировка списка по разным полям
Please open Telegram to view this post
VIEW IN TELEGRAM
#собес
🤔 Что такое примитивные классы?
Тримитивные классы - это классы -обертки для примитивных типов данных, которые позволяют использовать примитивы как объекты. Например,
👉 Новости 👉 База вопросов
Тримитивные классы - это классы -обертки для примитивных типов данных, которые позволяют использовать примитивы как объекты. Например,
Integer
для типа int
, Double
для типа double
.Please open Telegram to view this post
VIEW IN TELEGRAM
YeaHub
YeaHub — тренажер собеседований по IT
5000+ вопросов для подготовки к интервью. Фильтры, квизы, статистика!
Пирамида тестирования Java
1⃣ Unit-тесты (JUnit, Mockito) — проверяют отдельные методы и классы.
🟠 Самые быстрые
🟠 Легко писать
🟠 Ловят баги на старте
Пиши как можно больше
2⃣ Integration-тесты (Testcontainers) — тестируют взаимодействие между модулями (например, сервис <-> база).
🟠 Работают с реальными зависимостями
🟠 Помогают избежать сюрпризов на проде
3⃣ API-тесты (Postman, RestAssured) — проверяют REST-эндпоинты.
🟠 Тесты бизнес-логики
🟠 Можно автоматизировать или делать вручную
4⃣ UI-тесты (Selenium) — имитируют действия пользователя.
🟠 Медленные
🟠 Ломаются чаще
Используй по минимуму, только для самых важных сценариев
👉 Новости 👉 База вопросов
Пиши как можно больше
Используй по минимуму, только для самых важных сценариев
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Зачем нужен Spring Framework?
Spring Framework - это мощный инструмент для упрощения разработки приложений. Он предоставляет механизм управления зависимостями (Dependency Injection), гибкость конфигурации, интеграцию с различными технологиями и поддержку создания веб-приложений. Благодаря своей модульности и широким возможностям, Spring подходит как для небольших проектов, так и для крупных корпоративных систем.
👉 Новости 👉 База вопросов
Spring Framework - это мощный инструмент для упрощения разработки приложений. Он предоставляет механизм управления зависимостями (Dependency Injection), гибкость конфигурации, интеграцию с различными технологиями и поддержку создания веб-приложений. Благодаря своей модульности и широким возможностям, Spring подходит как для небольших проектов, так и для крупных корпоративных систем.
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
🤓 23 шаблона проектирования для 99% разработчиков на Java
В этом исчерпывающем руководстве мы изучим все важные шаблоны ООП для написания кода.
Шаблоны проектирования — это испытанный способ решения проблемы в заданном контексте. Они скорее открыты, нежели придуманы, что очевидно и из применения слова «шаблон». Используя шаблон проектирования, вы получаете знания всех сообществ для безопасного решения этой проблемы.
Читать статью
👉 Новости 👉 База вопросов
В этом исчерпывающем руководстве мы изучим все важные шаблоны ООП для написания кода.
Шаблоны проектирования — это испытанный способ решения проблемы в заданном контексте. Они скорее открыты, нежели придуманы, что очевидно и из применения слова «шаблон». Используя шаблон проектирования, вы получаете знания всех сообществ для безопасного решения этой проблемы.
Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
VK
23 шаблона проектирования для 99% разработчиков на Java
В этом исчерпывающем руководстве мы изучим все важные шаблоны ООП для написания кода.
#полезное
🥺 Графовые алгоритмы — шпаргалка для Java Developer
Сводная таблица по всем основным алгоритмам на графах: обход, кратчайшие пути, минимальные остовные деревья, циклы, топология, компоненты связности и продвинутые техники
👉 Новости 👉 База вопросов
Сводная таблица по всем основным алгоритмам на графах: обход, кратчайшие пути, минимальные остовные деревья, циклы, топология, компоненты связности и продвинутые техники
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Какой жизненный цикл Spring Beans?
Жизненный цикл Spring Bean состоит из этапов создания, настройки зависимостей, инициализации, использования и уничтожения. Контейнер автоматически выполняет все эти шаги, вызывая методы, такие как
👉 Новости 👉 База вопросов
Жизненный цикл Spring Bean состоит из этапов создания, настройки зависимостей, инициализации, использования и уничтожения. Контейнер автоматически выполняет все эти шаги, вызывая методы, такие как
@PostConstruct
для настройки перед использованием и @PreDestroy
ДЛЯ завершения работы. Пользователи могут настраивать этапы жизненного цикла через интерфейсы или аннотации.Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
Особенности Java Records
🟠 Снижение шаблонного кода — Нет необходимости вручную писать конструкторы,
геттеры,
🟠 Неизменяемы по умолчанию — все поля являются final
🟠 Эффективны по памяти — JVM оптимизирует выделение памяти.
🟠 Без дополнительных зависимостей — являются частью Java с версии 14
🟠 Инкапсуляция — данные хорошо структурированы и неизменяемы.
Ограничения Java Records
🟠 Нет сеттеров — поля final и не могут быть изменены
🟠 Нельзя расширять классы — Records неявно являются final и не могут наследоваться от других классов.
🟠 Ограниченная настройка — не поддерживают аннотации вроде
👉 Новости 👉 База вопросов
Особенности Java Records
геттеры,
equals(), hashCode() и toString()
Ограничения Java Records
@JsonIgnore
для полейPlease open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👍 hibernate-orm — популярный фреймворк для Java, который упрощает взаимодействие между объектно-ориентированными приложениями и реляционными базами данных!
Hibernate реализует спецификацию JPA (Java Persistence API) и предоставляет дополнительные возможности для работы с базами данных, такие как кэширование и трансакции.
Гитхаб
👉 Новости 👉 База вопросов
Hibernate реализует спецификацию JPA (Java Persistence API) и предоставляет дополнительные возможности для работы с базами данных, такие как кэширование и трансакции.
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 Динамический массив
В Java динамический массив представляет собой структуру данных, которая позволяет хранить и управлять коллекцией элементов переменного размера.
Он реализуется с помощью класса ArrayList. ArrayList представляет собой реализацию списка, который может изменять свой размер по мере необходимости.
👉 Новости 👉 База вопросов
В Java динамический массив представляет собой структуру данных, которая позволяет хранить и управлять коллекцией элементов переменного размера.
Он реализуется с помощью класса ArrayList. ArrayList представляет собой реализацию списка, который может изменять свой размер по мере необходимости.
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Что такое Bean?
Bean в Spring - это объект, который управляется контейнером Spring loC (Inversion of Control). Бины обычно создаются, настраиваются и используются для инкапсуляции бизнес-логики, управления данными или предоставления сервисов. Контейнер Spring автоматически управляет жизненным циклом бина, его зависимостями и настройками.
👉 Новости 👉 База вопросов
Bean в Spring - это объект, который управляется контейнером Spring loC (Inversion of Control). Бины обычно создаются, настраиваются и используются для инкапсуляции бизнес-логики, управления данными или предоставления сервисов. Контейнер Spring автоматически управляет жизненным циклом бина, его зависимостями и настройками.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
👨💻 Сортировка пузырьком
Один из самых простых алгоритмов сортировки
👉 Новости 👉 База вопросов
Один из самых простых алгоритмов сортировки
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🤓 Миграция от монолита к микросервисам в Spring Boot Java
🟠 Определите границы контекста —> используйте Domain-Driven Design (DDD) для логического разделения модулей
🟠 Модульность внутри приложения —> применяйте модули и пакеты Spring для изоляции сервисов
🟠 Вынос в микросервисы —> начинайте перенос модулей (например, пользователь, заказы) в отдельные сервисы
🟠 Внедрение API Gateway и сервис-дискавери —> используйте Spring Cloud Gateway и Eureka/Nacos
🟠 Безопасность взаимодействия —> добавьте уровни безопасности OAuth2/JWT
🟠 CI/CD пайплайн —> автоматизируйте сборку, тестирование и деплой с помощью Jenkins/GitHub Actions
👉 Новости 👉 База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😇 Уровни доступа при наследовании
Подкласс:
private —> Не видно в подклассе
default —> Видно, если в одном пакете
protected —> Видно в подклассе
public —> Видно всем
👉 Новости 👉 База вопросов
Подкласс:
private —> Не видно в подклассе
default —> Видно, если в одном пакете
protected —> Видно в подклассе
public —> Видно всем
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Какие Spring Scope знаешь?
Основные области видимости Spring: Singleton, Prototype, Request, Session, Application, WebSocket.
👉 Новости 👉 База вопросов
Основные области видимости Spring: Singleton, Prototype, Request, Session, Application, WebSocket.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😴 ByteArrayOutput
Stream.writeTo()
Метод
👉 Новости 👉 База вопросов
Stream.writeTo()
Метод
ByteArrayOutputStream.writeTo()
позволяет записывать содержимое байтового массива (ByteArrayOutputStream
) напрямую в другой выходной поток (OutputStream
). Это удобно, когда нужно перенаправить данные, например, в файл или сетевой сокет, без промежуточного копирования.Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
📞 Pattern.asMatch
Predicate()
Метод
👉 Новости 👉 База вопросов
Predicate()
Метод
Pattern.asMatchPredicate()
, добавленный в Java 11, позволяет преобразовать регулярное выражение в предикат, который можно использовать для фильтрации потоков или проверки строк на полное совпадение с шаблоном.Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
🤯 Быстрее находите и устраняйте ошибки в коде с IntelliJIDEA
Используйте
Куда бы ни был установлен курсор, IDE сразу перенесёт вас к проблеме с полезными объяснениями и предложениями по быстрому исправлению
👉 Новости 👉 База вопросов
Используйте
⇧F2
(macOS) / Shift + F2
(Windows, Linux), чтобы переходить между проблемами.Куда бы ни был установлен курсор, IDE сразу перенесёт вас к проблеме с полезными объяснениями и предложениями по быстрому исправлению
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 В чем разница между = = и equals()?
Оператор
👉 Новости 👉 База вопросов
Оператор
==
сравнивает ссылки на объекты, то есть проверяет, указывают ли две переменные на один и тот же объект в памяти. Метод equals()
сравнивает содержимое объектов, что важно, если нужно проверить равенство значений объектов.Please open Telegram to view this post
VIEW IN TELEGRAM
#ЛитКод
Задача: 563. Binary Tree Tilt
Дано корневое значение бинарного дерева. Вернуть сумму значений наклонов всех узлов дерева.
Наклон узла дерева - это абсолютная разница между суммой всех значений узлов левого поддерева и всех значений узлов правого поддерева. Если у узла нет левого потомка, то сумма значений узлов левого поддерева считается равной 0. То же правило применяется, если у узла нет правого потомка.
Пример:
👨💻 Алгоритм:
1⃣ Определите рекурсивную функцию, которая вычисляет сумму значений узлов поддерева и наклон текущего узла.
2⃣ Для каждого узла вычислите сумму значений левого и правого поддерева, а также их наклон, добавляя наклон к общей сумме.
3⃣ Верните общую сумму наклонов всех узлов.
😎 Решение:
👉 Новости 👉 База вопросов
Задача: 563. Binary Tree Tilt
Дано корневое значение бинарного дерева. Вернуть сумму значений наклонов всех узлов дерева.
Наклон узла дерева - это абсолютная разница между суммой всех значений узлов левого поддерева и всех значений узлов правого поддерева. Если у узла нет левого потомка, то сумма значений узлов левого поддерева считается равной 0. То же правило применяется, если у узла нет правого потомка.
Пример:
Input: root = [1,2,3]
Output: 1
Explanation:
Tilt of node 2 : |0-0| = 0 (no children)
Tilt of node 3 : |0-0| = 0 (no children)
Tilt of node 1 : |2-3| = 1 (left subtree is just left child, so sum is 2; right subtree is just right child, so sum is 3)
Sum of every tilt : 0 + 0 + 1 = 1
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode() {}
TreeNode(int val) { this.val = val; }
TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}
public class Solution {
private int totalTilt = 0;
public int findTilt(TreeNode root) {
sumAndTilt(root);
return totalTilt;
}
private int sumAndTilt(TreeNode node) {
if (node == null) {
return 0;
}
int leftSum = sumAndTilt(node.left);
int rightSum = sumAndTilt(node.right);
int nodeTilt = Math.abs(leftSum - rightSum);
totalTilt += nodeTilt;
return node.val + leftSum + rightSum;
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👍 JWT vs Сессии — что выбрать для авторизации?
Кратко и наглядно разобрали плюсы и минусы двух популярных подходов
👉 Новости 👉 База вопросов
Кратко и наглядно разобрали плюсы и минусы двух популярных подходов
Please open Telegram to view this post
VIEW IN TELEGRAM