2014/04/29这是本人的第一篇博客。今天晚上就要回家了,所以想在回家之前把这两个月的找实习经历记录一下同时也总结一下自己不足之处。
3月初参加了2014腾讯广研班的笔试,笔试题目很广泛。因为自己是考研的所以对基础知识还是比较熟悉的。一个星期后通知面试。
面试一开始叫我写了3道程序题:链表逆转、怎么判断链表是否存在环以及环的位置和求二叉树的深度。由于题目简单我很顺利的写完了。
接着讨论了实验室的项目以及问了一些数据结构、操作系统方面的东西。
最后问我微信怎么实现消息从A传递到B。我当时就很常规的回答两种方法
1、A先把消息发到服务器在由服务器转交给B
2、A和B通过服务器建立连接,然后在自己的连接上发送消息而不经过服务器。
然后面试官告诉我说手机上的网络不好,第2种方法基本行不通。继续接着问我如果接收方不在线又该怎么解决?
我又瞎说了一通。说如果接收方B不在线,消息就保存在服务器上,服务器检测到接收方B一上线就把属于B的消息发给B。等我最后进了广研创新班才知道基本实现原理是:A把消息发到服务器,由接收方B主动向服务器请求是否有自己的消息。如果有就由服务器发给B。
最后讨论了笔试的最后一道题:怎么保证微信提供7*24小时的服务
笔试这道题乱答了一通。说什么分布式存储(我感觉这大家都知道啊)数据列连续存续等各种乱扯哎
其实微信是采用一种三机存储模型来实现可靠服务。
B和C认为自己是主机,只有真正的主机才能进行写入操作。如果数据写入到B机上则需要在B和C进行数据的同步操作实现B和C上保存的数据一致。可以实现同时读B和C数据。
A:仲裁机 决定B和C谁才是真正的主机。(反正现在也没怎么明白这是怎么回事额)
好吧面了差不多一个小时。一星期后就通知过了广研班。被分到了微信后台(后来才发现这才是我悲剧的开始)
后面的下次等我从家里回来再写额