✅工作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/xkm7k3/vmrkz84g8c6ypu5s

bigdecimal比较:https://www.yuque.com/hollis666/xkm7k3/qmx8yss8tve7w73q

:::color4 计费的业务核心模型有哪些?计费单?有哪些核心的字段?计费类型、广告类型、金额、状态,

计费单的状态机的流转是怎么样的?反作弊、羊毛检测?

:::

核心的业务单据模型以及主要的状态机流转,通过这个考察一个候选人对于自己的项目的熟悉程度

https://www.yuque.com/hollis666/xkm7k3/cg7ymuivx7lyubcb

:::color4 Tidb,数据库的锁用过吗?并发控制没有做吗?什么场景用到了redis分布式锁。幂等是如何控制的?

分布式锁如何实现?zk为什么可以实现分布式锁?

Redis和zk的分布式锁各自有什么优缺点?redis的分布式锁提前释放了怎么办?watch dog

:::

redis分布式锁:https://www.yuque.com/hollis666/xkm7k3/feovxr7gr8ois5yt

:::color4 Lua脚本能保证原子性?为什么?什么叫原子性?Lua执行到一半某个命令失败怎么办?

Redis的集群模型了解吗?有哪几种?主从、哨兵、cluster

Redis的数据分片?redis支持哪些数据类型?redis的SDS如何实现的?如何避免缓冲区溢出?

ZSET是如何实现的?跳表的查询、插入的时间复杂度是多少?

缓存穿透、雪崩、击穿问题。热key问题如何解决?二级缓存、拆分、预热。

:::

lua的原子性:https://www.yuque.com/hollis666/xkm7k3/rwdgnu

redis集群模式:https://www.yuque.com/hollis666/xkm7k3/namhuv165lorwudw

zset:https://www.yuque.com/hollis666/xkm7k3/uzqztzuicddlk95c

sds:https://www.yuque.com/hollis666/xkm7k3/atppz6

穿透、雪崩、击穿:https://www.yuque.com/hollis666/xkm7k3/abfis3

热key:https://www.yuque.com/hollis666/xkm7k3/lysd3t

:::color4 如何实现一个”查找附近的人”的功能。GEO?

:::

https://www.yuque.com/hollis666/xkm7k3/ow77mcr961n4z7mg

:::color4 设计一个订单号的生产服务,会如何做?唯一性、自增、高可用,

唯一性如何保证?雪花。如何保证自增?如何保证高可用?主从、

:::

https://www.yuque.com/hollis666/xkm7k3/gg4fgfh4z1ff2qfi

https://www.yuque.com/hollis666/xkm7k3/rsocc4sd7v9i0pvc

:::color4 什么样的架构算是好的架构?低耦合、功能性、

:::

https://www.yuque.com/hollis666/xkm7k3/dcnzrznwxzv9p6bv

原文: https://www.yuque.com/hollis666/xkm7k3/kvd0gruenn6tctuy