原创:猿天地(微信公众号 ID:cxytiandi),欢迎分享,转载请保留出处。
相信很多人都有类似的经历,在面试快要结束的时候经常会被问到一个问题:讲讲项目中的技术难点?
这是一个比较开放的问题,首先它没有固定的答案,因为每个人做过的项目不同,使用的框架不同,对应的架构不同,自然遇到的技术难点也不同。
1. 一定要真实
在回答这个问题的时候,一定要仔细想想之前真实遇到的问题,不要随便编一个,这样很容易出问题,因为面试官会顺着细节一层层的问下去,如果你是编出来的,到最后就圆不回去了。
举个例子:
求职者说我们下单的接口最开始只能支持几百的 TPS,被我优化后 TPS 破万了,只要你说完这句话面试官就开始进入继续追问细节了。
- 破万具体是多少的 TPS?
- 有多少台机器?
- 机器分别是什么配置?
- 数据库是什么配置?
- 你们是怎么进行压测的?
- 下单链路跟多少个服务进行了交互?
- 每个服务的耗时多久?
- 如何进行优化的?
- 如何发现接口中的性能瓶颈?
你只有抗住了这一系列的连环炮追问,而且面试官通过你的描述和你说的指标进行对比,如果比较匹配那么你就过关了。如果不匹配,肯定就面失败了。
2. 技术层面的难点
技术层面的难点可以是做了 GC 的优化,从多少 GC 次优化到多少次,STW 的时间降低了多少,通过哪些手段做的优化。
可以是压测时性能一直上不去,通过什么手段进行了优化,从多少优化到多少。期间有没有加机器,有没有升配服务器,升配数据库等。
可以是项目运行一段时间后就出现假死的情况,处理不了任何请求。然后你是怎么一步步去分析并找到具体原因的,然后又是如何去解决的。
一定要有细节有数据,这样的案例才真实可信。并且面试官会认为你是具备去分析并解决问题的能力。
3. 不一定是技术层面的难点
虽然问的是技术难点,如果你确实没有遇到过什么技术难点,这个时候可以往其他方面去靠,不要直接回答说:没有遇到过什么难点。我敢保证,你要你这样回答了,面试成功的可能性不大。
可以往业务层面,领导力方面去讲,比如你可以说当时做某个业务的时候,没有这块经验。然后通过查找资料,去咨询有经验的朋友等独立的完成了某个系统的设计。并且在做完后取得了什么样的成绩,这个过程对自己来说是非常具体挑战性的,所以这是在项目中遇到的一个难点。
也可以是自己主动请缨,在领导的支持下主导了老项目的重构,给团队的同学培训了 DDD,并且通过 DDD 成功的将某个业务成功的进行了重构。这样可以体现你的主动性,分享精神,领导力等多方面综合的能力。
最后送给大家的就是:一定要先准备好,想好自己要说什么,临时发挥效果肯定没有事先准备的好。
如果对你有用,来个转发呗!
关于作者:尹吉欢,简单的技术爱好者,《Spring Cloud 微服务-全栈技术与案例解析》, 《Spring Cloud 微服务 入门 实战与进阶》作者, 公众号猿天地发起人。