0418 第二次面试,30min,面试官超好,但自己太菜了
根据我的回答来问的,几乎没八股。
自我介绍(说要偏向项目的介绍)
- 项目里遇到的最大的问题(说了Redis和数据库缓存不一致的问题)
- 根据我的回答深挖,这种情况为什么不一致(还安慰我不要紧张)
- 不断的提示,发现我说的问题不会导致Redis和数据库缓存不一致,而是在分布式的情况下,会出现不一致。
- 又更正我,在更新完Redis, 更新数据库前网络中断了,才会导致数据库没更新上。
- 再问还遇到了什么问题(没好好准备)
- 提到ThreadLocal,说用完不释放的话会导致内存泄漏
- 问还有什么问题,多台机器怎么办,提示可以存数据库里
- 又问有没有遇到数据库索引相关的问题
- 什么时候要加索引,什么时候不加索引
- 索引失效的情况
- 问自己有没有遇到过索引失效的情况,提示他们常见的很难排查的是 隐式类型转换让索引失效
- 出了个写sql的题(我是fw,一定好好练sql语句)
- 表里有两个字段,一个字段是类型(A,B,C,D,E),一个字段是数量,写一个sql语句求出每个类型的数量(提示的)
1
2
3
4
5
6
7
8
9
10
11
12
13SELECT 类型, COUNT(*) AS 数量
FROM 表名
GROUP BY 类型;
14. 第二个sql根据第一个sql,上一个sql查出来的是五行二列,那么怎么变成一行十列(面试官直接告诉我答案了)
```sql
SELECT
MAX(CASE WHEN 类型 = 'A' THEN 数量 END) AS A_数量,
MAX(CASE WHEN 类型 = 'B' THEN 数量 END) AS B_数量,
MAX(CASE WHEN 类型 = 'C' THEN 数量 END) AS C_数量,
MAX(CASE WHEN 类型 = 'D' THEN 数量 END) AS D_数量,
MAX(CASE WHEN 类型 = 'E' THEN 数量 END) AS E_数量
FROM 表名; - 多线程里用过哪些(回答了加锁)
- 什么情况要加锁,想一个场景(自己想的场景有个坑,面试官又给我提示了一下)
反问