度小满 一面
面试官很好,全称微笑,还有提示,是我太菜了
一下是我当时回答的记录,不是正确答案
java基础
- 有哪些锁
- lock
- synchronize
- 用过哪些集合
- ArrayList,LinkedList
- juc里面线程安全的集合
- set和map
- Arraylist<Integer> 你有哪些排序方法
- 循环
- Collections.sort
- sychronize 关键字,可以锁哪些,锁的内容抛出异常会发生什么
- 有处理,正常执行
- 无处理,我觉得会释放锁,然后抛出异常
- wait和notify
- wait 释放锁,线程休眠
- notify 唤醒指定线程
- 如何保证接口幂等性(比如修改数据,根据情况,如果是允许重复的,那么重复的请求理应不保证幂等性,如果不允许重复,那么需要代码进行逻辑判断,比如判断他是否提交过)
mysql
- 索引底层数据结构,
- B+
- 如果一个表里面很多字段都有索引,如何优化
- 看是否可以优化,去掉重复的,没有用的
- 如果表更新不频繁,可以考虑竖直分表,把经常查询的字段放到其它表
- 联合索引,比如四个字段联合,有什么需要注意的地方
- 我说第一索引是最重要的
Redis
- 项目有哪些地方使用了Redis
- Redis分段锁扣减库存,然后他又问如何保证redis和数据库的一致性
算法
全部没A出来
- 一道sql,难点是查询分组中第一条数据(应该是通过最小日期来判断)
- 算法 字符串中字符不同的组合,不能重复,比如“AAB”就有"AAB","ABA","BAA"