第一次面试经历和体会分享(第一次参加面试感想)
/> 被拒,感觉很不爽,但是更多的是反思和后悔:把我反思的结果跟大家共享,希望大家能有所收获。
首先声明我面试的是技术类的,所以非技术类的同学就不要看了,其次我是数学系的,一些情况只是个案,所以大家要有所看有所不看。
从头开始,在去 Tencent 笔试之前我一直在安安静静的准备考研究生,没有参加他们举行的宣讲会,甚至没有按时在网上投简历,笔试是带着简历争取来的,笔试很简单:但你C/C++的基础一定要好,特别是细节,我大概看了一下试卷的分数,六七十的比较多,八十的非常少,但是九十的也有。另外,东大考点比南大考点的容易,所以那个工作人员说,那边的考点的面试资格分数稍高一点,不说了,这些大家都知道。
一面我感觉很顺利,除了面试我的MM把二叉搜索树排序误作堆排序外,一切都还顺利。先是做自我介绍,我就说了不到两分钟,就不说了,她就开始问问题。(被刷,这为我二面埋下了伏笔,我一会再说)。
我大致谈了一下我曾经做过的一些项目经历,并且重点强调了我在这些项目中的收获,她好象很满意。接下来问我一些C++方面的问题,很多,非常多,一个接着一个,有变量的存放区域,有函数的存放区域(我说是代码区,她好象不满意),内联函数和成员函数的差别(我感觉有点奇怪),就只各自说了一下各自的实现,有继承的实现机制,有虚函数的实现机制,有虚函数和纯虚函数的区别,有虚基类应用的时机,指针申请和释放的注意事项,内联函数比普通函数更快(我回答了内联函数是在调用的位置展开,而普通函数是有跳转,她好象不太满意,我有补充了还有参数的传递和返回值的开销,她才放过我),还有不下10个这样的关于C++的问题,我都尽量做了回答。
得到的经验是:我的关于于C++的理论经验太肤浅,特别是对编译器的了解知道的太少,我认为主要是因为我学计算机的切入点是计算方法,所以这方面不太注重(只注重方法的优化效率,不太也没有能力注重编译器的优化运用,所以大家有机会补充一下理论方面的知识,理论很重要特别是在面试的时候,在平常学习的时候不要只把精力放在算法上。
她接下来问我TCP/UDP的差别,我就直说我不清楚,我对计算机网络通信不熟(我确实没在这方面看过,考程序员时看了一下,忘记了),所以她就没问我这个方面的问题。
接下来她开始问我算法,先让我叙述了一下hash map的实现原理和缺点极其实现方法,又说"你讲一下堆的实现方法",我很轻松的讲完了,我就感觉她不太满意,因为她一直在问我一些明显是在引导我的问题,比如父亲和儿子节点的关系是什么,我回答说如果父亲是i,儿子是2i,2i+1,根据i开始计数可能有所不同,她好象还不满意,就问我你怎么区分儿子的大小,我说没必要啊,只需要把两个二子中大的调上去了,扯了很长一端时间,她中间还问了我二叉树遍历的情况,我也顺利的答了(后来才知道她一直在引导我),她最后有问了一句,你为什么不规定左儿子大与右儿子哪,我当时听了就怒了,马上说,哦,你说的是二叉搜索树排序不是堆排序,接着有给她讲了半天两者的区别,她还认为堆排序效率太低,因为每次都要调整一次,我明确告诉她堆排序的排序效率是O(nlogn)的,不低,而且搬出了侯捷的一句话。
这个过程我发挥的很少,不过她好象没有堆排序的概念,我很纳闷(不知道是不是一个圈套)。可能是时间太久的缘故她没有再问我算法,就问了一些个人的意向,要不要考研什么的,我就直说了,我说这是我投的第一份简历,如果我拿到offer我就不考研了,如果拿不到,我就到计算机系去读研。她没说什么(这为我二面失败又埋下了伏笔),她接着说,你不适合做开发,因为我们开发人员都主要是研究生,而且是计算机系的(我感觉扯),我说我可以学啊,我承认在一些方面的不足,但是我有数学做基础的。她说,你算法很好,如果你有作测试的意向,我们可以考虑一下,我考虑了一会说,我考虑一下,然后说,可以啊。(但是不是很热切的那种)。接着我就扯了,在走之前我笑着说了一句:二叉树排序和堆排序是不一样的。(现在也不后悔这句话)。
一面我感觉发挥的很好,因为心态比较平和,没有太大的期望,因为本来就没多么热切的希望要去,二来感觉那位面试官mm很好,在我没有回答出来的情况下会引导到答案附近(这也妨碍了二面的发挥)。所以回来就把手机关了,心想,我感觉发挥已经很好了,如果被刷,证明实力不足,我还得考研,没想到11点多的时候收到了二面的通知,大家都祝贺我,说我肯定有希望,因为人家已经给我定了方向:测试。我本来很放松的,经大家一说我就开始紧张了,觉得闹大了,再被刷下来,会很没面子的(一面知道我去的人不多),而且数学系往年也有人去的,二面就剩我一个了,我要争口气,不能给02级同学丢脸。所以就很紧张,就开始看书,12号上午还看了一本测试方面的书,因为人既然已经定了方向应该向这方面问吧(这是我的一个战略性失误,后面将会看到),下午四点去等着面试,这次我一个人去的(一面是一个朋友陪我去的),3:30到的,5:30才轮到我,通知的是四点,中间没事干就和大家聊天,聊着聊着就有点不对劲了,他们都是计算机系的,人讨论的问题,有很多我就没仔细想过,我就开始紧张了,觉得没底,而且面试完下来等hr的人一直在不停的讲一些智力题目,我就越来越没信心了,我最怕的就是智力题目(我感觉我反应能力可能是比较慢),而且人家一说这个题目是微软用过的,谁谁用过的,可惜我都没注意过这方面的东西,能不紧张吗?
还有,我的ID很靠后,可是有几个没有ID已经进去了,还没轮到我(他们通知是五点),我就有点郁闷了,就问那个接待的人,我说了我的名字,他找了好长时间说没有我的名字,我就蒙了,我赶紧说了一下ID他才找到,原来我的名字是少数用笔写的其他的都是打印的,而且写的非常之不清楚,我自己一下也没认出来,当时我想可能是我被临时安排的测试组的缘故吧。
等了好久终于等到了我的名字,到了面试房间前敲了三次或以上才开门,我不清楚怎么回事(现在还不明白),开始面试,他先让我做五分钟的自我介绍的,我没在意时间,就象一面那样说了两分钟吧,我就觉得说完了,就停下了,等着他问我问题,结果,他冷冷的抛出一句:继续说啊,还有三分钟。我当时就脑子白了一下,就赶快在组织了一下,没办法,后面说的很不连贯,而且因为怕时间不到再停下来,就说了一下自己的一些不足(我现在后悔啊),其中谈到了我在侯试室的感觉:跟计算机的学生有差距。(我现在想想就想打自己一耳光,后悔啊)。终于非常不舒服地说够了五分钟,我感到我额头上都冒汗了(从来没有这么紧张过),脑子一片空白,心想p了,就在这时他不失时机地抛出了一道题目:常数时间内删除一个指针指向的链表接点,我因为还没反映过来,不知道在桌子上趴了多久,因为趴太久,就说我能不能先调整一下(意思说先聊聊),他就又抛出一道概率题目,这我当然会了,可是写完答案之后我想调整一下,就对着纸想了一下,主要是太紧张了,怕有坑,发现脑子还是不能集中精力,我越加坚定自己要完了。接下来一个算法我写出来了,很不顺利。(第一个算法是我走到大厅的时候才想出来)
接下来就开始聊一些其他方面的问题,我估计是因为我几道题目表现不好,他已经对我判了死刑。我谈到说第一位面试官说我适合作测试,我就看了一下这方面的资料,就结合自己的一些实际情况谈了,很多,可是我感觉他一直在抓我的漏洞,而且最后说:我不知道谁说你适合作测试的,我也不知道你为什么这么想。我才意识到我彻底的犯了一个战略性错误,过高地看待了一面和二面的联系,大家一定要记住啊,他们是不会面对面的事先通气的,只通过一些评语。老天知道前面的评语多么简略啊。
我如实地告诉他我现在是不是打算考研(我觉得再变可能会被指责不诚实),结果他最后说,今天就到这吧,你回去等我们通知吧。我说,是不是我被拒了?(因为没被拒是到楼下等hr),他说:考虑到你与计算机系同学的差异,建议你先去读研吧。我当时就走出了房间,我觉得自己特傻,而且哪个人特狠,拒我的理由都是我说的自己的不足,所以大家一定引以为戒,面试的时候一定不要说自己的缺点,除非是有争议的,你可以另加解释的。
在等候的时候尽量不要和自己不一样的人聊天,我就是犯了这个错误,当时应聘技术类的就我自己是数学系的,跟人聊天仅仅增加了自己的不自信。相信自己很重要,要不然我不会在面试官面前说一些我跟计算机系的人比有一些不足之类的话。
面试和面试之间联系性很少,你不要认为他们会开会来个交接仪式,没有,所以,你一面说过的话二面可以反着说,一面的面试官对你的评价,二面可能完全持相反的观点。
不要受别人的影响,特别是那些好心鼓励你的人,他们强调这是一个好机会只会增加你的紧张情绪(对我是这样)。
简历封面很不重要,特别是在你面试的时候直接交给他的那份(现在简历筛选都是电子的了,只有较差的公司还在手工筛选),我的封面在二面的时候已经被人家去掉了。
面试官有好的也有坏的,比如第一位就比较好,我想当然地认为二面的面试官也不应该太过分,结果我错了,被打个措手不及,大家一定要小心。面试官和面试官是没有继承关系的。你要学会应付不同的面试官。
最后告诉非科班出身的同学,计算机算法很重要,但是理论基础也同等的重要。我在大三之前只重视编程,不重视编译器原理就是一个例子。