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

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

    名:        别:          位:      

毕业院校:                   所学专业:             

***话:      电子邮件:        

温馨提示:笔试时间为120分钟,如因时间不够,请挑好题目认真且细致答题,切记不要因时间不够,而选择走马观花把所有题目答完,但质量又不高,期望你能顺利通过我们的笔试。

 

一、 参照日常银行取款机,画出取款、转账两个流程图,注意特殊情况和严谨判断

顶层数据流图

                银行卡                        交易凭条

 


一层数据流图

                                                         交易凭条

 

 

 


取款

                                                                       现金

 


转账

 

 

 

 


二、设计一个简单的IM聊天软件

    场景a

        两个用户处在同一个局域网,用户1需要向用户2发送消息,但用户2此时离线,       要求用户1发出的消息用户2下次上线能收到

       

    场景b

        三个用户处在同一个局域网,用户1需要同时向用户2和用户3发送群消息,用户       2离线,用户3在线,要求用户3能立即收到消息,同时用户2下次上线能收到

 

    说明:

        设计完整的数据库表结构,并写出存、取以及删除消息对应的SQL语句

        设计交互协议,包括登录、发送消息、接收消息,提示:可参照HTTP restful,或者RedisMem***dprotocol

        加分项:对于需要及时推送的消息,采用何种方式实现,long pull还是push?分别有什么优缺点?

设计完整的数据库表结构,

用户表(userInfo

列名

数据类型

长度

是否主键

是否为空

备注

userID

varchar

20

用户ID

username

varchar

20

用户名

userPwd

varchar

20

密码

userStale

bit

1

登陆状态:0:离线,1:在线

信息表( sendMessage

列名

数据类型

长度

是否主键

是否为空

备注

sendUserID

varchar

20

发送端

receiveUserID

varchar

20

接收端

sendMessage

Varbinary

Max

发送的数据

sendData

varchar

20

发送消息的时间

isRead

bit

1

是否看过本信息。0:未看过 1:看过

 

交互协议

登录、发送消息、接收消息

使用 http 协议进行的请求 / 响应模式的消息交换,并使用 HTTP 方法: GET POST 设置与获得消息。

 

 

三,实现一个LRU(Least Recently Used) Cache

    要求:

    1 ,生成一个LRU ***,可存放n个任意object

        参考:NewLRUCache(n int)

    2 ,设置value,如果key原先存在,用value覆盖原始数据,否则新建;如果object的数量超过了n,则删除最老的数据

        参考:Set(key string, value object)

    3 ,根据key获取value,如果没有,则返回空

        参考:Get(key string) value

加分项:考虑多线程并发问题

说明:可以用任意语言或伪代码实现

class Entry {  

    Object value;//   

    string key;//   

}  

public class LRUCache {  

      

    private int ***Size;  

    private Hashtable<Object, Entry> nodes;// 缓存容器   

private int currentSize;  

      

    public LRUCache(int n) {  

        currentSize = 0;  

        ***Size = n;  

        nodes = new Hashtable<Object, Entry>(n);// 缓存容器   

    }  

   public void Set(key string, value object) {  

        // 如果 key 原先存在,用 value 覆盖原始数据,否则新建  

        Entry node = nodes.get(key);  

        if (node == null) {  

            // 如果 object 的数量超过了 n

            if (currentSize >= ***Size) {  

                nodes.remove(last.key);  

                removeLast();  

            } else {  

                currentSize++;  

            }             

            node = new Entry();  

        }  

        node.value = value;  

                moveToHead(node);  

            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;  

        }  

    }  

全部评论
已经笔试了?
点赞 回复 分享
发布于 2015-08-29 10:41
感谢分享,留在以后看
点赞 回复 分享
发布于 2015-08-29 23:31
服务端?
点赞 回复 分享
发布于 2015-09-02 23:14
这是现场笔试吗?
点赞 回复 分享
发布于 2015-09-03 15:43

相关推荐

点赞 评论 收藏
分享
10-25 00:32
香梨想要offer:感觉考研以后好好学 后面能乱杀,目前这简历有点难
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务