# 项目经验面试题
针对实际项目经验的深入面试题,考察项目架构设计、技术选型和问题解决能力。
# 一、组织关系管理
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,业务无感升级。
- 做好异常降级和多租户隔离。