面试复盘|阿里-盒马-供应链
一面-8.26-28min
1.问项目中解决的问题和反思。
2.java中ConcurrentHashMap的各种机制?https://blog.csdn.net/qq_38244676/article/details/115336253?spm=1001.2014.3001.5501
3.JVM模型,GC算法,为什么要把元空间的实现从永久代放入对外内存?
前两个问题就是意思一下,最后一个问题就是见功力了。
主要原因1.是为了避免OOM,很难预测方法区大小是多少,故很可能发生OOM。2.是合并HotSpot和JRockit的代码,JRockit从来没有所谓的永久代,也不需要开发运维人员设置永久代的大小,但是运行良好。同时也不用担心运行性能问题了,在覆盖到的测试中, 程序启动和运行速度降低不超过1%,但是这点性能损失换来了更大的安全保障。
之前是方法区,和老年代在逻辑上隔开,但在物理内存上一样。故和老年代GC一样,方法区和老年代无论谁满了,到会出发fullGC。而对永久代的扫描次数可以比老年代低很多;如果放在堆里面老年代GC时候也会扫描永久代,但是这么高频的扫描永久代其实收益并不大。故在1.7将永久代的一步分放在Native memory,一部分放在堆中。又在1.8变为元空间,是Native memory,不GC,随本机物理内存扩展。
本地内存(Native memory),也称为C-Heap,是供JVM自身进程使用的。当Java Heap空间不足时会触发GC,但Native memory空间不够却不会触发GC。
4.MySQL踩的坑,索引是数据结构。
4.linux用过没有,讲一下常用的IO模型。也就是select、poll、epoll的区别,最好能从代码上讲。
没了。因为MySQL的时候我讲的问题是读已提交和读未提交隔离级别下,为什么不能用statement的binlog,里面牵扯到了redolog,还有主从复制,面试官可能觉得没必要问题了。
将linux的时候又将tomcat默认模式大概讲了一下。
最后问我最近在弄啥?
面试官还是有东西的,从项目中挖知识点。乌龙了,乌龙了,先把我挂了,才面试我。让我给第二志愿高德发消息把我转回盒马,高德没转,硬要面,还把我挂了。
#面试复盘##面经##盒马##供应链管理工程师#