猿辅导 服务端一面面经
- 自我介绍
- 问项目
- Volatile 是干什么的?在内存层面上怎么实现的?使用场景是什么?
- synchronized 使用方法,底层是怎么实现的
- Java对 synchronized 有什么 改进? (偏向锁,轻量锁,重量锁)
- TCP 拥塞算法
- Spring AOP 是干什么的? 使用场景? 底层实现?
- Mysql 引擎都有啥? 聚簇索引 和 非聚簇索引 是怎么实现的? B 树和 B+ 树有什么区别? 为什么B + 树能让搜索变得更快?
- Mysql 事务隔离级别? 幻读是什么? 怎么才能解决幻读
- 知道Mysql 锁的粒度么? 什么是 GAP Lock (这个没答对)
- 手撕代码, 给你一个数组,再给一个数字 K, 让你把这个数组的元素向 右移动 k 位, 比如 [1,2,3,4,5], k = 2,结束后数组应该 [4,5,1,2,3]。 先reverse 整个数组, 然后reverse 0 到 k-1 和 k 到 数组尾部
- 手撕代码, 给你一个二叉树,返回二叉树从右边看会长什么样?用BFS 遍历一遍,然后把每一层最尾部的元素提取出来
- 手撕代码,给你一个链表,它代表一个数字,例如 1 -> 2 -> 3 代表 123,让你给这个数字加一之后返回新的链表的头。