去做cpu,而不是去做硬盘

情感   职场   2022-07-29 07:45   北京  

都说面试是背八股文,但是最近在工作中用面试题的思路,解决了一个我并不太懂的领域的问题。不懂,但是却能解决问题,你说神奇不神奇

是什么面试题呢?就是找不同。有64个球,其中有一个与其他重量不同(可能重也可能轻)。你有一个秤,如果用最少次数的把这个不同的球找出来

如果你没做过类似的题,可以花时间想一想

========我是答案的分割线=======

这类题答案的思路就是二分查找,从算法复杂度上来说,log(n)基本上可以算是最优解了。

先把这些球两等分,称一下。记下哪边重。然后拿其中一半的32个球,对半分再称一次,最坏的情况是正好两边一样。那么就再拿另一半32个球对半分,拿出其中一半,与之前32个球的一半称。那么就知道这个特殊的球是轻还是重。然后找出特殊的球所在的那16个球,一直对半分就可以了

再来说说,我解决的这个问题。现象就是写入磁盘慢。但是写入的路径太长了,从应用程序,到虚拟机操作系统,到宿主机的驱动程序,到宿主机操作系统,到raid,到磁盘,这些都有可能出问题。

=========解答完毕===========

解决这个问题有一种思路就是鸟枪法。逐个排查,看看到底哪个有问题,那么复杂度就是n,而且需要你每个领域都了解。这种思路就费力不讨好了

我也是碰巧用了更好的思路,从整体到局部的基于属性的二分查找。因为是虚拟机嘛,所以模拟起来很方便。比如说我把相同的虚拟机迁到另一台宿主机,如果问题还是存在,那么可以确定问题的根源并不在宿主机上。当然,由于涉及的方面不多,一共也就6个维度,对算法的复杂度要求没那么高,哪怕你做6次实验,每次排除一个维度都行

最后查到问题是在磁盘这,这我是真不太懂,但还是很简单啊,我能控制得就是磁盘参数。还是找不同,拿出问题得参数和没问题得参数比一比就知道了。如果参数相同,那就是磁盘硬件坏了。怎样,不需要你懂,只要你会找不同,就行了

说来也巧,当年我进公司面试的时候,也被问过类似的问题,当时我就没答上来。问题大概是这样,现在某个网页访问慢,你有什么排查思路?后来面试官跟我说,也是找不同,从网关,到应用程序,到数据库找不同

今天我误打误撞,用同样的思路解决了一个表面上没那么明显相关的问题,入司这几年,没白过啊!

你以为我在讲面试题,那你就错了

解题思路固然重要,但更重要的是建立“索引”的能力。如果是你,在遇到实际问题的时候,能联想到这个面试题吗?如果你能联想到,那么解题思路可以很容易的搜索到

在存储能力上,人脑是比不过电脑的。但是现阶段,人工智能基本还处于人工智障阶段,就是因为我们有抽象思考的能力,有“索引”的能力

大学以前的教育,可能也包括现在的算法题,我感觉更强调记忆力。这是智力的一方面,但这部分,电脑可以比我们做得更好。我们应该将存储外置,强化自己的思考能力,强化自己索引的能力(突然想到,这不就是搜索引擎干的事嘛)

去做cpu,而不是去做硬盘

ps,上周有点忙,没发文。我会尽量按照每周一篇的进度发文章,如果迟交作业了,那就会补上。不这么要求自己,那就很容易更着更着就变失踪人口了



懒牛随想
略懂理财,职场
 最新文章