Apr 20
4月7日星期六在武大国际软件学院参加的笔试。投的是软件开发工程师。
试卷是全英文的,20道多项选择题。这里是试题。
因为答错了要减分,所以不确定的就没有填。
本来不报什么希望的,没想到一个星期之后收到了面试通知。

这个星期一直在搞django。没怎么准备,也不知道准备什么。下午四点的面试,路上车子超级堵,差点迟到了。
到4点钟了,HRmm把我引到一个房间开始面试。
面试官挺没什么特别的,一上来让我自我介绍,我也不知道说什么,就说了些废话,学校,名字。
我这个还真是个木头。
他问:然后呢?
我回答:没有然后。

让我把简历拿出来,看着我的简历就说当时看到我的简历很简洁,就一张纸,也没有过多的说明,觉得我这个人挺特别的。
我说写多了也没什么用。
然后说我就是不太注重细节,原来我打印的简历上面联系地址占用了两行,字体也有点问题。
唉,匆忙打印的,也没注意那么多。

问我英文怎么样?我说阅读,收/回复邮件没问题,又问我六级多少分,真不好意思跟他说啊。
然后让我说几句英语,结结巴巴,说一句:I like sports。!!太丢人了。
他也没为难我,拿了张草稿纸就让我写个atoi()函数。
噼里啪啦写完了,想给他看,他让我仔细检查,一定要考虑完善。
之后在提醒写完善了正负号,溢出点问题。

问我知道了解OO不,我说没怎么用过C++,java。
讨厌C++,不过挺喜欢Python的,他也觉得python挺美的。

问我知不知道虚函数是什么东西?
C++,好久没看过了,真不知道虚函数是干什么的。他就知道了:我确实不会c++。

之后主要是针对简历上的东西问。
看到我本科在腾讯财付通实习过,就问了我做什么。我跟他说了是优化网站性能。然后他问我怎么优化的。
当时就是在学习那个网站的代码,找出瓶颈是在查询上面,主要就是优化SQL语句。

看我对操作系统有所研究,就说问个系统问题。
malloc函数调用什么?(本来是说new的,我说:new?他才改说malloc的)
我只知道好像是调用brk,他问我brk做了什么,我就不知道了。
他就开始教育我了:不能只知道几个命令,会用,还要知道原理。
我也知道啊,原理学了不怎么用容易忘,对于现阶段的我,原理知道个大概就可以了。

又问了我web服务器怎么实现的。
我就说在linux下面用c语言socket实现的,实现了GET,POST方法,CGI和fastCGI。
他问我怎么提高性能,我说改进并发模型。他问我怎么改进。
我就用多进程,多线程,进程池,epoll等。

最后聊到python,我就说我正在用django写一个网站,顺便学习python。
是一个预约网站,在一个时间段访问量很大,大多数时候没什么人访问(类似12306)。他就问我怎么解决这个问题,
我就说用分两个方面1.服务器配置2.网站程序设计
网站程序方面:
1.使用ajax避免重复拉取数据。
2.优化数据库设计
本来想说cache,实在想不出cache什么原理,就没说了。
最后我说看过coolshell写过一篇分析这个问题的文章。然后他说他也看过,问我平时上网都看些什么。
我说看些牛人的博客。比如coolshell,刘未鹏,Matrix67等。听到Matrix67,他来劲了,说你也知道他?囧
那考你个数据结构的题:怎么从一个数组中去除重复的项?
我想了想,想到了
1.排序
2.hash
3.bitmap
不知道为什么,觉得hash不怎么好用,bitmap太占用空间,就没跟他说了(有点懊悔,至少也该跟面试官司交流下)。
我一直在想其它O(n)的方法,不占用太多空间。
最后实在想不出来,就跟他说了边排序,边判断。(比如用选择排序)
他问我时间复杂度,我就说等于排序的时间复杂度。
让我写出来代码,当时我真不想写代码,就说写不出来,最后就没写了。

最后好像HR有什么事,他让我等5分钟,不一会HRmm进来说,面试结束了,晚上会通知结果。

之间看过微软面试的一些有意思的题目,本来很期待有这样的题目的。
结果根本就没有,由于面试意外中止,也没有机会向面试官求解。
对于此次面试,难说满意 。
面试官问的所有问题,我几乎都没有进行深入的分析,只是回答了表面的东西。
理论不行,实践也不行,差距很大啊!
看来还是平时还是要多总结
一个项目做完了,要及时总结收获。