#Собес #Spring
🤔 Какие 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
#полезное
🥱 webmagic — масштабируемый фреймворк веб-краулера для Java
webmagic охватывает весь жизненный цикл краулера: загрузку, управление url, извлечение контента и его сохранение.
GitHub
Доки
👉 Новости 👉 База вопросов
webmagic охватывает весь жизненный цикл краулера: загрузку, управление url, извлечение контента и его сохранение.
GitHub
Доки
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🥄 Spring Boot + Swagger
Документирование API без лишней головной боли.
Полное руководство читай здесь: тык
👉 Новости 👉 База вопросов
Документирование API без лишней головной боли.
Полное руководство читай здесь: тык
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
🛞 Кто не в курсе: Spring Debugger — это инструмент в IntelliJ IDEA, который помогает разбираться в контексте Spring Boot-приложения.
Прямо в проекте можно:
🟠 посмотреть список загруженных и неактивных бинов,
🟠 проверить значения конфигурационных свойств,
🟠 увидеть детали подключения к базе.
Удобно для дебага, особенно когда неясно, почему бин не поднялся или почему конфигурация работает не так, как ожидалось.
👉 Новости 👉 База вопросов
Прямо в проекте можно:
Удобно для дебага, особенно когда неясно, почему бин не поднялся или почему конфигурация работает не так, как ожидалось.
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #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