返回金融系统设计
征信授信 · 面试题集

消费信贷系统 - 面试Q&A

04-credit-system/interview-qa.md

消费信贷系统 - 面试Q&A

10道高频面试题,按照「简短回答 → 详细回答 → 追问准备」三层结构组织


Q1: 等额本息和等额本金的计算公式?用户感知差异?

简短回答(30秒)

等额本息每月还款额固定(用PMT公式计算),总利息较高;等额本金每月本金固定、利息递减,总利息较低。用户感知上,等额本息月供压力均匀适合收入稳定的工薪族,等额本金前期压力大但总成本低,适合短期内收入较高或计划提前还款的人。

详细回答(2分钟)

等额本息(PMT公式):

月还款额 M = P × r × (1+r)^n / ((1+r)^n - 1)
P = 贷款本金, r = 月利率, n = 总期数

示例:10万,年化12%,12期
月利率 = 1%
M = 100000 × 0.01 × 1.01^12 / (1.01^12 - 1) = 8,884.88元
总利息 = 8,884.88 × 12 - 100,000 = 6,618.56元

每期拆分方式:先算利息(剩余本金 × 月利率),再算本金(月还款额 - 利息)。前期利息占比大,后期本金占比大。

等额本金:

每月本金 = P / n(固定)
每月利息 = 剩余本金 × r
每月还款 = 每月本金 + 每月利息(逐月递减)

示例:10万,年化12%,12期
每月本金 = 8,333.33元
第1期:利息=1,000, 还款=9,333.33
第2期:利息=916.67, 还款=9,250.00
总利息 = 6,500.00元

用户感知差异:

维度等额本息等额本金
月供固定不变逐月递减
总利息较高(6,618元)较低(6,500元)
前期压力适中较大
适合人群收入稳定收入较高/计划提前还
心理感受"每月一样多,好规划""越还越轻松"

系统实现关键点:

  • 精度控制:金额精确到分,使用DECIMAL(18,2)
  • 尾差处理:最后一期兜底,total - sum(前n-1期) = 最后一期
  • 提前还款:需要重新生成剩余期数的还款计划

追问准备

Q:IRR年化利率和名义年化利率的区别?

名义利率 = 月利率 × 12。但等额本息的实际占用本金逐月减少,所以IRR年化利率(考虑资金时间价值)会高于名义利率。比如名义12%的等额本息,IRR约为12.68%。监管要求必须披露IRR年化利率。

Q:为什么银行房贷大多推荐等额本息?

银行收取的利息总额更高。另外等额本息月供固定,用户更容易接受和规划,降低了违约风险。


Q2: 授信额度如何动态调整?

简短回答(30秒)

通过B卡行为评分定期(每月)或事件驱动(还款/逾期/多头)地评估用户风险变化,据此自动提额或降额。提额通常要求连续正常还款N期且无逾期,单次不超过30%;降额在逾期或风险上升时立即执行。

详细回答(2分钟)

评分卡体系:

  • A卡(申请评分卡):新用户首次授信,基于征信+基本信息
  • B卡(行为评分卡):存量客户调额,基于还款行为+用信习惯+活跃度
  • C卡(催收评分卡):逾期用户,基于催收反馈+还款意愿

调额触发机制:

定期触发:每月跑B卡批量评估
事件触发:
  - 正常还款6期 → 评估提额
  - 出现M1逾期 → 评估降额
  - 征信查询次数激增 → 评估冻结
  - 借据结清 → 评估提额

调额规则示例:

提额条件:
  B卡评分 ≥ 700 AND 无逾期 AND 用信率 > 50%
  → 提额10-30%

降额条件:
  B卡评分 < 500 OR 出现M1+ OR 多头借贷增加
  → 降至已用额度 + 20%缓冲

冻结条件:
  M2+逾期 OR 反欺诈高风险 OR 司法风险
  → 立即冻结,禁止新用信

风控约束:

  • 单次调额幅度不超过30%,避免剧烈变化引发客诉
  • 降额不得低于已用额度(不能让用户存量借据"违约")
  • 调额日志完整记录,支持审计追溯

追问准备

Q:B卡的输入特征有哪些?

还款记录(按时/逾期/提前)、用信频率、平均借款金额、还款方式偏好、多头借贷情况、收入变化(如有)、在本平台的使用时长。

Q:降额后用户正在使用的额度怎么办?

降额只影响"可用额度",已用额度对应的借据正常还款。降额后:新的可用额度 = max(0, 新总额度 - 已用额度)。


Q3: 用户提前还款对系统的影响?

简短回答(30秒)

提前还款需要重算还款计划(截至当日利息+剩余本金),涉及利息收入损失、额度恢复、联合贷资金方通知、会计重新计提。系统层面要支持"提前结清"和"提前还部分本金"两种模式。

详细回答(2分钟)

两种提前还款模式:

模式处理方式
提前结清计算截至当日利息 + 剩余全部本金,剩余期数还款计划作废
部分提前还款还一部分本金,剩余本金重新生成还款计划(缩短期限或减少月供)

系统影响点:

  1. 还款计划重算

    • 截至当日的利息(按日计算,不满一期按实际天数)
    • 剩余本金全额归还(结清)或部分归还(重新拆分)
    • 重新生成的还款计划需要保留历史版本
  2. 利息收入损失

    • 预期利息收入减少,需更新财务预测
    • 对P&L有直接影响
  3. 额度恢复

    • 结清后全部额度恢复为可用
    • 部分还本后按实际还款本金恢复
  4. 联合贷/资金方影响

    • 需通知资金方提前回款
    • 分润需重新计算(按实际计息天数)
    • 部分资金方对提前还款有约束(最低持有期)
  5. 会计处理

    • 已计提的未来利息需冲回
    • IFRS 9下可能需要重新计算有效利率
    • 提前还款手续费(如有)的收入确认
  6. 违约金/手续费

    • 监管趋势:消费贷不建议收提前还款违约金
    • 如收取:通常为剩余利息的1-3%
    • 必须在合同中明确约定

追问准备

Q:提前还款率过高怎么办?

如果提前还款率超预期,可能影响资金运用效率和收入预测。对策包括:适度的提前还款手续费、优化资金匹配策略、调整产品设计(如缩短产品期限)。

Q:部分提前还款后,是缩短期限好还是减少月供好?

从用户角度:缩短期限总利息更少;减少月供降低月度压力。一般让用户自选。从系统角度:缩短期限实现更简单(原始月供不变),减少月供需要重新PMT计算。


Q4: 逾期催收的分级策略?

简短回答(30秒)

按逾期天数分M1到M6+六级,催收策略从自动化(IVR/短信)逐步升级到人工(电催)、委外(外包公司)、法催(律师函/起诉),每级有不同的成本和回收率,策略编排引擎根据C卡评分和催收反馈动态调整。

详细回答(2分钟)

阶段逾期天数催收策略成本预期回收率
M0提醒到期前3天还款提醒短信/APP推送极低N/A
M1前期1-15天IVR自动外呼 + 短信70-80%
M1后期16-30天人工电话催收(1级催收员)60-70%
M231-60天高级催收员 + 增加频率40-50%
M361-90天委外催收准备 + 上门催收25-35%
M491-120天委外催收公司高(佣金制)15-25%
M5121-180天法律催收(律师函)10-15%
M6+>180天起诉/核销评审极高<10%

策略编排引擎的设计:

输入:逾期天数 + C卡评分 + 历史催收反馈 + 联系状况
输出:推荐催收动作 + 催收员分配 + 下次跟进时间

规则示例:
- C卡评分高(还款意愿强)+ M1 → 温和提醒即可
- C卡评分低(还款意愿弱)+ M1 → 提前升级人工催收
- 联系不上(失联)→ 启动失联修复(社交关系推荐联系人)

合规约束:

  • 每日催收次数不超过3次
  • 催收时间限制(8:00-21:00)
  • 禁止爆通讯录、威胁恐吓
  • 催收录音保存,支持投诉核查

追问准备

Q:委外催收如何管理?

委外模式一般是佣金制(回收金额的20-40%),需要管理:案件分配、回款对账、合规监控(录音抽查)、效果排名淘汰。系统需要支持批量案件导出和回款录入。

Q:核销后还能追回吗?

可以。核销是会计处理("账销案存"),从资产负债表移除,但法律上债权仍在。核销后如果回收到款项,计入当期"核销资产回收"收入。


Q5: 如何保证利率计算符合监管?

简短回答(30秒)

系统必须同时计算名义利率和IRR年化利率,贷前向用户展示IRR年化利率和还款总额。所有费用(服务费/保险费/担保费)纳入综合成本计算,综合年化不超过24%司法保护上限。利率引擎内置合规校验拦截器。

详细回答(2分钟)

利率合规框架:

三条红线:
1. LPR×4(约15.4%):最新司法保护上限(民间借贷适用)
2. 24%:传统司法保护上限(持牌机构实操中仍参考)
3. 36%:绝对上限,超过部分无效

实际执行:
- 持牌消金/银行:通常以24%为内控红线
- 综合费用(利息+服务费+保险+担保)全部纳入年化计算

IRR计算实现:

IRR(内部收益率)是使所有现金流NPV为零的利率:

0 = -P + Σ(CFi / (1+r)^i)
其中 P=放款金额, CFi=第i期还款, r=月IRR

年化IRR = (1+月IRR)^12 - 1

系统实现:用牛顿迭代法求解,收敛精度 < 0.0001%

合规校验拦截器(在贷款发放前强制执行):

function complianceCheck(loan):
  // 1. 计算名义年化利率
  nominalRate = loan.annualRate
  
  // 2. 计算IRR年化利率(含所有费用)
  allCashFlows = loan.repaymentSchedule + loan.fees
  irrRate = solveIRR(loan.principal, allCashFlows)
  
  // 3. 校验是否超过红线
  if irrRate > 0.24:
    REJECT("综合年化利率超过24%上限")
  
  // 4. 校验信息披露
  if not loan.contract.containsIRRDisplay:
    REJECT("合同未展示IRR年化利率")
  
  // 5. 校验费用拆分合理性
  if loan.serviceFee / loan.principal > 0.03:
    WARN("服务费比例偏高,建议审核")

关键实践:

  • 利率计算引擎与业务解耦,统一出口校验
  • 所有利率变更需要审批+灰度验证
  • 定期对存量借据做利率合规巡检
  • 保留完整的利率计算过程日志,应对监管检查

追问准备

Q:如果产品设计时利率合规,但加上罚息后超了怎么办?

罚息计算引擎有"综合年化安全阀":正常利息年化 + 罚息年化 ≤ 24%。如果超过,自动调低罚息利率。参见ADR-003的设计。


Q6: 联合贷款(助贷)的架构区别?

简短回答(30秒)

自营模式自己出资+风控+运营;联合贷和银行共同出资(银行≥70%),需要资金路由、分润计算、多方对账;助贷是纯导流,只做获客和初筛,资金和风控由银行承担。架构上联合贷最复杂,需要多资金方管理和分润引擎。

详细回答(2分钟)

三种模式对比:

维度自营联合贷助贷
资金自有资金100%自有≤30%+银行≥70%银行100%
风控自己做双方都做(自己为主)银行为主
利润全归己(利差)按出资比例分润导流费(CPS/CPA)
牌照需要双方都需要不一定需要
监管风险高(监管趋严)

联合贷的架构增量模块:

1. 资金路由引擎
   - 资金方管理(多家银行/信托/消金公司)
   - 资金匹配算法(价格优先/余额优先/分散投放)
   - 资金方准入规则(该资金方接受什么类型的资产)

2. 分润计算引擎
   - 利息按出资比例分配
   - 逾期损失按约定比例分担
   - 分润周期(日/月结)
   - 分润对账和差异处理

3. 多方对账
   - 每日放款对账(我方记录 vs 资金方记录)
   - 还款对账(回款金额/日期/本息拆分)
   - 差异处理工作流

4. 资金方报告
   - 资产质量报告(逾期率/损失率)
   - 放款/回款日报
   - 五级分类统计

助贷的架构特点:

相对轻量:
- 标准化API输出(用户数据、初筛结果)
- 跳转/SDK嵌入(引导用户到银行APP完成申请)
- 佣金结算(按照CPA/CPS模式)
- 无需管理借据/还款/催收

追问准备

Q:监管对联合贷有什么限制?

2020年网络小贷新规要求:联合贷中自有出资比例不低于30%、单笔联合贷中同一银行出资比例不超过50%、跨省经营需要批准。这对架构的影响是需要灵活的资金比例配置和合规校验。

Q:如果资金方突然停止放款怎么办?

架构需要支持:多资金方冗余、自动切换路由、降级策略(暂停该渠道的新增放款,存量借据正常还款)。


Q7: 日终跑批都做什么?

简短回答(30秒)

日终跑批(通常00:00-06:00)按顺序执行:计息→逾期标记→罚息计算→自动扣款→五级分类→催收任务生成→征信报送→监管报表。这是信贷系统的"心脏",每天驱动状态流转和账务处理。

详细回答(2分钟)

作业编排(有依赖关系):

Job 1: 日终计息(00:00开始)
  对所有ACTIVE借据计算当日利息
  更新应计利息字段
  ↓
Job 2: 逾期标记(依赖Job 1)
  扫描所有当日到期但未还清的还款计划
  标记状态为OVERDUE
  更新借据状态
  ↓
Job 3: 罚息计算(依赖Job 2)
  对所有OVERDUE借据计算当日罚息
  单利+分段利率+安全阀
  ↓
Job 4: 自动扣款(依赖Job 1,可与2/3并行)
  对当日到期的还款计划发起代扣
  调用支付系统批量扣款
  处理扣款结果(成功→更新还款计划,失败→标记待重试)
  ↓
Job 5: 五级分类(依赖Job 2)
  根据最新逾期天数重新分类(正常/关注/次级/可疑/损失)
  计算拨备金额
  ↓
Job 6: 催收任务生成(依赖Job 2)
  新增逾期→创建催收任务
  逾期升级→升级催收策略(如M1→M2)
  分配催收员
  ↓
Job 7: 征信报送(依赖前序作业)
  生成央行征信报文(当日开户/结清/逾期变更)
  T+1报送
  ↓
Job 8: 监管报表(依赖前序作业)
  生成各类监管统计报表(放款量/余额/逾期率/拨备率)

性能优化策略:

策略说明
分片并行按用户ID哈希分64片,多线程并行处理
增量处理只处理有状态变更的借据,非全量扫描
断点续跑每处理1000条checkpoint一次,失败从断点恢复
超时监控每个Job有超时告警,超过2小时自动告警
隔离运行跑批在从库执行,不影响白天在线业务

追问准备

Q:跑批失败了怎么办?

幂等设计保证重复执行不会产生副作用(如计息已计过则跳过)。断点续跑从失败点恢复。有三级告警:延迟告警→失败告警→人工介入。必须在06:00前完成,否则影响白天业务。

Q:能不能用事件驱动替代跑批?

部分可以。计息和逾期标记可以用CDC+流式计算(Flink)实时化,但征信报送和监管报表仍需批处理。渐进式改造:先实时化核心路径(计息/逾期),保留报表类批处理。


Q8: 信贷系统和核心银行的关系?

简短回答(30秒)

信贷系统是核心银行的下游消费方:核心银行管账户和记账,信贷系统管贷款全生命周期。放款时信贷系统发指令,核心银行执行账务处理(贷款科目→用户账户)。还款同理。两者通过记账接口交互。

详细回答(2分钟)

核心银行 vs 信贷系统职责分工:

职责核心银行信贷系统
账户管理客户账户开立/管理不管账户
记账复式记账(借贷平衡)生成记账指令
资金划转执行转账发起放款/扣款指令
产品管理存款/理财产品贷款产品管理
利率计算存款利息贷款利息
风控交易风控信用风控
监管报送综合监管报表信贷专项报送

交互流程示例(放款):

信贷系统 → 核心银行:
  记账指令 = {
    借方:贷款资产科目 - 100,000元(资产增加)
    贷方:用户活期账户 - 100,000元(负债增加)
    摘要:"消费贷放款-合同号XXX"
  }

核心银行执行:
  1. 校验科目余额
  2. 记账(借贷平衡)
  3. 资金划转到用户银行卡
  4. 返回记账凭证号

互联网消金的简化架构:

很多互联网金融公司没有完整的核心银行系统,而是用"记账引擎"替代核心银行的记账功能:

  • 记账引擎只做复式记账(科目管理、分录、对账)
  • 资金划转通过支付系统(对接银行/三方支付)
  • 这样信贷系统+记账引擎+支付系统 = 轻量级核心银行

追问准备

Q:为什么不把信贷功能直接做在核心银行里?

核心银行求稳(稳定性要求极高),信贷系统求快(产品迭代快)。分开后信贷系统可以独立发版、独立扩容、独立选型,不影响核心银行的稳定性。这也符合"核心瘦身"的银行IT趋势。


Q9: 如何防止重复放款?

简短回答(30秒)

三道防线:(1) 应用层幂等键(申请ID+放款序号,Redis去重),(2) 状态机控制(只有SIGNED状态才能发起放款,DISBURSING状态禁止重复触发),(3) 支付系统外部订单号去重。三道防线任一拦截都能防止重复。

详细回答(2分钟)

重复放款是信贷系统最严重的风险之一("多放了钱收不回来"),需要多层防御。

第一道防线:应用层幂等

// 放款请求前,用幂等键检查
idempotencyKey = hash(applicationId + loanContractNo + amount)

// Redis SET NX + TTL
if redis.setNX(idempotencyKey, "PROCESSING", TTL=30min):
    // 首次请求,继续放款
    proceed()
else:
    // 重复请求,返回上次结果
    return getCachedResult(idempotencyKey)

第二道防线:状态机控制

状态转移规则(严格):
SIGNED → DISBURSING(仅此路径可发起放款)
DISBURSING → ACTIVE / DISBURSEMENT_FAILED

数据库层面:
UPDATE loan_contract 
SET status = 'DISBURSING' 
WHERE contract_no = :no AND status = 'SIGNED'  -- 乐观锁

如果受影响行数 = 0,说明状态已变更,拒绝重复放款。

第三道防线:支付系统去重

支付系统接收放款指令时:
- 外部订单号 = contractNo + disbursementSeq(放款序号)
- 支付系统对同一外部订单号只执行一次
- 重复请求返回原始交易结果

第四道防线(兜底):日终对账

每日对比:
- 信贷系统的放款记录
- 支付系统的实际划款记录
- 银行的入账记录

差异处理:
- 信贷有记录但支付无 → 可能放款失败未更新状态 → 修正状态
- 支付有记录但信贷无 → 严重异常 → 立即告警人工处理

追问准备

Q:网络超时导致放款结果不确定怎么办?

放款指令发出后如果超时未收到响应:(1) 不重新发起放款,(2) 启动查询轮询/回调等待,(3) 超过最大等待时间后标记为"待确认",由人工或自动对账确认实际结果。


Q10: 资产证券化对架构的影响?

简短回答(30秒)

ABS需要从贷款池中筛选合格资产打包出售,架构上需要新增:资产标签系统(标记入池/可入池状态)、资产快照(入池时点状态冻结)、瀑布式分配引擎(优先/中间/劣后分层分配回款)、SPV账务隔离、信息披露系统。

详细回答(2分钟)

ABS基本流程:

1. 资产筛选:从存量贷款中筛选符合条件的资产
   条件:正常/关注类、剩余期限>3期、单笔<一定金额、无逾期
   
2. 打包分层:
   优先级(A档):占比70%,低利率低风险 → 银行/保险购买
   中间级(B档):占比20%,中等利率 → 资管产品购买
   劣后级(C档):占比10%,高收益 → 发起人自持(风险自留)

3. SPV设立:特殊目的载体,实现"真实出售"风险隔离

4. 循环购买:短期消费贷(12期)支持长期ABS(3年),需持续购入新资产

架构影响(需新增的模块):

1. 资产标签系统
   - 每笔借据增加标签:AVAILABLE(可入池)/ POOLED(已入池)/ EXCLUDED(不可入池)
   - 入池后锁定,不可提前结清(或需要替换)

2. 资产快照
   - 入池时点冻结资产状态(本金余额、剩余期限、利率、逾期状态)
   - 供信息披露和投资人查询

3. 瀑布式分配引擎
   - 回款先付:服务费 → A档利息 → A档本金 → B档利息 → B档本金 → C档
   - 加速清偿事件(触发条件:逾期率超阈值)→ 改变分配顺序

4. 循环购买模块
   - 到期资产自动替换(筛选新的合格资产入池)
   - 合格标准校验

5. 信息披露
   - 月度资产服务报告(逾期率/早偿率/损失率)
   - 投资人查询接口
   - 评级机构数据接口

对日终跑批的影响:

新增跑批作业:
- ABS回款分配(在正常还款处理后)
- ABS资产池状态更新
- ABS信息披露数据生成
- 循环购买资产筛选

追问准备

Q:ABS和联合贷的区别?

联合贷是放款时就有多个出资方(实时匹配),ABS是放款后把存量资产打包出售(事后操作)。联合贷影响放款流程,ABS影响贷后管理。两者可以并存:用联合贷放款的资产也可以打包做ABS。

Q:资产入池后用户提前还款怎么处理?

提前还款导致资产池缩水。处理方式:(1) 循环购买补充新资产,(2) 提前还款回款按瀑布规则分配,(3) 如果大规模提前还款触发"早偿事件",可能提前清算ABS。架构上需要在还款引擎中增加ABS联动判断。