12-15K 亲身经历的面试题

java:

sqlSession?

全文索引?普通索引?

脏读?幻读?

HashMap 数组的长度为什么保证数组的长度是2的幂?为什么设计成数组+链表的结构?用到了红黑树解决了什么问题?

位运算性能较取模运算快,其实可以不一定是2的幂,但这样会导致利用率较低。比如15,最后一位永远是0,任意hash值与其做与运算得到的索引永远是偶数,这样就会导致只有一半的利用率。所以为2的幂才是最合适的。

解决hash冲突

synchronized和lock的区别?

线程池?

并发包?

数据库:

1,数据库我们一般都会建立索引,可我们怎么知道这个索引有没有被用到?

在select语句前加上explain

2,sql语句优化?

(1)建立索引,在经常使用到的字段建立索引

(2)尽量避免使用select *,select 需要的字段

(3)尽量避免使用in 和not in,会导致数据库引擎放弃索引进行全表扫描

(4)用exists代替in

(5)尽量避免使用or,会导致数据库引擎放弃索引进行全表扫描

(6)尽量避免进行null值的判断,会导致数据库引擎放弃索引进行全表扫描

(7)like 以%开头会导致数据库放弃索引进行全表扫描 

(8)尽量避免在where条件中等号的左侧进行表达式、函数操作,会导致数据库引擎放弃索引进行全表扫描

3,mysql 自增主键和唯一索引的区别?

主键:字段唯一不为空值的列。

自增主键:字段类型为数字、自增、并且是主键。

主键索引:索引列的值必须唯一,但允许有空值。主键是唯一索引,这样说没错。但反火来说唯一索引也是主键就错误了,因为唯一索引允许空值,主键不允许有空值,所以不能说唯一索引也是主键。

springboot:

1,@SpringBootApplication包含了哪些注解?都有什么作用?

@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan

@SpringBootConfiguration 这个注解的作用与@Configuration作用相同,都是用来声明当前类是一个配置类.可以通过@Bean注解生成IOC容器管理的bean

@EnableAutoConfiguration是springboot实现自动化配置的核心注解,通过这个注解把spring应用所需的bean注入容器中,把所有符合自动配置的bean都加载到IOC容器中

@ComponentScan指定包路径进行扫描,把扫描到bean添加到IOC容器中。

2,约定大于配置?

mybatis:

1,mybatis中,#{}和${}的区别?怎么实现动态的切换表名?

我们一般会使用#{},${}会引起sql注入,动态切换表名的字段使用${},如果使用#{},该参数会被' '俩个单引号包围导致报错,比如 update 'table' 

2,mybatis缓存机制

redis:

问了redis4和6版本之间的区别?

1,redis和数据库数据一致性问题?redis缓存穿透问题?redis缓存雪崩问题?

redis和数据库数据一致性问题:

情景:数据发生改变,redis缓存和数据库数据不正确时。

这个问题真的要搞明白的话建议看看别的大神解答,简单操作:当数据发生改变时,我们首先应该先删除缓存,更新数据库的数据操作,这样下次进接口时,去缓存中查发现没有再去数据库查并备份一份到缓存中。

redis缓存穿透解决方案:

情景:比如恶意使用一个id<=0的参数查询接口,redis缓存显示不会有数据,然后去数据库查询显示也不会有数据,多次请求数据库,提高数据库压力。

常见的使用布隆过滤器,把可能要传入的参数值存储起来,进行比较,会有一定的误判率。第二种把从redis查不到再去数据库查时,结果也为空,把结果也放到缓存中,并设置个过期时间,假如继续恶意查找,直接从redis查询并返回。

redis缓存雪崩问题:

情景:redis缓存的数据大量失效,同一时间有大量的请求过来,由于缓存中没有数据,都去请求数据库了,提高数据库的压力以至于不可用。

设置某些key永不失效(比如产品库中的产品数据轻易不会改变);

key失效时间尽量错开;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值