1. 程式人生 > >史上最全Spring Boot面試題(含答案)看完就是Spring Boot專家!

史上最全Spring Boot面試題(含答案)看完就是Spring Boot專家!

史上最全Spring Boot面試題(含答案)看完就是Spring Boot專家!

 

一.Spring Boot、Spring MVC 和 Spring 有什麼區別?

SpringFrame

SpringFramework 最重要的特徵是依賴注入。所有 SpringModules 不是依賴注入就是 IOC 控制反轉。

當我們恰當的使用 DI 或者是 IOC 的時候,我們可以開發鬆耦合應用。鬆耦合應用的單元測試可以很容易的進行。

SpringMVC

Spring MVC 提供了一種分離式的方法來開發 Web 應用。通過運用像 DispatcherServelet,MoudlAndView 和 ViewResolver 等一些簡單的概念,開發 Web 應用將會變的非常簡單。

SpringBoot

Spring 和 SpringMVC 的問題在於需要配置大量的引數。

<bean
 class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
 <value>/WEB-INF/views/</value>
 </property>
 <property name="suffix">
 <value>.jsp</value>
 </property>
 </bean>
 <mvc:resources mapping="/webjars/**" location="/webjars/"/>

Spring Boot 通過一個自動配置和啟動的項來目解決這個問題。為了更快的構建產品就緒應用程式,Spring Boot 提供了一些非功能性特徵。

二.什麼是自動配置?

Spring 和 SpringMVC 的問題在於需要配置大量的引數。

<bean
 class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
 <value>/WEB-INF/views/</value>
 </property>
 <property name="suffix">
 <value>.jsp</value>
 </property>
 </bean>
 <mvc:resources mapping="/webjars/**" location="/webjars/"/>

我們能否帶來更多的智慧?當一個 MVC JAR 新增到應用程式中的時候,我們能否自動配置一些 beans?

Spring 檢視(CLASSPATH 上可用的框架)已存在的應用程式的配置。在此基礎上,Spring Boot 提供了配置應用程式和框架所需要的基本配置。這就是自動配置。

三.什麼是 Spring Boot Stater ?

啟動器是一套方便的依賴沒描述符,它可以放在自己的程式中。你可以一站式的獲取你所需要的 Spring 和相關技術,而不需要依賴描述符的通過示例程式碼搜尋和複製黏貼的負載。

例如,如果你想使用 Sping 和 JPA 訪問資料庫,只需要你的專案包含 spring-boot-starter-data-jpa 依賴項,你就可以完美進行。

四.你能否舉一個例子來解釋更多 Staters 的內容?

讓我們來思考一個 Stater 的例子 -Spring Boot Stater Web。

如果你想開發一個 web 應用程式或者是公開 REST 服務的應用程式。Spring Boot Start Web 是首選。讓我們使用 Spring Initializr 建立一個 Spring Boot Start Web 的快速專案。

Spring Boot Start Web 的依賴項

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</artifactId>
</dependency>

下面的截圖是新增進我們應用程式的不同的依賴項

史上最全Spring Boot面試題(含答案)看完就是Spring Boot專家!

 

依賴項可以被分為

  • Spring - core,beans,context,aop
  • Web MVC - (Spring MVC)
  • Jackson - for JSON Binding
  • Validation - Hibernate,Validation API
  • Enbedded Servlet Container - Tomcat
  • Logging - logback,slf4j

任何經典的 Web 應用程式都會使用所有這些依賴項。Spring Boot Starter Web 預先打包了這些依賴項。

作為一個開發者,我不需要再擔心這些依賴項和它們的相容版本。

五.Spring Boot 還提供了其它的哪些 Starter Project Options?

Spring Boot 也提供了其它的啟動器專案包括,包括用於開發特定型別應用程式的典型依賴項。

spring-boot-starter-web-services - SOAP Web Services

spring-boot-starter-web - Web 和 RESTful 應用程式

spring-boot-starter-test - 單元測試和整合測試

spring-boot-starter-jdbc - 傳統的 JDBC

spring-boot-starter-hateoas - 為服務新增 HATEOAS 功能

spring-boot-starter-security - 使用 SpringSecurity 進行身份驗證和授權

spring-boot-starter-data-jpa - 帶有 Hibeernate 的 Spring Data JPA

spring-boot-starter-data-rest - 使用 Spring Data REST 公佈簡單的 REST 服務

六.Spring 是如何快速建立產品就緒應用程式的?

Spring Boot 致力於快速產品就緒應用程式。為此,它提供了一些譬如快取記憶體,日誌記錄,監控和嵌入式伺服器等開箱即用的非功能性特徵。

spring-boot-starter-actuator - 使用一些如監控和跟蹤應用的高階功能

spring-boot-starter-undertow, spring-boot-starter-jetty, spring-boot-starter-tomcat - 選擇您的特定嵌入式 Servlet 容器

spring-boot-starter-logging - 使用 logback 進行日誌記錄

spring-boot-starter-cache - 啟用 Spring Framework 的快取支援

###Spring2 和 Spring5 所需要的最低 Java 版本是什麼?

Spring Boot 2.0 需要 Java8 或者更新的版本。Java6 和 Java7 已經不再支援。

七.建立一個 Spring Boot Project 的最簡單的方法是什麼?

Spring Initializr是啟動 Spring Boot Projects 的一個很好的工具。

史上最全Spring Boot面試題(含答案)看完就是Spring Boot專家!

 

  • 就像上圖中所展示的一樣,我們需要做一下幾步:
  • 登入 Spring Initializr,按照以下方式進行選擇:
  • 選擇 com.in28minutes.springboot 為組
  • 選擇 studet-services 為元件
  • 選擇下面的依賴項
  • Web
  • Actuator
  • DevTools
  • 點選生 GenerateProject
  • 將專案匯入 Eclipse。檔案 - 匯入 - 現有的 Maven 專案

八.Spring Initializr 是建立 Spring Boot Projects 的唯一方法嗎?

不是的。

Spring Initiatlizr 讓建立 Spring Boot 專案變的很容易,但是,你也可以通過設定一個 maven 專案並新增正確的依賴項來開始一個專案。

在我們的 Spring 課程中,我們使用兩種方法來建立專案。

第一種方法是 start.spring.io 。

另外一種方法是在專案的標題為“Basic Web Application”處進行手動設定。

手動設定一個 maven 專案

這裡有幾個重要的步驟:

  • 在 Eclipse 中,使用檔案 - 新建 Maven 專案來建立一個新專案
  • 新增依賴項。
  • 新增 maven 外掛。
  • 新增 Spring Boot 應用程式類。

到這裡,準備工作已經做好!

九.為什麼我們需要 spring-boot-maven-plugin?

spring-boot-maven-plugin 提供了一些像 jar 一樣打包或者執行應用程式的命令。

  • spring-boot:run 執行你的 SpringBooty 應用程式。
  • spring-boot:repackage 重新打包你的 jar 包或者是 war 包使其可執行
  • spring-boot:start 和 spring-boot:stop 管理 Spring Boot 應用程式的生命週期(也可以說是為了整合測試)。
  • spring-boot:build-info 生成執行器可以使用的構造資訊。

十.如何使用 SpringBoot 自動重灌我的應用程式?

使用 Spring Boot 開發工具。

把 Spring Boot 開發工具新增進入你的專案是簡單的。

把下面的依賴項新增至你的 Spring Boot Project pom.xml 中

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-devtools</artifactId>
 <scope>runtime</scope>
</dependency>

重啟應用程式,然後就可以了。

在我測試的時候,發現了 LiveReload 漏洞,如果你測試時也發現了,請一定要告訴我們。

十一.什麼是嵌入式伺服器?我們為什麼要使用嵌入式伺服器呢?

思考一下在你的虛擬機器上部署應用程式需要些什麼。

第一步: 安裝 Java

第二部: 安裝 Web 或者是應用程式的伺服器(Tomat/Wbesphere/Weblogic 等等)

第三部: 部署應用程式 war 包

如果我們想簡化這些步驟,應該如何做呢?

讓我們來思考如何使伺服器成為應用程式的一部分?

你只需要一個安裝了 Java 的虛擬機器,就可以直接在上面部署應用程式了,

是不是很爽?

這個想法是嵌入式伺服器的起源。

當我們建立一個可以部署的應用程式的時候,我們將會把伺服器(例如,tomcat)嵌入到可部署的伺服器中。

例如,對於一個 Spring Boot 應用程式來說,你可以生成一個包含 Embedded Tomcat 的應用程式 jar。你就可以想執行正常 Java 應用程式一樣來執行 web 應用程式了。

嵌入式伺服器就是我們的可執行單元包含伺服器的二進位制檔案(例如,tomcat.jar)。

十二.如何在 Spring Boot 中新增通用的 JS 程式碼?

在原始檔夾下,建立一個名為 static 的資料夾。然後,你可以把你的靜態的內容放在這裡面。

例如,myapp.js 的路徑是 resourcesstaticjsmyapp.js

你可以參考它在 jsp 中的使用方法

<csript src="/js/myapp.js"></script>

錯誤:HAL browser gives me unauthorized error - Full authenticaition is required to access this resource.

該如何來修復這個錯誤呢?

{
 "timestamp": 1488656019562,
 "status": 401,
 "error": "Unauthorized",
 "message": "Full authentication is required to access this resource.",
 "path": "/beans"
}

兩種方法:

方法 1:關閉安全驗證

application.properties

management.security.enabled:FALSE

方法二:在日誌中搜索密碼並傳遞至請求標頭中

十三.什麼是 Spring Date?

Spring Data 的使命是在保證底層資料儲存特殊性的前提下,為資料訪問提供一個熟悉的,一致性的,基於 Spring 的程式設計模型。這使得使用資料訪問技術,關係資料庫和非關係資料庫,map-reduce 框架以及基於雲的資料服務變得很容易。

為了讓它更簡單一些,Spring Data 提供了不受底層資料來源限制的 Abstractions 介面。

下面來舉一個例子

interface TodoRepository extends CrudRepository<Todo, Long> {

你可以定義一簡單的庫,用來插入,更新,刪除和檢索代辦事項,而不需要編寫大量的程式碼。

十四.什麼是 Spring Data REST?

Spring Data TEST 可以用來發布關於 Spring 資料庫的 HATEOAS RESTful 資源。

下面是一個使用 JPA 的例子

@RepositoryRestResource(collectionResourceRel = "todos", path = "todos")
public interface TodoRepository
 extends PagingAndSortingRepository<Todo, Long> {

不需要寫太多程式碼,我們可以釋出關於 Spring 資料庫的 RESTful API。

下面展示的是一些關於 TEST 伺服器的例子

POST

  • URL:http://localhost:8080/todos
  • Use Header:Content-Type:Type:application/json
  • Request Content

程式碼如下

{
 "user": "Jill",
 "desc": "Learn Hibernate",
 "done": false
}

響應內容

{
 "user": "Jill",
 "desc": "Learn Hibernate",
 "done": false,
 "_links": {
"self": {
 "href": "http://localhost:8080/todos/1"
},
"todo": {
 "href": "http://localhost:8080/todos/1"
}
 }
}

響應包含新建立資源的 href。

十五.path=”users”, collectionResourceRel=”users” 如何與 Spring Data Rest 一起使用?

@RepositoryRestResource(collectionResourceRel = "users", path = "users")
public interface UserRestRepository extends
PagingAndSortingRepository<User, Long>
  • path- 這個資源要匯出的路徑段。
  • collectionResourceRel- 生成指向集合資源的連結時使用的 rel 值。在生成 HATEOAS 連結時使用。

十六.當 Spring Boot 應用程式作為 Java 應用程式執行時,後臺會發生什麼?

如果你使用 Eclipse IDE,Eclipse maven 外掛確保依賴項或者類檔案的改變一經新增,就會被編譯並在目標檔案中準備好!在這之後,就和其它的 Java 應用程式一樣了。

當你啟動 java 應用程式的時候,spring boot 自動配置檔案就會魔法般的啟用了。

  • 當 Spring Boot 應用程式檢測到你正在開發一個 web 應用程式的時候,它就會啟動 tomcat。

十七.我們能否在 spring-boot-starter-web 中用 jetty 代替 tomcat?

在 spring-boot-starter-web 移除現有的依賴項,並把下面這些新增進去。

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</artifactId>
 <exclusions>
 <exclusion>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-tomcat</artifactId>
 </exclusion>
 </exclusions>
</dependency>
<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-jetty</artifactId>
</dependency>

十八.如何使用 Spring Boot 部署到不同的伺服器?

你需要做下面兩個步驟:

  • 在一個專案中生成一個 war 檔案。
  • 將它部署到你最喜歡的伺服器(websphere 或者 Weblogic 或者 Tomcat and so on)。

第二步:取決於你的伺服器。

十九.RequestMapping 和 GetMapping 的不同之處在哪裡?

  • RequestMapping 具有類屬性的,可以進行 GET,POST,PUT 或者其它的註釋中具有的請求方法。
  • GetMapping 是 GET 請求方法中的一個特例。它只是 ResquestMapping 的一個延伸,目的是為了提高清晰度。

二十.為什麼我們不建議在實際的應用程式中使用 Spring Data Rest?

我們認為 Spring Data Rest 很適合快速原型製造!在大型應用程式中使用需要謹慎。

通過 Spring Data REST 你可以把你的資料實體作為 RESTful 服務直接釋出。

當你設計 RESTful 伺服器的時候,最佳實踐表明,你的介面應該考慮到兩件重要的事情:

  • 你的模型範圍。
  • 你的客戶。

通過 With Spring Data REST,你不需要再考慮這兩個方面,只需要作為 TEST 服務釋出實體。

這就是為什麼我們建議使用 Spring Data Rest 在快速原型構造上面,或者作為專案的初始解決方法。對於完整演變專案來說,這並不是一個好的注意。

Spring Boot擴充套件面試題

二十一. 在 Spring Initializer 中,如何改變一個專案的包名字?

二十二. JPA 和 Hibernate 有哪些區別?

二十三. 業務邊界應該從哪一層開始?

二十四. 使用 Spring Boot 啟動連線到記憶體資料庫 H2 的 JPA 應用程式需要哪些依賴項?

二十五.如何不通過任何配置來選擇 Hibernate 作為 JPA 的預設實現?

二十六.指定的資料庫連線資訊在哪裡?它是如何知道自動連線至 H2 的?

二十七.我們如何連線一個像 MSSQL 或者 orcale 一樣的外部資料庫?

二十八.Spring Boot 配置的預設 H2 資料庫的名字是上面?為什麼預設的資料庫名字是 testdb?

二十九. 如果 H2 不在類路徑裡面,會出現上面情況?

三十.你能否舉一個以 ReadOnly 為事務管理的例子?

三十一.釋出 Spring Boot 使用者應用程式自定義配置的最好方法是什麼?

三十二. 配置檔案的需求是什麼?

三十三. 如何使用配置檔案通過 Spring Boot 配置特定環境的配置?

面試題整理

由於篇幅過長的原因,為了不影響大家的閱讀效果,文中沒有給到所有的答案。我這裡以檔案的形式整理好了,需要借閱的程式設計師朋友可以免費來領取。

面試檔案獲取方式:

轉發+關注我,點選進入【Java高階網際網路架構:964357187】免費領取面試資料

收集了還有你不知道的其它面試題(springboot、mybatis、併發、java中高階面試總結等)

史上最全Spring Boot面試題(含答案)看完就是Spring Boot專家!

相關推薦

Spring Boot試題答案就是Spring Boot專家

  一.Spring Boot、Spring MVC 和 Spring 有什麼區別? SpringFrame

的Unity試題答案

一.什麼是渲染管道? 是指在顯示器上為了顯示出影象而經過的一系列必要操作。 渲染管道中的很多步驟,都要將幾何物體從一個座標系中變換到另一個座標系中去。 主要步驟有: 本地座標->檢視座標->背面裁剪->光照->裁剪->投影->檢視變換->光柵化。

的Unity試題答案

一.什麼是渲染管道? 是指在顯示器上為了顯示出影象而經過的一系列必要操作。 渲染管道中的很多步驟,都要將幾何物體從一個座標系中變換到另一個座標系中去。 主要步驟有: 本地座標->檢視座標->背面裁剪->光照->裁剪->投影->

阿里 Java 試題總結

以下為大家整理了阿里巴巴史上最全的 Java 面試題,涉及大量 Java 面試知識點和相關試題。 JAVA基礎 JAVA中的幾種基本資料型別是什麼,各自佔用多少位元組。 String類能被繼承嗎,為什麼。 String,Stringbuffer

的iOS試題答案

最近在做iOS面試,總結一些實用的面試題以及參考答案,供博友們交流溝通。 可用一些不明確的技術要點引起話題,如: Multithreading:什麼時候處理多執行緒,幾種方式,優缺點。 Delegate, Notification,KVO, other 優

BAT 大廠試題整理

主要分為以下幾部分:(1)java面試題(2)Android面試題(3)高階技術面試題(4)非技術性問題&HR問題彙總1java面試題熟練掌握java是很關鍵的,大公司不僅僅要求你會使用幾個api,更多的是要你熟悉原始碼實現原理,甚至要你知道有哪些不足,怎麼改進,還有

的 struts2 試題

1 Struts2與Struts1的聯絡與區別 為什麼要用Struts2struts1與struts2都是mvc框架的經典實現模式。Struts2不是從Struts1升級而來,而是有WebWork改名而來,而WebWork只是Xwork加了很多WEB攔截器而已.區別: 1.

| 前端工程師試題彙總

A、B兩人分別在兩座島上。B生病了,A有B所需要的藥。C有一艘小船和一個可以上鎖的箱子。C願意在A和B之間運東西,但東西只能放在箱子裡。只要箱子沒被上鎖,C都會偷走箱子裡的東西,不管箱子裡有什麼。如果A和B各自有一把鎖和只能開自己那把鎖的鑰匙,A應該如何把東西安全遞交給B? 答案:A把藥放進箱子,用自

springmvc和mybatis試題答案

理解 頁面 發送請求 緩存 固定 sql tor 組件 poj 轉載:http://blog.csdn.net/xinghuo0007/article/details/53463897 Spring MVC Framework有這樣一些特點: 1。它是基於組件技術的.全部的

Struts2、Hibernate、Spring面試筆試題答案

Hibernate工作原理及為什麼要用?  原理:  1.讀取並解析配置檔案  2.讀取並解析對映資訊,建立SessionFactory  3.開啟Sesssion  4.建立事務Transation 

MySQL面試60題答案:儲存引擎+資料庫鎖+索引+SQL優化

Mysql中有哪幾種鎖? MyISAM支援表鎖,InnoDB支援表鎖和行鎖,預設為行鎖 表級鎖:開銷小,加鎖快,不會出現死鎖。鎖定粒度大,發生鎖衝突的概率最高,併發量最低 行級鎖:開銷大,加鎖慢,會出現死鎖。鎖力度小,發生鎖衝突的概率小,併發度最高 Mysql中有哪些

資料結構試題答案

1.棧和佇列的共同特點是(只允許在端點處插入和刪除元素) 4.棧通常採用的兩種儲存結構是(線性儲存結構和連結串列儲存結構) 5.下列關於棧的敘述正確的是(D)      A.棧是非線性結構B.棧是一種樹狀結構C.棧具有先進先出的特徵D.棧有後進先出的特徵 6.連結串列不具有的特點是(B)A.不必事先估計儲存

的資料庫面試題,不絕對後悔

資料庫面試知識點彙總 一、基本概念 1.主鍵、外來鍵、超鍵、候選鍵 超鍵:在關係中能唯一標識元組的屬性集稱為關係模式的超鍵。一個屬性可以為作為一個超鍵,多個屬性組合在一起也可以作為一個超鍵。超鍵包含候選鍵和主鍵。 候選鍵:是最小超鍵,即沒有冗餘元素的超鍵。 主鍵:資料庫表中對儲存資料物件予以唯一和完

python常見面試題

大資料的檔案讀取   ① 利用生成器generator   ②迭代器進行迭代遍歷:for line in file 迭代器和生成器的區別 1)迭代器是一個更抽象的概念,任何物件,如果它的類有next方法和iter方法返回自己本身。對於string、list、dic

如何修改int的列印內容——難的JAVA試題

序 今天看到了一個比較特別的面試題,考察的是如何改變int的System.out.print的結果。題目如下: 下面的一句話“這是初級java實習生面試題”非常挑釁的激起了大家做題的慾望。 解題思路 解題的思路無外乎是3種方法: 1.作弊大法,

的開發工具類

scp dbi bug 成對 截圖 depend 時間 sre invoke API銀行卡管理 → BankCheckcheckBankCard : 校驗銀行卡卡號是否合法getBankCardCheckCode: 從不含校驗位的銀行卡卡號采用 Luhm

[轉] webpack之前端效能優化,不斷更新中。。。

最近在用webpack優化首屏載入效能,通過幾種外掛之後我們上線前後的速度快了一倍,在此就簡單的分享下吧,先上個優化前後首屏渲染的對比圖。 可以看到總下載時間從3800ms縮短到1600ms。 我們在用webpack時一般都會選擇多入口檔案吧,為的就是將自己的原始碼跟第三方庫程式碼分離。這是之前的程式

的機器學習資料

原文地址:https://yq.aliyun.com/articles/43341 摘要: 機器學習牽涉的程式語言十分之廣,包括了MATLAB、Python、Clojure、Ruby等等。為了讓開發者更加廣泛、深入地瞭解機器學習,雲棲社群組織翻譯了GitHub Aw

的機器學習資料

原文地址:https://yq.aliyun.com/articles/43089 摘要: 機器學習牽涉的程式語言十分之廣,包括了MATLAB、Python、Clojure、Ruby等等。為了讓開發者更加廣泛、深入地瞭解機器學習,雲棲社群組織翻譯了GitHub

簡單的SpringCloud教程大全Finchley版本

史上最簡單的 SpringCloud 教程 | 第一篇: 服務的註冊與發現Eureka(Finchley版本) https://blog.csdn.net/forezp/article/details/81040925 史上最簡單的SpringCloud教程 | 第二篇: 服務