其实早就找完工作了,只是最近都没有来实验室,所以没有将自己的面试笔试经历给记下来,现在只能靠自己的记忆来回忆一下了!O(∩_∩)O~。从哪儿说起呢?好吧从我开始被鄙视的时候开始。
[找实习时候的经历]
一开始不是找工作而是找暑假的实习,当时来的公司还蛮多的,而我只参加了三家(百度、腾讯、华为),百度和华为应聘的岗位是云计算,而腾讯应聘的是后台开发;
百度的笔试题目比较灵活,所以一般只是看书是没法考高的,不过实习的题目跟校招时的题目不一样,实习题目偏向于知识面,即我的记忆是六个题目:
① 列举两种你常用的设计模式,说明各自的优缺点、使用情况,最好有伪代码说明?
② extern "C" 的意义,主要解决什么问题?
③ "TIME_WAIT" 状态表示什么,这个状态存在的优缺点(或者必要性吧!不是很清楚了) ?
④ 假设现在有N个文件,这N个文件在编译时相互有依赖,设计一个算法,解决它们的编译顺序(题目中注明了没有环,所以可以不用考虑环的事情),说明思路并写伪代码;还有两个题目不是很记得了,好像有一个是设计一个大型系统的,实现它的快速查找删除等操作。 其实实习时候的题目主要是面比较广,很多书上都提到这些问题(后面我会再发一篇,“常出的笔试面试题目”会提到这些问题的答案),当时没有复习什么,所以去考试考的灰头土脸,回来直接玩了几把游戏,消消怒气,O(∩_∩)O~;还好的是后来接到面试通知(听说考28分就有面试资格,O(∩_∩)O~)。
百度的面试官很nice,真的感觉还是大公司的面试官比较正规,面试了差不多两个小时,由于研究生阶段研究是云存储方面的东西,所以侃了很久的项目,最后跟他讨论出了很多问题,羞死了,自己做的东西都被他给整的一无是处,接着就是50分钟的做题吧!好像做了5个题目;
① 假如有100个不相同的数,比如从1到100,怎样使用10次取出其中的10个不同的数字,要求每个数取出的概率一样(一开始没有说10次,所以我说,使用一个random函数,以时间为种子来取,当取出一个时,做标记,下次再取到这个数时,重新取一次;然后他就说了如果只能够取10次怎么办?一开始我想到了如果取到重复的就取下一个没有被取到的相邻元素,但是我在计算概率时搞错了,觉得这样的方案概率不相同,所以放弃了,一直陷在怎么让每个数被取到的概率一样;实际上“取到重复的就取下一个没有被取到的相邻元素”使得每个元素取到的概率是一样的。好吧!我又一次败给了数学);
② 假如现在有一个队列,有很多的进程往队列中放入数据,同时有很多进程取出数据,注意没有标明某个数据一定要某个进程取出,只要求所有进程同步的取数据(我说用锁或者其他同步机制,他说别急,我还没有说完呢,呵呵,锁的效率很低,当一个进程不能得到资源时,它必须阻塞,这样的效率太低,同时现在要求不准用已经存在的同步机制,自己设计一种);我顿时无语了,想了很久都没有一点思路,然后面试官开始开到我,跟我讲如果现在有一个中原子操作,它是原子性如(p, q, r)这样的,p是操作,q是参数,r是条件,问我如何设计,当时自己脑子已经很热了,完全没有想出来的可能性,面试官看我已经挠头了,他说那这个题目你回去想想,我们做下一个题目。
③ 如果现在有很多文件,每个文件都很大,比如100M,而内存只有5M,每个文件中的内容都是下面这样的
W1 3
W2 2
W3 1
这样的,W1 W2 W3 是已经排好序的关键字,而后面跟有一个数字,表示该关键字数量,将这些文件合并,并按关键字有序排序,同一个关键字的数量相加。
我给他说了基本的外排序方法,他叫我将具体的细节讲讲,我就给他讲讲了,中间有很多地方他提示了,最后问我还有其他方法嘛,我说可以用hash做,他又问我hash怎么做,我说这得考虑考虑,O(∩_∩)O~,心里没底啊!不敢随便说。实际上这个题目有很多方法的,很多书上也讲过,只是自己当前那个时候根本就没有看什么书,所以又被…;
还有几个题目不记得了,但是好像自己都做的不怎么样,最后走的时候看到自己考试的分数,45分,还是蛮好的,心里安慰了一下,走出他的房间时,心里已经不再那么紧张了;很淡然,知道了自己很差很差,基础一点都不好。走出来已经11点20了,11点40还有腾讯的面试,还好的是在同一个酒店,O(∩_∩)O~;
最后说一下,百度的面试比较正规,我有同学面完百度的三面,整个三面下来,差不多五个多小时的面试过程,面试官不是挑你不会的问,而是挑你会的问,他们会尽量去了解你的能力、技术、特长等,听说百度是向google学的面试,所以应该来说还是比较nice的。
腾讯的笔试题目比较基础,面特别的广泛,从操作系统、数据结构、数据库、C、C++、网络;实习考试题目和校招考试题目没有太大的区别,都是差不多的,所以基础很重要很重要,只要你基础好,差不多都能够进面试。当时我自己投了一个后台开发,同学有内推,又内推(听说内推不用考试,可以直接面试,但是我还是去考试了,而且不知道是什么岗位)了一个,直到面试的时候我才知道是什么岗位。
由于百度腾讯在同一个酒店,而我刚好安排在上午,所以从百度面试结束后,我很淡定的去了腾讯,以为面试都是这样的,所以已经做好被鄙视的准备了,可是这次我又不淡定了,腾讯的面试和百度的完全不同;面试官是校友,不过不是我那个实验室的,O(∩_∩)O~,他是搞流媒体方面的,我完全不懂,所以面试过程我一头雾水,不过还是有一些基本的问题,叫我写一个双链表中删除一个元素和加入一个元素的程序,一开始在那里建链表,实在不想建,我就问他可不可以假设已经存在了,他说可以,呵呵,糗大了。写完了,他稍微看了下,就问下一个问题了,看到我简历中熟悉TCP/IP,就问我网络中的定时器种类,因为看过TCP/IP详解,所以我说有四种,具体哪四种自己有点忘了,只记得其中的两种,链路定时器,报文定时器。另外两种忘了。又问QQ的那种聊天是什么连接的,我说是UDP,我说如果不是UDP的话,那么腾讯的服务器将会承受很大的压力,一个人可以跟那么多人聊天,而同时在使用QQ的人又上亿,所以我想都没想就说了UDP,他又问我,那么UDP是面向无连接的对吧!数据报的顺序是不定的,可能会经常出现你跟别人聊天,后说的话先出现,先说的话后出现吧?? 呵呵,我又错了,呵呵,我反问那么服务器的压力应该很大啊!他说这不是你关心的事,这是我们腾讯公司的事情。走的时候他说,你要不要去面试服务器后台啊,我说算了!可能是自己心虚吧,感觉自己的基础不行,不想这样一直被鄙视,就放弃了。
华为没有笔试,直接面试,呵呵;华为面试可能是我最差的了,我本来面试的是云计算的,结果问我选什么语言时,由于当时没怎么看C++,所以选了C方面的面试,悲剧从此刻开始就埋下了;和同学在大厅里面坐了2个小时,才到我们,人那叫一个爆满,呵呵,我进去后,面试官叫我自我介绍,吧唧吧唧的把自己给介绍了一下,他对云存储以及云计算不感兴趣,只问了一句,你对云计算如何看,我正准备给他高谈阔论一翻,正当我说的起劲时,他说我们还是来说说其他的吧!呵呵,然后就看到我简历上提到自己大学时参加过机器人比赛,就问我们当时是个什么情况,我把比赛、板子、操作系统UCOS、移植、写巡线代码,以及传感器方面的东西说了说,他说你比较下ARM板和51板的区别?我说ARM板位数更多,处理能力更强,他就问那么ARM板和普通PC机的CPU比,它们的区别?我说那么PC机的CPU功能更强,处理位数更多。他就问那么PC机的CPU和51板的区别呢?尼玛,我已经不懂什么意思了,我直接说我不知道。然后就问我什么事实时操作系统?怎么样衡量实时操作系统且保证其实时性?我给他说了几个实时操作系统的性质,然后就OVER了,后面问我一个普通函数和inline函数的区别以及与宏的区别?什么情况下用宏?什么情况下用inline函数?为什么不把所有函数都定义为inline函数?我当时只知道inline函数是一个直接将代码拷到出现的地方,并不了解很多细节,所以答的很不好!最后走的时候,那么面试官直接跟我说你还没有达到我们华为软件开发工程师的要求,你可以回去了!O(∩_∩)O~。
这是找实习时,面试的三家公司,感觉自己的基础比较不靠谱,所以都是一面的时候就被刷掉了,而且是在我意料之中的,所以我后面就没有去找了,开始准备看书了,本准备好好的看几个月的书,哪知道还是没怎么看成书,一个是自己有篇论文要发表,另外一个是自己觉得很多书要看,都不知道怎么看,而且觉得自己想往云计算方向走,所以暑假和之前的两个月都花在看hadoop的开源代码了,而其间自己的JAVA不是很懂,所以又回头去看JAVA,哎,反正瞎忙,没有忙到自己想要的效果。
[校招经历]
转眼又开学了,自己很多书没有看。因为9月份来的公司少一些,所以开始看C++书籍、设计模式、算法导论、面试宝典、网络编程、TCP/IP等一些书,不过时间比较紧,而且那个时候华为还来搅局,中间弄了好几次面试和上机。从8月份底到10月份底,两个月的时间,来了很多公司,笔试面试的公司都记不住有多少了,但是被鄙视的公司到真的很多,所以看书才是王道。像百度、网易、淘宝、阿里云、360都没有给我面试机会,其中百度和360是我很想去面试的公司,因为我对云计算的开源hadoop比较了解,而这两家公司很需要这方面的人,但是没有办法啊!不给就是不给啊。还是说说给我面试机会的公司吧!
华为
我真的不是很想说华为的不是,但是它确实当时让我很蛋疼,之前实验室的师兄蛮多去的是这个公司,同时华为在华科做的“广告”也比较多,呵呵,由于实习(对了,说一下这个实习,听说在实习时的招聘有四面,其中而面试群面,如果是群面被刷掉的就直接加入黑名单,呵呵,比较吓人,还是谨慎点,当时我还在窃喜自己没有进入二面,呵呵)时一面就被刷掉了,所以八月底时有一次座谈会,我直接就去了,不管那么多了(当时自己很多书都没有看 ,所以心里比较没有底),面的云计算岗位;由于面试云计算的面试官很少,就两个人,所以等了很久,一开始有个人把我叫过去面我,结果他不是弄云计算的,看完我的简历后,就说要不你面云计算吧!这样更好一点,问我介不介意,我说行吧,又出去等,等了好久后终于轮到我了,结果自我介绍完了后,他就问了我两个问题,关系数据库和BigTable之间的区别? 和 C与C++的区别,我给他吧唧吧唧完了后,就没有问其他问题了,直接让我进二面,我尼玛怎么这么简单,前后没有到10分钟,我看到其他面试官面的童鞋都面了30、40分钟,特别是跟我一起的哥们,他面了好久,让他写了3个程序。呵呵。在等二面时已经到12点了,华为公司给我们提供了KFC,呵呵,还不错。不让我们饿着。接着等到下午快三点时,到我二面了,二面居然不是面试,是做性格测试,一开始做性格测试时觉得蛮简单的,随便选,等过了10几个后,你会发现之前做的题目不管你怎么选,后面都有题目是没有答案的,即跟你之前选的矛盾,尼玛,这是干什么啊!于是我按自己的性格来选,不管什么好什么坏,反正符合自己就OK了,所以我很快就做完了,如果你一直在那里琢磨怎么选的话,可能你会做很久,更变态的时,居然拿这个来刷人,哎,华为呀!O(∩_∩)O~;做完性格测试后就等三面了,三面同样等了很久,因为云计算的面试官就两个人,哎,每次都是等到蛋碎了才等到自己。三面面试官没有问技术问题,叫我自我介绍时,由于方向相同而他们急需要这方面的人,所以什么都没有问,就叫我把周围搞云的同学给推荐过去,还给我一个号码,搞得我顿时晕了。
华为后面让我上三次机,每次题目都简单得让大家不想做,全是计算机国家二级考试的题目,放心都是if…else能够搞定的问题。呵呵,只是提交比较蛋疼,第一次我就是因为提交没有成功,所以0分,第二次叫我去补考,我说我之前做过啊,他们说那你就不用做了,我还是跑了一趟,结果那个上机的hr跟我说那你不用上机了,我满意的回来了,过了一段时间又打电话给我说,你还是要上机,尼玛,这次我二话没有说,直接去了。第一次的题目是将一个八位数的第3位置0,第5位置1,尼玛直接两行代码搞定;第三次上机的题目是百分制输出ABCDE的那个题,谭浩强的C语言书上有;
中兴
中兴我就不多说了,反正我们院里好像是没有一个人去了中兴,中兴一来先面试,技术面,两个人面一个,我被面的体无完肤啊,前面一个人托了很久的时间,所以又等蛮久的,还好的是比较华为等的更少,面试过程中问问题差不多都是面试宝典上的,最后问了一个我郁闷的问题,说共享内存底层怎么实现的,我说支支吾吾的说不上来,然后说你可以走了,当天居然收到第二天考试的通知,尼玛,还有公司先面试再考试!结果考试被牛逼,选择题差不多一半是JAVA的,又没有分语言,还好之前暑假学hadoop时,补充过一点JAVA的知识,做得一般般。但是对于有些没怎么看过java的童鞋来说,那就是坑爹啊!O(∩_∩)O~
考试完了后面就接到最后hr面的通知(我想只要是华科的学生,应该没有没有收到的吧!呵呵),还是两个人面一个人,前面聊的蛮欢畅的,聊什么家庭情况,工作地点,自己最挑战的一件事情或者是感触最什么的事情。最后要走的时候,有一个英语口语测试,因为我是下午面试的,所以之前问过上午面试的室友,英语弄什么,说是自我介绍和介绍下武汉两个话题,我准备了一上午,结果那个面试官,我们来做一下英语口语测试吧!叫什么呢!翻着我的简历,最后看到我的简历中写了家庭成员中只写了我爸,就说你介绍下你对你爸爸的影像,尼玛,顿时什么都不知道了,支支吾吾说了五六句,实在说不下去了,我直接说我英文很烂,不怎么会说,两个面试官直接:-D了,呵呵!然后就回去了,因为中兴面试还错过了联发科的考试。
迅雷
迅雷的笔试我就不说了,题目简单,但是考试却很蛋疼,非得让c++和Java的人分开做,一开始大家随便坐着,他们非得让我们一个Java人旁边坐四个C++的,哎搞得大家心情都不好,后面又说可以考3个多小时,以为题目很多,很难,结果不多也不难,都是基础题目,但是好像要求考的很高的才能够进入面试,反正我看到的面试名单中只有40多人,所以还是基础啊!
本来不想去迅雷面试的,因为那天刚好华为发offer协议书,所以去华为看看了,我本来是下午3:20去迅雷面试的,从华为出来都已经3:30了,所以本来没有打算去的,可是那边还是打电话来说,没有关系,可以过去,他们会弄到比较晚,结果确实弄到了晚上9点多。迅雷的面试有三面,第一面是技术面,第二面是hr+技术面,第三面试hr群面,呵呵,第一次碰到hr群面,第一面面了蛮久的,面我的是一个年轻的小伙,可能比我大一点点,他比较友好,反正就不会刁难你,什么都问了,从堆排序(让我写堆排序,讲堆排序的原理)、进程间通信、线程间同步、Linux下面的一些基本知识、C++中的多态虚函数;同时问了很多题目,当创建一个进程时,系统给分配了那些空间资源、各个空间资源的分布;大数据处理、服务器之间的一些通信等等,反正就是问了很多基础的技术问题,不过我感觉他的基础也不是很好,有些东西他自己也不是很懂,而且可能没有怎么写过代码,代码写的比较缭乱,写代码的期间我们蛮开心的聊了一些基本的东西,感觉很好,人比较nice,就像朋友聊天一样。一面出来后,叫我到一个房间里面等,说马上二面,我说效率怎么这么高啊!结果到了那个房间后,里面有七八个人在等面试,还好的是都是些测试的,研发就两个,所以很快就到我了,面试官直接把我带到了下面一层,我以为是带我去的那个人面我,结果不是,里面有一个人,直接叫那个人给我面,二面我感觉很的很惨,问了GDB调试多线程的一些东西(没有弄过,虽然用过GDB,但是也没有调试过多线程), 问静态函数中怎么访问非静态成员变量(我说,如果只需要使用成员变量的值的话,可以直接使用一个函数返回该成员变量的值,结果面试官说不是,呵呵,需要直接使用,我说静态成员函数只能访问全局变量、静态成员变量以及自己的形参,怎么可能访问非静态的成员变量呢?面试官笑而不语;后面我才知道,就是那个形参可以解决问题,形参中传入非静态成员变量的引用就OK了!O(∩_∩)O~);GFS的基本原理,一开始我听成了JFS,我说我不会,他说啊?那你还敢写在简历上,我说原来你说的是GFS啊!这个懂,呵呵,给他吧唧吧唧的聊了蛮多的,但是时间比较短,因为都没有讲到底层去,所以比较快的说完了,最后两个生活问题,问我有没有女朋友,我说有,在重庆,他又问,那你去深圳,你女朋友也去吗?我说是的,呵呵!平常爱好,我说喜欢篮球……;结果他说篮球里面,你喜欢得分还是传球?我说传球;尼玛都什么问题啊!O(∩_∩)O~;二面结束后,我就直接回去了,已经八点了,看了一下他们的工作人员,工作到八点还没有饭吃,而且他们好像要自己去吃,不能报销,我听到这些,都有点不敢相信,呵呵,一个公司出来招聘,毕竟是门面啊!因为当时二面我面的不好,所以觉得可能没有什么戏,自己心里也没有什么难受的,可能这些琐碎的东西对我还是有点影响吧,结果晚上睡觉的时候,迅雷的hr又给我发一条短信通知第二天面试,我以为他们发错了,直接回了一条“是不是发错了,我今天面试过了,这不是第三面吧?”,结果那位MM还是回了一条是最后一面,我苦笑不得啊!面的那么烂还给我三面的机会,第二天跟同学过去了,结果才发现时hr群面,晕死,从来就没有弄群面,还是hr群面,呵呵!
结果群面的面试官就是那天监考的时候,要求我们那样坐位置的MM,我对她没有什么好感,所以比较排斥她,还好的是和我一起群面的是三个武大的,一个武汉科技的,就我一个华科的,还记得三个问题,第一个是大家对迅雷的看法:结果尼玛一个个在那里说迅雷的好,什么从接触电脑开始,就天天用迅雷,经常在迅雷上看电影等等,受不了了,到我的时候,我直接说迅雷以前不是很好,现在由于P2P\分布式传输远的技术成熟,导致它现在在下载这一块占据了很大的份额;但是速度确实改善了很多;第二个问题叫大家自己说说对自己比较有影响力的事情,我第一个说的,说的是自己一件往事,对自己后来的路影响很深,结果另外一个哥们,直接跟我说的一样,就是改了一下时间,把高中改成了初中,郁闷死了!O(∩_∩)O~;第三个问题大家对前面面试官的影响,结果又是一个个说的面试官跟自己的老爹一样的对自己,很好;到我时,我直接说,人很nice,我承认,但是一面的面试官技术不是很厉害,有些基本的问题他自己没有注意到,二面的面试官应该做过很久的技术,问的问题都是有点深度[实际上,如果自己多注意,还是能够注意到这些问题的];结果其他四个人都看着我;搞得我以为说错什么了!最后叫我们问一些问题了,问的问题都是一些基本的问题,那个MM说的都是工作环境轻松,工资又竞争力等,可是后来才听说,迅雷真尼玛累;群面完了后,她单独给每个人面了两分钟,主要是了解大家的三方什么时候能够拿到,什么样工资期望,等等。
腾讯
腾讯的笔试,上面说过了,都是基础的东西,蛋疼的是要跑到武大去考,而且教室很难找。不知道是巧合还是百度和腾讯两家企业在相互掐脖子,将笔试时间安排在同一天,上午笔试完百度,心都凉了,还要我们去笔试腾讯,搞得烦死了!直到考完大家才比较欢笑些,因为一班的人因为一个考试而差不多聚到了一起,蛮开心的吧!呵呵;当天晚上3点多就收到了面试通知,这效率,呵呵,你懂的。根据考场(网上贴出来的)来看,武汉有6000多人参加腾讯的笔试;这个量是不是有点多啊!呵呵。结果那天收到面试通知时,因为在睡觉,所以一脚将手机踢下床了,结果手机坏了,悲剧死了!关键时刻还手机摔坏了!只能借同学的手机。
腾讯的面试有三面,一面二面都是技术面,三面是hr面,不知道我是不是人品问题,所以第二面不是技术面;
先说第一面吧,本来报的是后台开发,不知道什么情况被调到游戏后台了,搞得我很紧张;一面面试官蛮好,先是让我自我介绍,完了以后,跟我聊了下P2P和分布式的东西,差不多有个30分钟吧,然后就是做了两个题目,第一题目是判断链表是不是有环,这个题目是经典中经典的题目啊!我一开始用铅笔画了画图,想了想,然后就开始写代码了,由于是铅笔,所以写错了可以擦掉重新写,这样就不会涂涂画画的了,所以代码还是蛮整洁的,还加了一些注释,写完后,面试官让我讲了讲原理,然后问我如果只有一个节点,同时它的指针指向了自己,这种情况怎么样,我按自己的代码检查一遍,结果把这种情况算成了环,我说,哎呀,这种情况还是没有考虑到,按我的代码应该会把它判断成环啊(当时可能脑袋短路,实际上这种情况就是有环,而我当时以为那不应该是环),后来我一想不对,这算不算环啊?我问面试官时,他笑了笑,没有回到了,直接过了。第二个题目是一般的BBS上都需要注册用户名,而注册时需要检查用户名是否唯一,怎么设计后面的架构,让我想想,给出我的设计。一开始我吓到了,还以为是BBS中不懂的东西,还好是检查一个字符串的问题,这才将心放回肚子中了,想了想,设计了两种数据结构:hash表和键树(trie树);对于hash表来说,可以快速的将字符串找到,但是会出现误判的可能性,出现误判时需要进一步的检查;而键树不会有误判,但是它的查找呢需要更多的时间,同时如果很多用户名没有共同的前缀的话,那么会浪费很多空间,可能对于有限的内存来说,这样会负担不起。然后面试官又问有没有两全的办法,我考虑一会后,就说用Bloom Filter + Trie树来解决,Bloom的特点可以快速的判断一个字符串是否存在,如果不存在的话,一次就能够发现,而如果存在的话,可以通过trie树来解决是否真的存在[我觉得应该是这个问题的解决方案征服了面试官]。后面就是问一些基本的问题了,比如网络中的TCP和UDP的区别,IO复用(select、poll、epoll)、数据库(大部分不会,还好的是他就只问了索引的优缺点,我给他吧唧吧唧了一下)、linux命令(有些没有答上来,如内存使用率查看和cpu使用率查看命令),C++(多态、模板的定义和实现放在不同文件中时出现什么编译问题?)、进程通信和线程同步(差不多这些问题肯定是会问的);最后要走了的时候,面试官给我总结了一下,说我基础还可以(我晕死,呵呵),但是代码量应该不是很多,需要多动动手;问我什么时候论文答辩,我说是12月份中旬以后,他叫我论文答辩完了以后要去看一些书(UNIX网络编程 两卷、 linux命令工具书、linux编程艺术等等);当时搞得我一下愣了,怎么直接叫我去看什么书了,难道他要我了,O(∩_∩)O~,只是当时不敢说,呵呵。对了末尾,他跟我说他们是游戏后台开发,问我有没有兴趣?我说我不知道游戏后台跟一般的那种后台有什么不同,他就给吧唧吧唧了一些游戏后台跟一般后台的不同,让我对游戏有一些了解,最后我说应该会有兴趣。
经过了一面后,我就很淡定的得二面了,因为我知道一面应该没有什么问题,那么个面试官对我蛮好的,果然二面通知来了,我以为是技术面,所以也就没有很在意,因为同时在面淘米,所以没有什么时间准备,也就只能这样了,二面面试官很年轻,可能比我们大个4、5岁吧,但是听说,腾讯一面是主管,二面是项目经理,这么年轻的项目经理,搞得我很惊讶,呵呵,跟他聊了很久,一直都在笑,他开头就直接说,因为考试和一面已经将技术面面过了,所以我们今天不是技术面,叫我不要紧张,然后就是自我介绍、问了一个开放题,好像是这样的题目,如果现在有两个人在踢实况,需要将这个实况呢转播给亿万级的用户观看,然后用户有在现场看的感受?问我怎么做到,我想了蛮久,跟他说,使用多播,并且让客户给客户传数据报,他说可能出现这种情况,每个客户都可能在线一会,然后就掉线,客户不能保证给其他客户传数据报,那我说架构成一个分布式的服务器传送网,让服务器同连接到自身上的客户进行通信,而这些服务器是一个对等的关系;他说大致框架是这样,但是有很多细节问题,问我能不能想到?我说想不到,他就说没有什么关系,实际上这种题目出现时,不是一个人能够解决的,所以不知道也正常,实际上QQ内部出现这样的问题时也是很多人在一起讨论,然后细节的问题需要有更多的人去交流,搞得我郁闷死了!呵呵,然后就不在问技术问题了,问了一些学校生活、工作地点、然后就是我简历,将我的简历中所有的东西都给问了一边,然后是试卷上一些东西,呵呵,对我简历上的项目、论文、专利都给问了,什么连一些竞赛的东西都问到了。人还是蛮nice的,同时也给我介绍了一些游戏的东西,因为同一面面试官一样问我有没有兴趣,关键点是最后走的时候,他居然问了一个很蛋疼的问题,他说假如腾讯不录用我,我会怎么办?我是了几个字,继续找工作;然后就没有了,气氛很尴尬,然后他就说OK,今天到这里,搞得我以为没有戏了,站起来跟他握了握手就走了。
结果周围大部分人都收到腾讯的三面时,我纠结一晚上,实在耐不住了,去腾讯住的酒店找hr问个清楚,我觉得不能因为那一个问题就把我刷了,结果他们还不在那个酒店了,还好的是在另外一个酒店,不太远,直接去找了hr,hr帮我查了一下,说三面名单里面有我的名字,只是还没有通知,倒是我哥们,叫我问,他不在三面名单中,结果我把着告诉他了,他纠结了一天,我愧疚死了;
腾讯三面是hr面,没有问一个技术问题,问的都是性格、家里情况、工作地点问题、对自己最影响深刻的事情、职业规划等,这些都是正规的hr面试问题,所以我对这个就不多说了。我觉得只要按自己的意愿来就OK 了!
淘米
淘米公司是做儿童游戏的,但是大家好像都不是很在意,由于它的一些员工都是从腾讯出来的,所以他们的文化和工作情况都和腾讯差不多,在面腾讯的过程中,二面面试官问我面了那些公司,我就跟他说了说淘米,淘米的笔试还好,我考的不怎么好,有一些是找规律的题目还有一些是技巧题,自己没有怎么准备这方面,所以考的不怎么好,还好的是进入面试了,一面面试官不算和蔼,但是还好就是不刁难,问的范围很广,但是都是点到为止,不会太深的问你,就一个问题把我给问到了,说子网穿越是怎么回事,一开始被那个名字给吓到了,之前虽然听说过,但是自己没有怎么去查过,所以不是很清楚,直接就说不知道,后来要走的时候,我问他子网穿越是什么,他给我吧唧吧唧了一下,我说这不是路由器的功能嘛,他说是啊,但是它叫子网穿越,顿时,我有种想骂人的冲动,O(∩_∩)O~,还好的是,我忍住了。
淘米公司以前是只有一面技术面,然后就直接hr面,今天特殊直接从上海调了几个人过来面技术面二面,尼玛,结果我就挂在了二面上,二面面试官问一些很刁难的问题,他问我C和C++的区别,说五条,我直接将C++的一些特性(多态、模板、封装、函数重载等)讲了以后,他说这些都只算一条,后面我就不知道怎么说了,我说我就知道这一条,实际上还有一条,C++易用那种大型开发架构、C适合那种底层开发,高效便捷。然后就没有再想了。感觉这个问题答的很不好,华为面试官问我时,答的答案淘米的面试官完全不认同,所以自己觉得还是自己不够;后面又问了一个问题,说淘米有服务器供客户玩游戏,同时有其他一批服务器来分析用户的行为模型,要求我使用自己已有的知识和云计算的一些东西来建立这个行为模型分析架构,结果我把它简简单单的讲讲了,他完全不同意,一点都觉不靠谱,就跟我说你可以走了,哎,我已经知道没戏了,所以就直接走了!
不过淘米公司确实是不错的公司,工资还行,还有股票,同时它文化同腾讯是一样的,轻松一些,公司小一些,发展很好;我们班上倒是拿到了淘米的四五个offer,不过好像只有两个人。感觉还是可以的。
[面试总结]
面试笔试了这多公司,我对自己的评价就是笔试能力太低,面试能力一般,面试成功率也一般,实际上我还面试了一些公司,像阿里巴巴、搜狐、创新工场等,都没有过一面,还是感觉自己不怎么对口,所以比较草率就直接over了; 而直接没有给面试机会的倒是有蛮多的,像百度、阿里云、淘宝、360、网易、amazon、IGT、恒生;没有参加笔试的公司就更多了,像网易游戏、西山居、完美世界、微策略、google、微软、吉比特、多玩、盛大等,实际上很多好公司,我都没有面试资格,这些公司的发展以及工资待遇给的都很好,但是我觉得择业还是要注意一些问题:
① 平台
找工作,实际上是给自己找一个平台,平台自身的发展潜力是很重要的,所以对于各个公司需要先了解一些;公司的发展近几年这么样,公司老总准备以后怎么发展等,都可以提前了解一些;
② 方向
公司是一个平台,平台的发展一般你一个人难以决定,所以选好了一些企业后,要开始寻找自己的方向,就是自己以后想从事的方向,比如互联网的后台、嵌入式开发、移动终端等等,这要看自己喜欢在那个行业里面发展,没有绝对的好坏,只要自己想干,干好了,哪一行都牛逼。像我在面试阿里巴巴时,我直接面了五分钟就出来了,直接跟面试官说我不适合,因为面的那个面试是做web方面的,本来想叫他换个人面的,他不肯,所以我就直接说那我可能不适合你们的这个岗位就直接走了,我觉得还是要做自己喜欢的事情,不然跟你offer,你也可能不敢去啊!
③ 待遇以及工作地点
我感觉这个真不应该成为刚出校门娃子们择业的一个问题,特别是地点;当然有些人还是对地方很敏感的,这也是没有办法的。各人看自己的情况定吧。
[准备工作]
好吧!既然写到了这里,我就再啰嗦一下,怎么去准备,由于我进的互联网公司,是服务器后台开发,所以对于其他方向可能就不能点到那么多了;
主要要准备以下一些东西:简历(中英文两种) 、自我介绍、面试技巧以及知识复习(最重要)
简历的话,主要要写得真实,也就是简历上的东西要怎么问都问不到你,对于简历上的东西,你要狠熟悉狠熟悉,如果你不懂,那你就不要往上写,往上写反而别人认为你不诚实,可以将做的一些项目写得好一些,比如自己的职责、做的事情以及在校园内的一些工作或获奖情况;外企很看重对自己的评价;反正就是这些;
自我介绍:几乎面试都上来自我介绍,对于自我介绍呢,我觉得没有必要大段大段的讲项目,寥寥的6-7句话概括一下自己,对于做过的项目可以多两句,说说自己的性格爱好、求职意向等。
面试技巧:实际上也没有什么面试技巧,我觉得自己不懂的就不要装懂,万一面试官直接往下问会更惨,不懂不要紧,毕竟人不是万能的,不能什么都知道,是吧!所以我的所有面试过程中,我不懂的就直接说了不懂,比如问到数据库方面的问题,我直接就说用的很少,知道的也比较少,一般nice的面试官不会再往下问,不用面对那种很尴尬的问题。面试过程中,微笑还是不要收,可以多笑笑,同时不要太有畏惧感,直接当成是朋友之间的聊天就OK了,实际上当你把什么都放开的去聊问题,聊项目的时候,可能你们之间已经在心灵上达成一致了,最少面试感觉你很好相处,印象分蛮好的;搞IT的对于着装就不用那么隆重了,像我们去找工作都没有穿正装,一般穿得阳光点就OK了!面试题一般都有陷阱或者是简单的方法,对于有陷阱的一定要多个心眼,而对于有简单方法的,不用那么着急这要简单方法,可以跟面试官讨论,如果我做的话,最笨的方法开始,然后一步步的改进,面试面的主要是你这个人有没有自己思考问题,而不是一上来就知道答案好,面试官希望能从面试者身上看到那种可以带出来的东西,所以一个具体的题目你还是一开始不要那么坚决的否定,而是要好好考虑考虑再说。大概就是这些了;
知识复习(最重要):实际上IT行业的童鞋,找工作都有个共同的事情,那就是技术、知识;这些知识是没法靠其他来代替的,只能实打实的去复习;主要有:算法(算法导论)与数据结构(链表、字符串、各种树、图稍微少一些、hash表、bloom filter等),操作系统(进程、线程、作业调度算法、磁盘调度算法、分页与分段机制、PV操作等)、计算机网络(TCP/IP详解1,2 UNIX网络编程1,2 UNIX 环境高级编程 )、语言(C语言的话,对底层的东西要比较透,C++的话需要对C++的一些概念很清楚,比如多态、模板、STL、函数重载、虚函数、纯虚函数、各种继承、特别是虚继承、const关键字、static关键字等等)、设计模式、Linux下的一些命令和API、数据库;如果你能够了解一些内核的东西,那么无疑你的筹码就更好了;
[推荐的书籍以及博客]
针对的是后台开发方向
书籍
程序员面试宝典
算法导论
TCP/IP详解1,2
UNIX网络编程1,2
UNIX 环境高级编程
C++ PRIME
C++对象模型
大话设计模式
大话数据结构
博客