TGViewer
Channel Public Channel
Java Backend | YeaHub

Java Backend | YeaHub

@yeahub_java_backend

Теория, подготовка к интервью и курсы для Java разработчиков

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

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

Для связи: @ruslan_kuyanets
Subscribers
920
Photos
360
Videos
28
Links
605

Showing posts older than #348 · Back to latest

Older Posts 20 shown
Post #347 369
#Собес #kubernetes
🤔 Что такое Deployment в Kubernetes?

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

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

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Post #346 376
#полезное
🛞 Сохраняем себе: Jimmer

это иммутабельный ORM, заточенный под работу с графами объектов, а не отдельными сущностями.

🔵Авто-генерация DTO
🔵Без N+1 (batch fetch из коробки)
🔵Умные SQL без лишних JOIN'ов
🔵DSL с type-safety
🔵GraphQL + TypeScript-генерация
🔵Кеширование (включая Redis)
🔵Работает через APT/KSP

⇢ https://github.com/babyfish-ct/jimmer

👉Новости 👉База вопросов
  • 👍 1
Post #345 420
#полезное
🥄 Google-json (GSON)

Google-json — библиотека прямиком из Google. Она реализует механизмы работы с форматом JSON, а именно приведение Java-объектов в этот формат и обратно.

Как видно на картинке, перевод объекта проходит с помощью минимального количества легко читаемого кода. Особенно эта библиотека пригодится при работе с RESTful приложениями, которые общаются преимущественно с помощью json.

👉Новости 👉База вопросов
  • ❤ 1
  • 👍 1
Post #344 440
#Собес #kubernetes
🤔 Каковы лучшие практики развертывания приложений в Kubernetes?

💬 Кратко:
Чтобы правильно развернуть приложение в Kubernetes, следует:
- Использовать декларативный подход (Deployment, Helm).
- Разделять сервисы по разным namespace.
- Настраивать liveness и readiness probe для мониторинга состояния Pod-ов.
- Определять resource limits и requests для оптимального распределения
ресурсов.

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

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
  • ❤ 1
  • 👍 1
  • 🔥 1
Post #343 447
🖥 Middle Java Backend разработчик в компанию Билайн

Техническое собеседование. Лето 2024. Вилка: 250к+. Проект: обещанный платеж. Опыт в резюме: 3 года.

Вопросы:
- Что лучше: микросервисы или монолит?
- Что такое EXPLAIN в PostgreSQL?
- Какие методы использовали для оптимизации SQL-запросов (индексы, уменьшение JOIN, проверка на NULL)?
- Как осуществляется контейнеризация Java-приложений с помощью Docker?

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

#собес
  • ❤ 1
  • 👍 1
Post #342 392
#ЛитКод
Задача: 638. Shopping Offers

В магазине LeetCode Store есть n предметов для продажи. Каждый товар имеет свою цену. Однако существуют специальные предложения, и специальное предложение состоит из одного или нескольких различных видов товаров с распродажной ценой. Вам дан целочисленный массив price, где price[i] - цена i-го товара, и целочисленный массив needs, где needs[i] - количество штук i-го товара, который вы хотите купить. Вам также дан массив special, где special[i] имеет размер n + 1, где special[i][j] - количество штук j-го товара в i-м предложении, а special[i][n] (т.е., Возвращает наименьшую цену, которую вы можете заплатить за определенный товар из заданных, где вы могли бы оптимально использовать специальные предложения. Вам не разрешается покупать больше товаров, чем вы хотите, даже если это снизит общую цену. Вы можете использовать любое из специальных предложений столько раз, сколько захотите.

Пример:
Input: price = [2,5], special = [[3,0,5],[1,2,10]], needs = [3,2]
Output: 14


👨‍💻 Алгоритм:

1⃣Рекурсивное вычисление стоимости: Определите функцию, которая рекурсивно вычисляет минимальную стоимость для оставшихся нужд, используя динамическое программирование для запоминания уже вычисленных значений.

2⃣Использование специальных предложений: Для каждой комбинации товаров в специальных предложениях, определите, можно ли использовать это предложение без превышения нужд. Если можно, вычислите новую стоимость, учитывая это предложение.

3⃣Выбор минимальной стоимости: Сравните стоимость при использовании специальных предложений и стоимость при покупке товаров по индивидуальным ценам, выбирая минимальную стоимость.

😎 Решение:
import java.util.*;

public class Solution {
public int shoppingOffers(List<Integer> price, List<List<Integer>> special, List<Integer> needs) {
return dfs(price, special, needs, new HashMap<>());
}

private int dfs(List<Integer> price, List<List<Integer>> special, List<Integer> needs, Map<List<Integer>, Integer> memo) {
if (memo.containsKey(needs)) return memo.get(needs);

int minPrice = 0;
for (int i = 0; i < needs.size(); i++) {
minPrice += needs.get(i) * price.get(i);
}

for (List<Integer> offer : special) {
List<Integer> newNeeds = new ArrayList<>();
for (int i = 0; i < needs.size(); i++) {
if (offer.get(i) > needs.get(i)) break;
newNeeds.add(needs.get(i) - offer.get(i));
}
if (newNeeds.size() == needs.size()) {
minPrice = Math.min(minPrice, dfs(price, special, newNeeds, memo) + offer.get(offer.size() - 1));
}
}

memo.put(needs, minPrice);
return minPrice;
}
}


👉Новости 👉База вопросов
  • 🤔 1
Post #341 370
#Собес #kubernetes
🤔 Каковы лучшие практики безопасности Kubernetes-кластера?

Для обеспечения безопасности в Kubernetes следует:
- Ограничить доступ с помощью RBAC.
- Использовать NetworkPolicy для контроля сетевого трафика.
- Защитить API-сервер и внутренние компоненты от несанкционированного
доступа.
- Настроить безопасное соединение между узлами.

👉Новости 👉База вопросов
Post #340 386
#полезное
😘 Выделение памяти в Java

В Java память по умолчанию выделяется в куче с помощью new.
Это просто, управляется сборщиком мусора и подходит для большинства приложений.

Но если нужны высокая производительность или низкие задержки, можно использовать off-heap память через ByteBuffer.allocateDirect().
Такой подход выделяет память вне кучи, снижает нагрузку на GC и повышает эффективность при работе с большими или долго живущими данными.

Off-heap даёт больше контроля и производительности,
но требует аккуратного управления ресурсами,
так как такая память не очищается автоматически, в отличие от памяти в куче.

👉Новости 👉База вопросов
  • ❤ 3
Post #339 385
#Собес #kubernetes
🤔 Что такое Custom Resource Definition (CRD) в Kubernetes?

💬 Кратко:
CRD - это способ добавить в Kubernetes новый тип ресурса, например Database ИЛИ Cache , который будет управляться пользовательским контроллером.

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

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
YeaHub YeaHub — тренажер собеседований по IT 5000+ вопросов для подготовки к интервью. Фильтры, квизы, статистика!
  • ❤ 1
Post #337 383
#Собес #kubernetes
🤔 Что такое Kubernetes Operator?

Operator - это расширение Kubernetes API, которое автоматизирует управление сложными приложениями, такими как базы данных или кэш- системы, путем внедрения специализированной логики.

👉Новости 👉База вопросов
Post #336 500
#полезное
📞 Виртуальные потоки с Project Loom

Традиционные потоки в Java мощный, но тяжёлый механизм, который ограничивает масштабируемость в высоконагруженных многопоточных приложениях.

С появлением Project Loom вводится концепция виртуальных потоков т.е. лёгких потоков, управляемых самой JVM, которые упрощают работу с конкурентностью и делают её более эффективной.

Виртуальные потоки позволяют запускать тысячи параллельных задач с минимальными накладными расходами, при этом сохраняя простой, блокирующий стиль написания кода без ущерба для производительности.

👉Новости 👉База вопросов
  • ❤ 3
Post #335 424
#полезное
👨‍💻 Метод createNativeQuery из JPA EntityManager

Если тебе нужно выполнить сложную выборку (например, последнюю запись на дату) — не бойся использовать createNativeQuery. Нативный SQL в JPA — это мощный инструмент, особенно когда JPQL ограничен
Читать подробнее

👉Новости 👉База вопросов
  • 👍 2
  • ❤ 1
Post #334 522
🖥 Middle Java Backend-разработчик в компанию IT-smart.

Техническое собеседование. Осень 2024. Просил 250к+. Опыт в резюме 3 года. Сначала были вопросы по опыту работы, воркфлоу, гитфлоу

Вопросы:
- Какие аннотации используются для создания бинов и компонентов в Spring?
- Когда создаётся Spring Bean и как Spring определяет необходимость его создания?
- Что делают аннотации @Transactional и @Retryable?
- Что такое брокер сообщений?
- Почему не все компании переходят на микросервисы?
- Когда может потребоваться переход от микросервисов к монолиту?
- Как микросервисы взаимодействуют друг с другом?
- Почему некоторые задачи лучше выполнять асинхронно?
- Что лучше: микросервисы или монолит?
- Когда нужно использовать кэширование?
- Когда использовать локальный кэш, а когда распределённый?
- Что такое распределённый кэш?
- Что такое реляционная база данных?
- Что такое первичный ключ?
- Что означает ACID?
- Что такое PostgreSQL?
- Что такое высокая и низкая селективность?
- Когда использование индексов неэффективно?
- Как работают некластеризованные индексы?
- Индексируется ли первичный ключ?
- Что такое микросервисная архитектура?
- Что такое Bean?
- Разница между Spring и Spring Boot

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

#собес
  • ❤ 3
Post #333 511
#статьи
😵‍💫 Циклические зависимости в Spring: как находить и устранять

Если в вашем проекте внезапно Spring ругается на circular dependency, вы не одиноки — такие ошибки возникают даже в продуманных архитектурах.

В статье разобраны причины появления циклических зависимостей, показано, как их отследить с помощью Bean Navigation, и даны рабочие способы решения проблемы.
Читать статью

👉Новости 👉База вопросов
  • ❤ 3
Post #332 562
#статьи
😴 Телеграфируем кодом Морзе через Java Stream API

В статье автор показывает, как на Java с помощью Stream API и без сторонних библиотек собрать телеграф: от загрузки таблицы Морзе до генерации аналогового аудиосигнала.

Под капотом — mapMulti, кастомный Collector, аудио через javax.sound, а в качестве вывода — настоящее «пип-пип» из динамика.
Читать статью

👉Новости 👉База вопросов
  • ❤ 2
Post #331 583
#полезное
😊 Функциональное программирование в Java с использованием Streams и лямбд:

Streams обрабатывают фильтрацию, сортировку и свёртку данных, а лямбды упрощают определение функций. В Spring они используются для построения реактивных API, а в задачах алгоритмического программирования — для оптимизации обработки данных.

Выше приведён пример REST-эндпойнта на Spring, фильтрующего пользователей, и функции в стиле олимпиадного программирования для поиска лидеров по очкам.

👉Новости 👉База вопросов
  • ❤ 1
Post #330 526
#Собес #kubernetes
🤔 Что такое Kubernetes Istio?

Istio - это service mesh, который управляет сетевым взаимодействием сервисов внутри Kubernetes. Он позволяет контролировать трафик, настраивать балансировку нагрузки, управлять безопасностью (аутентификацией и авторизацией) и обеспечивать мониторинг сетевых взаимодействий между микросервисами.

👉Новости 👉База вопросов
Post #329 515
#полезное
🤓 Конкурентность vs параллелизм - это НЕ одно и то же

Конкурентность:

Конкурентность означает, что приложение продвигается по нескольким задачам одновременно.

Хотя один CPU-ядро может обрабатывать только одну задачу за раз, оно достигает конкурентности, быстро переключаясь между задачами.

Пример: Слушание музыки во время написания кода. CPU быстро переключается между этими задачами так эффективно, что кажется, будто обе выполняются одновременно.

Основная цель конкурентности — максимизировать использование процессора, минимизируя время простоя.

Параллелизм:

Параллелизм означает выполнение нескольких задач одновременно.

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

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

Цель параллелизма — ускорить обработку, выполняя несколько задач одновременно.

Они не являются взаимно исключающимися:

🟠Можно иметь конкурентность без параллелизма.
🟠Можно иметь параллелизм без конкурентности.
🟠Или можно использовать и то, и другое для высокопроизводительных систем.

👉Новости 👉База вопросов
  • ❤ 1
Post #328 377
#полезное
😎 Динамические прокси для логирования в стиле AOP

Используй java.lang.reflect.Proxy, чтобы перехватывать вызовы методов на этапе выполнения.
Это позволяет эмулировать AOP без Spring — идеально подходит для обработки сквозной логики (cross-cutting concerns).

В этом примере мы логируем до и после вызова метода.
Такой подход даёт гибкий способ динамически абстрагировать поведение.

> Динамические прокси позволяют внедрять поведение — например, логирование, тайминг или проверку безопасности — без изменений исходного кода.

Этот паттерн активно используется во фреймворках вроде Spring и Hibernate.

👉Новости 👉База вопросов
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →