前天跟班里几个同学到欢聚时代参加笔试,本来抱着试一试的心态,结果第二天就收到了一面通知,问了一下同去的那几个同学都说没有收到。
周一我10::10分赶到华工大酒店,我是10:30分那批的,签好到后就在座位上耐心的等,结果都11:15分了还没叫我名字,只好到前台问一下是否叫过了我没听到(其实本意就是想催一催),工作人员说会查一查,让我到外面再等一等,催一下果然起到了效果,过了几分钟就有工作人员叫我名字了。
进去后,面试官也没让自我介绍,直接就进入主题了,他用手机打开百度页面,输入搜索关键字,随着关键字的输入,下方有一个下拉列表显示预测搜索关键字,比如:输入广州,下拉列表会显示广州大学;广州海心沙等等。问实现这个功能用什么数据结构。当时我愣了一愣,一来就问这么高深的问题,我想了想说我会用字典树去实现,随后我大致描述了字典树与它的优点。这里感觉当时描述的不是很好,正确的做法应该是一边描述,一边用纸和笔详细的描述出来,这样可以加深面试官印象,也可以证明你是真的懂而不是一知半解的半桶水。
面试官问的第二题是:现在有15w的用户长连接你的服务器,问服务器怎样处理与用户信息的发送与接受。我就先跟面试官介绍了一下socket编程,快介绍完是面试官打断我说你这说的是针对一名用户,现有15w用户,怎么解决。我说:用多个线程,每个线程处理一名用户的请求。面试官:15w用户连接都加载到内存中,可以吗?我说:如果内存不够的话可以考虑多台服务器,然后根据用户的ip地址范围划分到多台服务器上进行处理。面试官:现假如只有一台服务器,一个线程,怎么处理。好吧,你赢了,只好回答不知道怎么处理,并让面试官解答一下怎么处理:将用户的ip地址与端口保存起来,将用户对服务器发起的请求添加到消息队列中,用多个线程来处理消息队列中的消息(根据保存下来的用户ip与端口返回给用户)。
第三题:两个管理员要访问数据库中职员的工资,若工资低于3000的加300工资,要求写出sql语句。数据库没学好,又不懂。面试官:主要是想问怎样防止两个人同时访问数据并同时对数据进行更改。我只记得给数据加锁,至于加锁语句我忘了。
随后面试官又问了两道笔试上的选择题,就说问完了,问我还有什么想问他的,全程也就10多分钟,我就知道没戏了。