蚂蚁集团-AI Coding笔试
使用在线IDE,根据一个readme文件,写出一个完整的项目。
readme如下:
智能安全邮箱设计
题目目标
在本地环境实现一个“可用 + 可测 + 有安全设计”的邮箱系统,包含服务端与客户端,并引入基础智能能力。
总体约束
- 不可直接使用成熟开源邮箱系统库作为核心实现。
- 可使用通用网络库与基础加密库,但需说明用途。
- 所有功能需提供可复现测试步骤和结果。
必做功能
1. 服务器管理
实现 server 进程,负责接收、存储、分发邮件。
测试要求:
- 同时运行两个服务器,模拟两个隔离域名的邮箱系统。
- 两个系统之间可互相发信。
- 两个系统存储应逻辑隔离(不可直接读写对方用户数据目录)。
2. 客户端管理
实现 client 进程,负责客户使用邮箱、查看发送邮件。
客户端需支持:
- 注册/登录(用户名、密码、确认密码)
- 写邮件、收件箱、发件箱、草稿箱
- 群发与群组
- 快速回复邮件(自动补全收件人与主题上下文,提供快捷回复推荐)
- 图片附件发送与读取(见附件)
- 邮件撤回:撤回已发送邮件
- 邮件快捷操作(模仿真实邮件中可以点击的按钮,用户点击后可以执行特定操作,例如在日历中加入某个待办,此处请从用户出发,自行设计用户实用、好用、安全的快捷操作)
算法增强功能(至少实现 2 项)
可选能力:
- 关键词提取与邮件分类
- 邮件搜索(联系人/关键词,支持模糊搜索)
- 存储空间优化(例如附件去重、同时需要考虑文件安全)
- 从用户需求出发考虑,针对邮箱的图片附件构造一个智能算法功能,功能本身内容不做要求,此项选做应当同时体现你的代码理解和产品创新性
安全与稳定性(必做)
至少覆盖以下能力:
- 用户在进行密码登录后,保障其和服务器之间进行的无需验证的交互的安全性(通过具体设计思路和实际样例证明交互的安全性)
- 登录防爆破(限流、短期封禁、验证码等)
- 客户端防滥发/DOS 的基础防护
- 账户敏感信息保护(合理加密存储,不明文)
- 初级钓鱼/垃圾邮件识别
- 撤回邮件的核验,防止指令错误执行
测试与验收要求(必做)
至少完成以下测试:
- 功能联通
- 两个域名服务器互发邮件成功
- 并发与稳定性
- 多客户端同时登录、发送、收取,系统不崩溃
- 安全测试
- 暴力登录尝试触发防护
- 高频发送触发限流
- 钓鱼样例可被识别或标记
- 附件与存储
- 图片附件可收发
- 存储策略(如去重)行为符合预期
交付物
- server/client 源码
- 启动脚本与配置(双域名示例)
- 协议说明(消息格式、鉴权流程)
- 测试脚本与结果
- 威胁模型与防护说明
加分项
- 思考是否恶意用户有可能在邮件中加入恶意脚本,造成破坏结果(破坏结果包括但不限于破坏数据安全、修改身份等),如果有则提供完整poc
- 端到端加密设计说明
- 审计日志与异常告警
- P2P 邮件形态的可行性探索