一面
项目介绍
SpringMVC 工作原理、内部流程
MyBatis (缓存机制,一级、二级原理和作用,映射是怎么实现的,XML 怎么对应到 Mapper ***模式)
MySQL 怎么分页
主键 id 自增,很多数据,怎么获取十条数据:将每次 limit 的时候获取到的 id 索引,在下一次 limit 请求的时候加上这个索引 where 这个 id 再进行检索。
HashMap 原理
结构、put、get、remove 的流程、负载因子、当前数组容量、扩容阈值、哈希映射怎么解决冲突
转换为红黑树之后插入节点要进行什么操作
ThreadLocal 是安全的吗?讲讲原理分析与使用场景、内存泄漏、弱引用
讲讲 JVM 内存分区
线程间的通信方式(操作系统层面,信号量等等)
讲讲 volatile 关键字,能否实现线程安全?
项目中遇到的困难
做项目时候和成员交流有困难吗?意见不一会怎么样?
编程题:
链表判环(入环点、环的长度)
有一个无序整型数组,如何求出该数组排序后的任意两个相邻元素的最大差值?(桶排序,尽量分散,桶的数量为 (最大 - 最小)/ 元素个数)
二面
讲讲红黑树
InnoDB 与 MyISAM 的区别
手写线程池需要哪些参数
核心 10 队列 1000 最大 100 的情况线程池怎么处理
JDK 8 与先前版本的区别
主要:Stream 流 管道
索引最左匹配
SQL 怎么调优?
List、Map、Set 有什么区别?详细讲讲细分
HashMap 与 Hashtable 的区别
讲迭代的区别顺势还讲了快速失败和安全失败
ConcurrentHashMap 如何实现线程安全?加锁是读和写都加吗?
hash() 和 equals() 方法在哪些情况下需要重写?
static 变量与非 static 变量加 synchronized 有什么区别
项目中数据库的表是怎么分的?是否用到强连接?强连接如何取消(保持一致性的情况下)?
有调试过垃圾回收吗?
讲讲 CMS 和 G1
讲讲 JVM 内存分区
项目中遇到的困难
编程题:二分查找(递归与非递归)
三面
项目介绍
为什么硕士就念两年
解释一下 MVC 三个字母代表什么
GMS 与 G1 的区别、应用场景
垃圾收集算法
线程与进程的区别?为什么要有线程?
Synchronized 与 Lock 的区别
反射机制(原理、使用场景、Spring 注入)
分布式系统
消息队列,消费者运行速度不一,如何控制数据的同步(保证插入先于删除)
编程题:删除链表多个值
还有一个问题我搞不明白,大家有解答吗?
昨天面试的时候京东问的,如果设定参数:核心线程 10 、队列容量 1000 、最大线程数 100 ,在这个情况下线程池怎么处理?那这个时候最大线程数还有什么用啊请问?队列容量可以这么设置吗?