美文网首页剑指BAT
手把手带你项目实战《迷你微信红包》秒杀一线企业

手把手带你项目实战《迷你微信红包》秒杀一线企业

作者: batbattle | 来源:发表于2018-01-02 21:59 被阅读80次

    项目在当下校招面试中越来越受面试官的喜爱了,俗话说:“是骡子是马拉出来溜溜就知道了”,你到底学了哪些知识,深度如何,解决过什么问题,收获是什么,通过一个项目就说明一切了。

    可是,

    有木有感觉学了很多知识,可都是一盘散沙?

    有木有好奇在企业是如何从立项到上线发布的?

    有木有羡慕别人有丰富的项目经验,而自己只能裸装上阵面试?

    有木有觉得自己做的其实只是课后作业,而一直想从零参与并开发完成一个完整项目?

    一个较完整且有含金量的项目在面试一线企业过程中具有很大优势。由于核心功能流程和技术实现都游刃有余,通过做项目遇到问题并最终决解问题,从而获得质的成长。一个好的项目好比打仗(面试)时的一座城墙,事先准备好自己的武器,把面试官“引进城里”,在你的适当引导下,把你所学、所得、所思考的知识一一展示出来。

    好吧,来这里。给你想要的一切!

    除了一个完整的企业级别项目实战,还收买了身边众多好友和优秀结业学员,帮助大家完成国内30多家知名企业招聘内推,免笔试,直接进入面试环节,剑指Offer!梦想不先人一步,谁人分得一杯羹?

    加入一线一企业,成就更好的自己!剑指BAT,为你铺路


    项目一:

    名称:迷你微信红包

    功能:注册、登陆、添加好友/群、收发红包、红包过期自动退还、离线消息持久化、消息确认;

    扩展功能:支持表情、语音、视频等富媒体聊天。

    技术难点:千万级别好友、群关系的数据库(表)设计;百万级别高并发设计与实现;消息订阅与发布;单聊、群聊;应用层消息确认机制实现;亿级别数量里寻找下一秒需过期红包;

    核心技术:加密算法(RSA/MD5/DES/ECC)、多线程编程及同步机制(读写锁/CAS)、IO复用函数、零拷贝;MySQL、红包随机算法、红包过期处理算法、应用层亿级别消息确认机制;


    功能分析

    登陆注册

    好友管理

    用户管理 : 见下文注册登陆

    注册一个用户、查找好友、添加好友、删除好友;

    群管理

    创建群、群搜索(根据群号找到一个群)、邀请人、剔除人/主动退出、解散群(删除群);

    发红包

    定向红包(一对一)、群(一个或多个)红包( 随机(尽量均分, 统计最佳手气);

    拆红包

    同一个红包用户只能领取一次、24小时过期判断;

    红包管理

    超时未领取;

    查看红包历史记录(包括发出去和拆到的);

    消息类型

    普通文本(文字、特殊字符、红包信息)、图片、语音/视频;


    设计分析

    ||客户端||

    登陆与注册

    用户名与密码

            用户名校验

            用户名格式 : 正则表达式

            密码强度判断

            纯数字: 正则

            数字和字母组合 : 正则

            数字和大小写字面组合 : 正则

            验证码

            随机数 : 略 图片 : 数值运算 : 略 短信验证 : 略 拖动验证 : 略

        加密

        加密: Https (TLS SSL) ?

        实现: HTTP GET + POST

        备注 : HTTP : GET POST PUT DELTE

    其他功能和交互设计,暂略。


    ||服务器||

    登陆与注册

    用户名与密码 

    用户名校验

    用户名格式 : 正则表达式 重名检查 : 检查

    密码强度判断

    纯数字: 正则

    数字和字母组合 : 正则

    数字和大小写字面组合 : 正则

    验证码

    随机数 : 略 图片 : 数值运算 : 略 短信验证 : 略 拖动验证 : 略

    注册

    用户名检验(格式, 是否存在等)

    密码强度判断

    校验码验证

    保存注册用户数据(数据库, 用户名, 密码, 创建时间等等)

    登陆

    用户名 + 密码验证(格式, 是否存在等)

    校验码验证

    微信红包

    关键属性 : 用户名, 密码, 余额, 好友列表, 群列表, 红包列表(已发, 已收), 消息列表

    红包管理

    创建一个红包 : 未领取金额队列, 已领取金额队列, 创建时间, 有效时间

    超时未领取 : 当前时间超过过期时间(创建时间+有效时间), 余额返回给用户

    群红包

    创建群: 群成员列表, 群主, 消息列表地址

    拉群 : 把好友加到一个群里面

    加群 : 群主审核(可选), 根据群号搜索到群, 发送加群请求给群主, 审核, 过/不过

    退群 : 更新用户和群的对应列表

    被踢 : 群主发送要删除用户, 更新用户和群的对应列表

    群发 :

    随机 : 根据总金额和个数随机分配每个红包; 一分钱下限, 红包算法(公平!!!!)

    发红包: 从用户余额扣除, 创建红包; 分红包: 计算红包为领取金额列表: [0 - M/N * 2] : M 剩余金额; N 剩余红包个数(数学证明) 抢红包: 打乱顺序放到红包队列, 先到先服务, 前 N 个从红包金额列表 依次取金额, 加入对应用户的余额中, 将该金额加入红包的已领取 队列, 后续没有抢到用户返回 统一消息(优化点)

    注意点: 参加单用户只能领取一个红包

    超时未领取 : 当前时间超过过期时间(创建时间+有效时间), 余额返回给用户

    定额分配 : M/N 见上(优化点, 缓存)

    定向红包

    一对一发 : 定额

    发红包: 从用户余额扣除, 创建红包; 收红包: 如果好友收红包, 好友余额加指定金额 超时未领取 : 当前时间超过过期时间(创建时间+有效时间), 余额返回给用户

    超时未领取精确时间返回给用户? 排序队列+线程池 (用户检查过期时间, 给服务器发消息, 服务器 epoll 监听)

    群搜索功能 : 遍历群列表(少 HashMap, 分布式存储), (优化点)。

    其他功能模块设计请参考,点击我撒

    相关文章

      网友评论

        本文标题:手把手带你项目实战《迷你微信红包》秒杀一线企业

        本文链接:https://www.haomeiwen.com/subject/bbspgxtx.html