Ваша корзина пуста
Сумма: 0 руб.

Java Spring. 33 лучших вопроса на собеседовании

Что такое Spring Framework? 

Spring Framework – это платформа приложений с открытым исходным кодом, написанная на Java. Он предназначен для упрощения проектирования приложений за счет автоматической обработки низкоуровневых функций. Это позволяет разработчикам сосредоточиться на бизнес-логике. Spring также очень легко адаптируется со многими модулями, которые расширяют возможности фреймворка.

Хотя Spring не навязывает конкретную модель программирования, она приобрела широкую популярность в сообществе Java в качестве дополнения к корпоративной модели JavaBeans (EJB). Отчасти это связано с уникальным набором функций Spring, таких как инверсия управления и аспектно-ориентированное программирование (AOП), которые отлично подходят для работы с компонентами.

Платформа особенно подходит для корпоративных и финансовых приложений благодаря своей скорости, безопасности и простоте построения транзакционных систем. Фреймворк Spring обладает многими преимуществами по сравнению с Java EE или другими фреймворками на основе Java, такими как:

·        Spring позволяет разрабатывать приложения корпоративного уровня с помощью POJOs, поэтому вам не нужен другой продукт-контейнер EJB.

·         Spring предлагает согласованный, масштабируемый интерфейс управления транзакциями как для локальных транзакций, так и для глобальных транзакций.

·         Spring организована по модульной схеме. Его веб-фреймворк представляет собой легкий веб-фреймворк MVC.

·         Spring инновационно использует уже существующие технологии, такие как фреймворки ORM, таймеры JEE и JDK.

·         С помощью Spring легко протестировать приложение.

·         Spring предоставляет отличный API, поэтому легко работать с технологическими исключениями.

Большинство компаний, которым нужна экспертиза Spring Framework, - это финансовые компании, такие как банки и инвестиционные фирмы. Эти компании заинтересованы в использовании Spring для обеспечения безопасности и оптимизации своего бухгалтерского учета и продаж. Поэтому большинство вопросов для интервью будут проверять ваши знания об этих функциях, таких как внедрение зависимостей, аспектно-ориентированное программирование и MVC.

При устройстве на должность разработчика Spring, вам, безусловно, будут заданы всеобъемлющие вопросы о том, почему используется Spring и какие преимущества он предлагает. Чтобы помочь вам подготовиться, мы собрали 33 лучших вопросов для собеседования, чтобы освежить ваши знания по каждой из этих категорий.

 

Давайте начнем

Топ вопросов для собеседования по Spring Framework:

 1. В чем преимущества Spring?

·         Лёгкость: Spring является легким в использовании ресурсов, при этом базовая структура Spring весит всего 2 МБ памяти.

·         Масштабируемость: интерфейс управления транзакциями Spring может масштабироваться как до локальной транзакции в одной базе данных, так и до глобальных транзакций с помощью модуля JTA

·         Обработка исключений: Обработка исключений проста благодаря многочисленным ресурсам API для обработки исключений в каждом модуле.

·         Многоуровневая архитектура: Позволяет использовать нужные части программы и отказаться от остальных.

·         Включено POJO: Простое старое объектное программирование на Java обеспечивает непрерывную тестируемость и интеграцию.

·         С открытым исходным кодом: Бесплатно для всех и без блокировки поставщика.

·         Инверсия управления (IOC): Достигается свободная связь через IOC, позволяя объектам передавать свои зависимости другим объектам, а не зависимым объектам.

·         Аспектно-ориентированный (AOP): Spring поддерживает аспектно-ориентированное программирование, парадигму, которая отделяет бизнес-логику приложений от системных служб.

 

2. Что такое файл конфигурации для Spring?

Файл конфигурации для Spring представляет собой XML-файл, содержащий информацию о классе для проекта. Они описывают конфигурацию каждого класса, то, как они представлены другим классам, и зависимости во всей программе.

 

3. Каковы различные модули Spring Framework?

Всего существует около 20 модулей, которые разделены на уровни Основного контейнера, Доступа к данным/интеграции, интернета, AOP (Аспектно-ориентированное программирование), Инструментария и тестирования.

Контейнер для Core: Ядро Spring Framework содержит четыре модуля.

·         Spring Core

·         Spring Bean

·         SpEL (Spring Expression Language)

·         Spring Context

Доступ к данным/интеграция: Поддерживает взаимодействие с базой данных с помощью пяти модулей.

·         JDBC (Подключение к базе данных Java)

·         ORM (Объектно-реляционное сопоставление)

·         OXM (Объектные XML-картографы)

·         JMS (Служба обмена сообщениями Java)

·         Транзакия

Веб: Добавлена поддержка создания веб-приложения с использованием 4 модулей.

Web

·         Web — MVC

·         Web — MVC

·         Web — Socket

·         Web — Portlet

Аспектно-ориентированное программирование: Этот уровень позволяет отделять код с помощью функций рекомендаций и точечных вырезов.

Инструментирование: Этот уровень добавляет поддержку инструментирования классов и реализаций загрузчика классов.

Тест: Добавлена поддержка тестирования с использованием Junit и TestNG.

Разное: За пределами этих категорий слоев существуют два модуля.

·         Аспекты: Позволяет Spring интегрироваться с аспектом.

·         Обмен сообщениями: Добавлена поддержка STOMP, модели программирования аннотаций, и позволяет направлять сообщения STOMP от клиентов WebSocket.

 

4. Каковы различные компоненты приложения Spring?

Приложения Spring содержат пять компонентов:

Интерфейс: Определяет функции программы.

Класс компонента: Содержит свойства, методы настройки и получения для доступа к компоненту, а также определенные функции и т.д.

Spring Аспектно-ориентированное программирование (AOP): Включает в себя сквозные функциональные возможности, которые не поддерживаются в объектно-ориентированном программировании.

Файл конфигурации компонента: Содержит информацию о классах, способах их настройки и определяет их взаимосвязи.

Пользовательская программа: Вызывает функции по всей программе

 

5. Что такое внедрение зависимостей?

Внедрение зависимостей (DI) - это концепция, которая определяет, как должно быть связано несколько классов. Это один из примеров Инверсии контроля. Вам не нужно явно подключать службы и компоненты в коде при использовании внедрения зависимостей. Вместо этого вы описываете службы, необходимые каждому компоненту, в файле конфигурации XML и разрешаете контейнеру IOC автоматически подключать их.

внедрение зависимостей Spring

 

6. Что такое Spring IoK контейнер?

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

 

7. Каковы типы IoK?

Контейнер BeanFactory: Этот заводской класс содержит предварительно упакованную коллекцию компонентов, которые создаются при вызове клиентами. Это самый простой контейнер для поддержки DI.

Контейнер ApplicationContext: Построенный поверх контейнера BeanFactory, этот контейнер обеспечивает дополнительные функциональные возможности, ориентированные на предприятие. Например, контейнеры ApplicationContext предоставляют возможность разрешать текстовые сообщения и публиковать события приложения.

 

8. Что такое Аспектно-ориентированное программирование (AOП)?

AOП-это метод программирования, который позволяет программистам модулировать поведение, используемое в типичных подразделениях ответственности, используемых в объектно-ориентированном программировании. Основная конструкция аспектов AOП – это поведение, применимое к разным классам. Извлечение этих моделей поведения из отдельных компонентов в аспекты позволяет легко использовать их повторно.

 

9. Что такое Spring Bean?

Это объекты, созданные из метаданных конфигурации при их передаче в контейнер IOC. Они составляют основу всех Spring. Контейнер IOC создает экземпляры, настраивает, подключает и управляет каждым компонентом.

 

10. Каковы общие реализации ApplicationContext?

Тремя наиболее популярными контейнерами являются:

Файловая система xmlapplicationcontext: Заставляет конструктор загружать определения компонентов из файла конфигурации XML. На него должен быть указан полный путь к файлу.

ClassPathXmlApplicationContext: Этот контейнер выполняет то же самое, что и выше, но не требует полного пути к файлу. Вместо этого вы устанавливаете свойство CLASSPATH и позволяете контейнеру находить XML по этому CLASSPATH.

WebXmlApplicationContext: Загружает все определения компонентов в веб-приложение из XML-файла.

 

11. В чем разница между BeanFactory и ApplicationContext?

BeanFactory – это базовый, компактный контейнер с ограниченной функциональностью. Его лучше всего использовать для простых задач или при использовании машин с низким ресурсом.

ApplicationContext – это расширенный, более интенсивный контейнер с расширенным интерфейсом и дополнительными возможностями, такими как AOP. Этот контейнер лучше всего использовать, когда вам требуется больше функциональности, чем на заводе Bean, и у вас достаточно ресурсов, доступных на машине.

 

12. Как вы добавляете компонент в Spring?

Мы должны аннотировать метод: @Bean аннотация. Когда JavaConfig встретит этот метод, он выполнит этот метод и зарегистрирует возвращаемое значение в качестве компонента в BeanFactory.

package io.educative;

public class User {

private String name;
private String address;

public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}

 

 

13. Какие области Beans поддерживает Spring?

Spring поддерживает пять областей bean

Синглтон: ограничивает определение компонента одним экземпляром для каждого контейнера Spring IoC.

Прототип: Охватывает один компонент для включения любого количества экземпляров.

Запрос: Ограничивает определение компонента одним HTTP-запросом в контексте приложения.

Сессия: Область определения компонента для сеанса HTTP в контексте приложения.

Глобальная сессия: Расширяет определение компонента до глобального HTTP

 

14. Каковы этапы жизненного цикла компонента?

Жизненный цикл компонента состоит из семи этапов:

1.       Создать экземпляр: Компонент создается контейнером Spring с использованием определения компонента, найденного в файле конфигурации XML.

2.       Заполнение свойств: Spring заполняет все определенные свойства из XML-файла с помощью внедрения зависимостей.

3.       Установить имя компонента: Spring передает идентификатор компонента методу setBeanName (), если компонент использует интерфейс BeanNameAware.

4.       Установить baen factory: Spring передает beanfactory методу setBeanFactory (), если компонент настроен на использование интерфейса BeanFactoryAware.

5.       Предварительная инициализация: Spring вызывает любые BeanPostProcessors, связанные с компонентом, с помощью метода postProcessorBeforeInitialization ().

6.       Инициализация: Затем инициализируется компонент. Выполняется любой специальный процесс инициализации, указанный в методе инициализации.

7.       Постинициализация: Вызываются все определенные методы postProcessAfterInitialization (). Теперь bean завершен. Компоненты, реализующие DisposableBean, будут удалены с помощью функции destroy() после завершения их работы.

жизненный цикл компонента

 15. Объясните внутреннюю часть bean в Spring

Внутренний компонент используется как свойство другого компонента. Внутренние компоненты могут быть определены в XML-файле конфигурации либо в элементах <property>, либо <constructor-arg> Все внутренние компоненты всегда имеют область действия как prototype и не имеют идентификаторов.

 

16. Что такое автоматическая проводка bean?

Это функция Spring, которая позволяет контейнеру Spring автоматически устанавливать отношения зависимостей между сотрудничающими компонентами, просматривая BeanFactory. Автоматическая проводка может быть настроена для определения этих отношений с использованием имен компонентов, типов или даже конструкторов классов.

 

17. Как вы можете внедрить коллекции Java в Spring?

Коллекции Java могут быть введены четырьмя различными способами:

<list>: Помогает вам передавать наборы значений, такие как списки, разрешая при этом дубликаты.

<set>: Помогает связать набор значений, избегая при этом дублирования.

<map>: Позволяет вводить коллекцию пар ключ-значение любого типа данных.

<props>: Позволяет вводить коллекцию пар ключ-значение как с ключами, так и со значениями типа String.

 

18. Что такое Joinpoint?

Joinpoint представляют собой любую точку в программе, в которой выполняется действие. Примеры Joinpoint включают в себя обработку исключения или выполнение метода. При использовании AOП только выполнение метода является точками соединения.

 

19. Что такое Advice в Spring?

Advice – это действие, предпринятое в данной точке соединения. AOП использует Advice в качестве перехватчика до завершения выполнения метода.

 

20. Каковы типы рекомендаций для структуры Spring?

До: Это советы, которые выполняются до методов joinpoint. Они помечены знаком @before.

После возврата: они выполняются после того, как метод joinpoint завершит выполнение без проблем. Они помечены знаком аннотации @AfterReturning.

После выполнения: Они выполняются только в том случае, если метод joinnpoint заканчивается созданием исключения. Они помечены с помощью метки аннотации @AfterThrowing.

После: Они выполняются после метода joinpoint, независимо от того, как он завершается. Они помечены знаком @After.

Вокруг: Они выполняются до и после точки соединения и помечаются с помощью метки @Around аннотации.

 

21. Что такое Weaving?

Weaving Spring – это процесс связывания элементов с другими типами приложений или объектами для создания рекомендуемых объектов.

 

22. Опишите поддержку Spring DAO

Поддержка объектов доступа к данным (DAO) - это набор инструментов, которые упрощают работу с технологиями доступа к данным, такими как Hibernate и JDO, с улучшенной согласованностью. Он также автоматически улавливает технологические ошибки. Вместе они облегчают работу с DAOS и позволяют без ошибок переключаться между технологиями сохранения.


23. Что такое JDBC? Какие классы присутствуют в API Spring JDBC?

JDBC означает подключение к базе данных Java. Это интерфейс прикладного программирования на Java, используемый для определения способа доступа программы к базе данных. API JDBC содержит:

·       JdbcTemplate

·       NamedParameterJdbcTemplate

·       SimpleJdbcCall

·       SimpleJdbcInsert

·       SimpleJdbcTemplate

 

24. Что такое платформа Spring Model-View-Controller (MVC)?

Платформа Spring MVC предоставляет архитектуру контроллера представления модели и готовые компоненты, используемые для разработки слабо связанных веб-приложений. Используя MVC, вы можете разделить различные аспекты программы, такие как бизнес, логика ввода и пользовательский интерфейс, сохраняя при этом слабую связь между ними. Это обеспечивает большую гибкость в ваших веб-приложениях.

платформа Spring Model-View-Controller

25. Каковы части фреймворка Spring MVC?

Тремя основными частями MVC являются:

·      DispatcherServlet: Эта часть MVC управляет всеми HTTP-запросами и ответами, которые взаимодействуют с программой. DispatcherServlet сначала получает соответствующее сопоставление обработчика из файла конфигурации, а затем передает запрос контроллеру. DispatcherServlet является наиболее важной частью платформы Spring Web MVC.

·      WebApplicationContext: Это действует как расширение обычного ApplicationContext с дополнительными функциями, необходимыми для веб-приложений. Он может однозначно разрешать темы и автоматически определять, с каким сервлетом он связан.

·      Контроллеры: Это компоненты в DispatcherServlet, которые действуют как фильтры между вводом данных пользователем и ответом приложения. Контроллеры принимают ввод пользователя, решают, следует ли преобразовать его в Представление или Модель, и, наконец, возвращают преобразованный ввод в Распознаватель представлений для просмотра.

 

26. Каковы различные части DispatcherServlet?

Сопоставление обработчика: интерфейс, определяющий сопоставление между обработчиком и объектами запроса. Может использоваться для создания пользовательской стратегии сопоставления.

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

Распознаватель представлений: Принимает и отображает модели с контроллера путем сопоставления имен представлений и фактических представлений.

 

27. Как можно включить проводку аннотаций в Spring?

Чтобы разрешить подключение аннотаций, включите <context:annotation-config/> в свой файл конфигурации XML:

<beans
//...
xmlns:context="http://www.springframework.org/schema/context"
//...
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
//...

<context:annotation-config /> //annotation wiring enabled here
//...
</beans>

 

28. Что такое Spring Boot?

Spring Boot – это Java-фреймворк с открытым исходным кодом, используемый для создания микросервисов. Это проект, построенный на основе Spring, чтобы упростить задачу развертывания приложений Java. Его двумя основными компонентами являются Spring Framework и встроенные HTTP-серверы. Spring Boot используется для:

·         Упрощение процесса разработки готовых к производству пружинных приложений

·         Избегания конфигурации XML Spring

·         Сокращения времени разработки за счет уменьшения количества необходимых инструкций по импорту

·         Обеспечения взвешенного подхода к развитию

Часто используются для быстрого запуска приложений Spring.

что такое Spring Boot

29. Что такое Реактивное программирование?

Реактивное программирование – это парадигма программирования, которая основывается на запрограммированных действиях, запускаемых в связи с событиями, а не на хронологическом порядке кода. Реактивные программы эффективно используют компьютерные ресурсы и хорошо масштабируются всего несколькими потоками. Его непоследовательная форма позволяет избежать блокировки стека и поддерживать оперативность реагирования.

реактивное программирование

 

30. Что такое Spring webflux?

Webflux – это реактивный веб-фреймворк, который служит альтернативой MVC. Webflux обеспечивает лучшую масштабируемость и предотвращает блокировку стека.

что такое Spring Webflux

 

31. В чем разница между веб-клиентом и клиентом веб-тестирования?

WebClient – это компонент платформы Web Reactive, который упрощает создание реактивных и неблокирующих веб-приложений.

Webtestclient является версией этого клиента со всеми теми же функциями, но отключен от реальных сред. Тестовому клиенту для работы не требуется живая среда HTTP-сервера, что делает его хорошей средой тестирования для новых приложений. Он может подключаться к любому серверу по HTTP-соединению или напрямую синхронизироваться с WebFlux для применения фиктивных HTTP-запросов и создания объектов ответа.

 

32. Может ли Spring Boot разрешить Spring MVC или Spring Web Flux в одном и том же приложении?

Загрузка позволяет использовать и то, и другое в одном приложении, но может применяться только по одному за раз. Web Flux-это неблокирующая структура, в то время как MVC-это блокирующая структура, что делает их несовместимыми друг с другом.

 

33. Может ли Spring 5 интегрироваться с модульностью Jdk9?

Да, Spring 5 может интегрироваться с Jdk9. Вот как вы можете это сделать:

Создайте новый класс

package com.hello;
public class HelloWorld {
public String sayHello(){
return "HelloWorld";
}
}

 

Создайте новый модуль

module com.hello {
export com.hello;
}

 

Создайте новый Java проект

module com.hello.client {
requires com.hello;
}

 

Протестируйте новый модуль

public class HelloWorldClient {
public static void main(String[] args){
HelloWorld helloWorld = new HelloWorld();
log.info(helloWorld.sayHello());
}
}

 

Не уверены, что знаете ответы на все вопросы? СИБИНОЦЕНТР приглашает на курсы Java программистов. Наши курсы подойдут как начинающим специалистам с минимальным опытом программирования, так и опытным разработчикам. Обучение можно пройти как в очном формате (в классе СИБИНФОЦЕНТР, так и в дистанционном (в режиме реального  времени, не запись). Курсы проводят опытные преподаватели-практики.

Записаться на любой курс, получить подробную программу курса, задать уточняющие вопросы преподавателю можно по почте info@sibinfo.ru или по бесплатному телефону 8(800)550-63-02

КодКурсы обученияАкадем. часыЦена
JSE8JJava SE8 for junior Developers40от 20 000 руб.
JSE8NFJava SE 8: Новые возможности16от 16 000 руб.
JSE8FJava SE 8: Основы40от 15 000 руб.
JSE8PJava SE 8: Программирование40от 15 000 руб.
JSE7FJava SE 7 Основы40от 15 000 руб.
JSE7PJava SE 7: Программирование40от 15 000 руб.
JaT1Программирование на Java для тестировщиков. Уровень 140от 25 000 руб.
SpDSpring Data16от 30 000 руб.
SpFrВведение в Spring Framework 4 и Spring Boot 1.516от 30 000 руб.
JVA-010Владение каркасом разработки Spring Framework24от 25 000 руб.

Возврат к списку

Сибинфоцентр

Это более 300 авторизованных и авторских курсов из разных направлений. 

СИБИНФОЦЕНТР является авторизованным центром обучения Cisco (Cisco Learning Partner), Microsoft (Microsoft Silver Certified Partner), Android (Android Advanced Training Consultants), 1С-Битрикс, Код Безопасности, Astra Linux, Postgre SQL

На базе нашего учебного центра действуют центры тестирования Prometric, Pearson Vue, Kryterion, Castle Worldwide и ETS(TOEFL).


Отзывы о нас на Флампе