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