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

相关推荐

11-09 14:54
已编辑
华南农业大学 产品经理
大拿老师:这个简历,连手机号码和照片都没打码,那为什么关键要素求职职位就不写呢? 从上往下看,都没看出自己到底是产品经理的简历,还是电子硬件的简历? 这是一个大问题,当然,更大的问题是实习经历的描述是不对的 不要只是去写实习流程,陈平,怎么去开会?怎么去讨论? 面试问的是你的产品功能点,是怎么设计的?也就是要写项目的亮点,有什么功能?这个功能有什么难处?怎么去解决的? 实习流程大家都一样,没什么优势,也没有提问点,没有提问,你就不得分 另外,你要明确你投的是什么职位,如果投的是产品职位,你的项目经历写的全都是跟产品无关的,那你的简历就没用 你的面试官必然是一个资深的产品经理,他不会去问那些计算机类的编程项目 所以这种四不像的简历,在校招是大忌
点赞 评论 收藏
分享
喜欢走神的孤勇者练习时长两年半:爱华,信华,等华,黑华
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务