一面:
1、jvm内存模型
根据JVM规范,JVM 内存共分为虚拟机栈,堆,方法区,程序计数器,本地方法栈五个部分。
(1)程序计数器(线程私有):
是当前线程锁执行字节码的行号治时期,每条线程都有一个独立的程序计数器,这类内存也称为“线程私有”的内存。正在执行java方法的话,计数器记录的是虚拟机字节码指令的地址(当前指令的地址)。如果是Natice方法,则为空。
(2)java 虚拟机栈(线程私有)
每个方法在执行的时候也会创建一个栈帧,存储了局部变量,操作数,动态链接,方法返回地址。每个方法从调用到执行完毕,对应一个栈帧在虚拟机栈中的入栈和出栈。
(3)本地方法栈(线程私有)
和虚拟机栈类似,主要为虚拟机使用到的Native方法服务。也会抛出StackOverflowError 和OutOfMemoryError。
(4)Java堆(线程共享)
被所有线程共享的一块内存区域,在虚拟机启动的时候创建,用于存放对象实例。
对可以按照可扩展来实现(通过-Xmx 和-Xms 来控制)
当队中没有内存可分配给实例,也无法再扩展时,则抛出OutOfMemoryError异常。
(5)方法区(线程共享)
被所有方法线程共享的一块内存区域。
用于存储已经被虚拟机加载的类信息,常量,静态变量等。
这个区域的内存回收目标主要针对常量池的回收和堆类型的卸载。
2、垃圾收集算法
3、新生代垃圾收集是否会停顿
4、cms是否会停顿,在什么时候停顿
5、jmm
6、redis持久化,以及分别的应用场景。
(1)redis应用于最新消息展示。
(2)redis应用于各种结构型和非结构型高热度数据访问加速。
(3)redis应用于抢购,限购类、限量发放优惠券、激活码等业务的数据结构存储设计。
(4)redis应用于即时任务/消息队列执行管理。
7、二叉树的镜像的算法题
8、并发包concurrenthashmap
9、mysql的索引,b+树索引是否支持范围查询,联合索引的失效情况
10、项目,项目中还有一个情景题。
二面:
1、另一个项目
2、有n个客户接入,如何固定等概率分配10个机器人客服中的三个机器人,不能使用额外的内存空间。
3、分布式环境下的session管理
4、for空循环会有什么影响?
全部评论
(1) 回帖