技术实力案例点评 - 面试 Java P7

最近读到MacTalk 的一篇文章,里面有个面试场景,觉得很好就发出来, 兼带本人感悟。
原文出自:技术人最重要的能力是什么?

技术实力案例点评

场景:
一个面试者面试Java P7,其中有一项项目经验很牛逼:XX架构重构,性能提升10倍。于是,我针对这个项目经验进行了深入的考察,结果……

下面是我们大概的对话过程:

1. 我:请简单介绍一下这个项目重构。

面:我们某个业务和运动会有关,每次关键比赛前业务访问量是平时的10倍以上,原来的系统量一大就卡死了,用户体验很不好,需要重构。
我:具体怎么做的呢?
面:我通过引入mc缓存,将原来直接访问数据库的操作改为先访问缓存,性能比原来提升了10倍。
我:为何你想到了引入mc?
面:(卡了一下,有点惊讶我的问题)……我上网查了一下资料,很多都说mc能够大幅提升性能,并且使用后确实效果很好。

[点评1]这是典型的「代码靠抄,方案靠搜,效果靠试」,面试者看到了一个问题,但没有分析和思考,然后上网搜方案,看到了好像很多人都说引入mc都能解决问题,关键是最终确实好像解决了,这让面试者自我感觉良好。
[感想] 为何想到引入mc 缓存?首先要分析问题,“每次关键比赛前的业务访问量是平时的10倍以上”, 是因为访问量飙升,造成系统卡死,首先去找到系统瓶颈,究竟是数据库访问,还是某个资源同步访问问题,还是网络IO, 造成的系统吞吐量上不去,要去验证,当然这里大概率是数据库问题,于是自然想到加一层缓存层,直接读内存,比数据库访问快的多,提高系统性能。找到问题,分析问题,再找到解决方案。

2. 我:mc能大幅提升性能的原理是什么?

面:缓存访问快,数据库访问慢。
我:那mc性能多高,数据库性能多高?
面:……(想了10秒)抱歉,没有研究过。

[点评2]这是典型的知其然不知其所以然,开源方案拿来就用,基本的测试和原理研究都没做过。
[感想] 为什么考虑使用mc缓存,性能能提高的何种程度? 对于第一个问题, 主要是基于内存的访问比基于磁盘的访问确实快的多,对于具体的快多少,慢多少,这就需要自己去评测了。网上也有评测的案例,但是也要基于自己的系统,做压力测试,到底使用mc后系统比原来提高了多少性能,这一块如果是认真负责讲逻辑的态度,确实是这么干的,当然比较应付差事,没有具体比较,确实无法得到清晰的认识。

3. 我:没关系,那我们换个问题,重构后你们的系统用到的机器数量是多少?相比重构前减少了多少?

面:机器数量是100台,相比重构前没有减少。
我:哦,100台机器,QPS每台才300多,我看你们的业务也不是很复杂,为何这么低?
面:……(卡住10秒)这……300多QPS好像也不低吧?
我:那你有没有分析过每次请求全流程每个阶段的性能耗时?瓶颈在哪里?
面:(卡住5秒)没有分析过呢?
我:那为何就认定引入mc就有效果?
面:……(卡住10秒)我看大家都说引入缓存能大幅提升性能,而且最终效果确实很好。

[点评3]这就是知道技术点,不知道技术线和技术面,按道理对于系统性能问题的分析,至少是技术线级别的,需要分析每个请求每个阶段的耗时和原因;也可以是技术面级别的,例如分析数据库的设计、服务器的负载均衡等,还可以是技术体级别的,例如架构是否合理,是否可以将某个子系统拆分,引入消息队列等。
[感想] 对于这个问题,评估的是,你的解决方案,到底有没有解决系统问题,提高性能。就是有一个量化的指标,吞吐量提高多少,资源利用率提高多少,这个属于正常应该有的复核,不然对系统还是茫然无知的,对于定位问题,也是需要跟进一个完整的请求流程,确定具体的瓶颈到底在哪,然后有针对性的提供解决方案,而不是靠瞎猜。

4. 我:好吧,换个问题,如果让你再一次优化系统,你觉得可以怎么做?

面:……(思考20秒)我觉得目前的系统性能已经足够,应该不需要优化了。

[点评4]考察的是发现问题的能力,但他发现不了问题,其实前面已经都提到了,100台机器就是问题,QPS过低也是问题,但由于他没有经验,是看不出这些问题的。
[感想] 发现问题比解决问题更重要,发现问题、定位问题、解决问题,一整套流程。我们发现问题的着眼点就是系统当前存在哪些不合理的地方, 存在哪些资源利用率不高的地方,还有那些可以改进提高整体效率?这是个长期跟进思考的结果,很明显,该面试者对这些没有清晰的概念和操作经验。

很遗憾,最终这个面试者没有通过面试。


我们日常开发、维护系统时候,是否可以多思考一点,我们面对的业务场景,系统有哪些存在问题,存在优化改进的空间,跟进整个业务流程,分析下哪里是瓶颈,常这么想,一定会有收获。

关于技术点、技术线、技术面、技术体的详细内容,请参考开头文章。


[1] 技术人最重要的能力是什么? https://mp.weixin.qq.com/s/nKJy66zWiXeWVdYDaXt1gQ

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值