面试总结
作为一个Java开发,经过七八月份面试了近二十家公司,其中有大厂有小厂,面试官的询问方式也互不相同。马上就是金九银十招聘季了,希望做一些总结对其他人也能有所帮助。
Java基础
Java基础题目:
- String a = new String(“123”) String b=“123” 创建对象过程,两个对象一样吗?
- ==和equal区别?
- StringBuffer和StringBuilder的区别,StringBuffer线程安全怎么实现的,加的什么锁?
- 说一下JVM内存模型,栈是私有的共有的,堆是私有的公有的,常量池在哪个里面?
- Runable和Callable的区别?
- synchronized原理?
- 了解过threadlocal吗,说下它的原理
- HashMap和ConcurrentHashMap有什么区别,HashMap线程不安全的场景举个例子
- hashMap原理,用的什么数据结构,什么时候转红黑树,为什么使用红黑树,树的时间复杂度
10.concurrentHashMap加的什么锁,什么时候加,在数组上加还是链表加?
Spring相关
- Spring的生命周期,Spring中的事务,会出现什么问题
- @Controller和@RestController的区别
- 说下AOP原理,用过哪些设计模式,能详细说下策略模式吗,可以结合实际案例
- springboot有看过源码吗,启动流程说一下
MySQL
- MySQL索引数据结构问了下B+Trre,B+Tree和Btree相比会降低树的高度吗?
- 假定有个表,主键自增,有姓名a, 年龄b,现在有场景查询a,查询b,和a,b都查的请求量都很大,怎么设计索引?
- MySQL优化explain,问了关注哪几个字段,哪个字段代表实际用索引?
- SQL举例已有a,c索引,select * from 表 where a=’’ and c=’’ 和select a from 表 where a=’’ and c=’’ 哪个检索快,为什么?
- SQL举例已有a,b,c索引,select * from 表 where a=’’ and b>’’ and c=’'走索引了吗,怎么走的?
- InnoDB和MyISAM区别,InnoDB特点,InnoDB默认隔离级别,MySQL有哪些事务隔离级别,会出现什么问题,幻读和不可重复读的区别是什么?
- InnoDB默认隔离级别是可重复读,那它是怎么保证隔离的,我们使用MySQL没有出现过这些问题,MySQL是怎么做的?
- MySQL SQL优化时,explain 两个表,生成的两条记录顺序是咋样的,说下索引的类比,建表的时候要注意什么?
- 可以说一下MySQL的MVVC模式吗,具体说说?
- MySQL聚簇索引和非聚簇索引有什么区别,主键是聚簇索引吗?
- MySQL自增主键和ID生成器生成主键相比有什么缺点?
- 已有普通索引b,select count(*) 和 select count(b)哪个查询快,为什么?
Redis
- Redis的数据类型,zset的底层数据结构是什么?
- redis如何保证数据一致性?
- redis和本地缓存的区别,查询过程中是先走redis还是先走本地缓存(这个是因为项目中写了本地缓存,可忽略)
- 了解缓存雪崩和缓存穿透吗,说下你对它们的理解
- redis的删除策略有几种,它们有什么优缺点?
开放题
- 用Java代码实现一个生产者消费者模型有什么想法?
- 用Java源代码不借助任何方法实现一个队列,队列有什么特性?
- 实现一个秒杀场景需要注意什么?(锁相关知识)
- 场景描述:有多个微服务部署在多个不同的机器上,每个服务都有自己的日志,现在我们需要把每个服务的日志统一收集起来有什么想法?
- 看你简历上也写了一些常用的技术,挑一个你最擅长的(说了Docker),询问docker是怎么实现不同实例间的隔离的?
在线编程题
这块比较少,只有两道
- 给定学生表,成绩表,一个学生可以有多个成绩,打印出所有平均成绩在60分之下的name,平均成绩。(写SQL)
- 二叉树层序遍历,给定一个二叉树,输出二叉树层序遍历的结果。
小结
大体上询问的内容就是上述分类,还有一些微服务的,因为基本没怎么问,就不添加了。先写这么多,题目相关答案本人还没总结完,所以大家自行百度吧。