2019年必須掌握的29個微服務面試問題(含答案解析)

這29個微服務面試題基本涵蓋了方方面,但願對你有所幫助!web

1、什麼是Spring Cloud?

在微服務中,SpringCloud是一個提供與外部系統集成的系統。它是一個敏捷的框架,能夠短平快構建應用程序。與有限數量的數據處理相關聯,它在微服務體系結構中起着很是重要的做用。 如下爲 Spring Cloud 的核心特性面試

  1. 版本化/分佈式配置。
  2. 服務註冊和發現。
  3. 服務和服務之間的調用。
  4. 路由。
  5. 斷路器和負載平衡。
  6. 分佈式消息傳遞。

2、什麼是Spring Boot?

Spring boot是微服務面試問題的主要話題。 隨着新功能的加入,Spring變得愈來愈複雜。不管什麼時候啓動新項目,都必須添加新的構建路徑或Maven依賴項。簡而言之,你須要從頭開始作每件事。Spring Boot是一種幫助您避免全部代碼配置的解決方案。spring

3、如何覆蓋Spring Boot項目的默認屬性?

這能夠經過在application.properties文件中指定屬性來完成。 例如,在Spring MVC應用程序中,您必須指定後綴和前綴。這能夠經過在application.properties文件中輸入下面提到的屬性來完成。數據庫

  • 對於後綴 - spring.mvc.view.suffix: .jsp
  • 對於前綴 - spring.mvc.view.prefix: /WEB-INF/

4、Actuator在Spring Boot中的做用

它是最重要的功能之一,可幫助您訪問在生產環境中運行的應用程序的當前狀態。有多個指標可用於檢查當前狀態。它們還爲RESTful Web服務提供端點,能夠簡單地用於檢查不一樣的度量標準。api

5、如何在Spring Boot應用程序中實現Spring安全性?

實施須要最少的配置。您須要作的就是spring-boot-starter-security在pom.xml文件中添加starter。您還須要建立一個Spring配置類,它將覆蓋所需的方法,同時擴展 WebSecurityConfigurerAdapter 應用程序中的安全性。這是一些示例代碼:安全

package com.gkatzioura.security.securityendpoints.config; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.security.config.annotation.web.builders.HttpSecurity; 
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; 
@Configuration 
public class SecurityConfig extends WebSecurityConfigurerAdapter {     
@Override     
protected void configure(HttpSecurity http) throws Exception {         
http.authorizeRequests()             
.antMatchers("/welcome").permitAll()             
.anyRequest().authenticated()             
.and()             
.formLogin()             
.permitAll()             
.and()             
.logout()             
.permitAll();     
} 
}
複製代碼

6、Spring Boot支持哪些嵌入式容器?

不管什麼時候建立Java應用程序,均可以經過兩種方法進行部署: 使用外部的應用程序容器。 將容器嵌入jar文件中。 Spring Boot包含Jetty,Tomcat和Undertow服務器,全部服務器都是嵌入式的。 Jetty - 用於大量項目,Eclipse Jetty能夠嵌入到框架,應用程序服務器,工具和集羣中。 Tomcat - Apache Tomcat是一個開源JavaServer Pages實現,能夠很好地與嵌入式系統配合使用。 Undertow - 一個靈活而突出的Web服務器,它使用小型單一處理程序來開發Web服務器。bash

7、微服務的端到端測試意味着什麼?

端到端測試 驗證工做流中的全部流程,以檢查一切是否按預期工做。它還確保系統以統一的方式工做,從而知足業務需求。服務器

8、什麼是Semantic監控?

它結合了對整個應用程序的監控以及自動化測試。語義監控的主要好處是找出對您的業務更有利可圖的因素。 從業務角度來看,語義監控以及服務層監控能夠監控微服務。一旦檢測到問題,它們就能夠實現更快的隔離和 錯誤分類,從而減小修復所需的主要時間。它對服務層和事務層進行分類,以肯定受可用性或性能不佳影響的事務。架構

九如何設置服務發現?

有多種方法能夠設置服務發現。我將選擇我認爲效率最高的那個,Netflix的Eureka。這是一個簡單的程序,不會對應用程序形成太大影響。此外,它支持多種類型的Web應用程序。 Eureka配置包括兩個步驟 - 客戶端配置和服務器配置。mvc

使用屬性文件能夠輕鬆完成客戶端配置。在clas spath中,Eureka搜索一個eureka-client.properties文件。它還搜索由特定於環境的屬性文件中的環境引發的覆蓋。

對於服務器配置,您必須首先配置客戶端。完成後,服務器啓動一個客戶端,該客戶端用於查找其餘服務器。。默認狀況下,Eureka服務器使用客戶端配置來查找對等服務器。

10、爲何要選擇微服務架構?

這是一個很是常見的微服務面試問題,你應該準備好了!微服務架構提供了許多優勢。這裏有幾個:

  1. 微服務能夠輕鬆適應其餘框架或技術。
  2. 單個進程的失敗不會影響整個系統。
  3. 爲大企業和小型團隊提供支持。
  4. 能夠在相對較短的時間內獨立部署。

11、爲何在微服務中須要Reports報告和Dashboards儀表板?

報告和儀表板主要用於監視和維護微服務。有多種工具能夠幫助實現此目的。報告 和儀表板可用於: 找出哪些微服務公開了哪些資源。 找出組件發生變化時受影響的服務。 提供一個簡單的點,只要須要文檔,就能夠訪問它。 部署的組件的版本。

12、爲何人們會猶豫使用微服務?

我見過許多開發者在這個問題上摸索。畢竟,在面試微服務架構師角色時,他們會被問到這個問題,因此認可它的缺點可能有點棘手。如下是一些很好的答案:

它們須要大量協做 - 微服務須要大量的合做。不一樣的微服務模塊,可能分散在不一樣的團隊,團隊之間須要始終保持良好的同步。

他們須要創建繁重的架構 - 系統是分佈式的,架構涉及不少。 他們須要過多的計劃來處理操做開銷 - 若是您計劃使用微服務架構,則須要爲操做開銷作好準備。 須要熟練的專業人員,他們能夠支持異構分佈的微服務。

十3、PACT如何運做?

PACT是一個開源工具。它有助於測試消費者和服務提供商之間的互動。消費者服務開發人員首先編寫一個測試,該測試定義了與服務提供者的交互模式。測試包括提供者的狀態,請求正文和預期的響應。基於此,PACT建立了一個針對其執行測試的存根。輸出存儲在JSON文件中。

十4、談一下領域驅動設計

主要關注核心領域邏輯。基於領域的模型檢測複雜設計。這涉及與公司層面領域方面的專家按期合做,以解決與領域相關的問題並改進應用程序的模型。在回答這個微服務面試問題時,您還須要說起DDD的核心基礎知識。他們是:

  • DDD主要關注領域邏輯和領域自己。
  • 複雜的設計徹底基於領域的模型。
  • 爲了改進模型的設計並解決任何新出現的問題,DDD不斷與公司領域方面的專家合做。

十5、什麼是耦合和凝聚力?

組件之間依賴關係強度的度量被認爲是耦合。一個好的設計老是被認爲具備高內聚力和低耦合性。 面試官常常會問起凝聚力。它也是另外一個測量單位。更像是一個模塊內部的元素保持結合的程度。 必須記住,設計微服務的一個重要關鍵是低耦合和高內聚的組合。當低耦合時,服務對其餘服務的依賴不多。這樣能夠保持服務的完整性。在高內聚性中,將全部相關邏輯保存在服務中成爲可能。不然,服務將嘗試彼此通訊,從而影響總體性能。

十6、什麼是Oauth?

開放受權協議,這容許經過在HTTP服務上啓用客戶端應用程序(例如第三方提供商Facebook,GitHub等)來訪問資源全部者的資源。所以,您能夠在不使用其憑據的狀況下與另外一個站點共享存儲在一個站點上的資源。

OAuth容許像Facebook這樣的第三方使用最終用戶的賬戶信息,同時保證其安全(不使用或暴露用戶的密碼)。它更像是表明用戶的中介,同時爲服務器提供訪問所需信息的令牌。

十7、爲何咱們須要微服務容器?

要管理基於微服務的應用程序,容器是最簡單的選擇。它幫助用戶單獨部署和開發。您還可使用Docker將微服務封裝到容器的鏡像中。沒有任何額外的依賴或工做,微服務可使用這些元素。

十8、訪問RESTful微服務的方法是什麼?

另外一個常常被問到的微服務面試問題是如何訪問RESTful微服務?你能夠經過兩種方法作到這一點:

  • 使用負載平衡的REST模板。
  • 使用多個微服務。

十9、微服務測試的主要障礙是什麼?

說到缺點,這裏是另外一個微服務面試問題,將圍繞測試微服務時面臨的挑戰。

  • 在開始編寫集成測試的測試用例以前,測試人員應該全面瞭解對全部入站和出站過程。
  • 當獨立的團隊正在開發不一樣的功能時,協做可能會被證實是一項很是困難的任務。很難找到空閒時間窗口來執行完整的迴歸測試。
  • 隨着微服務數量的增長,系統的複雜性也隨之增長。
  • 在從單片架構過渡期間,測試人員必須確保組件之間的內部通訊沒有中斷。

二10、過渡到微服務時的常見錯誤

不只在開發上,並且在方面流程也常常發生錯誤。一些常見錯誤是:

  • 一般開發人員沒法概述當前的挑戰。
  • 重寫已經存在的程序。
  • 職責、時間線和界限沒有明肯定義。
  • 未能從一開始就實施和肯定自動化的範圍。

二11、微服務設計的基礎是什麼?

這多是最多見的微服務面試問題之一。在回答這個問題時,你須要記住如下內容:

  1. 定義範圍。
  2. 結合低耦合和高內聚。
  3. 建立一個有惟一標識的服務,惟一標識將充當識別源,很是像數據庫表中的惟一鍵。
  4. 建立正確的API並在集成過程當中特別注意。
  5. 限制對數據的訪問並將其限制到所需級別。
  6. 在請求和響應之間保持順暢的流程。
  7. 自動化大多數流程,以減小時間複雜性。
  8. 將表的數量保持在最低水平,以減小空間複雜性。
  9. 不斷監控架構,發現缺陷及時修復。
  10. 每一個微服務的數據存儲應該分開。
  11. 對於每一個微服務,都應該有一個獨立的構建。
  12. 將微服務部署到容器中。
  13. 服務器應被視爲無狀態。

**二12、在Spring MVC應用程序中使用WebMvcTest註釋有什麼用處?

WebMvcTest註釋用於單元測試Spring MVC應用程序。咱們只想啓動ToTestController。執行此單元測試時,不會啓動全部其餘控制器和映射。

@WebMvcTest(value = ToTestController.class, secure = false):
複製代碼

二十3、什麼是有界上下文?

有界上下文是域驅動設計的核心模式。DDD戰略設計部門的重點是處理大型模型和團隊。DDD經過將大型模型劃分爲不一樣的有界上下文並明確其相互關係來處理大型模型。

二十4、什麼是不一樣類型的雙因素身份認證?

執行雙因素身份驗證須要三種類型的憑據:

  • 一件你知道的事情——好比密碼、密碼或屏幕鎖定模式。
  • 您擁有的物理憑證,如OTP、電話或ATM卡,換句話說,您在外部或第三方設備中擁有的任何類型的憑證。
  • 您的物理身份–如語音認證或生物特徵安全,如指紋或眼睛掃描儀。

二十5、什麼是客戶證書?

客戶端系統用於向遠程服務器發出通過身份驗證的請求的一種數字證書稱爲客戶端證書。客戶端證書在許多相互認證設計中起着很是重要的做用,爲請求者的身份提供了強有力的保證。

二十6、康威定律是什麼?

康威定律指出,「設計系統的組織,其產生的設計等同於組織以內、組織之間的溝通結構。」 面試官可能會問反微服務面試問題,好比康威定律與微服務的關係。一些鬆散耦合的api造成了微服務的體系結構。這種結構很是適合小團隊實現自治組件的方式。這種體系結構使組織在重組其工做流程時更加靈活。

二十7、如何配置Spring Boot應用程序日誌記錄?

Spring Boot附帶了對Log4J2,Java Util Logging和Logback的支持。它一般預先配置爲控制檯輸出。能夠經過僅在application.properties文件中指定logging.level來配置它們。

logging.level.spring.framework=Debug
複製代碼

二十8、您將如何在微服務上執行安全測試?

您須要獨立測試各個部分。有三種常見的程序:

  • 代碼掃描 - 確保任何代碼行都沒有錯誤而且能夠複製。
  • 靈活性 - 安全解決方案應該是靈活的,以即可以根據系統的要求進行調整。
  • 適應性 - 安全協議應該靈活和更新,以應對黑客或安全漏洞的新威脅。

二十9、什麼是冪等性?它是如何使用的?

冪等性指的是這樣一種場景:您重複執行一項任務,但最終結果保持不變或相似。 冪等性主要用做數據源或遠程服務,當它接收一組以上指令時,它只處理一組指令。

讀者福利、完整面試題【含答案】Java核心筆記,Java架構面試專題整合千道(pdf文檔)

相關文章
相關標籤/搜索