之前有个朋友面试蚂蚁金服p7,他的笔试题我要了过来,我觉得这道题目还是比较经典的,有兴趣的朋友不妨先拿来热热身。
实现转账系统,给外部系统提供账户开户,充值,转账rpc服务,要求如下,
- 账户类设计:
类名:Account,包含属性账号,账户余额,持有人身份证账号
- 开户功能:
- 入参:开户人身份证账号
- 功能逻辑:创建对应的Account,并持久化
- 返回值:账号
- 要求:一个身份证只允许有一个Account,每个Account的账号唯一
- 充值功能:
- 入参:账号,充值金额,请求号(请求号唯一)
- 功能逻辑:将充值金额增加到对应账户的余额中去
- 返回值:余额- 转账功能:
- 入参:转出账号,转入账号,转账金额,请求号(请求号唯一)
- 功能逻辑:转出账号余额减少,转入账号余额增加
- 返回值:转出账号余额
- 其他说明
- 上游系统在调用相关服务超时的情况下,会使用原请求发起重试
- 充值与充值,转账与转账,充值与转账之间存在并发情况
- 考虑性能
- 限定单机提供rpc服务(代码提供rpc接口和实现即可,不用考虑如何
发布rpc),账户持久化上到jvm内存中,不需要使用DB,基于内存的
持久化默认有事务,不用特别考虑事务问题
- 直接基于jdk编写,不依赖其他框架
欢迎关注我微信公众号《倔强的文哥》(一个表面冷酷,内心热乎的互联网码农),不定时分享各种Java技术经验、面试热题、Python实用小技巧。