一面:
1. 对JVM初步的理解
2. JVM内存模型
3. 代码的运行过程描述一下
4. 说下了解集合类
只说了Collection:List和Set
Map也是集合类!!!
5. 用的比较多的? List。
6. subList方法有没有用过?(对List进行裁剪) 没用过
7. 如何对List数据进行删除?
答:遍历找到下标,出来通过下标删除。
那不就两遍循环了
答:遍历,判断,remove()方法
上手敲一下-----会报错!!!!
怎么解决:用迭代器去处理就不会有问题了
8. 你知道哪些MySQL方面的知识
开始吟唱八股……存储引擎,索引,ACID,隔离级别
一个人吟唱了11分钟
9. 功能已上线,比如说数据库cpu比较高,怎么去定位当中的问题呢
10. 定位到某条sql,怎么知道这条sql问题出在哪
答:explain:type,possible_key和key
还知道其它吗?
11. 一条sql扫描了100w条数据,除了建索引,还有什么方法?
提示:区分度大的前提:业务匹配 不用性别做索引
12. ACID事务实际使用
13. 事务失效的情况
14. 一个事务里的sql,另一条sql没有事务,是ACID里面的哪个
那能不能查到事务里面没有提交的数据?
不能,spring事务默认是数据库默认隔离级别,可重复读
如果我想让它查到呢?做法是不安全的 修改事务的默认隔离级别为读未提交
15. 手写sql
Order:oid,time ,uid
OrderDetail:oid,gid, num
Goods:gid,name
Select distinct name ,sum (num),
from order o
join orderdetail od on o.oid = od.oid
join goods g on od.gid = g.gid
where time between 7 and 8
and uid = 1
group by gid
16. 当前sql慢在哪个地方?换个问法,怎么让它加快,索引加哪?
建立一个time 和uid的联合索引。
二面:
MySQL拷打
1. 平常对SQL优化的了解
2. 知道的数据库索引有哪些
3. 索引合并和索引下推了解过吗 没有
4. 索引最左前缀匹配法则
5. 索引的优劣势
需要维护:数据库读写,读的效率高了,写的效率相对降低一些
6. 有无实际SQL优化经验
7. Join用的多吗
8. Join怎么提高查询性能?怎么建索引能够让查询效率最大呢
涉及到连接查询时建索引的一些基本规则
9. 1)不用联查怎么从两张表中拿到数据(自己前面挖的坑) in
简单点说就是:遍历a表集合取出b表数据
2)代码层面怎么处理?组装数据的流程?
两种方式:①循环遍历a,a中循环遍历b,挨个循环比较匹配b表数据则取出
②Map(key为主键,value为数据),将b中数据放入map中,a直接通过map去获取
3)分析两种做法的优缺点:
第一种复杂度高 第二种空间换时间 线程不安全,并发(跟这个没关系,不可能并发,除非用到jdk8的并行流)
10. JDK8的并行流了解吗
11. JDK相关的并发工具类了解吗?
12. 多线程有哪些类可以实现? 线程池了解哪些?
13. JDK8并行流底层Fork/Join和Future机制了解过吗
14. 对JVM的了解?垃圾回收器对哪个比较熟悉?
15. G1内存分布了解吗
16. Spring、SpringBoot挑点擅长的讲讲
吟唱两分钟
17. Spring启动干了哪些事情,比方说IOC,干了哪些事情到能提供给使用方去使用
18. Bean从创建到销毁的过程
19. 追问:BeanNameAware和ApplicationContextAware是在什么时候生效的
20. 更想听到整体的一个启动流程
面试官开始吟唱
Spring早期借助xml文件,现在借助注解,启动前的解析过程,需要对应的解析器做对应的处理,解析器最后生成标准的反参,反参里面将对应的bean解析成相应的一些元数据,涉及到类对应的元数据,方法对应的元数据,还有在BeanFactory里面的一个Map
21. 这个Map有关注过吗,用什么?HashMap可以吗?
面试官开始吟唱
读 :ApplicationContext getBean去获取
写 :项目启动过程中,串行做解析,创建beanDefinition往map中去放,会出现并发问题
所以底层用的是ConcurrentHashMap
22. Springcloud有了解吗
23. 有阅读过框架的源码吗
24. Redis了解吗?项目中的实际使用
25. Redis的分布式锁
26. 了解rabbitMQ外其它的消息队列吗
#慧策(掌上先机)##慧策{北京掌上先机}#