广州为学教育科技有限公司

主营:软件开发,Java培训,全栈工程师培训

免费店铺在线升级


Notice: Undefined variable: by_mids in /home/wwwroot/1818.net.cn/template/F6/left.php on line 11

Warning: implode(): Invalid arguments passed in /home/wwwroot/1818.net.cn/template/F6/left.php on line 11
联系方式
  • 公司: 广州为学教育科技有限公司
  • 地址: 广州市天河区车陂大岗路4号沣宏大厦A栋3001
  • 联系: 黄老师
  • 手机: 13288494988
  • 一键开店

从学习方面深谈如何进入国内互联网公司

2019-01-17 04:00:38  116 次浏览

正常情况下,一个对象从创建到销毁,应该是从Eden,然后到Survivor Spaces(幸存区),再到Old Generation(年老代),后在某次GC下消失。

当然,一个对象也可能直接在Eden里死掉,也可能一直在Old Generation(年老代)存活,这些都是有可能的。

关于内存划分,可以自己没事用内存分析工具看看,比如jmap、jvisualvm等等,观察一下各个区域的内存变化,结合实际去了解一下。

关于classloader机制的学习,可以结合tomcat去学习,了解清楚tomcat的classloader机制,看tomcat是如何保证各个APP之间的类隔离的。如果可能的话,看一下tomcat中classloader的源码,或者看一下LZ的一个开源项目niubi-job,当中也包含了与tomcat类加载机制相似的部分。

至于GC,需要清楚GC Roots都有哪些,以及如何判断一个对象可以被回收。此外,GC的算法和策略也要有大概的了解。

3)并发知识与concurrent包

要想进入一线互联网公司,这部分内容必须要会,否则的话,你始终都只能停留在比较low的段位。

关于并发知识,重要的两个概念一定要搞清楚,那就是可见性和原子性。其中可见性与前面提到的volatile关键字是息息相关的,可见性只是并发领域里的一个概念,而volatile则是Java语言中,实实在在保证变量可见性的关键字。

前面说了,要弄清楚可见性,就需要搞清楚主存和工作内存。关于主存和工作内存,其实又属于JVM的知识范畴。所以从这里就可以看出来,知识都是有关联性的。

原子性其实相对于可见性来说,反倒更好理解一些,相信那个万年不变的银行汇款的关于事务的例子,就足以大部分人理解原子性这个概念了,它其实就是一个或多个操作,被视作一个整体的意思。

有了并发的基础知识以后,你就需要研究一下concurrent包了。这里面的东西其实是一个宝藏,一旦你需要写并发相关的功能,你会发现这里面的东西非常实用。

其中ConcurrentHashMap是面试容易被问到的一个类,几乎所有的面试都会问你,ConcurrentHashMap和普通的同步HashMap有什么区别。

这个问题其实需要你知道两个知识就可以了,一个是HashMap的数据结构,一个是锁分段的技术,具体的LZ这里就不解释了,大家自己下去找相关资料看吧。

此外,concurrent包里有一个非常重要的类,叫做AbstractQueuedSynchronizer,几乎所有的concurrent包内的并发工具类,都是基于这个抽象类扩展出来的。因此,把AbstractQueuedSynchronizer这个类研究透彻,非常有助于你理解concurrent包。

后一点,面试的时候还经常会被问到的一个问题,就是ReentrantLock和synchronized关键字有什么区别。

未完待续。。。。。。

网友评论
0条评论 0人参与
最新评论
  • 暂无评论,沙发等着你!
百业店铺 更多 >

特别提醒:本页面所展现的公司、产品及其它相关信息,均由用户自行发布。
购买相关产品时务必先行确认商家资质、产品质量以及比较产品价格,慎重作出个人的独立判断,谨防欺诈行为。

回到顶部