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
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;
}
}