求職者必須知道的十個微服務(wù)面試問題
譯文【51CTO.com快譯】你想找到一份微服務(wù)開發(fā)人員的工作嗎?你是否正在尋求一些微服務(wù)面試問題和答案?如果是這樣,那么以下將會提供你需要知道的一些問題,將會了解有關(guān)微服務(wù)開發(fā)人員的日常工作職責(zé)等重要的微服務(wù)面試問題。你還將獲得有關(guān)如何回答這些問題的見解,以及面試人員對于求職者回答的看法(這可能是求職者之前從未見過的獨(dú)特觀點(diǎn))。這很酷!
準(zhǔn)備好了嗎?讓我們開始吧。
在招聘微服務(wù)開發(fā)人員時,與具有的理論知識相比,求職者具有實(shí)際的經(jīng)驗和技能至關(guān)重要。當(dāng)然,必須有概念上的理解。更重要的是,根據(jù)實(shí)際問題評估求職者肯定有助于衡量其擁有的知識和技能。它有助于確定求職者是否適合成為組織中開發(fā)團(tuán)隊的成員。
微服務(wù)開發(fā)人員的角色和責(zé)任
在開始提出微服務(wù)面試問題之前,首先需要理解微服務(wù)開發(fā)人員的主要工作職責(zé)。作為微服務(wù)開發(fā)人員,其核心工作職責(zé)主要是為微服務(wù)開發(fā)優(yōu)秀的API,進(jìn)行測試以確保它們工作正常,如果出現(xiàn)任何問題,需要進(jìn)行調(diào)試或修復(fù)問題。
這些只是微服務(wù)開發(fā)人員的一些日常職責(zé),并不是詳盡的清單。開發(fā)人員還要參與其他各方面的工作。但是,首先必須具備這些基本的知識和技能,才能有效地發(fā)揮微服務(wù)開發(fā)人員的作用。
現(xiàn)在來看一下求職者應(yīng)聘微服務(wù)開發(fā)人員職位的一些面試問題。這是他們必須了解的基本問題。行業(yè)專家為此將精彩的回答添加到其中,并且還包括了面試官對每個答案的觀點(diǎn)。
這些問題只針對微服務(wù)REST API開發(fā),并沒有包括有關(guān)其他領(lǐng)域的問題,例如版本控制知識等。
以下是針對微服務(wù)開發(fā)人員的實(shí)用面試問題:
Q1:請你解釋一下如何逐步開發(fā)REST API。
答:假設(shè)我必須開發(fā)一個新的REST API,從給定產(chǎn)品的庫存中獲取可用物品的數(shù)量。在更高層面上,我將執(zhí)行以下操作:
- 為API確定適當(dāng)?shù)腍TTP方法。
- 確定API的端點(diǎn)。
- 確保URL到控制器的映射到位。
- 在本地部署應(yīng)用程序,并確保API框架運(yùn)行正常。
- 接下來,按照編碼準(zhǔn)則和項目代碼結(jié)構(gòu)添加所需的業(yè)務(wù)邏輯。
- 在API中添加所需的驗證。
- 添加邏輯以從數(shù)據(jù)源獲取產(chǎn)品清單。
- 在API中包括異常處理。
- 添加單元測試用例。
- 測試API。
從面試人員的角度看:從以上的回答中,求職者采取有條不紊的方法來完成各個任務(wù),在這個過程中需要仔細(xì)、徹底、有序地完成任務(wù)。
求職者還以一個示例開始進(jìn)行說明,表明他知道如何從技術(shù)上映射業(yè)務(wù)需求。
這其中涵蓋了;還應(yīng)遵循為項目定義的編碼準(zhǔn)則和約定,這表明求職者是一個面向過程的開發(fā)人員。此外還提到添加驗證,其中包括異常處理。這表明求職者具有開發(fā)更加強(qiáng)大功能的思維。
總體而言,對于求職者的第一印象不錯,現(xiàn)在面試人員可能會提出一些具體問題,以更詳細(xì)地評估其具備的知識和技能。
Q2:在開發(fā)REST API時,你什么時候使用HTTP動詞GET、PUT、POST、DELETE?
答:假設(shè)我們必須創(chuàng)建API,以從庫存中創(chuàng)建、更新、刪除和查看產(chǎn)品信息。在這種情況下,我將使用:
“GET”用于查看庫存中的產(chǎn)品信息。
“POST”用于在庫存中創(chuàng)建產(chǎn)品信息。
“PUT”用于更新庫存中產(chǎn)品信息。
從面試人員的角度看:用例子解釋總是很好的。求職者通過示例給出的準(zhǔn)確答案表明他具有扎實(shí)的基礎(chǔ)知識。接下來,面試人員將嘗試通過其他幾個問題來驗證求職者擁有的基本知識。
Q3:URI參數(shù)和查詢字符串參數(shù)有什么區(qū)別?
答:好的,我舉個例子來解釋一下。
api/product/{productname}/items,此處productname是URI參數(shù)。
api/product/items?productname=mobile,此處productname是查詢字符串參數(shù)。
從面試官的角度看:完美,求職者解釋得很清楚也很好。
Q4:如何從REST API返回錯誤響應(yīng)和有效響應(yīng)?
答:為了返回有效的響應(yīng),將使用200狀態(tài)代碼。對于返回錯誤,將使用適當(dāng)?shù)臓顟B(tài)代碼,例如,如果在庫存中未找到該產(chǎn)品,則返回404錯誤。如果發(fā)生一些未處理的異常,則返回500錯誤,依此類推。
從面試官的角度看:回答得很好。現(xiàn)在,面試官會嘗試根據(jù)一些實(shí)際的方面對求職者進(jìn)行評估。
Q5:你已經(jīng)開發(fā)了一個REST API作為微服務(wù)的一部分,并將其構(gòu)建并部署在本地計算機(jī)上。現(xiàn)在如何在本地計算機(jī)上測試REST API?
答:一旦將應(yīng)用程序部署到本地或服務(wù)器上,我將使用Postman來測試API。另外,在REST API的開發(fā)過程中,我還將包括單元測試用例。
從面試人員的角度看:求職者知道自己在做什么,這真的很好。
Q6:REST API部署在開發(fā)服務(wù)器上,并已與用戶界面(UI)集成。現(xiàn)在如果需要的話,你將如何從用戶界面(UI)調(diào)試REST API調(diào)用?
答:我們可以使用開發(fā)人員工具并找出對API的網(wǎng)絡(luò)調(diào)用。例如,在Google Chrome瀏覽器中,按下F12按鍵,可以啟動開發(fā)人員工具。然后在“網(wǎng)絡(luò)”選項卡中,可以過濾掉XHR請求,并查看任何API URL的請求/響應(yīng)。在捕獲了有關(guān)請求有效負(fù)載的必要信息之后,將進(jìn)一步查看日志以查找發(fā)生的情況,并根據(jù)需要使用給定的請求有效負(fù)載調(diào)試代碼。
從面試官的角度來看:通過這個答案,求職者再次表明了逐步進(jìn)行調(diào)試/故障排除的方法。此外,求職者還展示了對如何執(zhí)行操作有著詳細(xì)的了解。
Q7:你如何驗證用戶訪問REST API?
答:使用承載身份驗證令牌,并將其作為請求標(biāo)頭傳遞給API請求。
從面試官的角度看:只要從高層進(jìn)行檢查,即可了解API身份驗證及其相關(guān)詳細(xì)信息。
Q8:什么是過濾器/中間件?在哪種情況下將使用它?
回答:可以使用過濾器/中間件在API控制器執(zhí)行之前或之后添加任何其他邏輯。例如,如果想在執(zhí)行API之前強(qiáng)制驗證、授權(quán),可以在過濾器/中間件的幫助下完成。另一個例子是記錄API執(zhí)行的入口和退出,或者測量時間。
從面試官的角度看:求職者的回答表明對API的整體概念有很好的了解。
Q9:微服務(wù)中的日志記錄和跟蹤有什么區(qū)別?你使用哪些工具查看它們?
答:通過跟蹤,可以跟蹤完整的請求,以便查看API的執(zhí)行路徑。我們通常根據(jù)相關(guān)ID對其進(jìn)行跟蹤。在這種情況下,即使請求也跨多個API,也可以查看完整的執(zhí)行跟蹤。我們使用了Jaeger(或任何其他跟蹤工具)工具。
日志是調(diào)試/故障排除的一種便捷參考。我們使用Elastic-Logstash-Kibana進(jìn)行日志記錄。
從面試官的角度看:求職者這個問題回答得很好。并不是每個人都能按預(yù)期回答這個問題。
Q10:什么是Swagger?有什么用?
答:Swagger提供了一個良好的用戶界面(UI),其中顯示了微服務(wù)的可用API。它還提供了嘗試和執(zhí)行API的功能。當(dāng)我們必須與其他團(tuán)隊(例如文檔團(tuán)隊等)一起工作時,我們也將其用作參考。
從面試官的角度看:完美,求職者很適合我們的開發(fā)團(tuán)隊,因為求職者知道如何有效地與其他團(tuán)隊合作,以及如何以開發(fā)人員的身份向外部展示微服務(wù)。
面試問題到此結(jié)束。
結(jié)語
以上例舉了10個面試問題和答案,希望應(yīng)聘微服務(wù)開發(fā)人員的求職者至少對上述微服務(wù)面試問題有著深入的了解。同樣,面試人員很少會提一些非常基本的問題。而根據(jù)求職者的回答將會逐漸深入。
盡管這些問題或答案可以幫助求職者為面試做好準(zhǔn)備,但是,這并不是一個廣泛的問題列表,面試中提出的實(shí)際問題可能與這完全不同。因此,不要將以上問題用作應(yīng)聘這樣的工作崗位的唯一來源。
原文標(biāo)題:10 Microservices Interview Questions You Must Know,作者:Ramesh Chauhan
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】