美文网首页
是面试难还是应聘者水?Java并发你懂多少?

是面试难还是应聘者水?Java并发你懂多少?

作者: JAVA伯乐 | 来源:发表于2019-04-12 20:50 被阅读0次

    最近,正值面试季,无论是校招还是社招,都在如火如荼的进行着。我也和很多朋友交流过,面试者普遍的反应是现在的招聘太难。而面试官们则普遍认为现在的应聘者太水。

    我问了一些面试者,面试难在哪里,他们说,现在的面试,动不动就要求有分布式相关经验,要求面试者有高并发编程经历。深入理解多线程等。

    我也问了一些面试官,应聘者水在哪里,他们说,很多面试者,最基本的Java内存模型和JVM内存结构都分不清楚;常见的锁机制都不了解;来了之后根本无法应付我们的高并发场景。

    造成这一现象的原因是什么呢?作者认为,主要是应聘者在工作中没遇到并发编程的场景,没有处理高并发的经验。现在使用的很多框架都把多线程的事情屏蔽掉了。项目中更是很少需要写多线程代码。

    而对于大一点的企业来说,虽然日常开发并不经常写多线程的代码,但是业务量在哪里摆着,需要程序员对并发的原理有深入的理解,需要他们在时时刻刻能够考虑到并发的情况,能够识别出并发,并且妥善的保证数据的可靠性。

    举一个最简单的例子,并发编程离不开锁,围绕锁,我们希望开发者知道什么是数据库锁(行级锁、表级锁、共享锁、排它锁)?不同的事务隔离级别加锁会有什么区别(gap锁、next-key lock)?锁和索引之间有什么关系?不同类型的索引加锁顺序是怎么样的?什么是乐观锁和悲观锁?乐观锁和悲观锁有什么区别?高并发应该如何选择锁?锁的粒度如何控制?如何避免发生死锁?死锁了怎么解决?如何做锁优化?等等一系列问题。

    有的时候,企业要求的并不一定是你完完全全可以在开发过程中避免出问题,企业希望的是,在出现问题后,可以快速的分析问题、定位问题以及解决问题的能力。说到根本,这就是理论知识是否扎实!尤其是原理级的!!!

    所以说,只要你想进大厂,并发是必须跨过的一道“坎”。

    并发编程是Java语言中最为晦涩的知识点,它涉及操作系统、内存、CPU、编程语言等多方面的基础能力,而这些知识点看上去非常的零散、独立,可实则关联性又比较强,更为考验一个程序员的内功。

    不过,因为网上学习资料非常零散,也很少有人能系统讲清楚并发,所以想掌握并发,只能靠“自学”,却往往不得要领。

    说到这里,我想给你推荐一张“并发编程”全景图。是由京东资深架构师王宝令凝聚他十几年经验制成的,从三个核心问题:分工、互斥、协作,全面且系统地涵盖了Java并发编程的技术难点。

    我认为,这个全景图是回到并发的源头思考来问题,根据这个思路,可以举一反三,融会贯通。

    并发编程全景图

    分工,类似于现实中一个组织完成一个项目,项目经理要拆分任务,安排合适的成员去完成。在并发编程领域,你就是项目经理,线程就是项目组成员。分工非常重要,它直接决定了并发程序的性能。

    同步,主要指的就是线程间的协作,本质上和现实生活中的协作没区别,不过是一个线程执行完了一个任务,如何通知执行后续任务的线程开工而已。

    互斥,指的是同一时刻,只允许一个线程访问共享变量。

    小编分类整理了许多java进阶学习材料和BAT面试题,需要资料的请加JAVA高阶学习Q群:851531810;就能领取2019年java架构师进阶学习资料和BAT面试题。

    相关文章

      网友评论

          本文标题:是面试难还是应聘者水?Java并发你懂多少?

          本文链接:https://www.haomeiwen.com/subject/ulihwqtx.html