工作5年,主要做计费项目
面试者背景 5年开发,Java后端,计费项目 面试过程 :::warning 计费的项目介绍一下。实时计费。计费的主体是什么?支持多币种吗? 计费是累加的还是单条的?为啥不做成累加的? 如何避免重复计费?循环桶?雪花算法(时间+机器号+随机数)LEAF,时钟回调的问题如何解决的? 费用在数据库中什么类型存储的?bigint 单位为 分、代码中用的decimal,为什么要用decimal? 如何比较两个decimal是不是相等?0.1和0.10的equals相等吗? 为啥不用float或者double,精度问题? 计费的业务核心模型有哪些?计费单?有哪些核心的字段?计费类型、广告类型、金额、状态, 计费单的状态机的流转是怎么样的?反作弊、羊毛检测? Tidb,数据库的锁用过吗?并发控制没有做吗?什么场景用到了redis分布式锁。幂等是如何控制的? 分布式锁如何实现?zk为什么可以实现分布式锁? Redis和zk的分布式锁各自有什么优缺点?redis的分布式锁提前释放了怎么办?watch dog Lua脚本能保证原子性?为什么?什么叫原子性?Lua执行到一半某个命令失败怎么办? Redis的集群模型了解吗?有哪几种?主从、哨兵、cluster Redis的数据分片?redis支持哪些数据类型?redis的SDS如何实现的?如何避免缓冲区溢出? ZSET是如何实现的?跳表的查询、插入的时间复杂度是多少? 缓存穿透、雪崩、击穿问题。热key问题如何解决?二级缓存、拆分、预热。 如何实现一个”查找附近的人”的功能。GEO? 设计一个订单号的生产服务,会如何做?唯一性、自增、高可用, 唯一性如何保证?雪花。如何保证自增?如何保证高可用?主从、 什么样的架构算是好的架构?低耦合、功能性、 ::: 题目解析 :::color4 计费的项目介绍一下。实时计费。计费的主体是什么?支持多币种吗? 计费是累加的还是单条的?为啥不做成累加的? 如何避免重复计费?循环桶?雪花算法(时间+机器号+随机数)LEAF,时钟回调的问题如何解决的? ::: 计费业务以及业务中主要面对的问题 需要了解。 :::color4 费用在数据库中什么类型存储的?bigint 单位为 分、代码中用的decimal,为什么要用decimal? 如何比较两个decimal是不是相等?0.1和0.10的equals相等吗? 为啥不用float或者double,精度问题? ::: 不能用浮点数表示金额:https://www.yuque.com/hollis666/ec96i7/vmrkz84g8c6ypu5s bigdecimal比较:https://www.yuque.com/hollis666/ec96i7/qmx8yss8tve7w73q :::color4 计费的业务核心模型有哪些?计费单?有哪些核心的字段?计费类型、广告类型、金额、状态, 计费单的状态机的流转是怎么样的?反作弊、羊毛检测? ::: 核心的业务单据模型以及主要的状态机流转,通过这个考察一个候选人对于自己的项目的熟悉程度 https://www.yuque.com/hollis666/ec96i7/cg7ymuivx7lyubcb :::color4 Tidb,数据库的锁用过吗?并发控制没有做吗?什么场景用到了redis分布式锁。幂等是如何控制的? 分布式锁如何实现?zk为什么可以实现分布式锁? Redis和zk的分布式锁各自有什么优缺点?redis的分布式锁提前释放了怎么办?watch dog ::: redis分布式锁:https://www.yuque.com/hollis666/ec96i7/feovxr7gr8ois5yt :::color4 Lua脚本能保证原子性?为什么?什么叫原子性?Lua执行到一半某个命令失败怎么办? Redis的集群模型了解吗?有哪几种?主从、哨兵、cluster Redis的数据分片?redis支持哪些数据类型?redis的SDS如何实现的?如何避免缓冲区溢出? ZSET是如何实现的?跳表的查询、插入的时间复杂度是多少? 缓存穿透、雪崩、击穿问题。热key问题如何解决?二级缓存、拆分、预热。 ::: lua的原子性:https://www.yuque.com/hollis666/ec96i7/rwdgnu redis集群模式:https://www.yuque.com/hollis666/ec96i7/namhuv165lorwudw zset:https://www.yuque.com/hollis666/ec96i7/uzqztzuicddlk95c sds:https://www.yuque.com/hollis666/ec96i7/atppz6 穿透、雪崩、击穿:https://www.yuque.com/hollis666/ec96i7/abfis3 ...