众安大连(26届转正)一面凉经
1、单向链表怎么找到中间节点?(先答了遍历得到长度,再/2找中间节点,后来又说快慢节点)
2、设计模式场景题:比如现在有支付宝、微信、各大银行卡等支付方式,最坏的情况是写了20多个if-else判断是用户选择哪种支付方式,耦合度很高,如果叫你优化,你怎么想?(先说责任链模式,但没太接触过设计模式的题,瞎说一气;面试官提醒策略模式)
3、还是设计模式场景题:模板方法,比如说有三个模板方法A、B、C,第一个子类我想让他实现ABC这么执行,第二个子类我想让他实现ACB,这个怎么实现?(使用“钩子方法”,抽离一个方法返回true、false,true就ABC,false就ACB)
4、DB和redis怎么保证一致性?(个人回答了先更新数据库再删除缓存和延时双删)
5、线程池的核心参数?
6、核心线程数、最大线程数、阻塞队列怎么工作的?
7、了解Mysql的存储引擎吗?(InnoDB、MyIsam)聊聊索引吧?(B+树、聚簇索引、二级索引、索引失效)
8、详细问了最左前缀法则?(常规八股)
9、知道回表吗?(select A B C ...where A = ? A有索引会回表)回表怎么解决的?(给A B C 加索引,面试官说还有没有别的方法,先想到索引下推,然后面试官说不是这个点,直接不查B、C,只查A就解决了,虽然但是也对..)
10、问项目:黑马点评,超卖的问题怎么解决的?(乐观锁,时间戳、版本号)
11、Lua脚本实现原子性的购买优惠券,lua脚本怎么实现的?(太菜了,忘记了)
12、优惠券库存-1,怎么实现的?(CAS实现,本质一人一单,不会出现数据库并发访问的情况,所以通过版本号或者时间戳去实现)
反问
晚上5点面试,5:45结束,18:55感谢信。