logo资料库

WPS2016校园招聘服务端研发笔试题(网).doc

第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
资料共5页,全文预览结束
WPS2016 校园招聘服务端研发笔试题(网) www.wps.cn HK 3888 姓 名: 性 别: 学 位: 毕业院校: 所学专业: 联系电话: 电子邮件: 温馨提示:笔试时间为 120 分钟,如因时间不够,请挑好题目认真且细致答题,切记不要因时间不够,而 选择走马观花把所有题目答完,但质量又不高,期望你能顺利通过我们的笔试。 一、参照日常银行取款机,画出取款、转账两个流程图,注意特殊情况和严谨判断 顶层数据流图 用户 银行卡 ATM 存钱款机 系统 交易凭条 用户 一层数据流图 用户 输入密码 打印凭条 交易凭条 选 择 操 作 退出 用户 取 款 查询 转账 取款 用户卡信 息 转账 用 户 卡 信 息 取款操作 选择币种 取出现金 现金 用户 转账操作 同行转账 跨行转账 转入卡号 记录 确认 转账
www.wps.cn HK 3888 二、设计一个简单的 IM 聊天软件 场景 a: 两个用户处在同一个局域网,用户 1 需要向用户 2 发送消息,但用户 2 此时离线, 要求用户 1 发出的消息用户 2 下次上线能收到 场景 b: 三个用户处在同一个局域网,用户 1 需要同时向用户 2 和用户 3 发送群消息,用 户 2 离线,用户 3 在线,要求用户 3 能立即收到消息,同时用户 2 下次上线能收到 说明: 设计完整的数据库表结构,并写出存、取以及删除消息对应的 SQL 语句 设计交互协议,包括登录、发送消息、接收消息,提示:可参照 HTTP restful, 或者 Redis、Memcached 的 protocol 加分项:对于需要及时推送的消息,采用何种方式实现,long pull 还是 push? 分别有什么优缺点? 设计完整的数据库表结构, 用户表(userInfo) 列名 数据类型 长度 是否主键 是否为空 备注 userID varchar username varchar userPwd varchar userStale bit 20 20 20 1 是 否 否 否 否 否 否 否 用户ID 用户名 密码 登 陆 状 态 :
www.wps.cn HK 3888 0:离线,1: 在线 信息表(sendMessage) 列名 数据类型 长度 是否主键 是否为空 备注 sendUserID varchar receiveUserID varchar 20 20 sendMessage Varbinary Max sendData varchar 20 isRead bit 1 是 是 否 否 否 否 否 否 否 否 发送端 接收端 发送的数据 发 送 消 息 的 时间 是 否 看 过 本 信息。0:未 看过 1:看过 交互协议 登录、发送消息、接收消息 使用 http 协议进行的请求/响应模式的消息交换,并使用 HTTP 方法:GET、POST 设置与获得消 息。 三,实现一个 LRU(Least Recently Used) Cache 要求: 1,生成一个 LRU cache,可存放 n 个任意 object 参考:NewLRUCache(n int)
2,设置 value,如果 key 原先存在,用 value 覆盖原始数据,否则新建;如果 object www.wps.cn HK 3888 的数量超过了 n,则删除最老的数据 参考:Set(key string, value object) 3,根据 key 获取 value,如果没有,则返回空 参考:Get(key string) value 加分项:考虑多线程并发问题 说明:可以用任意语言或伪代码实现 class Entry { Object value;//值 string key;//键 } public class LRUCache { private int cacheSize; private Hashtable nodes;//缓存容器 private int currentSize; public LRUCache(int n) { currentSize = 0; cacheSize = n; nodes = new Hashtable(n);//缓存容器 } public void Set(key string, value object) { //如果 key 原先存在,用 value 覆盖原始数据,否则新建 Entry node = nodes.get(key); if (node == null) { //如果 object 的数量超过了 n if (currentSize >= cacheSize) { nodes.remove(last.key); removeLast(); } else { currentSize++; } node = new Entry(); } node.value = value; moveToHead(node);
www.wps.cn HK 3888 nodes.Set(key, node); } public Entry Get (key string) { Entry node = nodes.get(key); if (node != null) { moveToHead(node); node.value = value; return value; } else { return null; } }
分享到:
收藏