调查称iphone屏幕越大越好卖# PDA - 掌中宝
a*u
1 楼
首先感谢本版mitbbsfanfan的热情内推才能得到这个机会。
之前已经面过2轮拿到了on site,但最初面的那个组招满了。HR说换个组,要加一轮电
面。面试官是国人manager。
电面题目是system design, 设计Imessage. 具体点就是说 如果A 给 B 发一个
message, B如果分别在iphone和mac或其他apple设备上登录,这些设备都可以收到
message。message的数量可以很大,单个message本身也可以很大。
我system design问题准备不足,之前也没想到电面会考这个,说得磕磕巴巴。当时的
想法是先构造3个类,user(client),server,message。user之间通过server传递
message。user(client)有一个client用来接收收到的信息。如果同一个uer有多个设
备登录,这些设备可以在server端的user帐户里注册,然后server把信息分别发给每个
设备。
user类里面东西也没想太多,一个记录contacts的hashmap 一个message queue, send
,receive function。
message类里面就是sender and receiver的user id,还有一个Sting 表示text
面试官提问如果server 挂了怎么办? 言外之意是不用server这个类,如何实现通信。
这个问题问得我有点蒙,因为我觉得如果server挂了,A怎么才能知道B在几个设备上登
录?犹豫了一会儿,想到以前看过一个设计facebook news feed的题,应该是一个user
登录设备后,通知所有他的contacts,我登录了这个设备。
之前我想的事contacts的hashmap key是string代表名字,value是个int表示id就行了
,按现在的情况要单独设计一个联系人类,里面至少要存放哪些设备登录了。因为
contact也需要有user name, id这些东西,于是我傻B呵呵的把hashmap的 value改成
了user类。然后一想,不对啊,user累里面还有message queue呢,contacts不用这个
。电话那边应该是听不下去了,让我别在电脑上敲了,直接说就思路就行了。
然后又问,如果message很多超出你的memory怎么办。我说那就给每个message queue设
定一个size,超出就接受不了,同时提醒user清空收件箱。如果可以有server的话,
server给每个user在云端分配大一点的空间。还可以在mesage里面加date参数,收件箱
满了,删最早的。
接下来让我问问题,然后挂了。
希望板上各位大牛能否讨论一下这题。虽然这次挂了,但我还挺想把这个搞明白的。
之前已经面过2轮拿到了on site,但最初面的那个组招满了。HR说换个组,要加一轮电
面。面试官是国人manager。
电面题目是system design, 设计Imessage. 具体点就是说 如果A 给 B 发一个
message, B如果分别在iphone和mac或其他apple设备上登录,这些设备都可以收到
message。message的数量可以很大,单个message本身也可以很大。
我system design问题准备不足,之前也没想到电面会考这个,说得磕磕巴巴。当时的
想法是先构造3个类,user(client),server,message。user之间通过server传递
message。user(client)有一个client用来接收收到的信息。如果同一个uer有多个设
备登录,这些设备可以在server端的user帐户里注册,然后server把信息分别发给每个
设备。
user类里面东西也没想太多,一个记录contacts的hashmap 一个message queue, send
,receive function。
message类里面就是sender and receiver的user id,还有一个Sting 表示text
面试官提问如果server 挂了怎么办? 言外之意是不用server这个类,如何实现通信。
这个问题问得我有点蒙,因为我觉得如果server挂了,A怎么才能知道B在几个设备上登
录?犹豫了一会儿,想到以前看过一个设计facebook news feed的题,应该是一个user
登录设备后,通知所有他的contacts,我登录了这个设备。
之前我想的事contacts的hashmap key是string代表名字,value是个int表示id就行了
,按现在的情况要单独设计一个联系人类,里面至少要存放哪些设备登录了。因为
contact也需要有user name, id这些东西,于是我傻B呵呵的把hashmap的 value改成
了user类。然后一想,不对啊,user累里面还有message queue呢,contacts不用这个
。电话那边应该是听不下去了,让我别在电脑上敲了,直接说就思路就行了。
然后又问,如果message很多超出你的memory怎么办。我说那就给每个message queue设
定一个size,超出就接受不了,同时提醒user清空收件箱。如果可以有server的话,
server给每个user在云端分配大一点的空间。还可以在mesage里面加date参数,收件箱
满了,删最早的。
接下来让我问问题,然后挂了。
希望板上各位大牛能否讨论一下这题。虽然这次挂了,但我还挺想把这个搞明白的。