1. 自我介绍
2. 讲下项目,技术架构
3. xxl-job的配置,负载均衡策略讲一下?
基础配置如执行器名称,ip,端口等
负载均衡策略列举:故障转移,最近最久未使用,第一个,最后一个,轮询等
4. 事务,事务注解(事务的传递性),事务注解一个service内失效原因,解决方式
事务注解:@Transactional,@GlobalTransactional
事务传播特性:REQUIRED,REQUIRES_NEW,NOT_SUPPORTED,SUPPORTS等
事务失效原因:根因,未创建代理对象,如类内调用,可通过调用其他service类,或者类内注入的方式解决
5. Redis在项目中的使用场景,解决什么问题?
缓存:缓存用户登录信息,缓存一下标识解决幂等,缓存一些复杂计算的数据结果
分布式锁:控制分布式系统中共享资源的访问问题
6. SQL调优讲一下?
看执行计划。看是否存在有效索引,解决索引失效如like %前置问题,解决关键字段未添加索引问题;查看数据范围是否合理,是否存在无效数据;查看表关联问题,适当增加冗余字段,减少表连接或减少连接计算;查看排序字段是否可进行替换为已有条件字段,减少排序计算;大表垂直拆分
7. 为什么left join 慢?
从左表逐行取出数据和右表做匹配,注定不快,但是可以在连接字段上给右表加索引
8. 数据库默认隔离级别?
mysql可重复读 Oracle读已提交
9. 多线程如何使用的?规范?参数设置?如何调参?
阿里规范,最好使用ThreadpoolExecutor,使用固定的线程池要么线程数未限制,要么队列长度未限制,都可能造成内存溢出,拒绝策略也只能默认
7个参数需要设置:
核心线程数,最大线程数:最好设为一致,参考CPU核心数,任务数量,IO密集还是CPU密集等
队列:选择队列,有界,无界,队列长度合理设置
拒绝策略:抛异常,丢弃,去掉队列中最早的任务,添加当前任务,由当前线程执行
10. jvm调优?分代,分区,参数设置?线上日志查看,Linux命令,jmap了解
在Tomcat的bin下的Catalina文件中添加jvm参数,使用jmap,jstat,jconsole等进行监控
查询进程 ps | grep java
查gc-log日志 tail -fn 100 gc-log
查看内存占用 Jstat -gccapacity 进程id
查看内存使用占比 Jstat -gcutil 进程id 刷新毫秒数
jmap查看对象占用,排序,导出对象内容占用文件
jhat分析jmap dump的文件
11. 自定义注解,切面功能增强?实现的业务场景,实现流程?
实现方法执行时间监控, 增加自定义注解;增加切面,将注解作为切点,环绕通知,实现切面方法
12. 数据库访问流程?
从HakariCP数据库连接池获取连接,访问数据库,数据库连接器管理连接,鉴权;数据库分析器,词法分析,语法分析;数据库优化器,RBO规则优化,CBO成本优化;执行引擎按执行计划进行查询
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)