1、你们的项目中使用的设计模式有哪些?
你了解设计模式,项目具体怎么用

1.构造者模式

  • 用到了什么设计模式
  • 设计模式是什么,解决什么问题的
  • 怎么用

2.适配器模式

3.工厂模式

4.策略模式

设计模式的优缺点:
缺点:
1、代码结构复杂度变高
2、耗费内存也会变高

优点:
1、代码扩展性
2、代码结构清晰,可维护增强
3、解耦项目的业务

2、双写一致性问题(mysql和redis)

  1. * 1、假设保存菜品成功,保存redis失败,问是否应该回滚菜品的数据?<br /> * * 需要回滚,在点餐时菜品需要先在Redis中完成预扣,如果redis中没有当前的菜品,则无法完成预扣,菜无法售卖<br /> * 变化:假设保存的菜品的口味成功,保存到Redis失败,问是否应该回滚菜品分类的数据?<br /> * * 不需要,保存redis不会影响正常业务逻辑的执行<br /> *<br /> * 2、更新数据时,应该是先更新redis还是先更新数据库? 为什么? 双写一致性问题<br /> * * 先更新数据库,考虑redismysql的数据时刻保持一致
  • ——-出去面试细节
  • 年强16:19解决并发修改异常问——订单

    3、在项目中哪些地方存在分布式事务?

分布式事务:
1、讲问题背景(项目调用链路)
2、解决方案
3、原理是什么
4、需要注意什么

4.分库分表出现的BUG

分库分表BUG.png
问题描述:
sharding_id字段不能被修改。
原因:
sharding_id字段表示的是分片键。在设计表结构时,是用来预防未来项目会出现分库分表场景的出现,它是与分片策略密切相关的,所以一旦设定是不能修改的。
解决方案:
在代码中不得对sharding_id进行修改。

5.项目中哪些地方用过多线程?

原则:单位时间内处理复杂且庞大的数据或业务时(提升效率)

6.项目中有哪些地方使用了分布式事务:

原则:

7.学习的技术

image.png

8.手写代码

手写代码:
1、单例模式(懒汉、饿汉、双重检查锁)
2、死锁代码
3、JDBC代码

算法题: 二分、冒泡、选择 排序