Java面试贴
面试方向
职位:Java开发工程师(中高级)
面试范围
- Java基础、集合、多线程、JVM
- 算法 排序算法 树结构 栈/队列 链表/数组
- web框架 Spring、MyBatis
- 中间件 redis、mq
- 数据库mysql 优化、引擎、索引
- 项目
Java基础
书籍推荐:《码出高效》孤尽 鸣莎 《深入理解Java虚拟机》周志明
- StringBuffer的结构及如何扩容。
- ArrayList的特点和LinkedList的区别,LinkedList的存储结构,实现以下翻转。
- HashMap的数据结构,如何处理hash冲突,如何扩容,多线程的情况下会出现什么问题,如何解决,1.8做了哪些更新。
- 线程的状态有哪些,什么情况会出现死锁?线程池是什么,有什么好处,有哪几种类型,新建线程池的参数有哪些,简单讲一下各自的作用和已经什么时间会触发使用?
- 垃圾回收有哪几种算法各自有什么优缺点,你熟悉的垃圾回收器有哪些各自的优缺点是什么?有没有进行过调优,如何监控线上的GC情况,如何查看进程的堆栈信息。
算法
书籍推荐:《算法 第四版》 谢路云 译
- 写出一种排序算法对数组进行排序(冒泡除外)
- 二分查找代码实现
- 二叉树中序遍历实现
- more…
WEB框架
- 谈一下你对Spring的认知
- 说一下Spring的IOC的作用,有没有遇到过循环注入,怎么解决?
- Spring Aop的作用,你在项目中用到了哪些?
- Spring事务的传播性及隔离级别
- Spring的隔离级别
Redis
书籍推荐:《Redis深度历练》钱文品
- 有哪些数据结构,set的存储结构有了解吗?
- 项目中使用redis做了哪些事情?
- redis和memcache有什么优缺点?为什么使用redis?
- redis的部署方式有哪几种,如何进行持久化,集群如何进行数据同步?
mq
- 说下你对mq的理解,使用的场景。
- mq的组件有哪些?rocketMq的有序消息如何实现?
数据库
书籍推荐:《高性能MySql》
- mysql的datetime和timestamp有什么区别?
- mysql有没有进行过调优,如何调优的?
- mysql的索引命中规则?
- mysql的隔离级别?幻读是指什么?
- mysql存储引擎的种类有哪些,innodb和myIsam有什么区别?
- 基本sql书写
项目
- 说一下你项目中的秒杀从哪些方向进行了优化处理?
- 画一下项目的架构设计
- 项目中遇到的最有挑战性或者你认为最有意思的地方
- 自由发挥