基础需求:
整理士兵配置文件格式且只保留有用的数据,使用Gin开发一个服务。
1) 启动时读取app.ini 配置文件,监听配置中的http端口号,用户请求过来时,返回有用的士兵配置。
2) 启动时用github.com/spf13/pflag 来解析命令行参数传入的 config.army.model.json文件路径,整理格式且只保留有用的数据,生成新的json文件。启动时解析该文件。
仅部分下列逻辑中的士兵信息有用,其他部分无用,设计合适的数据结构处理数据并保存,并封装如下方法:
1)输入稀有度,当前解锁阶段和cvc,获取该稀有度cvc合法且已解锁的所有士兵
2)输入士兵id获取稀有度
3)输入士兵id获取战力
4)输入cvc获取所有合法的士兵
5)获取每个阶段解锁相应士兵的json数据
考核点: 1) ini读取解析、json解析
2) 设计的数据结构在面向对象上是否合理
3) 数据处理的完善程度,是否把处理数据的工作放在了获取数据的方法里
4) 高并发下访问方法的性能(需提供压测性能数据)
工程要求: 1) 接口文档
2) 代码结构拆分,逻辑分层,方便后续拓展
3) 需要处理错误等异常情况
4) 包含对应单元测试代码
5) 使用locust进行压力测试,有压测报告
-
计算器 使用Gin框架完成一个接口:请求参数一个字符串,包含正整数、加(+)、减(-)、乘() 、除(/)的算数表达式(括号除外),返回表达式的计算结果。表达式仅包含非负整数, +, - ,,/ 四种运算符和空格 。 整数除法仅保留整数部分。
示例 1:
输入: "3+2*2+13" 输出: 20
示例 2: 输入: " 3/2 " 输出: 1
示例 3: 输入: " 3+5 / 2 " 输出: 5
说明:你需要检查所给定的表达式是否有效;请不要使用内置的库函数 eval。 工程要求: 1)接口文档,主要逻辑的流程图
2)代码结构拆分,逻辑分层,方便后续扩展支持% ^ 等运算符,方便支持根号等单 目运算
3)需要处理错误等各种异常情况
4)包含对应单元测试代码
5)使用locust进行压力测试,有压测报告
考核点:接口文档,流程图,代码结构(拆分mvc),基本服务器框架,错误处理,栈 ,atoi,单元测试,压力测试
基本需求:创建和验证礼品码 请开发一个服务,包含3个接口。 1)管理后台调用 - 创建礼品码:管理员在后台填写礼品描述、可领取次数、有效期和礼 包内容(例如金币、钻石),提交后返回一个8位礼品码,例如: GPA8X6TP 2)管理后台调用 - 查询礼品码信息: 填写礼品码,查询创建时间、创建人员、礼品描 述、礼品内容列表(物品、数量)、可领取次数、有效期、已领取次数、领取列表(领取用 户、领取时间)等信息 3)客户端调用 - 验证礼品码:用户在客户端内输入礼品码并提交,如果礼品码合法且未 被领取过,调用下方奖励接口,给用户增加奖励, 加奖励成功后,返回奖励内容供客户 端内展示。 说明: 1)礼品码分为三类:指定用户一次性消耗,不指定用户限制兑换次数,不限用户不限次数兑换 2)礼包内容可以包含:金币、钻石、道具、英雄、小兵等 工程要求: 1)接口文档,主要逻辑的流程图 2)代码结构拆分,逻辑分层,方便后续扩展 3)需要处理错误等各种异常情况 4)单元测试 5)使用locust进行压力测试,有压测报告 考核点:接口文档,流程图,代码结构(拆分mvc),基本服务器框架,错误处理, redis,mysql,单元测试,压力测试
-
Mongo与Protobuf使用
基本需求:创建玩家信息存储结构、使用礼品码 请基于【03题 Redis使用】修改或开发新接口:
(1)【客户端调用, http】新增注册与登录接口:客户端传递唯一识别码(一个任意字 符串)至服务器,服务器通过该识别码判断是否存在该玩家:不存在则注册新用户 ,生成唯一UID;存在则返回用户登陆数据(唯一UID、金币数、钻石数玩)家。信息 储存在mongo数据库中
(2)【客户端调用, http】验证礼品码接口修改:按照管理员所添加的金币与钻石奖 励数目,发放奖励存储至数据库。编译protobuf文件,将返回信息封装为protobuf 对象以 []byte 作为接口返回值返回给客户端。客户端接收到的是二进制序列,可 以编写单测函数通过protobuf的decode方法解析,自测内容正确性。
说明:
(1)UID可以为递增数或随机数,但需要保证唯一性
(2)返回结构GeneraReward已经定义:增加量存在change中,余额存在balance 中返回,具体见附件
工程要求:
1)接口文档,主要逻辑的流程图
2)代码结构拆分,逻辑分层,方便后续扩展
3)需要处理错误等各种异常情况
4)单元测试
5)使用locust进行压力测试,有压测报告
考核点:接口文档,流程图,代码结构(拆分mvc),基本服务器框架,错误处理, mongo,protobuf,单元测试,压力测试 附:protobuf定义文件
syntax = "proto3"; package response; // 通用奖励消息 message GeneralReward { int32 code = 1; string msg = 2; map<uint32, uint64> changes = 3; // 客户端展示奖励的部分 : 道具ID ->道具数量 map<uint32, uint64> balance = 4; // 道具有变化部分的当前余额 : 道具ID -> 道具数量 map<uint32, uint64> counter = 5; // 计数器当前值 : counterType -> 计数 string ext = 6; // 扩展字段,IAP使用 }