我的第一个知乎高赞回答

大家好呀,我是武哥。

今天给大家分享一个颇具争议的知乎问题。

知乎链接:www.zhihu.com/question/421237964

有经验的同学都知道:「高并发」属于高频面试题,同时也被很多人称为「面试造火箭,工作拧螺丝」的典范。

我也算是无心插柳,用去年写的这篇文章:

高并发,你真的理解透彻了吗

作了回答,很意外地被推荐成了热门内容,收获了我在知乎的第一个 1000 赞。

我的回答完全是从「高并发知识梳理」角度切入的,属于大而全的答案。很多人仍然把握不好:在短短几十分钟内,应该按照什么思路去组织内容,最终让面试官眼前一亮?

因此,我又特意选了几个典型问题,再做下补充回答,希望让大家有所启发。

1、如何看待此类「面试造火箭,入职拧螺丝」的现象?

2、应届生仅仅学过 JUC 和 GC,一点宏观概念也没有,怎么回答比较好?

3、平时做的项目就几十 QPS,该如何应对?

4、很多高并发技巧都有遇到或者实操过,怎么才能形成比较系统的回答?

提前说明下:面试是一个比较复杂的场景,同时偏主观判断,下面的回答完全基于我的个人经验进行总结,所以仅做参考,也欢迎大家评论区留下你的看法。


一、如何看待此类「面试造火箭,入职拧螺丝」的现象?

其实这种现象不仅仅发生在 IT 行业,很多行业都是如此:面试时高标准,问很难的知识点,而实际工作中却不常用。

知乎上有一条评论是这样的,应该能代表很多候选人的心声:

面试时,问百万高并发;入职后,写个位数 QPS 的服务。

有一个知乎大 V 也发表了自己的意见:

如果是一些小公司,平时 QPS 不过百,一看就是面试官在装 X,不要被他带节奏,因为他也不懂,两个高并发小白互聊,看谁先唬住谁。

这两个评价都没有问题,描述的现象确实都客观存在。但我觉得抱怨归抱怨,我们更应该理性地想一下:为什么这种现象如此普遍呢?

有句话说「存在即合理」,因此我并不排斥这种做法,下面阐述几点个人看法:

1、对于一个确实需要造火箭的岗位,或者是短期不需要造火箭但是未来有机会造火箭的岗位(比如大厂的核心业务,或者中小厂正处于快速上升期的业务),问这些问题是无可厚非的。

画外音:企业不可能反过来招人,面试时拧螺丝,入职后造火箭。

2、对于一个「供远大于需」的职位,即使这个岗位就是拧螺丝的,公司一定会优先选择更优秀的人,竞争越激烈,要求只会越变态,你是老板你肯定也这么做。

画外音:关键点在于供为什么远大于需?要么内卷严重,要么岗位提供的待遇非常有竞争力。作为求职者,不能说利益你全想占,还不想接受规则。

3、站在面试官角度,需要知道求职者的能力上限,来决定他的最终职级。而最常用的面试技巧就是:由浅到深地去问问题,直到触达求职者的盲区。所以,面试内容跟实际工作是需要分开看待的。

画外音:有经验的面试官,通常不是为了用高并发把你考倒,而是会打破砂锅问到底地看你理解有多深,看你的思维能力 。

4、不排除有些公司,特意用造火箭的面试假象来吸引你,做的工作却很低端;或者说有些面试官就是为了秀自己的肌肉。这种情况,大家更应该关注:你未来所做的事情是否符合你的预期?你是否愿意和面试官成为同事?问清楚这些,自然就有了判断。

画外音:面试本身就是一次双向选择,跟谈恋爱一样,看不对眼就是一个错误的开始。

如果你认同上面这 4 点看法,我觉得心态上会更容易接受这种现象,既然没法改变它,那就多琢磨如何搞定它。

此外,作为一个对技术有追求的人来说,造火箭是我们的终极目标,没知识深度肯定是不行的。如果你始终只看到自己在拧螺丝,你就永远走不出这个怪圈,而为了造火箭而去拧螺丝的人,一定会在简单且机械的重复工作中,慢慢找到突破口。

所以放平心态,抓住这种面试机会,多跟有经验的人交流,也是一个学习过程。

二、应届生仅仅学过 JUC 和 GC,一点宏观概念也没有,怎么回答比较好?

先说明一点:大部分公司在面试应届生时,其实很少问高并发,至少我经历过的大小公司都这样。

为什么不问?因为高并发是一个很复杂的系统性问题,很注重业务场景以及实战经验。而应届生最缺的就是项目经验,所以很难区分出大家的水平。

但如果真问到了高并发,而自己仅学过 JUC,懂点 GC,该如何应对呢?给几点建议:

1、概念性的东西要掌握扎实,不少同学容易把「并发、并行、高并发」这几个概念弄混淆,认为高并发就是「高+并发」,建议大家多查查资料,了解清楚高并发一些常识性的知识。

2、打动面试官的一定是你的强项:高并发问题通常涉及到全链路,你能从架构层面去谈,也能程序语言的并发特性上去谈,还能从网络、操作系统层面去谈,角度非常多。

你完全可以引导面试官到你擅长的方向上:比如 JUC、高效算法或者数据结构、数据库索引、IO复用或者零拷贝等等,这些往往是应届生的强项。

3、相反,如果你花很多时间去大谈架构设计、中间件使用这些未实践过的技巧上,反而容易给自己挖坑。

三、平时做的项目就几十 QPS,该如何应对呢?

很多同学应该属于这种情况,做过不少项目,唯独缺少高并发的实战经验。我建议从下面几个方向去做针对性准备:

1、高并发有关的理论知识需要先有系统性的了解,然后再回到自己熟悉的业务上去思考:如果并发再提高 10 倍或者 100 倍,哪些环节会遇到问题,然后你会怎么去应对?有实际场景,并且你又能给出方案选型的合理依据,效果远比空谈理论要好很多。

2、对于项目中常用的各种中间件,比如缓存、消息队列、ElasticSearch 等,其实都是非常典型的高并发系统,你可以对某个中间件进行深入研究,然后面试时主动引导面试官到这种基础组件上,谈谈你的认识。

3、如果你对自己的高并发设计能力很有信心,也可以让面试官给你拟定一个业务场景,然后给出你的设计方案。

总之,为了弥补实战经验上的短板,理论知识一定扎实,不能浮于表面,生搬硬套,不然很容易留下负面印象。

四、很多高并发技巧都有遇到或者实操过,怎么才能形成比较系统的回答?

这种情况属于有高并发经验,但是平时思考偏少,又没意识去做系统性整理,面试时很容易发挥失常。

建议可以参考我的回答:分别从高性能、高可用、高扩展这 3 个大方向做一次盘点,先找出技术亮点。

每个亮点,一定要扎进细节里去做整理和深度思考,弄清楚 Why 和 How:为什么要用这个技巧?它是怎么发挥作用的?会引发哪些关联问题?最终取得了什么效果?此外,业务背景以及指标性的数据都要做到心中有数。

找到亮点后,可以尝试找一条主脉络:比如按时间顺序、或者系统演进的顺序进行串联,这样比较符合高并发设计的基本原则,会让你的方案更接地气。

好啦!大概想到这些内容,希望这 4 个问题能让你有所启发,如果有其他疑问,欢迎加我微信交流或者评论区留言讨论。

  福利时间来啦  

如果给你一个机会从头开始设计互联网,你会怎么做?这个问题应该比高并发设计复杂一百倍不止。

不会没关系,送你一本硬核书籍先好好学学,书名是:《互联网的设计和演化》

它由因特网的设计师亲自执笔, “互联网之父”、图灵奖得主 Vint Cerf 强力推荐!零售价 119 元,书的质量就不多说了。

通过这本书你将了解到:包括因特网在内的 20 多种互联网架构方案分别有何特色?它们缘何成功或失败?以及背后复杂的政治、经济和社会因素又是如何影响技术决策的?

说下具体的赠书规则吧,本次免费包邮送出 5 本,参与方式有两种:

  • 留言说下你的高并发面试经验或者是高并发实战技巧,点赞前 3 名各送 1 本,截止到周三晚上 20 点。

  • 周四我会在朋友圈发起点赞抽奖,再送出 2 本。下方是我的二维码,来做个点赞之交吧,还能进读者群一起交流。

想自行购买的话,链接如下:

最后,非常感谢机械工业出版社 - 华章科技对本次福利的赞助!

大家在看:

《吃透MQ系列》之核心基础篇

编程高手是如何练成的?

我给 Apache 顶级项目提了个 Bug

··············  END  ··············

大家好,我是武哥,前亚马逊工程师,现大厂技术总监,持续分享个人的成长收获,关注我一定能提升你的视野,让我们一起进阶吧!

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论
请先登录 后发表评论~
©️2021 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页

打赏作者

武哥漫谈IT

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值