Java Backend | YeaHub
709 subscribers
171 photos
23 videos
2 files
310 links
Теория, подготовка к интервью и курсы для Java разработчиков

YeaHub — это платформа для IT-специалистов, объединяющая обучение, карьерный рост, развитие и сообщество единомышленников.

Платформа: https://yeahub.ru

Для связи: @ruslan_kuyanets
Download Telegram
#Собес #kubernetes
🤔 Что такое Deployment в Kubernetes?

💬 Кратко:
Deployment - это объект Kubernetes, который управляет созданием, обновлением и масштабированием Pod-ов. Он позволяет автоматизировать развертывание приложений, обеспечивать отказоустойчивость и откатывать неудачные обновления.

📌 Полный разбор + примеры использования — на платформе:
👉
Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
Объяснение 8 популярных сетевых протоколов в одной диаграмме.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🤣 Слышал когда-нибудь про объект, который отказывается умирать?

В Java можно «воскресить» объект во время сборки мусора с помощью метода finalize(). Но это — рискованная практика, и сам метод уже помечен как устаревший.

Этот код демонстрирует поведение метода finalize() в Java — он вызывается только один раз перед удалением объекта сборщиком мусора. В КПпервой попытке объект «воскрешается» внутри finalize, но при повторной попытке finalize уже не вызывается, и объект действительно удаляется.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🤣 Модель памяти в Java

Java управляет памятью в двух основных областях:

- Stack (стековая память) — хранит фреймы вызова методов и локальные переменные. Работает быстро и автоматически очищается при выходе из метода.

- Heap (куча) — используется для хранения объектов, созданных через new. Управляется сборщиком мусора (Garbage Collector), работает медленнее, но даёт больше гибкости.

Объекты всегда размещаются в куче (heap).
Ссылки на эти объекты (например, локальные переменные) хранятся в стеке (stack).
Неправильное управление созданием объектов или удержание ссылок дольше, чем нужно, может привести к утечкам памяти (memory leaks).

public class MemoryDemo {
public static void main(String[] args) {
int x = 10; // Хранится в стеке
Person p = new Person("Alice"); // 'p' находится в стеке, объект — в куче

p.sayHello(); // Вызов метода создаёт новый стек-фрейм
}
}

class Person {
String name; // Поле хранится в куче вместе с объектом

Person(String name) {
this.name = name;
}

void sayHello() {
System.out.println("Hello, " + name);
}
}


👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Middle+ Java Backend разработчик в компанию Госуслуги

Техническое собеседование. Лето 2024. Вилка: 300-350к. Опыт в резюме: 4+ года. В конце собеседования были задачи на структуры данных, оптимизацию запросов и работу с БД.

Вопросы:
- Как логировать время выполнения методов в бинах Spring унифицированно?
- Как централизованно обрабатывать исключения в REST-контроллерах?
- Как работает @Transactional и что происходит, если метод без аннотации вызывает метод с аннотацией?
- Как спроектировать доступ к балансам пользователей из разных потоков, чтобы операции были консистентны?

Все вопросы можно посмотреть на нашей платформе

#собес #коллеции
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👍1
#Собес #kubernetes
🤔 Что такое CNI (Container Networking Interface) в Kubernetes?

💬 Кратко:
CNI - это спецификация, определяющая стандартный интерфейс для подключения сетевых плагинов в Kubernetes. Она позволяет расширять сетевые возможности кластера, добавляя такие решения, как Calico, Flannel и Cilium.

📌 Полный разбор + примеры использования — на платформе:
👉
Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1🔥1
#статьи
❤️‍🔥 Вредные советы Java

Автор показывает соблазн простого распараллеливания задач на Java через Stream API и .parallel() вместо явных ExecutorService, Future, invokeAll и ручной обработки InterruptedException

Однако такой подход использует common ForkJoinPool, и его поведение не всегда предсказуемо, результаты могут отличаться между запусками, особенно при исключениях в задачах
(callsCounter может сильно варьироваться)

Если в процессе одна из задач выбрасывает Exception, выполнение остальных может продолжаться
даже после возврата ошибки.

Параллельные стримы группируют задачи по частям коллекции, и минимальной единицей
может быть блок из нескольких элементов, это может привести к «неравномерной» нагрузке и даже ухудшению производительности по сравнению с ручным управлением через ExecutorService.

Блокирующие операции внутри задач могут полностью "забить" common ForkJoinPool, что повлияет и на выполнение CompletableFuture.thenApplyAsync(), если вы не указали свой Executor
Читать подробнее<...>

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1