Припрема за Интервју за Јава Спринг Боот Програмера
Да ли сте Јава Спринг Боот програмер који се спрема за предстојећи интервју, али нисте сигурни шта можете очекивати? Ми смо ту да вам помогнемо!
Овај текст ће вам помоћи да се ефикасно припремите, износећи нека од најчешће постављених питања за Спринг Боот интервјуе и одговоре које испитивачи могу користити да процене ваше способности.
Испитивачи користе стратешка Јава Спринг Боот питања како би проценили вештине кандидата, које су релевантне за позицију за коју се пријављују. Због тога је неопходно да будете спремни са релевантним питањима и знате како на њих одговорити.
Пре него што пређемо на сама питања за интервју и одговарајуће одговоре, хајде да прођемо кроз основне информације о томе шта је Спринг Боот и колико је користан за Јава програмере.
Шта је Јава Спринг Боот?
Овај Јава оквир је створио кључни тим 2014. године. Спринг Боот, као оквир отвореног кода, олакшава развој апликација које су самосталне, погодне за производњу и способне за рад на Јава виртуелној машини (JVM).
Јава програмери га често користе за развој веб апликација и микросервиса, због брзог и једноставног процеса подешавања и безбедног времена конфигурисања.
Једноставно подешавање и конфигурисање апликација базираних на Спринг-у, које омогућава Спринг Боот, постиже се кроз три основне функције:
- Аутоконфигурација – представља аутоматску конфигурацију Спринг апликације.
- Спринг Боот нуди мишљења на основу подразумеваних конфигурацијских поставки и пакета за инсталацију неопходних зависности. Овај приступ значајно убрзава почетно подешавање пројеката.
- Спринг Боот вам омогућава да покренете вашу апликацију независно, без потребе за веб сервером.
Како Спринг Боот помаже Јава програмерима?
Пре свега, Јава програмерима који користе Спринг Боот, једноставније је захваљујући аутоматској конфигурацији свих компоненти потребних за развој Спринг апликација које су спремне за производњу. Ово, дугорочно гледано, скраћује време развоја и у коначници повећава њихову ефикасност.
Спринг Боот се такође лако интегрише са Спринг екосистемом, који укључује Спринг JDBC, Спринг Дата, Спринг Сецурити и Спринг ORM.
Јава програмери такође могу да повежу Спринг Боот са различитим базама података, као што су Oracle, MySQL, PostgreSQL и MongoDB, између осталих.
Флексибилне конфигурације са XML конфигурацијама, Java Beans-овима и трансакцијама базе података су само неке од осталих корисних функција.
Сада када имате основно разумевање Спринг Боот-а, хајде да размотримо нека од најчешће постављаних питања и одговоре на интервјуима за Спринг Боот, која ће вам помоћи да се припремите за ваш интервју.
Питања и одговори на интервјуу за Спринг Боот
Које су неке карактеристике Спринг Боот-а?
Неке од најпопуларнијих карактеристика укључују:
- Спринг Боот CLI омогућава коришћење Groovy-а за писање Спринг Боот апликација; дугорочно гледано, избегава се шаблонски код.
- Спринг Боот обезбеђује функције евидентирања и безбедности, које једноставно штите вашу апликацију од потенцијалних безбедносних претњи.
- Омогућава аутоматску конфигурацију релевантних компоненти за ваш пројекат, избегавајући ризик од непотребних WAR датотека.
- Почетни иницијализатор за вас поставља подразумевану интерну структуру пројекта. Захваљујући томе, не морате ручно да подешавате структуру пројекта.
- Функција актуатора Спринг Боот-а пружа приступ информацијама и метрикама док апликација ради.
- Једна од кључних функција Спринг Боот-а, Starter Dependencies, помаже у агрегирању уобичајених зависности одређене функције.
Шта су Спринг Боот Стартерс?
Спринг Боот стартери су дескриптори зависности који укључују скуп добављача за управљање зависностима, који омогућавају зависности апликације. Они пружају оквир са аутоматском резолуцијом зависности. Стартери побољшавају једноставан и брз развој.
Шта је актуатор у Спринг Боот-у и које су његове предности?
Актуатор је једна од функција Спринг Боот-а која вам омогућава да пратите шта се дешава унутар апликације док она ради.
На пример, током отклањања грешака, можете користити актуатор за анализу дневника, омогућавајући приступ функцијама као што су коришћење процесора и идентификација bean-ова.
Поред тога, актуатор не само да пружа једноставан приступ REST крајњим тачкама спремним за производњу, које надгледају и управљају информацијама, већ и преузима податке са веба.
Шта је Тхимелеаф и како користити Тхимелеаф?
Тхимелеаф је Јава шаблон на страни сервера, који ствара природан изглед шаблона за Спринг и HTML5 Јава веб апликације.
Спринг Боот ће аутоматски конфигурисати Тхимелеаф користећи зависност `spring-boot-starter-thymeleaf` у `pom.xml` датотеци, за сервирање динамичког веб садржаја.
Да бисте омогућили Спринг Боот-у да чита и приказује Тхимелеаф шаблоне или HTML датотеке, поставите шаблоне у `src/main/resources/templates`.
Тхимелеаф затим анализира `index.html` датотеку и користи стварне вредности које проследите из класе контролера, уместо динамичких вредности доступних у датотеци индекса.
Након тога, порука се приказује у веб прегледачу чим се покрене апликација Спринг Боот.
org.springframework.boot spring-boot-starter-thymeleaf
Опишите процес креирања Спринг Боот пројекта користећи Спринг Инитиализер.
Спринг Инитиализер, као веб алат Спринг-а, омогућава вам да креирате Спринг Боот пројекат у неколико корака, дајући детаље о пројекту.
- Посетите Спринг Инитиализер и попуните поља за унос.
- Кликом на дугме „Генериши“ започеће преузимање пројекта.
- Распакујте преузети пројекат из zip датотеке и отворите га у вашем IDE-у. У IDE-у идите на `File->New->Project from existing sources->spring-boot-app`, а затим изаберите датотеку `pom.xml`. Кликните на промпт за промене увоза, како би се пројекат синхронизовао. Затим, не заборавите да одете на датотеку `application.properties` и промените број `server.port` на `server.port=7000`.
- Сада покрените апликацију из `src->main->java->com.gfg.Spring.boot.app`.
Шта је JPA у Спринг Боот-у?
Ово је спецификација у Јави, која користи мапирање објеката и односа (ORM) за управљање релационим подацима и омогућава приступ подацима између Јава објекта или Јава класе и релационе базе података апликације.
JPA користи Java Persistent Query Language (JPQL), објектно-оријентисани језик упита који је независан од платформе.
JPA омогућава обраду упита и трансакције објеката према бази података користећи Entity Manager API који пружа.
Шта је аутоматска конфигурација у Спринг Боот-у?
Аутоматска конфигурација има за циљ да аутоматизује конфигурацију Спринг Боот апликације користећи jar зависности које додајете апликацијама.
У зависности од доступних зависности у Classpath-у апликације, аутоконфигурација ће декларисати уграђене објекте модула специфичне за Спринг, укључујући, између осталог, JPA и Спринг Сецурити.
Шта су Спринг напомене?
Спринг напомене се односе на метаподатке који нуде информације о фрагменту програма и додају додатне податке том програму. Компоненте кода, укључујући класе и методе, често су повезане са напоменама.
Напомене не утичу директно на рад програма или на накнадну радњу преведеног кода.
Њихова синтакса почиње симболом `@`.
Спринг Боот пружа шест главних типова напомена:
- Спринг Цоре Аннотатионс
- Спринг Дата Аннотатионс
- Спринг Беан Аннотатионс
- Спринг Веб Аннотатионс
- Спринг Сцхедулинг Аннотатионс
- Спринг Боот Аннотатионс
Шта значи Спринг Дата REST?
Спринг Дата REST излаже ресурсе у RESTful облику, који се налазе око Спринг Data ресурса, користећи минималну количину кода.
Следећи пример користи метод POST да захтева садржај користећи `http://localhost/example` као URL и `Content-Type: application/json` као заглавље.
Садржај захтева:
{ "name": "Jimmy", "Gender": "Male", "Age": 23 }
Садржај одговора:
{ "name": "Jimmy", "Gender": "Male", "Age": 23 "_links": { "self": { "href": "http://localhost:8080/example/1" }, "person": { "href": "http://localhost:8080/example/1" } } }
Ово је широк скуп унапред дефинисаних алата, чија се својства примењују на одговарајућа развојна окружења, како би се олакшао развој и уштедело време за развој.
Кад год промените код у апликацији Спринг Боот, функција Спринг Боот DevTools се аутоматски поново покреће. Ово вам штеди проблеме око ручног поновног покретања апликације сваки пут када промените код.
Шта је Спринг Дата?
Спринг Дата настоји да омогући програмерима једноставан приступ технологијама за приступ подацима, као што су релациони и нерелациони подаци и услуге података базиране на облаку, задржавајући посебне карактеристике основног складишта података.
Како рећи аутоматској конфигурацији да се повуче када постоји bean?
Овде користите напомену `@ConditionalOnMissingBean`, која укључује атрибуте `name` и `value` на следећи начин:
- атрибут `value` чува тип bean-а за проверу
- атрибут `name` именује bean за проверу
Како преузети податке из базе података у Спринг Боот-у?
Подацима из MySQL базе података можемо приступити у нашој Спринг Боот апликацији, користећи следеће кораке:
Корак 1: Користите команду `CREATE DATABASE person` да бисте креирали базу података у MySQL-у.
Корак 2: Унутар базе података креирајте табелу:
CREATE TABLE person(id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, name VARCHAR(255));
Корак 3: Сада креирајте Спринг Боот апликацију, а затим јој додајте JDBC, MySQL и потребне веб зависности.
Корак 4: Конфигуришите базу података из датотеке `application.properties` као што је приказано испод:
spring.datasource.url=jdbc:mysql://localhost:3306/personDetails spring.datasource.username=example123 spring.datasource.password=example123 spring.jpa.hibernate.ddl-auto=create-drop
Корак 5: Затим, хајде да обрадимо захтеве у класи контролера:
package com.person; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.web.bind.annotation.RestController; @RestController public class JdbcController { @Autowired JdbcTemplate jdbc; @RequestMapping("/save") public String index(){ jdbc.execute("insert into person (name)values(Trial)"); return "Name entered Successfully"; } }
На крају, покрените апликацију док проверавате унос базе података, како бисте видели приступ подацима.
Зашто су нам потребни Спринг Профили?
Спринг профили омогућавају раздвајање конфигурације апликације за различите делове и користе се за специфичан развој.
Спринг профили такође штеде програмеру муке око управљања спољашњим конфигурацијама специфичним за окружење, у случају да Спринг профили нису доступни.
Поред тога, ово би отежало одржавање синхронизације и подразумевало би додатну потребу за писањем неколико фабричких компоненти које би користиле одређене потребне ствари у зависности од специфичних параметара специфичних за окружење.
Можемо ли да променимо порт уграђеног Tomcat сервера у Спринг Боот-у?
Да, можемо.
То се постиже манипулисањем датотеком `application.properties`, тако да укључи својство `server.port` и додели му порт по вашем избору. Спринг Боот аутоматски учитава датотеку са својствима апликације и примењује потребне конфигурације на апликацију.
На пример, можете променити број `server.port` са подразумеване вредности 8080 на `server.port= 8081`.
Како конфигуришете Log4j за евидентирање?
Са ових неколико једноставних корака, можемо конфигурисати Log4j за евидентирање:
- Прво креирајте свој Јава пројекат, а затим кликните десним тастером миша на пројекат. Идите на `MyEclipse->File->New->Java Project` да дате назив пројекту и кликните на `Finish`.
- Затим кликните десним тастером миша на име вашег Јава пројекта и изаберите `Build Path -> Configure Build Path`. Овим кораком ћете додати датотеку log4j.
- Идите на `Libraries` и кликните на дугме `Add External JARs`, затим изаберите датотеку log4j из падајућег менија који се појави. Затим кликните на OK.
- Креирајте нову Јава датотеку коју ћете назвати `log4j.properties` датотеком, а затим кликните на `Finish` и додајте ову датотеку у `Classpath`.
- Кликните на `Advanced` у `Classpath`, затим изаберите опцију `Add Folders` и не заборавите да кликнете на `OK`.
- Сада можете потражити датотеку `log4j.properties`, кликнути на `OK` и покренути пројекат.
- Проверите конзолу за излаз испод.
[main] DEBUG Example – Hello this is a debug message [main] INFO Example – Hello this is an info message
Шта је IoC контејнер?
Контејнер IoC (Инверзија контроле) је основни Спринг контејнер који аутоматски имплементира ињекцију зависности. Он инстанцира апликацијске класе и одговоран је за конфигурацију објеката и склапање потребних зависности.
Такође, управља животним циклусом објекта од његовог инстанцирања до његовог уништења.
IoC обавља ове задатке користећи конфигурацију метаподатака у Јава коду, XML-у и Јава напоменама.
Контејнер се назива инверзија контроле, зато што контролише Јава објекте и животни циклус ових објеката, што је иначе задатак програмера.
Објасните како да направите Спринг Боот апликацију користећи Maven
Овај процес подразумева низ корака:
Корак 1: Изаберите тип пројекта.
Корак 2: Именујте свој пројекат, конфигуришите га, а затим кликните на дугме `Finish`, како бисте креирали пројекат.
Корак 3: Сада ћемо конфигурисати датотеку `pom.xml` из Maven пројекта, како би од њега направили Спринг Боот пројекат.
`pom.xml` датотека:
<project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.javatpoint</groupId> <artifactId>spring-boot-example</artifactId> <version>0.0.1-SNAPS</version> <name>JavaTpoint Spring Boot Example</name> </project>
Конфигурација укључује додавање родитеља пројекту Maven. Овим се Maven пројекат проглашава подређеним пројектом надређеном пројекту.
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.2.RELEASE</version> </parent>
Корак 4: Затим додајте веб зависност, `spring-boot-starter-web`, у `pom.xml`.
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
Корак 5: Додајте Јава верзију пројекта.
<properties> <java.version>1.8</java.version> </properties>
Корак 6: Запамтите да сваки пут када додате нове зависности, морате ажурирати Maven пројекат.
Корак 7: Учините Maven пројекат извршним, тако што ћете креирати Јава класу унутар `src/main/java` пакета.
Корак 8: Затим позовите статички метод покретања класе Спринг апликације.
Корак 9: На крају, покрените класу као Јава апликацију.
Које су предности Спринг Боот-а у односу на Спринг?
- Способност покретања покретања Спринг Боот-а за компилацију изворног језика помоћу Boot иницијализатора, што је техника која се назива bootstrapping, омогућава уштеду простора на уређајима корисника и такође смањује време учитавања апликације.
- За разлику од Спринг-а, Спринг Боот омогућава управљање зависностима након додавања зависности `spring-boot` без зависности од надређеног POM-а (Parent Object Model) или XML датотеке.
- Спринг Боот такође омогућава програмерима да користе напомене или XML конфигурације, без потребе за коришћењем XML конфигурација.
- Програмери преферирају Спринг Боот због смањеног стандардног кода потребног за подешавање апликације. То је зато што Спринг Боот долази са базом података у меморији и уграђеним Tomcat сервером, што смањује основни код. Спринг, с друге стране, има више шаблонског кода.
- Спринг Боот не захтева нужно WAR (Web Application Resource) датотеке и може се ослонити само на JAR (Java Resource), који има малу и једноставнију структуру и стога је кориснији за кориснике и програмере.
- Спринг Боот такође аутоматски уграђује сервере, као што су Tomcat и Jetty; стога програмер не мора ручно да подешава сервер као што би требало да уради у Спрингу.
Процес пагинације дели податке на секције ради уштеде ресурса. Садржи два поља, величину странице и број странице.
Процес укључује неколико корака, укључујући:
Корак 1: Почетно подешавање
Ентитет ћемо назвати Person као класу домена.
@Entity public class Person { @Id private long id; private String name; }
Корак 2: Креирање складишта
Затим користите `PersonRepository` које проширује `PagingAndSortingRepository`, како би могли да добијемо методе `findAll(Pageable pageable)` и `findAll(Sort sort)`, за странице и сортирање.
public interface PersonRepository extends PagingAndSortingRepository<Person, Integer> { List<Product> findAllByPrice(double price, Pageable pageable); }
Корак 3: Корак пагинације
Први корак овде укључује креирање PageRequest објекта; прослеђујући број странице и величину странице као што је затражено, што имплементира интерфејс за страницу.
Pageable firstPageWithTwoElements = PageRequest.of(0,2); Pageable secondPageWithThreeElements = PageRequest.of(1,3);
Затим проследите овај PageRequest објекат методи складишта као параметар.
Page<Person> allProducts = personRepository.findAllByPrice(findPageWithTwoElements); List<Items> allTwoDollarItems = itemsRepository.findAllByPrice(2, secondPageThreeElements)
Подразумевано, метода `findAll(Pageable pageable)` враћа објекат `Page
Објасните како да региструјете прилагођену аутоматску конфигурацију
У датотеци `META-INF/spring.factories` кључа `@EnableAutoConfiguration`, наведите потпуно квалификовано име. Овим кораком региструјете класу ауто-конфигурације.
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.baeldung.autoconfigure.CustomAutoConfiguration
Изградња пројекта користећи Maven, захтеваће од вас да поставите датотеку у директоријум `resources/META-INF`.
Шта је bootstrapping у Спринг Боот-у?
Bootstrapping је процес извршавања логике у Спринг Боот апликацији при покретању.
Boot иницијализатор компилује изворни језик у Спринг Боот-у. Овај процес штеди простор на уређају и смањује време учитавања апликације.
Завршне речи 👨💻
Дакле, овај чланак је покрио нека од Спринг Боот питања, која ће вам вероватно бити постављена током интервјуа, као и одговоре који ће вам помоћи да на њих одговорите са самопоуздањем. Надамо се да ћете добити посао из снова!
Можда ћете желети да научите неколико корисних савета из питања постављених током интервјуа за Јава.
Срећно! 🙂