有程序员会吐槽说,他去面试的时候,对方的公司,从业务上看,没啥高并发的,为啥一来就是老问高并发的呢?
这,跟他们公司有无并发场景有啥关系呢? 一个是跟面试官自己的知识储备有关,再者,你就算公司的业务场景再简单,也存在并发的场景的。
就是说,并发的场景可能存在,你就得考虑,不然会出故障。且并发的事情,理解起来本身也不太容易,作为重要的考核点,是非常正常的。
我先举一个流量很低,但是又不得不考虑并发的场景,就拿我们这边的门店收货来说,目前门店不多,但是供应商送货到门店后,门店的店员收货时,不只是店长可以收货,其他店员也是可以的。
那问题来了,两个店员可能存在同时收货的场景,那你是不是得考虑了?
是用锁,还是使用有唯一索引的流水表,且前端用户体验,你是不是也得一并考虑?
这些产品经理会告诉你吗? 不会,他只是考虑功能而已。
你作为程序员,不去想这个事情吗?
记住,由于业务性质,流量很低的,也是存在并发场景的。
因此要考察。
另外,正如我上面提到的,并发这个知识点,本身不容易理解,因此他也是会成为一个必考的知识点:
你能理解并发相关的知识吗?
如果你本身以前的公司,参与的项目都是高并发的项目,反而面试官会问你在实际工作中是如何处理并发的,未必会深入问你知识点。
如果你以前参与的项目流量很低,反而是要深入的问并发知识点,这是事实。
这是一个区分度的问题,候选人那么多,并发知识的能否理解的很好,就是一个重要的区分度指标。
我去哪家公司带团队,面试候选人的时候,并发知识点,我是必问的。常年如此。
我就拿一个最简单的,线程安全相关里,其中的一个知识点,锁:
我:多个线程进入synchronized代码块时,会被怎么处理?
候选人:拿到锁的线程可以进入;
我:那拿不到锁的线程呢?
候选人:被挂起。
我:有没有办法不被挂起?
候选人:可以自旋?
我:一直自旋?
候选人:有超时的,过了后,才被挂起?
我:。。。一直问下去。
候选人:一直到回答不出来为止。
要是都能回答出来呢,那挺好的,加分。
还有像什么读写锁,这种不太好理解的,我也是经常问的。这些并发知识,你日常没去研究一下,怎么可能理解到位呢?
因此这里就隐含了一个重要的点:
你平常有去研究技术。
这个超级关键的,而不是随意的完成日常需求交付就完事了。你有无兴趣,去一探究竟。
请注意,兴趣,有无去折腾过一下。
我接触过的高手,都是很爱折腾和研究的。请记住这句话。
最后,像我这种知识储备还行的,假设就算公司的业务里,永远没有并发的场景。那不好意思,我也问的。
除了刚才上面提到的,并发作为一个考核项必问外,也跟面试官自己风格性格有关的。
小结:
你就作为一个面试专项,好好准备就可以了,一个月的准备时间不够,就三个月,再不够,就半年。
肯定可以慢慢理解对的。