阿里面试题:
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有了分区的概念 年轻代 老年代划分的更细 所以更能保证低时延
百度员工:校招的时候看过,现在全忘了