- 自我介绍
- 就问我第一段实习参与的事情(我狠狠的吹我第二段实习,自我介绍说第一段由于第一次实习什么都不会,时间也不长感觉没学到什么,他偏要问我都快忘了)
- 你刚刚说你做了关于导出excel相关的,那我现在要根据不同的用户看到不同的excel怎么办?比如我A是医生只能看到1、2、3列,B是老师可以看到1、5、6列?你要怎么实现(我说可以在代码里面做判断,我可以从token或者权限的模块拿到这个用户对应的角色,然后用条件判断看他是哪个角色,满足要求的再写入excel)
- 你这就是为不同的角色做定制嘛,我现在可能有1000多个角色,每个角色想看的都不一样,要怎么办?(我说我想到了分页查询,在导出接口多传个qo,前端来判断好是哪个角色就会有哪些参数,然后我后端只要判断有这个参数,我就写出那个列,类似于分页查询的if动态sql那种用法,比如医生123前段就传123,我这边看到123不为空就往excel写123列。这样还可以做到自定义导入的哪些列,可以用户自己传就前端勾选上都可以)他说这个回答要比刚刚的好
- 问下数据库,拿你第一段实习这个公司来说,假如你们现在单表数据量千万,你会着手从哪几个方面提升数据库的性能?(水平分表,说了下如果数据量过大b+树层数过高可能会多次io影响查询速率,还可以联合索引覆盖减少回表)
- 你分表的目的就是为了每张表数据量不超过某个峰值对吧?除了索引和分表,还有什么方法吗(可以加redis缓存)
- 他说数据库如果变化了怎么办?mysql和redis数据一致性问题怎么办(我直接开背啊)
- 他打断了我的吟唱,加了个条件,这个表每时每刻数据都在变,那些常用的属性会一直变化(说了个垂直拆分,把经常改动的字段直接差分为一张表)(感觉这里回答的好像不是很好,不知道有没有更好的办法大佬们)
- 数据库是怎么解析一条sql语句的
- mybatis的基本标签有多少?
- mybatis从dao层到xml的sql语句,他是怎么定位的?(下次再遇到这种问题一定要扩展下DDD中仓储层和基础设施层的抽象思想)
- mybatis有多少种获取参数的方式?
- 事务知道吗?spring的事务注解是什么?
- 假如A方法加了事务注解,这时候A调用了B,B方法的事务从哪里来,他是怎么获取的?
总结:问的感觉很基础,太久没看了,很多常规八股都忘了,只能说还是得多花时间好好背背。
#软件开发2023笔面经##java实习面经##java面经##面经##实习面经#