1、你们项目有多少张表?
一般的企业级单体项目的表的数量在100到200之间,微服务项目那就更多了。不过分摊下来每个人负责的也就20到30张表。
2、一个表最多能创建多少个索引? 联合索引最多有多少列?
最多可以创建64(非主键) + 1(主键)
联合索引最多关联的列是 16个
3、你做过单点登录吗?
没做过,但我知道单点登录就是一处登录,处处使用。举个例子就是新浪旗下的产品当你登录新浪新闻时,你再打开新浪微博的网页,它也会显示登录状态。同样一个退出其它的也会退出。
单点登录这种功能其实是有一个独立的系统完成的。
4、Session和Cookie
Session是在服务端存储数据的
Cookie是在浏览器端存储数据的 ,一般多用于登录时使用,但是我们登录用的是jwt。
JWT生成的token由三部分组成:头+载荷+签名。头是用户信息加密后的数据。
5、国产数据库
了解过达梦,它其实和oracle差不多。
6、有一个共享的变量num=0,然后有两个线程同时循环50次,对这个共享变量做+1操作,当这两个线程都结束之后,这个共享变量的值会是100吗?有没有可能不是100。为什么。
可以使用synchronized对方法加锁,也可以使用原子类。
原子类就是以Atomic开头的一些封装类,它是java.util.concurrent.atomic包下的一组类,原子类是基于乐观锁CAS(CompareAndSet)的,它的效率比使用synchronized要高。
7、现在有四个Service,分别是A、B、C、D,他们各有一个方法,也是A、B、C、D。四个方法都带着事务注解,从Controler那里开始调A方法,A 又调了B,B调C,C调D。这四个方法里边各有自己的数据库操作,这四个方法他们操作数据库的时候,用的数据库连接是一个还是多个?
这考验的其实是事务的传播行为,如果四个事务方法都用的是默认的事务传播行为,也就是必须事务,那么用的数据库连接就是一个,因为必须事务是加入到调用者的事务中执行。但如果他们的事务传播行为是必须新事物,那么用到的数据库连接就是四个。
@Transactional(propagation = Propagation.REQUIRES_NEW),这样设置注解就是开启必须新事务。
8、现在有一个场景。我现在有一个SpringBoot+MybatisPlus项目,然后Controller调用Service,Service方法带事务注解,然后Service方法里边呢一开始先查了一下数据库,然后又去进行了一下Excel解析,因为这 Excel 数据量比较大,解析时间有点长,等它解析完了之后,这 Service 方法接着往下执行,然后再去进行数据库操作的时候,其实数据库连接已经中断了,你分析一下这个现象有什么解决方案没有?
1、加大 连接 的释放的时间
2、开启多线程解析Excel
3、使用MQ异步调用解析Excel的方法。
9、如果说我的数据有好几亿,怎么做到这个幂等性
可以使用布隆过滤器,布隆过滤器底层就是一个很大的BitMap,它里面存放的都是0和1,它通过牺牲少量准确性来换取极低的内存占用和高效的查询速度。
那下面举例说明它是怎么保证幂等性的:当你有一个新增请求时,请求会先打到布隆过滤器,它判断这个新增数据是否存在,如果存在则拒绝请求,不存在就把它转发到数据库。
3276

被折叠的 条评论
为什么被折叠?



