记自己的一次CVTE面试
- 记自己的一次CVTE面试
- 你最近完成的项目哪个是比较有难度的?
- 简要介绍一下项目
- 项目的难点在哪里
- 那你们是如何处理你们的缓存
- 如果使用HashMap来存储你们的缓存,数据量大时会出现什么问题。
- 本地缓存的一些开源方案
- 你们的数据交换的异步是如何实现的
- 有使用到Spring Cloud吗
- 项目中使用Spring Cloud使用了哪些组件
- zuul的实现原理知道吗?
- Spring Boot的自动装配原理
- 有使用Redis吗?项目中使用redis的场景主要是?
- redis的其他场景有了解过吗
- redis的list的数据结构在项目中有什么使用场景
- redis的跳位表的数据结构有没有了解过
- redis的持久化机制了解过吗?有什么区别呢
- 有没有了解过redis的哨兵模式
- mybatis的实现原理
- mybatis的防SQL注入是怎么实现的
- 现在你们项目中有使用MQ吗?
- 你对MQ有什么了解吗?如何做到顺序消费
- 有没有了解一些分布式事务?有没有实现实现方案
- 项目中遇到的JVM的问题多吗
- 你们是如何处理的
- JVM的垃圾回收算法有了解吗
- 为什么有这些垃圾算法
- 我现在有一个程序,CPU占用很高,如何去排查哪个代码负载高。
- 阿里的Arthas(阿尔萨斯)有了解过吗
- 有了解过一些类加载机制吗
- Mysql的存储引擎有了解过吗,各自的优缺点
- InnoDB和MyISAM分别在什么场景下会使用到呢?
- 索引的实现原理?
- 如何分析一个SQL是否会慢查询
- Mysql的执行计划一般会看哪些属性
- 索引不生效的情况有哪些
- 有遇到过数据库死锁的情况吗?
- 你知道什么情况下会引起数据表的死锁?
- 有遇到分库分表的场景吗?有没有实现方案,大概什么情况下要进行分库,什么情况下要进行分表
- 目前在职还是离职
- 为什么想要离职
- 在你现在的公司感觉到了什么瓶颈吗?薪资、发展方向。个人发展瓶颈
记自己的一次CVTE面试
你最近完成的项目哪个是比较有难度的?
简要介绍一下项目
项目的难点在哪里
这里回答要有技巧,回答的难点通常面试官都会继续问,比如,你是如何解决这个难点的。所以回答的难点要自己详细学习过的,是自己已经进行过深入了解的知识点。
- 业务逻辑复杂
- 缓存压力大(我想让面试官往这个问题继续问下去)
- 跟底层大数据平台的数据交换
那你们是如何处理你们的缓存
- 本地缓存
- redis分布式缓存
如果使用HashMap来存储你们的缓存,数据量大时会出现什么问题。
HashMap数据量大时,会出现较多的Hash冲突。
本地缓存的一些开源方案
Caffeine
你们的数据交换的异步是如何实现的
有使用到Spring Cloud吗
项目中使用Spring Cloud使用了哪些组件
eureka、zuul、hystrix、feign等等
zuul的实现原理知道吗?
Spring Boot的自动装配原理
由注解SpringBootApplication引入注解EnableAutoConfigutation,EnableAutoConfiguration注解中使用了注解@Import,@Import注解目的是给IOC容器中注入组件。这里@Import中使用了AutoConfigurationImportSelector,这个类获取加载jar包中MET-INF中的spring.factories文件。这个文件中是一些类的全限定名,通过AutoConfigurationImportSelector返回全限定名数组,可以将这些全限定名对应的类注册到IOC容器中,就实现了自动装配。
有使用Redis吗?项目中使用redis的场景主要是?
缓存
redis的其他场景有了解过吗
分布式锁
redis的list的数据结构在项目中有什么使用场景
消息队列
令牌桶
redis的跳位表的数据结构有没有了解过
redis的持久化机制了解过吗?有什么区别呢
RDB和AOF
RDB是对内存的一次快照,做一次RDB需要较长的时间。AOF是记录对Redis的更新操作。所以,在恢复Redis时,RDB速度更快,AOF要慢一些。但是AOF记录时间短,可以经常进行AOF操作,所以数据丢失较少,RDB则较多。
有没有了解过redis的哨兵模式
mybatis的实现原理
动态代理
mybatis的防SQL注入是怎么实现的
底层使用了JDBC的PreparedStatement进行防止SQL注入。
现在你们项目中有使用MQ吗?
你对MQ有什么了解吗?如何做到顺序消费
有没有了解一些分布式事务?有没有实现实现方案
项目中遇到的JVM的问题多吗
你们是如何处理的
JVM的垃圾回收算法有了解吗
- 复制算法
- 标记清理算法
- 标记整理算法
- 分代收集算法
为什么有这些垃圾算法
不同的垃圾收集算法肯定也是为了提高垃圾回收的性能考虑,主要是考虑到回收的不同区域。例如,年轻代,对象创建和销毁频繁,可以使用复制算法。老年代对象销毁较少,使用标清和标整方法。
我现在有一个程序,CPU占用很高,如何去排查哪个代码负载高。
阿里的Arthas(阿尔萨斯)有了解过吗
Arthas(阿尔萨斯)是阿里巴巴开源出来的一个针对 java 的线上诊断工具。
有了解过一些类加载机制吗
双亲委派机制
Mysql的存储引擎有了解过吗,各自的优缺点
InnoDB和MyIsAM
InnoDB和MyISAM分别在什么场景下会使用到呢?
需要使用事务的情况下,必须要使用InnoDB
在查询较多的情况下,且不需要事务时,可以使用Myisam算法。
索引的实现原理?
B+树算法或者哈希算法。哈希算法时间复杂度为O(1),但是只能进行等于比较。B+树算法时间复杂度O(lgn),除了可以进行等于比较,还可以进行范围比较。
如何分析一个SQL是否会慢查询
使用执行计划Explain,判断是否使用了索引。
Mysql的执行计划一般会看哪些属性
索引不生效的情况有哪些
- 没有满足最左匹配原则,例如联合索引是ABC,WHERE子句中使用B和C进行查询
- 模糊搜索中,以%开头