【51CTO.com快译】你想找到一份微服务开发人员的工作吗?你是否正在寻求一些微服务面试问题和答案?如果是这样,那么以下将会提供你需要知道的一些问题,将会了解有关微服务开发人员的日常工作职责等重要的微服务面试问题。你还将获得有关如何回答这些问题的见解,以及面试人员对于求职者回答的看法(这可能是求职者之前从未见过的独特观点)。这很酷!
准备好了吗?让我们开始吧。
在招聘微服务开发人员时,与具有的理论知识相比,求职者具有实际的经验和技能至关重要。当然,必须有概念上的理解。更重要的是,根据实际问题评估求职者肯定有助于衡量其拥有的知识和技能。它有助于确定求职者是否适合成为组织中开发团队的成员。
微服务开发人员的角色和责任
在开始提出微服务面试问题之前,首先需要理解微服务开发人员的主要工作职责。作为微服务开发人员,其核心工作职责主要是为微服务开发优秀的API,进行测试以确保它们工作正常,如果出现任何问题,需要进行调试或修复问题。
这些只是微服务开发人员的一些日常职责,并不是详尽的清单。开发人员还要参与其他各方面的工作。但是,首先必须具备这些基本的知识和技能,才能有效地发挥微服务开发人员的作用。
现在来看一下求职者应聘微服务开发人员职位的一些面试问题。这是他们必须了解的基本问题。行业专家为此将精彩的回答添加到其中,并且还包括了面试官对每个答案的观点。
这些问题只针对微服务REST API开发,并没有包括有关其他领域的问题,例如版本控制知识等。
以下是针对微服务开发人员的实用面试问题:
Q1:请你解释一下如何逐步开发REST API。
答:假设我必须开发一个新的REST API,从给定产品的库存中获取可用物品的数量。在更高层面上,我将执行以下操作:
- 为API确定适当的HTTP方法。
- 确定API的端点。
- 确保URL到控制器的映射到位。
- 在本地部署应用程序,并确保API框架运行正常。
- 接下来,按照编码准则和项目代码结构添加所需的业务逻辑。
- 在API中添加所需的验证。
- 添加逻辑以从数据源获取产品清单。
- 在API中包括异常处理。
- 添加单元测试用例。
- 测试API。
从面试人员的角度看:从以上的回答中,求职者采取有条不紊的方法来完成各个任务,在这个过程中需要仔细、彻底、有序地完成任务。
求职者还以一个示例开始进行说明,表明他知道如何从技术上映射业务需求。
这其中涵盖了;还应遵循为项目定义的编码准则和约定,这表明求职者是一个面向过程的开发人员。此外还提到添加验证,其中包括异常处理。这表明求职者具有开发更加强大功能的思维。
总体而言,对于求职者的第一印象不错,现在面试人员可能会提出一些具体问题,以更详细地评估其具备的知识和技能。
Q2:在开发REST API时,你什么时候使用HTTP动词GET、PUT、POST、DELETE?
答:假设我们必须创建API,以从库存中创建、更新、删除和查看产品信息。在这种情况下,我将使用:
“GET”用于查看库存中的产品信息。
“POST”用于在库存中创建产品信息。
“PUT”用于更新库存中产品信息。
从面试人员的角度看:用例子解释总是很好的。求职者通过示例给出的准确答案表明他具有扎实的基础知识。接下来,面试人员将尝试通过其他几个问题来验证求职者拥有的基本知识。
Q3:URI参数和查询字符串参数有什么区别?
答:好的,我举个例子来解释一下。
api/product/{productname}/items,此处productname是URI参数。
api/product/items?productname=mobile,此处productname是查询字符串参数。
从面试官的角度看:完美,求职者解释得很清楚也很好。
Q4:如何从REST API返回错误响应和有效响应?
答:为了返回有效的响应,将使用200状态代码。对于返回错误,将使用适当的状态代码,例如,如果在库存中未找到该产品,则返回404错误。如果发生一些未处理的异常,则返回500错误,依此类推。
从面试官的角度看:回答得很好。现在,面试官会尝试根据一些实际的方面对求职者进行评估。
Q5:你已经开发了一个REST API作为微服务的一部分,并将其构建并部署在本地计算机上。现在如何在本地计算机上测试REST API?
答:一旦将应用程序部署到本地或服务器上,我将使用Postman来测试API。另外,在REST API的开发过程中,我还将包括单元测试用例。
从面试人员的角度看:求职者知道自己在做什么,这真的很好。
Q6:REST API部署在开发服务器上,并已与用户界面(UI)集成。现在如果需要的话,你将如何从用户界面(UI)调试REST API调用?
答:我们可以使用开发人员工具并找出对API的网络调用。例如,在Google Chrome浏览器中,按下F12按键,可以启动开发人员工具。然后在“网络”选项卡中,可以过滤掉XHR请求,并查看任何API URL的请求/响应。在捕获了有关请求有效负载的必要信息之后,将进一步查看日志以查找发生的情况,并根据需要使用给定的请求有效负载调试代码。
从面试官的角度来看:通过这个答案,求职者再次表明了逐步进行调试/故障排除的方法。此外,求职者还展示了对如何执行操作有着详细的了解。
Q7:你如何验证用户访问REST API?
答:使用承载身份验证令牌,并将其作为请求标头传递给API请求。
从面试官的角度看:只要从高层进行检查,即可了解API身份验证及其相关详细信息。
Q8:什么是过滤器/中间件?在哪种情况下将使用它?
回答:可以使用过滤器/中间件在API控制器执行之前或之后添加任何其他逻辑。例如,如果想在执行API之前强制验证、授权,可以在过滤器/中间件的帮助下完成。另一个例子是记录API执行的入口和退出,或者测量时间。
从面试官的角度看:求职者的回答表明对API的整体概念有很好的了解。
Q9:微服务中的日志记录和跟踪有什么区别?你使用哪些工具查看它们?
答:通过跟踪,可以跟踪完整的请求,以便查看API的执行路径。我们通常根据相关ID对其进行跟踪。在这种情况下,即使请求也跨多个API,也可以查看完整的执行跟踪。我们使用了Jaeger(或任何其他跟踪工具)工具。
日志是调试/故障排除的一种便捷参考。我们使用Elastic-Logstash-Kibana进行日志记录。
从面试官的角度看:求职者这个问题回答得很好。并不是每个人都能按预期回答这个问题。
Q10:什么是Swagger?有什么用?
答:Swagger提供了一个良好的用户界面(UI),其中显示了微服务的可用API。它还提供了尝试和执行API的功能。当我们必须与其他团队(例如文档团队等)一起工作时,我们也将其用作参考。
从面试官的角度看:完美,求职者很适合我们的开发团队,因为求职者知道如何有效地与其他团队合作,以及如何以开发人员的身份向外部展示微服务。
面试问题到此结束。
结语
以上例举了10个面试问题和答案,希望应聘微服务开发人员的求职者至少对上述微服务面试问题有着深入的了解。同样,面试人员很少会提一些非常基本的问题。而根据求职者的回答将会逐渐深入。
尽管这些问题或答案可以帮助求职者为面试做好准备,但是,这并不是一个广泛的问题列表,面试中提出的实际问题可能与这完全不同。因此,不要将以上问题用作应聘这样的工作岗位的唯一来源。
原文标题:10 Microservices Interview Questions You Must Know,作者:Ramesh Chauhan
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】