# 项目经验面试题

针对实际项目经验的深入面试题,考察项目架构设计、技术选型和问题解决能力。


# 一、组织关系管理

Q1:在某互联网公司的"组织链"项目中,你使用 JGraphT 实现组织关系管理,请说明内部数据结构设计以及如何处理组织合并/拆分操作。

参考答案:

  • 组织关系用有向无环图(DAG)建模,节点为组织(部门、子公司),边为管辖/隶属关系。
  • 使用 JGraphT 的 DirectedAcyclicGraph,通过顶点和边管理。
  • 持久化:关系存储为邻接表(parent_org_id, child_org_id)及路径枚举(path 列存储祖先路径)。
  • 合并:将源组织子树迁移至目标组织下,需要更新所有受影响节点的路径,用事务保证原子性,并重算树深度。
  • 拆分:新增组织节点,移动部分子节点,同样需要路径维护。通过递归 CTE 或 JGraphT 遍历规避循环。
  • 为了保证 API 查询效率,预计算组织全路径和层级,使用缓存。

# 二、支付平台架构

Q2:在构建统一支付平台时,你如何保障资金安全和对账准确性?遇到渠道差异如何抽象?

参考答案:

  • 资金安全:
    • 幂等防重:支付请求唯一流水号,数据库唯一约束。
    • 状态机严格定义(待支付→支付中→成功/失败/退票),分布式锁保证状态流转。
    • 对账文件每日下载,解析后与内部流水逐笔勾兑,差错自动生成调账任务。
  • 渠道抽象:定义 PayChannel 接口,方法包括统一下单、查询、退款、对账文件下载、回调验签。每个渠道(银联、工行等)实现该接口,通过适配器模式转换差异字段。后台管理动态配置渠道参数。
  • 零重大事故的原因:全面的单元测试和沙箱环境验证、告警监控、人工二次审核大额交易。

# 三、认证授权设计

Q3:基础服务平台的认证与授权是如何设计的?如何支持多端(移动端、IoT 设备)安全接入?

参考答案:

  • 采用 OAuth2 + JWT 体系。统一用户服务签发 access_token 和 refresh_token。
  • 移动端使用授权码模式+PKCE,IoT 设备使用客户端凭证模式(预置设备密钥,定期轮换)。
  • 网关统一验签和鉴权,解析 token 并注入用户上下文。
  • 权限模型 RBAC,资源服务用注解检查权限。
  • hl_client 框架在 IoT 中内置证书双向认证,结合 token 双重保障。

# 四、第三方平台集成

Q4:在某科技公司设计某短视频平台 OpenAPI 接入方案时,如何降低业务系统接入成本?

参考答案:

  • 构建一个统一的第三方平台网关服务,封装某短视频平台开放平台的鉴权(OAuth)、Token 维护、API 调用和限流。
  • 内部业务系统只需申请 API 权限,使用声明式 SDK 或 HTTP 代理直接调用统一接口,无需处理复杂的 OpenAPI 细节。
  • 提供配置化管理:在后台配置应用参数,动态启用/禁用 API,业务无感升级。
  • 做好异常降级和多租户隔离。
最后更新时间: 2026-05-06 17:25:23