Общие вопросы для собеседования на Java Spring Boot с ответами
🍩 Какие типы внедрения зависимостей бывают?
⏩ Field Injection
⏩ Setter Injection
⏩ Constructor Injection
🍩 Разница между
🍩 Чем отличаются
🍩 Что такое Spring Bean?
Spring Bean – это обычный Java-объект, созданный Spring-контейнером.
🍩 Разница между
🍩 Разница между
🍩 Зачем нужен
Используется для конфигурации приложения: настройки БД, логирование и т. д.
Сохрани себе, чтобы не забыть!
👉 Java Portal
BeanFactory
и ApplicationContext
BeanFactory
использует ленивую инициализацию (создает бины при вызове getBean()).ApplicationContext
использует раннюю инициализацию (бины создаются при старте приложения).@Component, @Repository, @Service
и @Controller
?@Component
– общий стереотип для любого Spring-управляемого компонента.@Repository
– используется для DAO-слоя (работа с БД).@Service
– для сервисного слоя.@Controller
– для MVC-контроллеров.Spring Bean – это обычный Java-объект, созданный Spring-контейнером.
Singleton
и Prototype Bean
Singleton
– создается один экземпляр на все приложение.Prototype
– новый экземпляр создается при каждом запросе. @Component
и @Bean
@Component
– аннотация на уровне класса.@Bean
– аннотация на уровне метода, название метода = имя бина.application.properties
?Используется для конфигурации приложения: настройки БД, логирование и т. д.
Сохрани себе, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🤣3🔥2❤1😁1
GIT Workflow
Хотите разобраться, как работает Git? Тогда держите наглядный гайд!
🍩
🍩
🍩 Создание нового файла – добавляем что-то новое в проект
🍩
🍩
🍩
👉 Java Portal
Хотите разобраться, как работает Git? Тогда держите наглядный гайд!
Initial State
– начальное состояние проектаgit clone
– клонируем удаленный репозиторийgit add
. – отправляем изменения в staging areagit commit
– фиксируем изменения локальноgit push
– отправляем изменения на удаленный серверPlease open Telegram to view this post
VIEW IN TELEGRAM
❤7👍4🔥1
Что такое
Это мощная функция, представленная в Java 8 (в пакете
Она предоставляет гибкий способ написания неблокирующего, асинхронного кода с использованием функциональных конструкций.
⏩ задачи выполняются независимо, не блокируя основной поток.
⏩ поддерживает метод chaining через
⏩ объединяет несколько CompletableFuture с помощью .thenCompose(), .thenCombine().
⏩ встроенные механизмы обработки ошибок через .exceptionally() и .handle().
⏩ поддерживает выполнение нескольких задач параллельно с
👉 Java Portal
CompletableFuture
в Java?Это мощная функция, представленная в Java 8 (в пакете
java.util.concurrent
), которая представляет собой будущий результат асинхронного вычисления.Она предоставляет гибкий способ написания неблокирующего, асинхронного кода с использованием функциональных конструкций.
.thenApply(), .thenAccept()
и другие. .allOf()
и .anyOf().
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Большая актуальная базу бесплатных API, которая обновляется ежедневно
Тут собрано аж 363 бесплатных API на все случаи жизни: от игр и погоды до финансов и здоровья.
Алгоритмы присваивают рейтинг каждому API на основе надежности, частоты ошибок и времени отклика
Если API перестает работать или становится платным, он теряет рейтинг и удаляется с сайта
Переходите и смотрите сами: https://www.freepublicapis.com/
👉 Java Portal
Тут собрано аж 363 бесплатных API на все случаи жизни: от игр и погоды до финансов и здоровья.
Алгоритмы присваивают рейтинг каждому API на основе надежности, частоты ошибок и времени отклика
Если API перестает работать или становится платным, он теряет рейтинг и удаляется с сайта
Переходите и смотрите сами: https://www.freepublicapis.com/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥3❤1
Есть один отличный фреймворк — Javalin
Если нужно быстро запустить сервер или сделать небольшое приложение — самое то
Он позволяет настроить сервер легко и без лишних зависимостей. Все, что нужно для REST API или WebSocket — уже встроено.
ℹ️ Идеально для пет-проектов, микросервисов и прототипов
👉 Java Portal
Если нужно быстро запустить сервер или сделать небольшое приложение — самое то
Он позволяет настроить сервер легко и без лишних зависимостей. Все, что нужно для REST API или WebSocket — уже встроено.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11❤3👍3
Разница между агрегацией, ассоциацией и композицией в Java
Ассоциация
Общая связь между двумя классами, где объекты одного класса связаны с объектами другого, но нет владения или строгой зависимости.
Пример:
⏩ Студент и Курс.
⏩ Студент может записаться на курс, но оба могут существовать независимо друг от друга.
Агрегация
Частный случай ассоциации, представляющий отношение "имеет-а" с концепцией "целое-часть", но части могут существовать независимо от целого.
Пример:
⏩ Автомобиль и его Колесо.
⏩ Автомобиль имеет колеса, но если автомобиль уничтожен, колеса могут существовать отдельно или быть использованы где-то еще.
Композиция
Более сильная форма агрегации, где "часть" полностью принадлежит "целому" и не может существовать без него.
Пример:
⏩ Дом и его Комната.
⏩ Если дом будет снесен, комнаты перестанут существовать.
👉 Java Portal
Ассоциация
Общая связь между двумя классами, где объекты одного класса связаны с объектами другого, но нет владения или строгой зависимости.
Пример:
Агрегация
Частный случай ассоциации, представляющий отношение "имеет-а" с концепцией "целое-часть", но части могут существовать независимо от целого.
Пример:
Композиция
Более сильная форма агрегации, где "часть" полностью принадлежит "целому" и не может существовать без него.
Пример:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21❤2🔥1
Как работает Java? Понимание архитектуры языка
Когда мы пишем код на Java, он проходит несколько ключевых этапов перед тем, как стать работающей программой. Вот как это происходит:
🍩 Написав программу, мы получаем исходный код в файле
🍩 Этот код компилируется с помощью компилятора javac, который преобразует его в байт-код (.class). Это промежуточный формат, который понимает только JVM.
🍩 JVM берет этот байт-код и запускает его, выполняя программу.
Внутри JVM происходит:
- Загрузка классов с помощью
- Управление памятью: разделение на Stack, Heap и Method Area.
- Оптимизация с помощью JIT-компилятора, который превращает байт-код в машинный код для ускорения работы программы.
👉 Java Portal
Когда мы пишем код на Java, он проходит несколько ключевых этапов перед тем, как стать работающей программой. Вот как это происходит:
.java
.Внутри JVM происходит:
- Загрузка классов с помощью
ClassLoader
.- Управление памятью: разделение на Stack, Heap и Method Area.
- Оптимизация с помощью JIT-компилятора, который превращает байт-код в машинный код для ускорения работы программы.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19❤3🌭1💊1
1. Проверка версии Docker
2. Работа с образами
3. Запуск Java-приложения в контейнере
4. Сборка и запуск контейнера с Java Spring Boot
5. Управление контейнерами
6. Сетевое взаимодействие в Docker
7. Docker Compose (Java + MySQL)
8. Docker Volumes (персистентные данные)
9. Очистка Docker
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤2🔥1💊1
Что такое грациозное завершение работы Spring Boot-приложения?
🟡 Приложение перестаёт принимать новые входящие запросы.
🟡 Запросы, которые уже обрабатываются, получают возможность завершиться. Для других внутренних задач, таких как запланированные задания или обработка сообщений из очереди (MQ), приложение обеспечивает завершение текущих операций и предотвращает запуск новых.
🟡 Перед завершением работы приложение сигнализирует другим сервисам о предстоящем отключении, обеспечивая бесперебойность работы всей системы.
👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤3🔥3
Как инициализируется класс в Java?
Когда JVM загружает класс, его инициализация происходит в строгом порядке:
🍩 сначала инициализируются все
🍩 затем выполняются статические блоки
🍩 после этого инициализируются обычные переменные объекта.
🍩 в конце выполняются конструкторы класса.
Этот порядок важен, так как попытка использовать переменную до её инициализации может привести к ошибке.
👉 Java Portal
Когда JVM загружает класс, его инициализация происходит в строгом порядке:
static
переменные. static { ... }
.Этот порядок важен, так как попытка использовать переменную до её инициализации может привести к ошибке.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👍5🔥5
Архитектура Struts MVC
Struts — это Java-фреймворк, основанный на MVC, который разделяет приложение на модель, представление и контроллер, обеспечивая лучшую поддерживаемость и масштабируемость.
Всё просто:
Пользователь отправляет запрос → ActionServlet принимает и направляет запрос в соответствующий Action-класс → Action-класс обрабатывает запрос и передает его Model (бизнес-логике, DAO, сервисам) → Model получает данные из БД (через Hibernate, JDBC или EJB) → Model передает обработанные данные обратно в Action-класс → Action-класс передает данные View (JSP, Tiles) → View отображает данные пользователю.
В целом, его поток данных соответствует классической MVC-модели, но с улучшениями
👉 Java Portal
Struts — это Java-фреймворк, основанный на MVC, который разделяет приложение на модель, представление и контроллер, обеспечивая лучшую поддерживаемость и масштабируемость.
Всё просто:
Пользователь отправляет запрос → ActionServlet принимает и направляет запрос в соответствующий Action-класс → Action-класс обрабатывает запрос и передает его Model (бизнес-логике, DAO, сервисам) → Model получает данные из БД (через Hibernate, JDBC или EJB) → Model передает обработанные данные обратно в Action-класс → Action-класс передает данные View (JSP, Tiles) → View отображает данные пользователю.
В целом, его поток данных соответствует классической MVC-модели, но с улучшениями
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥3❤1
Бруно Соуса про Java
"Netflix полностью работает на Java. Всё, что мы создаем, построено на Java."™️
Java не идеальна — да и никакой язык не идеален.
Но она существует уже десятилетия и используется в самых разных сферах, от банковских систем до корпоративных приложений, которые действительно поддерживают работу всего мира.
Она не яркая, не «крутая» новинка, но работает. А в мире технологий вещи, которые работают, часто остаются на долгие годы.
👉 Java Portal
"Netflix полностью работает на Java. Всё, что мы создаем, построено на Java."
Java не идеальна — да и никакой язык не идеален.
Но она существует уже десятилетия и используется в самых разных сферах, от банковских систем до корпоративных приложений, которые действительно поддерживают работу всего мира.
Она не яркая, не «крутая» новинка, но работает. А в мире технологий вещи, которые работают, часто остаются на долгие годы.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍29❤4🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Оставайтесь сосредоточенными на кодинге и оптимизируйте свой рабочий процесс в IntelliJIDEA с помощью Run Anything!
Быстро запускайте конфигурации выполнения/отладки, приложения, скрипты, команды и задачи или даже открывайте недавние проекты – из любого места в IDE
Нажмите
⌃⌃
| Ctrl+Ctrl
, чтобы открыть всплывающее окно Run AnythingPlease open Telegram to view this post
VIEW IN TELEGRAM
❤8👍5🔥4
Основной поток Kafka:
1. Продюсер отправляет сообщение
⏩ Приложение (продюсер) создаёт сообщение с данными.
⏩ Продюсер подключается к брокеру Kafka и выбирает тему.
⏩ Kafka определяет, в какой раздел темы отправить сообщение, распределяя нагрузку.
⏩ Сообщение записывается в лидирующую реплику раздела.
2. Хранение и репликация
⏩ Лидер добавляет сообщение в лог и присваивает ему уникальный офсет.
⏩ Сообщение копируется на резервные реплики для отказоустойчивости.
3. Консьюмер получает сообщения
⏩ Приложение (консьюмер) подключается к группе потребителей.
⏩ Консьюмеры координируют обработку, считывая сообщения из своих разделов.
⏩ Они получают сообщения партиями, начиная с последнего зафиксированного офсета.
4. Подтверждение обработки
⏩ После обработки консьюмер фиксирует новый офсет.
⏩ Kafka отслеживает, какие сообщения успешно потреблены.
5. Цикл продолжается
⏩ Продюсеры продолжают отправлять, консьюмеры — читать и обрабатывать.
⏩ Kafka обеспечивает надёжную и упорядоченную доставку даже при сбоях.
⚠️ Помните:
Поток сообщений в Kafka асинхронный. Продюсеры не ждут, пока консьюмеры обработают сообщения.
Консьюмеры могут отставать от продюсеров, если обработка идёт медленно.
Kafka предлагает механизмы для обработки сбоев и обеспечения семантики доставки at-least-once или exactly-once.
Topics => Partitions => Log Segments
(Данные фактически хранятся в лог-сегментах).
👉 Java Portal
1. Продюсер отправляет сообщение
2. Хранение и репликация
3. Консьюмер получает сообщения
4. Подтверждение обработки
5. Цикл продолжается
Поток сообщений в Kafka асинхронный. Продюсеры не ждут, пока консьюмеры обработают сообщения.
Консьюмеры могут отставать от продюсеров, если обработка идёт медленно.
Kafka предлагает механизмы для обработки сбоев и обеспечения семантики доставки at-least-once или exactly-once.
Topics => Partitions => Log Segments
(Данные фактически хранятся в лог-сегментах).
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥1
@TransactionalEventListener
— это специализированный @EventListener
, который слушает событие и ожидает завершения текущей транзакции перед его обработкой. Ожидание консистентного состояния базы данных позволяет гораздо безопаснее реагировать на изменения, внесенные в БД.Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤2🔥2
Сравнение Comparator и Comparable в Java 👆
Comparable — для встроенной сортировки. Допустим
Comparator — для гибкой сортировки. К примеру, сортировка списка по разным полям
👉 Java Portal
Comparable — для встроенной сортировки. Допустим
string, Integer
Comparator — для гибкой сортировки. К примеру, сортировка списка по разным полям
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥4❤2🌭1
Как в Java упаковываются и разворачиваются приложения
JAR – это обычная Java-программа, WAR – веб-приложение, EAR – крупный корпоративный проект, а JMOD – новый формат для модулей Java.
Процесс сборки и деплоя:
⏩ Compile – компиляция исходного кода в байт-код (файлы .class).
⏩ Package – упаковка файлов в один из архивов (JAR, WAR, EAR, JMOD).
⏩ Deploy – развёртывание на сервере или в среде выполнения.
👉 Java Portal
JAR – это обычная Java-программа, WAR – веб-приложение, EAR – крупный корпоративный проект, а JMOD – новый формат для модулей Java.
Процесс сборки и деплоя:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤5🔥2
Модель памяти Java
Модель памяти Java (JMM) определяет, как потоки взаимодействуют через память, обеспечивая согласованность и синхронизацию. Она регулирует работу с
В многопоточных приложениях важно понимать, как потоки взаимодействуют с памятью, чтобы избежать ошибок, связанных с кэшированием и синхронизацией.
На графике показано, как
✅ Если запись идет в основную память (Main Memory), данные становятся видимыми для других потоков, предотвращая проблемы.
✅ Happens-Before Relationship обеспечивает порядок выполнения операций, гарантируя корректную работу программы.
⚠️ Без синхронизации возможны гонки данных и некорректное поведение. Используйте
👉 Java Portal
Модель памяти Java (JMM) определяет, как потоки взаимодействуют через память, обеспечивая согласованность и синхронизацию. Она регулирует работу с
volatile
переменными, атомарными операциями и отношением happens-before, предотвращая проблемы конкурентного выполнения.В многопоточных приложениях важно понимать, как потоки взаимодействуют с памятью, чтобы избежать ошибок, связанных с кэшированием и синхронизацией.
На графике показано, как
Thread 1
записывает данные. Без синхронизации они могут попасть в локальный кэш, из-за чего Thread 2
может получить устаревшие данныеvolatile, synchronized
или Lock
для безопасной работы с потоками.Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥1🌭1
Каковы различия между StringBuilder и StringBuffer в Java?
StringBuffer:
⏩ Каждый метод синхронизирован.
⏩ Объект StringBuffer потокобезопасен, так как к нему может обращаться только один поток за раз.
⏩ Относительно низкая производительность.
⏩ Введён в версии 1.0.
StringBuilder:
⏩ Методы не синхронизированы.
⏩ StringBuilder не является потокобезопасным, так как к нему могут обращаться несколько потоков одновременно.
⏩ Относительно высокая производительность по сравнению с StringBuffer.
⏩ Введён в версии 1.5.
👉 Java Portal
StringBuffer:
StringBuilder:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥2❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Недавно наткнулся на плагин, который сразу заставил IntelliJ IDEA смотреться как миллион баксов — Atom Material Icons. 💵
Если ты тоже хочешь, чтобы интерфейс был не только удобным, но и приятнее — пользуйся
Навигация по проекту становится в 10 раз быстрее — всё благодаря иконкам
👉 Java Portal
Если ты тоже хочешь, чтобы интерфейс был не только удобным, но и приятнее — пользуйся
Навигация по проекту становится в 10 раз быстрее — всё благодаря иконкам
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔16👍8❤4🔥1👀1
Media is too big
VIEW IN TELEGRAM
Опа, а вот и ещё одна годная штука
DZone Java — это такой хаб для джавистов, где собираются статьи, гайды, туториалы, обзоры и инсайды из мира Java. Причём не абы какие, а от разработчиков, архитекторов и простозадр... знатоков своего дела 😎
Можно подписаться на темы, собирать коллекции, шарить статьи в команду и не выпадать из инфополя
Лайк — если давно знаешь
👉 Java Portal
DZone Java — это такой хаб для джавистов, где собираются статьи, гайды, туториалы, обзоры и инсайды из мира Java. Причём не абы какие, а от разработчиков, архитекторов и просто
Можно подписаться на темы, собирать коллекции, шарить статьи в команду и не выпадать из инфополя
Лайк — если давно знаешь
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍4😁3🔥2