项目在当下校招面试中越来越受面试官的喜爱了,俗话说:“是骡子是马拉出来溜溜就知道了”,你到底学了哪些知识,深度如何,解决过什么问题,收获是什么,通过一个项目就说明一切了。
可是,
有木有感觉学了很多知识,可都是一盘散沙?
有木有好奇在企业是如何从立项到上线发布的?
有木有羡慕别人有丰富的项目经验,而自己只能裸装上阵面试?
有木有觉得自己做的其实只是课后作业,而一直想从零参与并开发完成一个完整项目?
一个较完整且有含金量的项目在面试一线企业过程中具有很大优势。由于核心功能流程和技术实现都游刃有余,通过做项目遇到问题并最终决解问题,从而获得质的成长。一个好的项目好比打仗(面试)时的一座城墙,事先准备好自己的武器,把面试官“引进城里”,在你的适当引导下,把你所学、所得、所思考的知识一一展示出来。
好吧,来这里。给你想要的一切!
除了一个完整的企业级别项目实战,还收买了身边众多好友和优秀结业学员,帮助大家完成国内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, 分布式存储), (优化点)。
其他功能模块设计请参考,点击我撒