阿里面试官问我,如何设计贷超/消费贷系统
背景
参加了阿里系的一次电面,面试官最后留了题,让帮设计一个消费贷系统。
要求是:
通过u酷或者 ucweb 作为流量介入 使用银行作为渠道 在银行和流量之间做一个系统
承载留存 分润 数据 流程 和风控
解题
其实还是比较喜欢这种类型的面试,出题型,以前一般是在外企面试才会遇到,就是留一个题和限定时间给你,一般一周内,能解决就录取。个人感觉比面试的时候问一堆概念和方法论靠谱一点。
但这个题比较抽象,做过开发的人都知道这种需求没法做设计,这种需求如果是技术TL或者产品经理给出的话,开发已经已经内心崩溃了吧。但是如果是甲方爸爸给出的,就只能尽可能的自我合理化...毕竟是爸爸。
好歹我也接过一些甲方需求,就用对待甲方的态度对待这个题吧。
需求拆解
甲方有时候不知道自己要什么?只知道一个方向:就是引流给银行,银行下款之后分利润,这个大方向。技术需要按照可落地的方式进行需求拆解。
1 拆解这个需求中的用户
这个系统是一个toBtoC的系统,通过服务B端,触及C端,技术服务方是阿里系的这个公司。系统用户有几个类别:
- 借款用户,C端用户
- 用户渠道,流量来源,UCweb和u酷
- 资金渠道,银行
C端:需要解决的诉求是,多,快,好,省。
用户渠道:快速接入,低成本接入,快速上线和下线。
银行:流程管理,资金安全,结算精确。
这个系统需要兼顾这三种用户的差异和不同的诉求。
- C端用户给出用户选择,统一各个银行贷款产品的利率计算方式和材料,有个很好的展示和流畅的体验,通过算法解决筛选,推荐和功能上提供,资料复用和进度查询。
- 渠道用户提供H5两个接入方式,无需渠道投入开发,以H5活动页面方式接入移动端和渠道端,同时提供管理工具,便于快速记录渠道来源,数据统计,页面上线和下线。辅助提供api或者SDK的接入方式,便于渠道根据自己的技术栈来选择。
- 银行端:默认银行的开发流程长,所以系统层面需要帮助银行设计一个管理系统,接入银行内部的系统,内网部署,比如:额外设计一个OA系统,或者其他内部管理系统,便于银行根据多身份多权限的管理,处理银行的用户注册,贷后审核,风控,审记,还款等全流程的审批和管理。
2 拆解这个需求中的信息流(资金流)
身份已经不用说了,资金流向设计如下,当然有其他设计,比如用户还款也可以通过合作方来进行,但是系统的复杂度会高很多量级,故舍弃这个设计。
合作方:就是我们自己,对应到这个题目就是阿里系的这个公司。
3 开发需求拆解
以上系统需求再拆解给开发,需求细节如下:
image.png
4 MLP
系统一般不会一开始就做很大,先做核心功能做测试和试错,所以我们现在定义一个最简产品功能MLP,能打通渠道接入,引流给银行完成放款后和合作方分佣的功能。
image.png
小结
以上,回看把最初一个抽象的方向性的需求变成一个落地的产品需求,就是一个产品经理和技术TL撕逼到结果的过程。
有了可执行的细节,后续才会有进度排期,人力成本估算,产品发布计划等。
整个系统架构
整个系统架构:
按照表现层 - 网关层 - 管理层 - 公共服务 - 中间件/ 底层技术支持做了一个拆解
image.png
子系统架构
-
贷款商品管理子系统
银行上架,消费者可见
银行下架,消费者不可见
合作方,可以加一个上架商品审核,规避合规风险(非必需)。
-
渠道商户管理
渠道商户分配appID,做访问鉴权,调用统计
订单系统获取商家信息通过该系统管理
商家不合作之后通过该系统操作下线
image.png -
用户管理
用户注册,提交资料,认证,查询审批进度等
image.png -
风控报告
作为合作方的核心卖点之一,通过用户数据加工成可以对外输出的报告
注意:目前合规要求不允许直接买卖用户数据,所以需要对于用户数据加工成可对外输出的数据,比如芝麻分这种,给到渠道。风控报告是一种解决方式,银行不再依赖原始数据来做风控和贷审核,而是信任你这个合作方给出的信息评估。
image.png -
订单管理
整个系统流转的核心部分就是一个订单系统,用户创建订单,订单到合作方加工,再到资金方去接单,然后放款(商品发货),订单的架构可以参考电商产品,本文结合本系统做了简化和修改
image.png
技术选型
如果是阿里,其实不需要这个,因为阿里有自己的一套开发体系和框架,但是这个系统也可以被其他公司使用,所以大致列举一下(后端 java 技术栈)。
- 表现层: Jquery,Ajax,Html,简单常见容易招人
- 网关:SpringCloud Gateway,SpringCloud工具包还有注册中心,配置中心可能也用得上,开源即用,比较适合创业公司,大公司一般自己开发网关。
- 管理层/公共基础服务:管理层有很多服务,可以看出是一个微服务框架把大家组织起来的,springboot + springcloud,如果是阿里,大概率springcloud替换为dubbo,然后也需要一个前端,来配合做管理界面。
风控层面,如果有风控引擎用风控引擎,但是小公司没有的话,基于规则做风控也能满足需求。 - 中间件/底层技术支持:mysql,规则引擎,打包发布,消息中间件等
技术团队构成建议
image.png写在最后
到这里,整个系统结束了,说一下面试的后续,面试过程和一个优秀的人发生了思想的碰撞,还是很让人兴奋,结果还没给,但是对我而言,过程中带来的结果,比过程目的更有趣,所以写了这个分享,希望各位读者老板喜欢。