主键id的选择原则?主键id自增有啥用?

主键一般都要使用自增 id,不建议使用业务 id ,是因为使用自增 id 可以避免页分裂。 插入数据时,主键有序的话能保证插入也是有序的,维护索引比较高效, 如果主键为自增 id 的话,mysql 在写满一个数据页的时候,直接申请另一个新数据页接着写就可以了。 如果主键是非自增 id,为了确保索引有序,mysql 就需要将每次插入的数据都放到合适的位置上。当往一个快满或已满的数据页中插入数据时,新插入的数据会将数据页写满,mysql 就需要申请新的数据页,并且把上个数据页中的部分数据挪到新的数据页上。

Java面向对象,封装、继承、多态介绍一下?重载和重写的区别?

解释一下 Spring 的IoC和AOP?底层原理是啥?

Spring中Resource和Autowired注解的区别?

Java集合类有哪些实现?都介绍一下?怎么保证线程安全?

redis常用的类型?什么时候用hash?什么时候用string?

缓存一致性怎么保证?

缓存穿透、击穿、雪崩的概念和解决方法?

Spring常用的注解?解释用途?

异常在什么时候运用?你在项目的哪里用了?

Java 中什么时候应该 try catch 捕获异常?什么时候应该 throws 抛出异常?依据的原则是什么?

当try语句中有return的时候,其与finally语句的执行情况。

  1. try中有return, 会先将值暂存,无论finally语句中对该值做什么处理,最终返回的都是try语句中的暂存值。
  2. 当try与finally语句中均有return语句,会忽略try中return。

布隆过滤器?

你的业务表中有哪些字段?

几种常见的索引介绍一下?

索引失效的场景?

最左匹配原则?

你项目中用了什么索引?

为什么用B+树,有什么优势?

怎么排查慢SQL,慢SQL的原因?怎么优化?

几种常见的锁介绍一下?

场景题:一个表有100万个数据,其中有一个字段的数据错了,需要请求RPC服务得到字段的正确值,并一个个刷新到数据库中,怎么做?