【Java面试系列】Java微服务面试题
熱門系列:
-
【Java面試系列】2020年最新最全java面試題大全及答案解析
-
【SpringCloud微服務(wù)系列】SpringCloud組件原理:Eureka,Feign,Ribbon,Hystrix,Zuul
-
【SpringCloud微服務(wù)系列】Hystrix熔斷器底層原理,一看就廢
-
??程序人生,精彩搶先看
目錄
1.微服務(wù) 面試題
2.微服務(wù) 面試題解析
? ??1、您對微服務(wù)有何了解?
? ??2、微服務(wù)架構(gòu)有哪些優(yōu)勢?
? ??3、微服務(wù)有哪些特點(diǎn)?
? ??4、設(shè)計微服務(wù)的最佳實(shí)踐是什么?
? ??5、微服務(wù)架構(gòu)如何運(yùn)作?
? ??6、微服務(wù)架構(gòu)的優(yōu)缺點(diǎn)是什么?
? ??7、單片,SOA 和微服務(wù)架構(gòu)有什么區(qū)別?
? ??8、在使用微服務(wù)架構(gòu)時,您面臨哪些挑戰(zhàn)?
? ??9、SOA 和微服務(wù)架構(gòu)之間的主要區(qū)別是什么?
? ??10、微服務(wù)有什么特點(diǎn)?
? ??11、什么是領(lǐng)域驅(qū)動設(shè)計?
? ??12、為什么需要域驅(qū)動設(shè)計(DDD)?
? ??13、什么是無所不在的語言?
? ??14、什么是凝聚力?
? ??15、什么是耦合?
? ??16、什么是 REST / RESTful 以及它的用途是什么?
? ??17、你對 Spring Boot 有什么了解?
? ??18、什么是 Spring 引導(dǎo)的執(zhí)行器?
? ??19、什么是 Spring Cloud?
? ??20、Spring Cloud 解決了哪些問題?
? ??21、在 Spring MVC 應(yīng)用程序中使用 WebMvcTest 注釋有什么用處?
? ??22、你能否給出關(guān)于微服務(wù)的要點(diǎn)?
? ??23、什么是不同類型的微服務(wù)測試?
? ??24、您對 Distributed Transaction 有何了解?
? ??25、什么是 Idempotence 以及它在哪里使用?
? ??26、什么是有界上下文?
? ??27、什么是雙因素身份驗證?
? ??28、雙因素身份驗證的憑據(jù)類型有哪些?
? ??29、什么是客戶證書?
? ??30、PACT 在微服務(wù)架構(gòu)中的用途是什么?
? ??31、什么是 OAuth?
? ??32、康威定律是什么?
? ??33、合同測試你懂什么?
? ??34、什么是端到端微服務(wù)測試?
? ??35、Container 在微服務(wù)中的用途是什么?
? ??36、什么是微服務(wù)架構(gòu)中的 DRY?
? ??37、什么是消費(fèi)者驅(qū)動的合同(CDC)?
? ??38、Web,RESTful API 在微服務(wù)中的作用是什么?
? ??39、您對微服務(wù)架構(gòu)中的語義監(jiān)控有何了解?
? ??40、我們?nèi)绾芜M(jìn)行跨功能測試?
? ??41、我們?nèi)绾卧跍y試中消除非決定論?
? ??42、Mock 或 Stub 有什么區(qū)別?
? ??43、您對 Mike Cohn 的測試金字塔了解多少?
? ??44、Docker 的目的是什么?
? ??45、什么是金絲雀釋放?
? ??46、什么是持續(xù)集成(CI)?
? ??47、什么是持續(xù)監(jiān)測?
? ??48、架構(gòu)師在微服務(wù)架構(gòu)中的角色是什么?
? ??49、我們可以用微服務(wù)創(chuàng)建狀態(tài)機(jī)嗎?
? ??50、什么是微服務(wù)中的反應(yīng)性擴(kuò)展?
1.微服務(wù) 面試題
1、您對微服務(wù)有何了解?
2、微服務(wù)架構(gòu)有哪些優(yōu)勢?
3。微服務(wù)有哪些特點(diǎn)?
4、設(shè)計微服務(wù)的最佳實(shí)踐是什么?
5、微服務(wù)架構(gòu)如何運(yùn)作?
6、微服務(wù)架構(gòu)的優(yōu)缺點(diǎn)是什么?
7、單片,SOA 和微服務(wù)架構(gòu)有什么區(qū)別?
8、在使用微服務(wù)架構(gòu)時,您面臨哪些挑戰(zhàn)?
9、SOA 和微服務(wù)架構(gòu)之間的主要區(qū)別是什么?
10、微服務(wù)有什么特點(diǎn)?
11、什么是領(lǐng)域驅(qū)動設(shè)計?
12、為什么需要域驅(qū)動設(shè)計(DDD)?
13、什么是無所不在的語言?
14、什么是凝聚力?
15、什么是耦合?
16、什么是 REST / RESTful 以及它的用途是什么?
17、你對 Spring Boot 有什么了解?
18、什么是 Spring 引導(dǎo)的執(zhí)行器?
19、什么是 Spring Cloud?
20、Spring Cloud 解決了哪些問題?
21、在 Spring MVC 應(yīng)用程序中使用 WebMvcTest 注釋有什么用處?
22。你能否給出關(guān)于休息和微服務(wù)的要點(diǎn)?
23、什么是不同類型的微服務(wù)測試?
24、您對 Distributed Transaction 有何了解?
25、什么是 Idempotence 以及它在哪里使用?
26、什么是有界上下文?
27、什么是雙因素身份驗證?
28、雙因素身份驗證的憑據(jù)類型有哪些?
29、什么是客戶證書?
30、PACT 在微服務(wù)架構(gòu)中的用途是什么?
31、什么是 OAuth?
32、康威定律是什么?
33、合同測試你懂什么?
34、什么是端到端微服務(wù)測試?
35、Container 在微服務(wù)中的用途是什么?
36、什么是微服務(wù)架構(gòu)中的 DRY?
37、什么是消費(fèi)者驅(qū)動的合同(CDC)?
38、Web,RESTful API 在微服務(wù)中的作用是什么?
39、您對微服務(wù)架構(gòu)中的語義監(jiān)控有何了解?
40、我們?nèi)绾芜M(jìn)行跨功能測試?
41、我們?nèi)绾卧跍y試中消除非決定論?
42、Mock 或 Stub 有什么區(qū)別?
43、您對 Mike Cohn 的測試金字塔了解多少?
44、Docker 的目的是什么?
45、什么是金絲雀釋放?
46、什么是持續(xù)集成(CI)?
47、什么是持續(xù)監(jiān)測?
48、架構(gòu)師在微服務(wù)架構(gòu)中的角色是什么?
49、我們可以用微服務(wù)創(chuàng)建狀態(tài)機(jī)嗎?
50、什么是微服務(wù)中的反應(yīng)性擴(kuò)展?
2.微服務(wù) 面試題解析
1、您對微服務(wù)有何了解?
微服務(wù),又稱微服務(wù) 架 構(gòu),是一種架構(gòu)風(fēng)格,它將應(yīng)用程序構(gòu)建為以業(yè)務(wù)領(lǐng)域為模型的小型自治服務(wù)集合 。
通俗地說,你必須看到蜜蜂如何通過對齊六角形蠟細(xì)胞來構(gòu)建它們的蜂窩狀物。他們最初從使用各種材料的小部分開始,并繼續(xù)從中構(gòu)建一個大型蜂箱。這些細(xì)胞形成圖案,產(chǎn)生堅固的結(jié)構(gòu),將蜂窩的特定部分固定在一起。這里,每個細(xì)胞獨(dú)立于另一個細(xì)胞,但它也與其他細(xì)胞相關(guān)。這意味著對一個細(xì)胞的損害不會損害其他細(xì)胞,因此,蜜蜂可以在不影響完整蜂箱的情況下重建這些細(xì)胞。
圖 1:微服務(wù)的蜂窩表示 – 微服務(wù)訪談問題
請參考上圖。這里,每個六邊形形狀代表單獨(dú)的服務(wù)組件。與蜜蜂的工作類似,每個敏捷團(tuán)隊都使用可用的框架和所選的技術(shù)堆棧構(gòu)建單獨(dú)的服務(wù)組件。就像在蜂箱中一樣,每個服務(wù)組件形成一個強(qiáng)大的微服務(wù)架構(gòu),以提供更好的可擴(kuò)展性。此外,敏捷團(tuán)隊可以單獨(dú)處理每個服務(wù)組件的問題,而對整個應(yīng)用程序沒有影響或影響最小。
?
2、微服務(wù)架構(gòu)有哪些優(yōu)勢?
圖 2:微服務(wù)的 優(yōu)點(diǎn) – 微服務(wù)訪談問題
· 獨(dú)立開發(fā) – 所有微服務(wù)都可以根據(jù)各自的功能輕松開發(fā)
· 獨(dú)立部署 – 基于其服務(wù),可以在任何應(yīng)用程序中單獨(dú)部署它們
· 故障隔離 – 即使應(yīng)用程序的一項服務(wù)不起作用,系統(tǒng)仍可繼續(xù)運(yùn)行
· 混合技術(shù)堆棧 – 可以使用不同的語言和技術(shù)來構(gòu)建同一應(yīng)用程序的不同服務(wù)
· 粒度縮放 – 單個組件可根據(jù)需要進(jìn)行縮放,無需將所有組件縮放在一起
?
3、微服務(wù)有哪些特點(diǎn)?
圖 3:微服務(wù)的 特點(diǎn) – 微服務(wù)訪談問題
· 解耦 – 系統(tǒng)內(nèi)的服務(wù)很大程度上是分離的。因此,整個應(yīng)用程序可以輕松構(gòu)建,更改和擴(kuò)展
· 組件化 – 微服務(wù)被視為可以輕松更換和升級的獨(dú)立組件
· 業(yè)務(wù)能力 – 微服務(wù)非常簡單,專注于單一功能
· 自治 – 開發(fā)人員和團(tuán)隊可以彼此獨(dú)立工作,從而提高速度
· 持續(xù)交付 – 通過軟件創(chuàng)建,測試和批準(zhǔn)的系統(tǒng)自動化,允許頻繁發(fā)布軟件
· 責(zé)任 – 微服務(wù)不關(guān)注應(yīng)用程序作為項目。相反,他們將應(yīng)用程序視為他們負(fù)責(zé)的產(chǎn)品
· 分散治理 – 重點(diǎn)是使用正確的工具來做正確的工作。這意味著沒有標(biāo)準(zhǔn)化模式或任何技術(shù)模式。開發(fā)人員可以自由選擇最有用的工具來解決他們的問題
· 敏捷 – 微服務(wù)支持敏捷開發(fā)。任何新功能都可以快速開發(fā)并再次丟棄
?
4、設(shè)計微服務(wù)的最佳實(shí)踐是什么?
以下是設(shè)計微服務(wù)的最佳實(shí)踐:
圖 4:設(shè)計微服務(wù)的最佳實(shí)踐 – 微服務(wù)訪談問題
?
5、微服務(wù)架構(gòu)如何運(yùn)作?
微服務(wù)架構(gòu)具有以下組件:
圖 5:微服務(wù) 架構(gòu) – 微服務(wù)面試問題
· 客戶端 – 來自不同設(shè)備的不同用戶發(fā)送請求。
· 身份提供商 – 驗證用戶或客戶身份并頒發(fā)安全令牌。
· API 網(wǎng)關(guān) – 處理客戶端請求。
· 靜態(tài)內(nèi)容 – 容納系統(tǒng)的所有內(nèi)容。
· 管理 – 在節(jié)點(diǎn)上平衡服務(wù)并識別故障。
· 服務(wù)發(fā)現(xiàn) – 查找微服務(wù)之間通信路徑的指南。
· 內(nèi)容交付網(wǎng)絡(luò) – 代理服務(wù)器及其數(shù)據(jù)中心的分布式網(wǎng)絡(luò)。
· 遠(yuǎn)程服務(wù) – 啟用駐留在 IT 設(shè)備網(wǎng)絡(luò)上的遠(yuǎn)程訪問信息。
?
6、微服務(wù)架構(gòu)的優(yōu)缺點(diǎn)是什么?
?
7、單片,SOA 和微服務(wù)架構(gòu)有什么區(qū)別?
圖 6: 單片 SOA 和微服務(wù)之間的比較 – 微服務(wù)訪談問題
· 單片架構(gòu)類似于大容器,其中應(yīng)用程序的所有軟件組件組裝在一起并緊密封裝。
· 一個面向服務(wù)的架構(gòu)是一種相互通信服務(wù)的集合。通信可以涉及簡單的數(shù)據(jù)傳遞,也可以涉及兩個或多個協(xié)調(diào)某些活動的服務(wù)。
· 微服務(wù)架構(gòu)是一種架構(gòu)風(fēng)格,它將應(yīng)用程序構(gòu)建為以業(yè)務(wù)域為模型的小型自治服務(wù)集合。
?
8、在使用微服務(wù)架構(gòu)時,您面臨哪些挑戰(zhàn)?
開發(fā)一些較小的微服務(wù)聽起來很容易,但開發(fā)它們時經(jīng)常遇到的挑戰(zhàn)如下。
· 自動化組件:難以自動化,因為有許多較小的組件。因此,對于每個組件,我們必須遵循 Build,Deploy 和 Monitor 的各個階段。
· 易感性:將大量組件維護(hù)在一起變得難以部署,維護(hù),監(jiān)控和識別問題。它需要在所有組件周圍具有很好的感知能力。
· 配置管理:有時在各種環(huán)境中維護(hù)組件的配置變得困難。
· 調(diào)試:很難找到錯誤的每一項服務(wù)。維護(hù)集中式日志記錄和儀表板以調(diào)試問題至關(guān)重要。
?
9、SOA 和微服務(wù)架構(gòu)之間的主要區(qū)別是什么?
SOA 和微服務(wù)之間的主要區(qū)別如下:
?
10、微服務(wù)有什么特點(diǎn)?
您可以列出微服務(wù)的特征,如下所示:
圖 7:微服務(wù)的特征 – 微服務(wù)訪談問題
?
11、什么是領(lǐng)域驅(qū)動設(shè)計?
圖 8: DDD 原理 – 微服務(wù)面試問題
?
12、為什么需要域驅(qū)動設(shè)計(DDD)?
圖 9:我們需要 DDD 的因素 – 微服務(wù)面試問題
?
13、什么是無所不在的語言?
如果您必須定義泛在語言(UL),那么它是特定域的開發(fā)人員和用戶使用的通用語言,通過該語言可以輕松解釋域。
無處不在的語言必須非常清晰,以便它將所有團(tuán)隊成員放在同一頁面上,并以機(jī)器可以理解的方式進(jìn)行翻譯。
?
14、什么是凝聚力?
模塊內(nèi)部元素所屬的程度被認(rèn)為是凝聚力。
?
15、什么是耦合?
組件之間依賴關(guān)系強(qiáng)度的度量被認(rèn)為是耦合。一個好的設(shè)計總是被認(rèn)為具有高內(nèi)聚力和低耦合性。
?
16、什么是 REST / RESTful 以及它的用途是什么?
Representational State Transfer(REST)/ RESTful Web 服務(wù)是一種幫助計算機(jī)系統(tǒng)通過 Internet 進(jìn)行通信的架構(gòu)風(fēng)格。這使得微服務(wù)更容易理解和實(shí)現(xiàn)。
微服務(wù)可以使用或不使用 RESTful API 實(shí)現(xiàn),但使用 RESTful API 構(gòu)建松散耦合的微服務(wù)總是更容易。
?
17、你對 Spring Boot 有什么了解?
事實(shí)上,隨著新功能的增加,彈簧變得越來越復(fù)雜。如果必須啟動新的 spring 項目,則必須添加構(gòu)建路徑或添加 maven 依賴項,配置應(yīng)用程序服務(wù)器,添加 spring配置。所以一切都必須從頭開始。
Spring Boot 是解決這個問題的方法。使用 spring boot 可以避免所有樣板代碼和配置。因此,基本上認(rèn)為自己就好像你正在烘烤蛋糕一樣,春天就像制作蛋糕所需的成分一樣,彈簧靴就是你手中的完整蛋糕。
圖 10: Spring Boot 的因素 – 微服務(wù)面試問題
?
18、什么是 Spring 引導(dǎo)的執(zhí)行器?
Spring Boot 執(zhí)行程序提供了 restful Web 服務(wù),以訪問生產(chǎn)環(huán)境中運(yùn)行應(yīng)用程序的當(dāng)前狀態(tài)。在執(zhí)行器的幫助下,您可以檢查各種指標(biāo)并監(jiān)控您的應(yīng)用程序。
?
19、什么是 Spring Cloud?
根據(jù) Spring Cloud 的官方網(wǎng)站,Spring Cloud 為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智能路由,領(lǐng)導(dǎo)選舉,分布式會話,集群狀態(tài))。
?
20、Spring Cloud 解決了哪些問題?
在使用 Spring Boot 開發(fā)分布式微服務(wù)時,我們面臨的問題很少由 Spring Cloud解決。
· 與分布式系統(tǒng)相關(guān)的復(fù)雜性 – 包括網(wǎng)絡(luò)問題,延遲開銷,帶寬問題,安全問題。
· 處理服務(wù)發(fā)現(xiàn)的能力 – 服務(wù)發(fā)現(xiàn)允許集群中的進(jìn)程和服務(wù)找到彼此并進(jìn)行通信。
· 解決冗余問題 – 冗余問題經(jīng)常發(fā)生在分布式系統(tǒng)中。
· 負(fù)載平衡 – 改進(jìn)跨多個計算資源(例如計算機(jī)集群,網(wǎng)絡(luò)鏈接,中央處理單元)的工作負(fù)載分布。
· 減少性能問題 – 減少因各種操作開銷導(dǎo)致的性能問題。
?
21、在 Spring MVC 應(yīng)用程序中使用 WebMvcTest 注釋有什么用處?
在測試目標(biāo)只關(guān)注 Spring MVC 組件的情況下,WebMvcTest 注釋用于單元測試Spring MVC 應(yīng)用程序。在上面顯示的快照中,我們只想啟動 ToTestController。執(zhí)行此單元測試時,不會啟動所有其他控制器和映射。
?
22、你能否給出關(guān)于微服務(wù)的要點(diǎn)?
雖然您可以通過多種方式實(shí)現(xiàn)微服務(wù),但 REST over HTTP 是實(shí)現(xiàn)微服務(wù)的一種方式。REST 還可用于其他應(yīng)用程序,如 Web 應(yīng)用程序,API 設(shè)計和 MVC 應(yīng)用程序,以提供業(yè)務(wù)數(shù)據(jù)。
微服務(wù)是一種體系結(jié)構(gòu),其中系統(tǒng)的所有組件都被放入單獨(dú)的組件中,這些組件可以單獨(dú)構(gòu)建,部署和擴(kuò)展。微服務(wù)的某些原則和最佳實(shí)踐有助于構(gòu)建彈性應(yīng)用程序。
簡而言之,您可以說 REST 是構(gòu)建微服務(wù)的媒介。
?
23、什么是不同類型的微服務(wù)測試?
在使用微服務(wù)時,由于有多個微服務(wù)協(xié)同工作,測試變得非常復(fù)雜。因此,測試分為不同的級別。
· 在底層,我們有面向技術(shù)的測試,如單元測試和性能測試。這些是完全自動化的。
· 在中間層面,我們進(jìn)行了諸如壓力測試和可用性測試之類的探索性測試。
· 在頂層, 我們的 驗收測試數(shù)量很少。這些驗收測試有助于利益相關(guān)者理解和驗證軟件功能。
?
24、您對 Distributed Transaction 有何了解?
分布式事務(wù)是指單個事件導(dǎo)致兩個或多個不能以原子方式提交的單獨(dú)數(shù)據(jù)源的突變的任何情況。在微服務(wù)的世界中,它變得更加復(fù)雜,因為每個服務(wù)都是一個工作單元,并且大多數(shù)時候多個服務(wù)必須協(xié)同工作才能使業(yè)務(wù)成功。
?
25、什么是 Idempotence 以及它在哪里使用?
冪等性是能夠以這樣的方式做兩次事情的特性,即最終結(jié)果將保持不變,即好像它只做了一次。
用法:在遠(yuǎn)程服務(wù)或數(shù)據(jù)源中使用 Idempotence,這樣當(dāng)它多次接收指令時,它只處理指令一次。
?
26、什么是有界上下文?
有界上下文是域驅(qū)動設(shè)計的核心模式。DDD 戰(zhàn)略設(shè)計部門的重點(diǎn)是處理大型模型和團(tuán)隊。DDD 通過將大型模型劃分為不同的有界上下文并明確其相互關(guān)系來處理大型模型。
?
27、什么是雙因素身份驗證?
雙因素身份驗證為帳戶登錄過程啟用第二級身份驗證。
圖 11: 雙因素認(rèn)證的表示 – 微服務(wù)訪談問題
因此,假設(shè)用戶必須只輸入用戶名和密碼,那么這被認(rèn)為是單因素身份驗證。
?
28、雙因素身份驗證的憑據(jù)類型有哪些?
這三種憑證是:
圖 12: 雙因素認(rèn)證的證書類型 – 微服務(wù)面試問題
?
29、什么是客戶證書?
客戶端系統(tǒng)用于向遠(yuǎn)程服務(wù)器發(fā)出經(jīng)過身份驗證的請求的一種數(shù)字證書稱為客戶端證書。客戶端證書在許多相互認(rèn)證設(shè)計中起著非常重要的作用,為請求者的身份提供了強(qiáng)有力的保證。
?
30、PACT 在微服務(wù)架構(gòu)中的用途是什么?
PACT 是一個開源工具,允許測試服務(wù)提供者和消費(fèi)者之間的交互,與合同隔離,從而提高微服務(wù)集成的可靠性。
微服務(wù)中的用法
· 用于在微服務(wù)中實(shí)現(xiàn)消費(fèi)者驅(qū)動的合同。
· 測試微服務(wù)的消費(fèi)者和提供者之間的消費(fèi)者驅(qū)動的合同。
查看即將到來的批次
?
31、什么是 OAuth?
OAuth 代表開放授權(quán)協(xié)議。這允許通過在 HTTP 服務(wù)上啟用客戶端應(yīng)用程序(例如第三方提供商 Facebook,GitHub 等)來訪問資源所有者的資源。因此,您可以在不使用其憑據(jù)的情況下與另一個站點(diǎn)共享存儲在一個站點(diǎn)上的資源。
?
32、康威定律是什么?
“任 何 設(shè) 計 系 統(tǒng) 的 組 織 ( 廣 泛 定 義 ) 都 將 產(chǎn) 生 一 種 設(shè) 計 , 其 結(jié) 構(gòu) 是 組 織 通 信 結(jié) 構(gòu)的 副 本 。” – Mel Conway
圖 13: Conway 定律的表示 – 微服務(wù)訪談問題
該法律基本上試圖傳達(dá)這樣一個事實(shí):為了使軟件模塊起作用,整個團(tuán)隊?wèi)?yīng)該進(jìn)行良好的溝通。因此,系統(tǒng)的結(jié)構(gòu)反映了產(chǎn)生它的組織的社會邊界。
?
33、合同測試你懂什么?
根據(jù) Martin Flower 的說法,合同測試是在外部服務(wù)邊界進(jìn)行的測試,用于驗證其是否符合消費(fèi)服務(wù)預(yù)期的合同。
此外,合同測試不會深入測試服務(wù)的行為。更確切地說,它測試該服務(wù)調(diào)用的輸入&輸出包含所需的屬性和所述響應(yīng)延遲,吞吐量是允許的限度內(nèi)。
?
34、什么是端到端微服務(wù)測試?
端到端測試驗證了工作流中的每個流程都正常運(yùn)行。這可確保系統(tǒng)作為一個整體協(xié)同工作并滿足所有要求。
通俗地說,你可以說端到端測試是一種測試,在特定時期后測試所有東西。
圖 14:測試層次 – 微服務(wù)面試問題
?
35、Container 在微服務(wù)中的用途是什么?
容器是管理基于微服務(wù)的應(yīng)用程序以便單獨(dú)開發(fā)和部署它們的好方法。您可以將微服務(wù)封裝在容器映像及其依賴項中,然后可以使用它來滾動按需實(shí)例的微服務(wù),而無需任何額外的工作。
圖 15: 容器的表示及其在微服務(wù)中的使用方式 – 微服務(wù)訪談問題
?
36、什么是微服務(wù)架構(gòu)中的 DRY?
DRY 代表不要重復(fù)自己。它基本上促進(jìn)了重用代碼的概念。這導(dǎo)致開發(fā)和共享庫,這反過來導(dǎo)致緊密耦合。
?
37、什么是消費(fèi)者驅(qū)動的合同(CDC)?
這基本上是用于開發(fā)微服務(wù)的模式,以便它們可以被外部系統(tǒng)使用。當(dāng)我們處理微服務(wù)時,有一個特定的提供者構(gòu)建它,并且有一個或多個使用微服務(wù)的消費(fèi)者。
通常,提供程序在 XML 文檔中指定接口。但在消費(fèi)者驅(qū)動的合同中,每個服務(wù)消費(fèi)者都傳達(dá)了提供商期望的接口。
?
38、Web,RESTful API 在微服務(wù)中的作用是什么?
微服務(wù)架構(gòu)基于一個概念,其中所有服務(wù)應(yīng)該能夠彼此交互以構(gòu)建業(yè)務(wù)功能。因此,要實(shí)現(xiàn)這一點(diǎn),每個微服務(wù)必須具有接口。這使得 Web API 成為微服務(wù)的一個非常重要的推動者。RESTful API 基于 Web 的開放網(wǎng)絡(luò)原則,為構(gòu)建微服務(wù)架構(gòu)的各個組件之間的接口提供了最合理的模型。
?
39、您對微服務(wù)架構(gòu)中的語義監(jiān)控有何了解?
語義監(jiān)控,也稱為 綜合監(jiān)控, 將自動化測試與監(jiān)控應(yīng)用程序相結(jié)合,以檢測業(yè)務(wù)失敗因素。
?
40、我們?nèi)绾芜M(jìn)行跨功能測試?
跨功能測試是對非功能性需求的驗證,即那些無法像普通功能那樣實(shí)現(xiàn)的需求。
?
41、我們?nèi)绾卧跍y試中消除非決定論?
非確定性測試(NDT)基本上是不可靠的測試。所以,有時可能會發(fā)生它們通過,顯然有時它們也可能會失敗。當(dāng)它們失敗時,它們會重新運(yùn)行通過。
從測試中刪除非確定性的一些方法如下:
1、 隔離
2、 異步
3、 遠(yuǎn)程服務(wù)
4、 隔離
5、 時間
6、 資源泄漏
?
42、Mock 或 Stub 有什么區(qū)別?
存根
· 一個有助于運(yùn)行測試的虛擬對象。
· 在某些可以硬編碼的條件下提供固定行為。
· 永遠(yuǎn)不會測試存根的任何其他行為。
例如,對于空堆棧,您可以創(chuàng)建一個只為 empty()方法 返回 true 的存根。因此,這并不關(guān)心堆棧中是否存在元素。
嘲笑
· 一個虛擬對象,其中最初設(shè)置了某些屬性。
· 此對象的行為取決于 set 屬性。
· 也可以測試對象的行為。
例如,對于 Customer 對象,您可以通過設(shè)置名稱和年齡來模擬它。您可以將 age設(shè)置為 12,然后測試 isAdult()方法,該方法將在年齡大于 18 時返回 true。因此,您的 Mock Customer 對象適用于指定的條件。
?
43、您對 Mike Cohn 的測試金字塔了解多少?
Mike Cohn 提供了一個名為 Test Pyramid 的模型。這描述了軟件開發(fā)所需的自動化測試類型。
圖 16: Mike Cohn 的測試金字塔 – 微服務(wù)面試問題
根據(jù)金字塔,第一層的測試數(shù)量應(yīng)該最高。在服務(wù)層,測試次數(shù)應(yīng)小于單元測試級別,但應(yīng)大于端到端級別。
?
44、Docker 的目的是什么?
Docker 提供了一個可用于托管任何應(yīng)用程序的容器環(huán)境。在此,軟件應(yīng)用程序和支持它的依賴項緊密打包在一起。
因此,這個打包的產(chǎn)品被稱為 Container,因為它是由 Docker 完成的,所以它被稱為 Docker 容器!
?
45、什么是金絲雀釋放?
Canary Releasing 是一種降低在生產(chǎn)中引入新軟件版本的風(fēng)險的技術(shù)。這是通過將變更緩慢地推廣到一小部分用戶,然后將其發(fā)布到整個基礎(chǔ)架構(gòu),即將其提供給每個人來完成的。
?
46、什么是持續(xù)集成(CI)?
持續(xù)集成(CI)是每次團(tuán)隊成員提交版本控制更改時自動構(gòu)建和測試代碼的過程。這鼓勵開發(fā)人員通過在每個小任務(wù)完成后將更改合并到共享版本控制存儲庫來共享代碼和單元測試。
?
47、什么是持續(xù)監(jiān)測?
持續(xù)監(jiān)控深入監(jiān)控覆蓋范圍,從瀏覽器內(nèi)前端性能指標(biāo),到應(yīng)用程序性能,再到主機(jī)虛擬化基礎(chǔ)架構(gòu)指標(biāo)。
?
48、架構(gòu)師在微服務(wù)架構(gòu)中的角色是什么?
微服務(wù)架構(gòu)中的架構(gòu)師扮演以下角色:
· 決定整個軟件系統(tǒng)的布局。
· 幫助確定組件的分區(qū)。因此,他們確保組件相互粘合,但不緊密耦合。
· 與開發(fā)人員共同編寫代碼,了解日常生活中面臨的挑戰(zhàn)。
· 為開發(fā)微服務(wù)的團(tuán)隊提供某些工具和技術(shù)的建議。
· 提供技術(shù)治理,以便技術(shù)開發(fā)團(tuán)隊遵循微服務(wù)原則。
?
49、我們可以用微服務(wù)創(chuàng)建狀態(tài)機(jī)嗎?
我們知道擁有自己的數(shù)據(jù)庫的每個微服務(wù)都是一個可獨(dú)立部署的程序單元,這反過來又讓我們可以創(chuàng)建一個狀態(tài)機(jī)。因此,我們可以為特定的微服務(wù)指定不同的狀態(tài)和事件。
例如,我們可以定義 Order 微服務(wù)。訂單可以具有不同的狀態(tài)。Order 狀態(tài)的轉(zhuǎn)換可以是 Order 微服務(wù)中的獨(dú)立事件。
?
50、什么是微服務(wù)中的反應(yīng)性擴(kuò)展?
Reactive Extensions 也稱為 Rx。這是一種設(shè)計方法,我們通過調(diào)用多個服務(wù)來收集結(jié)果,然后編譯組合響應(yīng)。這些調(diào)用可以是同步或異步,阻塞或非阻塞。Rx是分布式系統(tǒng)中非常流行的工具,與傳統(tǒng)流程相反。
?
本內(nèi)容由個人從參考資料收集而來,可能有不準(zhǔn)確的地方,還請各位多多指正,謝謝!
以下還有更多一線學(xué)習(xí)資料(2T),關(guān)注我的公眾號,免費(fèi)領(lǐng)取,如:
以上資料,都是我個人平時收集而來,有網(wǎng)盤存儲,長期有效!有興趣的同學(xué),可以掃碼關(guān)注我的個人公眾號:時代名猿,回復(fù)關(guān)鍵字:wyzl?,領(lǐng)取一線資料!
?
?
總結(jié)
以上是生活随笔為你收集整理的【Java面试系列】Java微服务面试题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python爬虫 批量采集京东商品数据,
- 下一篇: 面试字节、阿里等大厂后,总结了今年的 J