#Собес #kubernetes
🤔 Что такое service mesh в Kubernetes?
Service mesh - это инфраструктурный слой, который управляет сетевым взаимодействием сервисов в Kubernetes. Он добавляет такие функции, как маршрутизация трафика, балансировка нагрузки, безопасность и мониторинг, без необходимости изменения кода приложения.
👉 Новости 👉 База вопросов
Service mesh - это инфраструктурный слой, который управляет сетевым взаимодействием сервисов в Kubernetes. Он добавляет такие функции, как маршрутизация трафика, балансировка нагрузки, безопасность и мониторинг, без необходимости изменения кода приложения.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😱 Совет дня:
Проверка (
- Первый блок проверяет, что по
- Второй блок проверяет, что по
👉 Новости 👉 База вопросов
Проверка (
assert
) одиночного объекта против List<Object>
в ответах при использовании MockMvcTester
в Spring.- Первый блок проверяет, что по
/api/posts/1
возвращается Post, у которого title
равен "Post title here"
- Второй блок проверяет, что по
/api/posts
приходит список из 4 элементов типа Post
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
#полезное
😎 Динамические прокси для логирования в стиле AOP
Используй
Это позволяет эмулировать AOP без Spring — идеально подходит для обработки сквозной логики (cross-cutting concerns).
В этом примере мы логируем до и после вызова метода.
Такой подход даёт гибкий способ динамически абстрагировать поведение.
> Динамические прокси позволяют внедрять поведение — например, логирование, тайминг или проверку безопасности — без изменений исходного кода.
Этот паттерн активно используется во фреймворках вроде Spring и Hibernate.
👉 Новости 👉 База вопросов
Используй
java.lang.reflect.Proxy
, чтобы перехватывать вызовы методов на этапе выполнения. Это позволяет эмулировать AOP без Spring — идеально подходит для обработки сквозной логики (cross-cutting concerns).
В этом примере мы логируем до и после вызова метода.
Такой подход даёт гибкий способ динамически абстрагировать поведение.
> Динамические прокси позволяют внедрять поведение — например, логирование, тайминг или проверку безопасности — без изменений исходного кода.
Этот паттерн активно используется во фреймворках вроде Spring и Hibernate.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
🤓 Конкурентность vs параллелизм - это НЕ одно и то же
Конкурентность:
Конкурентность означает, что приложение продвигается по нескольким задачам одновременно.
Хотя один CPU-ядро может обрабатывать только одну задачу за раз, оно достигает конкурентности, быстро переключаясь между задачами.
Пример: Слушание музыки во время написания кода. CPU быстро переключается между этими задачами так эффективно, что кажется, будто обе выполняются одновременно.
Основная цель конкурентности — максимизировать использование процессора, минимизируя время простоя.
Параллелизм:
Параллелизм означает выполнение нескольких задач одновременно.
Для достижения параллелизма задачи разбиваются на более мелкие независимые подзадачи и обрабатываются одновременно на нескольких процессорах, ядрах или GPU.
Пример: Обучение модели глубокого обучения, разделив датасет на батчи и обрабатывая каждый батч одновременно на нескольких GPU.
Цель параллелизма — ускорить обработку, выполняя несколько задач одновременно.
Они не являются взаимно исключающимися:
🟠 Можно иметь конкурентность без параллелизма.
🟠 Можно иметь параллелизм без конкурентности.
🟠 Или можно использовать и то, и другое для высокопроизводительных систем.
👉 Новости 👉 База вопросов
Конкурентность:
Конкурентность означает, что приложение продвигается по нескольким задачам одновременно.
Хотя один CPU-ядро может обрабатывать только одну задачу за раз, оно достигает конкурентности, быстро переключаясь между задачами.
Пример: Слушание музыки во время написания кода. CPU быстро переключается между этими задачами так эффективно, что кажется, будто обе выполняются одновременно.
Основная цель конкурентности — максимизировать использование процессора, минимизируя время простоя.
Параллелизм:
Параллелизм означает выполнение нескольких задач одновременно.
Для достижения параллелизма задачи разбиваются на более мелкие независимые подзадачи и обрабатываются одновременно на нескольких процессорах, ядрах или GPU.
Пример: Обучение модели глубокого обучения, разделив датасет на батчи и обрабатывая каждый батч одновременно на нескольких GPU.
Цель параллелизма — ускорить обработку, выполняя несколько задач одновременно.
Они не являются взаимно исключающимися:
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#Собес #kubernetes
🤔 Что такое Kubernetes Istio?
Istio - это service mesh, который управляет сетевым взаимодействием сервисов внутри Kubernetes. Он позволяет контролировать трафик, настраивать балансировку нагрузки, управлять безопасностью (аутентификацией и авторизацией) и обеспечивать мониторинг сетевых взаимодействий между микросервисами.
👉 Новости 👉 База вопросов
Istio - это service mesh, который управляет сетевым взаимодействием сервисов внутри Kubernetes. Он позволяет контролировать трафик, настраивать балансировку нагрузки, управлять безопасностью (аутентификацией и авторизацией) и обеспечивать мониторинг сетевых взаимодействий между микросервисами.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 Функциональное программирование в Java с использованием Streams и лямбд:
Streams обрабатывают фильтрацию, сортировку и свёртку данных, а лямбды упрощают определение функций. В Spring они используются для построения реактивных API, а в задачах алгоритмического программирования — для оптимизации обработки данных.
Выше приведён пример REST-эндпойнта на Spring, фильтрующего пользователей, и функции в стиле олимпиадного программирования для поиска лидеров по очкам.
👉 Новости 👉 База вопросов
Streams обрабатывают фильтрацию, сортировку и свёртку данных, а лямбды упрощают определение функций. В Spring они используются для построения реактивных API, а в задачах алгоритмического программирования — для оптимизации обработки данных.
Выше приведён пример REST-эндпойнта на Spring, фильтрующего пользователей, и функции в стиле олимпиадного программирования для поиска лидеров по очкам.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#статьи
😴 Телеграфируем кодом Морзе через Java Stream API
В статье автор показывает, как на Java с помощью Stream API и без сторонних библиотек собрать телеграф: от загрузки таблицы Морзе до генерации аналогового аудиосигнала.
Под капотом — mapMulti, кастомный Collector, аудио через javax.sound, а в качестве вывода — настоящее «пип-пип» из динамика.
Читать статью
👉 Новости 👉 База вопросов
В статье автор показывает, как на Java с помощью Stream API и без сторонних библиотек собрать телеграф: от загрузки таблицы Морзе до генерации аналогового аудиосигнала.
Под капотом — mapMulti, кастомный Collector, аудио через javax.sound, а в качестве вывода — настоящее «пип-пип» из динамика.
Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
#статьи
😵💫 Циклические зависимости в Spring: как находить и устранять
Если в вашем проекте внезапно Spring ругается на circular dependency, вы не одиноки — такие ошибки возникают даже в продуманных архитектурах.
В статье разобраны причины появления циклических зависимостей, показано, как их отследить с помощью Bean Navigation, и даны рабочие способы решения проблемы.
Читать статью
👉 Новости 👉 База вопросов
Если в вашем проекте внезапно Spring ругается на circular dependency, вы не одиноки — такие ошибки возникают даже в продуманных архитектурах.
В статье разобраны причины появления циклических зависимостей, показано, как их отследить с помощью Bean Navigation, и даны рабочие способы решения проблемы.
Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Техническое собеседование. Осень 2024. Просил 250к+. Опыт в резюме 3 года. Сначала были вопросы по опыту работы, воркфлоу, гитфлоу
Вопросы:
- Какие аннотации используются для создания бинов и компонентов в Spring?
- Когда создаётся Spring Bean и как Spring определяет необходимость его создания?
- Что делают аннотации @Transactional и @Retryable?
- Что такое брокер сообщений?
- Почему не все компании переходят на микросервисы?
- Когда может потребоваться переход от микросервисов к монолиту?
- Как микросервисы взаимодействуют друг с другом?
- Почему некоторые задачи лучше выполнять асинхронно?
- Что лучше: микросервисы или монолит?
- Когда нужно использовать кэширование?
- Когда использовать локальный кэш, а когда распределённый?
- Что такое распределённый кэш?
- Что такое реляционная база данных?
- Что такое первичный ключ?
- Что означает ACID?
- Что такое PostgreSQL?
- Что такое высокая и низкая селективность?
- Когда использование индексов неэффективно?
- Как работают некластеризованные индексы?
- Индексируется ли первичный ключ?
- Что такое микросервисная архитектура?
- Что такое Bean?
- Разница между Spring и Spring Boot
Все вопросы можно посмотреть на нашей платформе
#собес
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
#полезное
👨💻 Метод
Если тебе нужно выполнить сложную выборку (например, последнюю запись на дату) — не бойся использовать
Читать подробнее
👉 Новости 👉 База вопросов
createNativeQuery
из JPA EntityManager
Если тебе нужно выполнить сложную выборку (например, последнюю запись на дату) — не бойся использовать
createNativeQuery
. Нативный SQL в JPA — это мощный инструмент, особенно когда JPQL ограниченЧитать подробнее
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1
#полезное
📞 Виртуальные потоки с Project Loom
Традиционные потоки в Java мощный, но тяжёлый механизм, который ограничивает масштабируемость в высоконагруженных многопоточных приложениях.
С появлением Project Loom вводится концепция виртуальных потоков т.е. лёгких потоков, управляемых самой JVM, которые упрощают работу с конкурентностью и делают её более эффективной.
Виртуальные потоки позволяют запускать тысячи параллельных задач с минимальными накладными расходами, при этом сохраняя простой, блокирующий стиль написания кода без ущерба для производительности.
👉 Новости 👉 База вопросов
Традиционные потоки в Java мощный, но тяжёлый механизм, который ограничивает масштабируемость в высоконагруженных многопоточных приложениях.
С появлением Project Loom вводится концепция виртуальных потоков т.е. лёгких потоков, управляемых самой JVM, которые упрощают работу с конкурентностью и делают её более эффективной.
Виртуальные потоки позволяют запускать тысячи параллельных задач с минимальными накладными расходами, при этом сохраняя простой, блокирующий стиль написания кода без ущерба для производительности.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
#Собес #kubernetes
🤔 Что такое Kubernetes Operator?
Operator - это расширение Kubernetes API, которое автоматизирует управление сложными приложениями, такими как базы данных или кэш- системы, путем внедрения специализированной логики.
👉 Новости 👉 База вопросов
Operator - это расширение Kubernetes API, которое автоматизирует управление сложными приложениями, такими как базы данных или кэш- системы, путем внедрения специализированной логики.
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
❤️🔥 Как вернуть результат в виде Map из запроса JPA или Hibernate
Читать подробнее
👉 Новости 👉 База вопросов
Читать подробнее
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#Собес #kubernetes
🤔 Что такое Custom Resource Definition (CRD) в Kubernetes?
💬 Кратко:
CRD - это способ добавить в Kubernetes новый тип ресурса, например
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
💬 Кратко:
CRD - это способ добавить в Kubernetes новый тип ресурса, например
Database
ИЛИ Cache
, который будет управляться пользовательским контроллером.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
YeaHub
YeaHub — тренажер собеседований по IT
5000+ вопросов для подготовки к интервью. Фильтры, квизы, статистика!
❤1
#полезное
😘 Выделение памяти в Java
В Java память по умолчанию выделяется в куче с помощью new.
Это просто, управляется сборщиком мусора и подходит для большинства приложений.
Но если нужны высокая производительность или низкие задержки, можно использовать off-heap память через
Такой подход выделяет память вне кучи, снижает нагрузку на GC и повышает эффективность при работе с большими или долго живущими данными.
Off-heap даёт больше контроля и производительности,
но требует аккуратного управления ресурсами,
так как такая память не очищается автоматически, в отличие от памяти в куче.
👉 Новости 👉 База вопросов
В Java память по умолчанию выделяется в куче с помощью new.
Это просто, управляется сборщиком мусора и подходит для большинства приложений.
Но если нужны высокая производительность или низкие задержки, можно использовать off-heap память через
ByteBuffer.allocateDirect()
. Такой подход выделяет память вне кучи, снижает нагрузку на GC и повышает эффективность при работе с большими или долго живущими данными.
Off-heap даёт больше контроля и производительности,
но требует аккуратного управления ресурсами,
так как такая память не очищается автоматически, в отличие от памяти в куче.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
#Собес #kubernetes
🤔 Каковы лучшие практики безопасности Kubernetes-кластера?
Для обеспечения безопасности в Kubernetes следует:
- Ограничить доступ с помощью RBAC.
- Использовать NetworkPolicy для контроля сетевого трафика.
- Защитить API-сервер и внутренние компоненты от несанкционированного
доступа.
- Настроить безопасное соединение между узлами.
👉 Новости 👉 База вопросов
Для обеспечения безопасности в Kubernetes следует:
- Ограничить доступ с помощью RBAC.
- Использовать NetworkPolicy для контроля сетевого трафика.
- Защитить API-сервер и внутренние компоненты от несанкционированного
доступа.
- Настроить безопасное соединение между узлами.
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЛитКод
Задача: 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] (т.е., Возвращает наименьшую цену, которую вы можете заплатить за определенный товар из заданных, где вы могли бы оптимально использовать специальные предложения. Вам не разрешается покупать больше товаров, чем вы хотите, даже если это снизит общую цену. Вы можете использовать любое из специальных предложений столько раз, сколько захотите.
Пример:
👨💻 Алгоритм:
1⃣ Рекурсивное вычисление стоимости: Определите функцию, которая рекурсивно вычисляет минимальную стоимость для оставшихся нужд, используя динамическое программирование для запоминания уже вычисленных значений.
2⃣ Использование специальных предложений: Для каждой комбинации товаров в специальных предложениях, определите, можно ли использовать это предложение без превышения нужд. Если можно, вычислите новую стоимость, учитывая это предложение.
3⃣ Выбор минимальной стоимости: Сравните стоимость при использовании специальных предложений и стоимость при покупке товаров по индивидуальным ценам, выбирая минимальную стоимость.
😎 Решение:
👉 Новости 👉 База вопросов
Задача: 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
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;
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔1
Техническое собеседование. Лето 2024. Вилка: 250к+. Проект: обещанный платеж. Опыт в резюме: 3 года.
Вопросы:
- Что лучше: микросервисы или монолит?
- Что такое EXPLAIN в PostgreSQL?
- Какие методы использовали для оптимизации SQL-запросов (индексы, уменьшение JOIN, проверка на NULL)?
- Как осуществляется контейнеризация Java-приложений с помощью Docker?
Все вопросы можно посмотреть на нашей платформе
#собес
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
#Собес #kubernetes
🤔 Каковы лучшие практики развертывания приложений в Kubernetes?
💬 Кратко:
Чтобы правильно развернуть приложение в Kubernetes, следует:
- Использовать декларативный подход (Deployment, Helm).
- Разделять сервисы по разным namespace.
- Настраивать liveness и readiness probe для мониторинга состояния Pod-ов.
- Определять resource limits и requests для оптимального распределения
ресурсов.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
💬 Кратко:
Чтобы правильно развернуть приложение в Kubernetes, следует:
- Использовать декларативный подход (Deployment, Helm).
- Разделять сервисы по разным namespace.
- Настраивать liveness и readiness probe для мониторинга состояния Pod-ов.
- Определять resource limits и requests для оптимального распределения
ресурсов.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1🔥1
#полезное
🥄 Google-json (GSON)
Google-json — библиотека прямиком из Google. Она реализует механизмы работы с форматом JSON, а именно приведение Java-объектов в этот формат и обратно.
Как видно на картинке, перевод объекта проходит с помощью минимального количества легко читаемого кода. Особенно эта библиотека пригодится при работе с RESTful приложениями, которые общаются преимущественно с помощью json.
👉 Новости 👉 База вопросов
Google-json — библиотека прямиком из Google. Она реализует механизмы работы с форматом JSON, а именно приведение Java-объектов в этот формат и обратно.
Как видно на картинке, перевод объекта проходит с помощью минимального количества легко читаемого кода. Особенно эта библиотека пригодится при работе с RESTful приложениями, которые общаются преимущественно с помощью json.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1