面经
本文收集最近遇到的好问题,保持学习,保持进步。
数据结构
- 树的深度优先和广度优先的算法实现
- 数据库的联合索引的底层实现
map
如何保证顺序- 谈谈
HashMap
的源码 - 谈谈如何删除
ArrayList
的元素
Java语法
try-catch-finally
的执行顺序,finally
一般用于什么, 如果try
和finally
都return
了,实际上return
的是什么Java
的多线程机制, 谈谈synchronized
和Lock
的区别,你还知道哪些机制,分别有什么作用sleep()
和wait()
的区别, 为什么一个存在Thread
, 一个存在Object
JVM
- 写一个方法触发新生代
GC
- 写一个方法触发老年代
GC
Java
的类加载器有什么目的, 谈谈你了解的类加载器, 有实现过类加载器吗- 你做过
JVM
调优吗?一般性的原则是什么 - 内存溢出有哪几种情况
- 栈溢出有哪几种情况
框架
- 一个
springboot
生成的jar
包是什么顺序, JVM如何找到其中的静态资源与类 Mybatis
的接口可以重载吗,为什么spring.factories
有什么作用
关系型数据库
- MySql中
delete
和truncate
的区别, 为何delete
后数据库的存储不会变少 - 谈谈在项目中用到哪些索引,了解回表吗?什么样的数据索引效果比较好
- 比如有一个慢SQL,你会从哪些角度考虑优化
- 联合索引中哪一个字段不会被索引
非关系型数据库
- 谈谈你利用
Redis
做了什么 - 为什么
Redis
可以当作分布式锁 - 为什么不推荐
Redis
当消息队列使用
操作系统
- 常在
Liunx
上执行的命令 - 一般多线程池如何配置线程个数
- 如果线程个数超过了线程池的上限,会如何
Linux
的管道操作是什么意思? 如何实现
分布式事务
- 为什么需要分布式ID, 如何构造一个分布式ID
- 常见的分布式锁如何实现
- 讲一讲分布式的具体实现
希望各位同学能够自己好好想想问题以及答案。