阿里面试题:1、什么是内存屏障?2、java探针如何使用…

阿里面试题:
1、什么是内存屏障?
2、java探针如何使用?
3、G1垃圾回收器有何特点,与CMS有啥区别?
4、什么时候栈会溢出?
5、AQS与CAS的区别?
面试的时候答的不好,求各位大佬帮忙解答,谢谢!!

网易员工:是你项目没啥好说的吧。不然怎么会玩命怼jvm?

阿里巴巴员工:M

程序猿.宋兵甲:m

蓝染忽右介:m

吃瓜不吃呱唧呱唧:N

耶律燕:m

周泰:m

程序猿.知问:m

程序猿.徐庶:m

关羽:m

程序猿.大乒小乓:这。。。。几年经验?

百度员工:校招的时候看过,现在全忘了

网易考拉海购员工:m

隆美尔:java开发的吗

华为员工:现在全忘了,2016年跳槽那会都会

程序猿.朱仝:m

不戒大师:M

重庆才众企业管理咨询有限公司员工:M

程序猿.恒山弟子:m

马岱:m

程序猿.醉道人:1,aqs依托cas 2, 栈是线程私有,要使它溢出,只要栈帧足够多即可 3, g1较cms而言,不仅能回收年轻代 还能回收老年代 而cms只回收老年代 g1比较能控制垃圾回收的时延 还有g1有了分区的概念 年轻代 老年代划分的更细 所以更能保证低时延

程序猿.蒋琬:就算把jvm深入理解都看了,估计一时半会也难以想起来,我不信每次面试时都去看一遍jvm

程序猿.逃不过:太简单

亦盏:能把一些不同再细化下吗

亦盏:五年

程序猿.12345688:mmmm

程序猿.疯狂的二狗:内存屏障应该没啥说的,volatile关键字,底层的lock指令,更新时刷新主存,防止变量前后重排序

京东员工:这些都算简单的吧

去哪儿网员工:Java探针是个啥啊?

前美团员工:这里面没有难的吧,没有复习过,只有探针不知道

好未来员工:m

程序猿.醉道人:aqs有两个队列,一个同步队列,一个条件队列,抢锁的时候先try一次,要是try成功直接放行,要是不成功,就把当前线程包装成node送进同步队列,然后就休眠等待被唤醒。如果同步队列的header释放锁之后,唤醒next,next继续去抢锁。代码里很多地方用到了循环cas。cas只是一个乐观锁的编程办法,而aqs是为了解决并发而定制的一个同步组件。

程序猿.此花名不花:M

文泰来:不是mfence指令重排吗?和volatile有什么关系?

李虹菲:m

高富帅987:m

程序猿.醉道人:栈是线程私有的,线程在运行的的时候会往栈里压栈帧,而每个栈帧对应一个方法,栈帧里面还有操作数栈 局部变量表 返回地址等等 所以要使栈溢出 那就压入尽可能的多的栈帧就可以 也就是方法的调用栈尽可能长就可以。

颜良:m

程序猿.我不是王重阳:最简单的,递归多了就溢出了[坏笑]

程序猿.醉道人:g1的话年轻代老年代内存上不再连续 可能有多个E区代表伊甸园,多个S代表幸存者,多个O代表老年,这里的个都只内存区域。由于每片内存都足够小,而且g1又优先回收垃圾最多的,所以时延低,效果更显著啊。g1好像有full gc和mixed gc别的不记得了。

百度员工[2]:楼主面试之前不复习的吗

阿里巴巴员工[2]:你这是背题,无法看出你水平

自由职业员工:探针是个什么东西啊?

美团点评员工:面试的时候准备下就好了 很简单 现在也记不太清了

程序猿.宋兵甲[2]:easy

程序猿.像少年啦飞驰:放屁...这种最基本的需要刻意背?源码博客看一两遍基本就记住了

程序猿.醉道人:哈哈aqs还是看过源代码的

五八信息技术有限公司员工:m

程序猿.尼古拉斯赵四:m

百度员工[3]:初学java,这些都还没学过。。。请问大佬,想面阿里的话,必须会jvm吗?

网易员工:是你项目没啥好说的吧。不然怎么会玩命怼jvm?

程序猿.醉道人:1,aqs依托cas 2, 栈是线程私有,要使它溢出,只要栈帧足够多即可 3, g1较cms而言,不仅能回收年轻代 还能回收老年代 而cms只回收老年代 g1比较能控制垃圾回收的时延 还有g1有了分区的概念 年轻代 老年代划分的更细 所以更能保证低时延

百度员工:校招的时候看过,现在全忘了