WiseArt 项目深挖面试知识点整理

整理自项目模拟面试,覆盖 AI 生图任务链路、AI 写真素材上传、Firebase Storage 与 CDN 图片加载、图片压缩、订阅与积分购买、订阅有效性校验与项目难点


一、WiseArt 这个项目的核心技术链路是什么

一句话

为什么要做成任务化

客户端的主要职责

  1. 收集 prompt、style、pose、会员/积分状态
  2. 在本地先注册一个任务并落库
  3. 调服务端创建生图任务,拿到 job_id
  4. 根据 job_id 轮询结果
  5. 成功后把图片结果写回本地任务
  6. 驱动结果页、历史页和通知更新

二、文生图的核心代码逻辑是什么

入口层

业务编排层

任务管理层

网络层

状态轮询层

这样设计的价值


三、AI 写真是如何做的,是否需要上传用户人脸

先说结论

为什么不是生成时临时传一张图

素材上传链路

  1. 用户选择多张照片
  2. 客户端先做本地压缩
  3. 做基础人脸检测和质量判断
  4. 上传到 Firebase Storage
  5. 服务端/客户端用 faceUploaded 标记素材是否已经准备好

生成时传了什么

边界场景


四、图片上传前是如何压缩的

一句话

用的是什么方案

AI 写真人脸图的压缩策略

AI 滤镜上传图的压缩策略

为什么这样做


五、图片都是用 Firebase Storage 吗,是怎么加载的

先说结论

存储侧

展示侧

为什么线上更倾向 CDN

自定义 Firebase Loader 的角色


六、Glide 加载是否用了自定义 loader 和 target

自定义 loader

自定义 target / future target

主要使用场景


七、CDN 图片请求状况打点是怎么做的

接入方式

采集字段

成功上报时机

失败上报时机

这样做的价值

局限性


八、订阅和积分购买是如何做的

总体思路

订阅商品

订阅成功后的处理

  1. Google Play 返回 purchase
  2. 客户端转成 SubsPurchaseModel
  3. 调服务端 addOrder(...) 做订单绑定
  4. 成功后更新本地 hasBoundVip
  5. 合并进当前购买态

积分商品

积分成功后的处理

  1. Google Play 返回 purchase
  2. 客户端转成 InAppPurchaseModel
  3. 调服务端 addCredit(...)
  4. 服务端返回最新积分余额
  5. 客户端用 UsageSp.updateCredit(...) 更新本地余额

最终如何消费


九、订阅是如何校验有效性的,如何管理有效期

先说结论

Google Play 侧校验

服务端侧校验

有效期怎么管理

为什么还要记录“上次同步过的 expireTime”

失效与恢复


十、这个项目的主要难点是什么

难点 1:AI 生图链路天然是异步长链路

难点 2:商业化规则和生成链路耦合度高

难点 3:AI 写真依赖素材链路

难点 4:图片链路既要稳定又要可观测

更适合面试的总结