排名前20的REST和Spring MVC面試題_第1頁
排名前20的REST和Spring MVC面試題_第2頁
排名前20的REST和Spring MVC面試題_第3頁
排名前20的REST和Spring MVC面試題_第4頁
排名前20的REST和Spring MVC面試題_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、 PAGE 1排名前20的REST和Spring MVC面試題 PAGE 8排名前20的REST和Spring MVC面試題Java開發(fā)者在面試中會問到哪些關(guān)于REST和Spring MVC問題呢?點這里可以了解到排名前20個的問題你好!最近兩個月我分享一些使用Spring開發(fā)REST的教程,今天,我將分享一些作為Web開發(fā)者經(jīng)常被問到的關(guān)于Spring MVC和REST的面試題給Java開發(fā)者。自從 HYPERLINK http:/javarevisited.blogspot.sg/2018/01/how-to-learn-spring-core-spring-mvc-boot-securi

2、ty-framework.html l axzz55IgfKjy8 Spring Framework成為開發(fā)Java Web應用和RESTful服務的主流和標準框架后,在高級開發(fā)者身上找到對Spring核心和 HYPERLINK http:/javarevisited.blogspot.sg/2018/01/how-to-learn-spring-core-spring-mvc-boot-security-framework.html l axzz55IgfKjy8 Spring MVC 的很好的理解是很被期待的。但是,如果工作內(nèi)容涉及到REST和Web服務,你也需要有意識去了解如何用Spri

3、ng Framework 開發(fā)RESTful Web服務。從Spring3.1開始,框架對RESTful的API提供的許多的支持得到了很多的擁護。其中,HTTPMessageConverter 能根據(jù)從類路徑探測的庫將你的HTTP響應轉(zhuǎn)換成 HYPERLINK http:/javarevisited.blogspot.sg/2018/02/how-to-parse-json-with-date-field-in-java-jackson-example.html l axzz56WGunSwy JSON或 HYPERLINK http:/javarevisited.blogspot.sg/20

4、13/01/jaxb-xml-binding-tutorial-marshalling-unmarshalling-java-object-xml.html l axzz56WGunSwy XML 格式, 如: HYPERLINK http:/javarevisited.blogspot.sg/2018/02/how-to-parse-json-with-date-field-in-java-jackson-example.html Jackson 和 HYPERLINK http:/javarevisited.blogspot.sg/2013/01/jaxb-xml-binding-tuto

5、rial-marshalling-unmarshalling-java-object-xml.html JAXB.Spring對RESTful Web服務也提供自定義的注解,如:RestController ,這使得你自己的REST控制器更簡潔,以至于你不需要調(diào)用單一的REST API去做那些通用的步驟,就像將響應轉(zhuǎn)換成JSON。實際上開發(fā)安全的Spring RESTful Web服務,Spring Security已經(jīng)給與很好的支持。由于你不能將生活置于一種未嘗試的不安全的REST接口,所以安全的基本如 HYPERLINK http:/javarevisited.blogspot.sg/20

6、18/01/how-http-basic-authentication-works-in.html HTTP basic authentication,數(shù)字授權(quán), OAuth和JWT 就體現(xiàn)得非常重要。排行前20的Spring REST Web服務面試題這里是一些經(jīng)常被問到的使用Spring Framework 開發(fā)RESTful服務的問題。REST代表著什么?REST代表著抽象狀態(tài)轉(zhuǎn)移,它是根據(jù)http協(xié)議從客戶端發(fā)送數(shù)據(jù)到服務端,例如:服務端的一本書可 HYPERLINK http:/bit.ly/2zIGzWK 以以XML或JSON格式傳遞到客戶端。然而,假如你不熟悉REST,我建議你先

7、看看REST API design and development 這篇文章來更好的了解它。資源是什么?資源是指數(shù)據(jù)在REST架構(gòu)中如何顯示的。將實體作為資源公開 ,它允許客戶端通過http方法如: HYPERLINK http:/javarevisited.blogspot.sg/2012/03/get-post-method-in-http-and-https.html GET, HYPERLINK /2014/08/difference-between-post-and-get-request.html POST, HYPERLINK /2016/09/when-to-use-put-o

8、r-post-in-restful-web-services.html h PUT, DELETE等讀,寫,修改和創(chuàng)建資源。什么是安全的REST操作?REST接口是通過HTTP方法完成操作。一些HTTP操作是安全的,如GET和HEAD,它不能在服務端修 改資源.換句話說,PUT,POST和DELETE是不安全的,因為他們能修改服務端的資源。什么是冪等操作? 為什么冪等操作如此重要?有一些HTTP方法,如:GET,不管你使用多少次它都能產(chǎn)生相同的結(jié)果,在沒有任何一邊影響的情況下,發(fā)送多個GET請求到相同的 HYPERLINK /2013/01/difference-between-url-uri

9、-and-urn.html h URI 將會產(chǎn)生相同的響應結(jié)果。因此,這就是所謂冪等操作。換句話說, HYPERLINK http:/javarevisited.blogspot.sg/2016/05/what-are-idempotent-and-safe-methods-of-HTTP-and-REST.html POST方法不是冪等操作 ,因為如果發(fā)送多個POST請求,它將在服務端創(chuàng)建不同的資源, 但是,假如你用PUT更新資源,它將是冪等操作。 HYPERLINK http:/pluralsight.pxf.io/c/1193463/424552/7490?u=https%3A%2F%2

10、F%2Fcourses%2Fxhttp-fund 甚至多個PUT請求被用來更新服務端資源,將得到相同的結(jié)果。你可以通過Pluralsight 學習HTTP Fundamentals 課程來了解HTTP協(xié)議和一般的HTTP的更多冪等操作。REST是可擴展的或說是協(xié)同的嗎?是的, HYPERLINK http:/javarevisited.blogspot.sg/2015/08/difference-between-soap-and-restfull-webservice-java.html h REST 是可擴展的和可協(xié)作的。它既不托管一種特定的技術(shù)選擇,也不定在客戶端或者服務端。你可以用 HY

11、PERLINK http:/javarevisited.blogspot.sg/2017/11/top-5-free-java-courses-for-beginners.html Java, HYPERLINK /2018/02/5-free-cpp-courses-to-learn-programming.html C+, HYPERLINK /2018/02/5-free-python-online-courses-for-beginners.html Python, 或 HYPERLINK /2018/04/top-5-free-javascript-courses-to-learn.

12、html JavaScript 來創(chuàng)建RESTful Web服務,也可以在客戶端使用它們。我建議你讀一本關(guān)于REST接口的書來了解更多,如:RESTful Web Services 。RestTemplate的優(yōu)勢是什么?(答案)在Spring framework 中, RestTemplate 類是模板方法模式 的實現(xiàn)。跟其他主流的模板類相似,如 JdbcTemplate 或 JmsTempalte ,它將在客戶端簡化跟RESTful Web服務的集成。正如在 RestTemplate 例子中顯示的一樣,你能非常容易地用它來調(diào)用RESTful Web服務。REST用哪種HTTP方法呢?RES

13、T能用任何的HTTP方法,但是,最受歡迎的是用GET來檢索服務端資源,用POST來創(chuàng)建服務端資 源, HYPERLINK http:/javarevisited.blogspot.sg/2016/04/what-is-purpose-of-http-request-types-in-RESTful-web-service.html l axzz56WGunSwy 用PUT來更新服務端資源 和用DELETE來刪除服務端資源。HttpMessageConverter在Spring REST中代表什么? HttpMessageConverter 是一種策略接口 ,它指定了一個轉(zhuǎn)換器,它可以轉(zhuǎn)換HTT

14、P請求和響應 。Spring REST用這個接口轉(zhuǎn)換HTTP響應到多種格式,例如:JSON或XML.每個 HttpMessageConverter 實現(xiàn)都有一種或幾種相關(guān)聯(lián)的MIME協(xié)議。Spring使用“Accept”的標頭來確定客戶端所期待的內(nèi)容類型。然后,它將嘗試找到一個注冊的HTTPMessageConverter,它能夠處理特定的內(nèi)容類型,并使用它將響 HYPERLINK http:/bit.ly/2ylC68g 應轉(zhuǎn)換成這種格式,然后再將其發(fā)送給客戶端。如果您是Spring MVC的新手,請參見Spring 5: HYPERLINK http:/bit.ly/2ylC68g Beg

15、inner to Guru 。如何創(chuàng)建HttpMessageConverter的自定義實現(xiàn)來支持一種新的請求/響應?(回答)您僅需要創(chuàng)建AbstractHttpMessageConverter的實現(xiàn),并使用WebMvcConfigurerAdapter extendmessageconverter()方法注冊它,該方法可以生成一種新的請求/響應類型。REST正常是無狀態(tài)的嗎? ( HYPERLINK http:/javarevisited.blogspot.sg/2015/08/difference-between-soap-and-restfull-webservice-java.html

16、答案)是的,REST API應該是無狀態(tài)的,因為它是基于HTTP的,它也是無狀態(tài)的。REST API中的請求應該包含處理它所需的所有細節(jié)。它不應該依賴于以前或下一個請求或服務器端維護的一些數(shù)據(jù), 像會話。REST規(guī)范為使其無狀態(tài)設(shè)置了一個約束,在設(shè)計REST API時,您應該記住這一點。RequestMapping注解是做什么的? ( HYPERLINK http:/javarevisited.blogspot.sg/2017/06/how-spring-mvc-framework-works-web-flow.html l axzz55vF5ugU8 h 答案)Requestmapping注

17、解是用于將web請求映射到Spring Controller方法。您可以基于HTTP方法映射一個請求,例如GET、POST和各種其他參數(shù)。例如,如果您正在使用Spring開發(fā)一個基于rest的web服務,那么您可以使用、生產(chǎn)和消費屬性以及媒體類型標注,以表明該方法僅用于生產(chǎn)或消費JSON,如下所示:RequestMapping (method = RequestMethod.POST, consumes=application/json) public Book save(RequestBody Book aBook) return bookRepository.save(aBook);類似地

18、,你可以創(chuàng)建其他處理程序方法來產(chǎn)生JSON或XML。如果您不熟悉這些注釋,那么我建議您加入 HYPERLINK /fs-bin/click?id=JVFxdTr9V80&subid=0&offerid=323058.1&type=10&tmpid=14538&RD_PARM1=https%3A%2F%2F%2Fspring-mvc-tutorial-for-beginners-step-by-step%2F Spring MVC For Beginners 課程,為初學者學習基礎(chǔ)知識。Controller是原型嗎? RestController 是原型嗎? (答案)是的,Controller和

19、Restcontroller都是原型。Controller實際上是Spring的Component原型注解 的特定版。這意味著帶有Controller的類也會被Spring容器自動檢測到,容器組件掃描過程的一部分。而且,Restcontroller是用于REST式web服務的Controller的專門化。它不僅結(jié)合了 HYPERLINK /p/rest-with-spring-the-master-class?affcode=22136_bkwjs9xa h ResponseBody 和Controller注解,而且還賦予了控制器類更大的意義,以清楚地表明它處理的是RESTful 請求。你的S

20、pring框架可能還會使用這個注釋來提供一些與REST API開發(fā)相關(guān)的更有用的特性。Controller and RestController有什么區(qū)別? ( HYPERLINK http:/javarevisited.blogspot.sg/2017/08/difference-between-restcontroller-and-controller-annotations-spring-mvc-rest.html h 答案) Controller和RestController注釋有許多差異,這個在我以前的文章中討論過(見答案更多!),但最重要的是,隨著RestController 自動

21、注解ResponseBody,這意味著您不需要單獨與ResponseBody注解注釋處理程序方法。這使得使用Spring的REST式web服務的開發(fā)更加容易。您可以在這里看到更多關(guān)于 HYPERLINK http:/bit.ly/2yjLysL Spring Boot的知識,以及它如何幫助您創(chuàng)建基于Spring MVC的web應用程序。么時候在Spring MVC中 使用ResponseBody注解? ( HYPERLINK http:/javarevisited.blogspot.sg/2018/01/7-reasons-for-using-spring-to-develop-RESTful

22、-web-service.html l axzz55a8rTeu7 h 答案)你需要什Responsebody注解可以放在一個方法上,以表明返回類型應該直接寫入HTTP響應體(不要放在模型中,或者解釋為一個視圖名)。例如:RequestMapping(path = /hello, method = RequestMethod.PUT) ResponseBodypublic String helloWorld() return Hello World;另外,你也可以使用RestController 注解來取代Controller注釋。這將消除使用Responsebody的需要,因為正如前面的答案

23、所討論的那樣,它會自動使用Restcontroller注釋 。PathVariable在Spring MVC做了什么? 為什么REST在Spring中如此有用? ( HYPERLINK http:/javarevisited.blogspot.sg/2017/10/differences-between-requestparam-and-pathvariable-annotations-spring-mvc.html h 答案)這是Spring MVC中有用的注解之一,它允許您從URI讀取值,比如查詢參數(shù)。它在使用Spring創(chuàng)建RESTful web服務時特別有用,因為在REST中,資源標識

24、符是URI的一部分。這個問題通常由經(jīng)驗豐富的Spring MVC開發(fā)人員提出,他們有4到6年的經(jīng)驗。例如,如果你想要學習如何提取id,那么這個 HYPERLINK /books/101 h URL將會很有幫助,然后您就可以使用Spring MVC的 HYPERLINK /fs-bin/click?id=JVFxdTr9V80&subid=0&offerid=323058.1&type=10&tmpid=14538&RD_PARM1=https%3A%2F%2F%2Fspring-mvc-tutorial-for-beginners-step-by-step%2F h Pathvariable注

25、釋了。如果你不熟悉Spring MVC注解,那么Spring MVC For Beginners: Build Java Web App in 25 Steps 是一個很好的起點。刪除的HTTP狀態(tài)返回碼是什么 ? ( HYPERLINK /2015/09/top-10-restful-web-service-interview-questions-answers.html 答案)在刪除成功之后,您的REST API應該返回什么狀態(tài)代碼,并沒有嚴格的規(guī)則。它可以返回200或204沒有內(nèi)容。一般來說,如果刪除操作成功,響應主體為空,返回204。如果刪除請求成功且響應體不是空的,則返回200。CR

26、UD是什么意思 ? (答案)CRUD是創(chuàng)建、讀取、更新和刪除的一種簡短形式。在REST API中,POST用于創(chuàng)建資源,GET用于讀取資源,PUT用于更新資源,而DELETE用于從服務器移除資源。這是另一個初學者級別的Spring MVC問題,在1到3年的時間里作為一個有經(jīng)驗的程序員。EnableWebMVC一般用在哪里? (答案)當Java配置被用來配置Spring MVC代替XML時,啟用Enablewebmvc注解來啟用Spring MVC是必須的。它等同于在XML中配置 。它支持Controller-帶注解的類,它使用Requestmapping將傳入的請求映射到處理程序方法,而這些方

27、法對于Spring對Java配置的支持并不熟悉。在Udemy上的Spring Master課程是一個很好的起點。在Spring MVC中什么時候用到ResponseStatus注解? ( HYPERLINK http:/javarevisited.blogspot.sg/2018/01/7-reasons-for-using-spring-to-develop-RESTful-web-service.html l axzz55a8rTeu7 答案)作為一個3到5年的有經(jīng)驗的Spring開發(fā)人員,這是一個很好的問題。在Spring MVC和REST的錯誤處理過程中,需要標注Responsesta

28、tus注解。通常,當在服務器端拋出一個錯誤或異常時,web服務器將返回一個全面的HTTP狀態(tài)碼500內(nèi)部服務器錯誤。這可能適用于人類用戶,但不適用于REST客戶端。如果沒有找到資源,您需要向它們發(fā)送適當?shù)臓顟B(tài)碼,如404。這就是您可以使用Responsestatus標注的地方,它允許您在異常情況下發(fā)送自定義HTTP狀態(tài)碼和適當?shù)腻e誤消息。為了使用它,您可以創(chuàng)建自定義異常,并使用Responsestatus注解和適當?shù)腍TTP狀態(tài)碼和理由對它 們進行注釋。當這些異常從控制器的處理程序方法中拋出,而在其他任何地方都沒有處理時,那么使用適當?shù)腍TTP 狀態(tài)碼的適當?shù)腍TTP響應被發(fā)送到客戶端。例如,

29、如果您正在為一個提供圖書信息的圖書館編寫一個RESTful web服務,那么您可以使用Responsestatus來創(chuàng)建一個異常,當沒有找到一本書而不是內(nèi)部服務器錯誤(500)時返回HTTP響應代碼404,如下所示:ResponseStatus(value=HttpStatus.NOT_FOUND, reason=No such Book) / 404 public class BookNotFoundException extends RuntimeException / .假如異常從任何方法拋出,那么HTTP 404錯誤代碼“沒有這樣的書”將返回給客戶端。 HYPERLINK /p/res

30、t-with-spring-the-master-class?affcode=22136_bkwjs9xa 如果你不熟悉Spring MVC的基本概念,安全和REST,我建議你在下一份工作面試前去學習一下 REST with Spring和 HYPERLINK /p/learn-spring-security-the-master-class?utm_source=javarevisited&utm_medium=web&utm_campaign=lss&affcode=22136_bkwjs9xa Learn Spring Security HYPERLINK /p/rest-with-spring-the-master-class?affcode=22136_bkwjs9xa 的課程來獲得一些經(jīng)驗。這兩個課程是專門設(shè)計為你提供一些實際經(jīng)驗,來提高你的Spring MVC,REST,和Spring Security的知識和經(jīng)驗。REST安全嗎? 你能做什么來保護它? ( HYPERLINK /20

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論