Java tests
Відкрити в Telegram
Java задачи и тесты По всем вопросам- @workakkk @itchannels_telegram - 🔥лучшие ит-каналы @pythonl - 🐍 @ai_machinelearning_big_data- ml @ArtificialIntelligencedl - AI @datascienceiot - ml 📚 @pythonlbooks-📚
Показати більше2 434
Підписники
-424 години
-147 днів
-2730 день
Архів дописів
2 435
Вам доклады по Go или Java? VK приглашает на митап с двойной начинкой
26 августа VK собирает Go- и Java-инженеров, чтобы прокачать знания.
В программе два трека — Go и Java, по три доклада в каждом.
Трек Go:
• «Компиляция Go в динамическую либу, или как мы ускорили выкатку фичи в два раза, но нам не понравилось», Михаил Кичигин, бэкенд-разработчик, Avito Tech
• «Go-платформа VK: как мы построили единую основу для создания Go-сервисов», Александр Апанасенко, руководитель команды SDK Backend, VK
• «Почтальон от Kubernetes до Palo Alto. Как осуществляется доставка информации об адресах», Дарья Кулькина, бэкенд-разработчик, Точка Банк
Трек Java:
• «Перформанс-трюки в поисковой платформе Ozon», Пётр Портнов, ведущий разработчик среднего поиска, Ozon
• «Архитектура современного движка платёжной системы и переход к новой архитектуре», Игорь Крикунов, технический лидер разработки DBC, Альфа-Банк
• «Переход от федерации S3-кластеров в пользу коммунального и мультитенантного кластера», Кирилл Боблак, ведущий разработчик One-cloud, VK
А ещё будет мастер-класс по прокачке навыка, который сделает вас звездой любого вечера, и афтепати, чтобы обсудить доклады в неформальной обстановке.
Встречаемся в 17:00, начало в 18:00. Участие бесплатное, регистрация обязательна.
2 435
☕ Java-баг, который выглядит нормально, но ломает `HashMap`
Что выведет этот код?
Map<List<Integer>, String> map = new HashMap<>();
List<Integer> key = new ArrayList<>(List.of(1, 2));
map.put(key, "Ritesh");
key.add(3);
System.out.println(map.get(key));
Многие ожидают:
Ritesh
Но результат:
```text
null
```
Почему?
HashMap ищет ключ через:
```java
hashCode()
equals()
```
Когда мы сделали:
```java
map.put(key, "Ritesh");
```
ключ был:
```text
[1, 2]
```
У него был один hashCode.
Но потом:
```java
key.add(3);
```
ключ стал:
```text
[1, 2, 3]
```
И его hashCode изменился.
HashMap уже положил объект в bucket по старому hash, а при get() ищет по новому.
Схема:
```text
put()
[1,2]
hash = X
↓
bucket X
key.add(3)
[1,2,3]
hash = Y
get()
ищем bucket Y
→ запись не найдена
```
Главное правило:
❌ Не изменяйте объект после того, как использовали его как ключ в HashMap.
Лучше использовать:
✅ String
✅ Integer
✅ record
✅ immutable-объекты
Например:
```java
Map<List<Integer>, String> map = new HashMap<>();
List<Integer> key = List.of(1, 2);
map.put(key, "value");
```
Самые опасные баги в Java - те, где объект всё ещё существует, ссылка всё та же, но структура данных уже не может его нормально найти.
#java #backend #programming2 435
❓Что из вариантов лучше всего описывается определением: Операция, которая содержит серию задач, которые должны быть выполнены либо все, либо не выполнена ни одна.
2 435
🔴 Завтра тестовое собеседование с Java-разработчиком
1 июля(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика.
Как это будет:
📂 Виктор Анохин, старший разработчик из WildBerries, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Виктор будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Виктору
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot
Реклама.
О рекламодателе.
2 435
🔴 Завтра тестовое собеседование с Java-разработчиком
10 июня(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика.
Как это будет:
📂 Виктор Анохин, старший разработчик из WildBerries, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Виктор будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Виктору
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot
Реклама.
О рекламодателе.
2 435
⚙️ Динамическое изменение поведения объектов с помощью InvocationHandler и Proxy
В Java можно динамически изменять поведение объектов, используя
InvocationHandler и Proxy.
🗣️ Это полезно для создания прокси-объектов, которые могут оборачивать существующие объекты и добавлять новые функции, такие как логирование, кеширование или контроль доступа.
• InvocationHandler позволяет перехватывать вызовы методов у прокси-объекта и добавлять дополнительное поведение, такое как логирование.
• Использование Proxy позволяет динамически создавать новый объект, который ведет себя как реальный объект, но с добавленным поведением.
• Этот подход позволяет добавлять новое поведение к существующим объектам без изменения их кода, что делает его мощным инструментом для реализации аспектно-ориентированного программирования (AOP).2 435
🔴 Сегодня тестовое собеседование с Java-разработчиком
Уже сегодня в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика.
Как это будет:
📂 Виктор Анохин, старший разработчик из WildBerries, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Виктор будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Виктору
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot
Реклама.
О рекламодателе.
2 435
⚡️ Перестаём писать методы с 7+ параметрами
Если сигнатура выглядит как:
createUser(firstName, lastName, email, phone, address, city, country)
Это уже сигнал, что модель данных развалилась.
Проблема не только в читаемости.
Такие методы сложнее поддерживать, расширять и тестировать. Любое изменение ломает сигнатуру и тянет за собой каскад правок.
Нормальный вариант - собрать связанные данные в объект:
UserInfo userInfo
Получаем:
- чище API
- проще добавлять поля
- меньше ошибок при передаче параметров
- код начинает отражать доменную модель, а не список строк
Это базовый приём, но именно на нём чаще всего экономят, а потом платят сложностью.2 435
⚡️ Java лайфхак: не убивай производительность боксингом
Многие даже не замечают, как теряют скорость из-за автoboxing в Stream API.
❌ Плохо (создаются объекты Integer):
Stream boxed = Stream.of(1, 2, 3, 4, 5);
int sum = boxed.reduce(0, Integer::sum);
Каждое число → объект → лишняя память + нагрузка на GC
✅ Хорошо (работа с примитивами):
int sum = IntStream.of(1, 2, 3, 4, 5).sum();
Без лишних объектов. Быстрее. Чище.
Запомни:
- IntStream → для int
- LongStream → для long
- DoubleStream → для double
Если работаешь с числами — всегда используй primitive streams.
Это мелочь, которая на больших данных превращается в реальную экономию ресурсов.
Сохрани, чтобы не писать медленный код.
