被拒,感觉很不爽,但是更多的是反思和后悔:把我反思的结果跟大家共享,希望大家能有所收获。
首先声明我面试的是技术类的,所以非技术类的同学就不要看了,其次我是数学系的,一些情况只是个案,所以大家要有所看有所不看。
从头开始,在去 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的人一直在不停的讲一些智力题目,我就越来越没信心了,我最怕的就是智力题目(我感觉我反应能力可能是比较慢),而且人家一说这个题目是微软用过的,谁谁用过的,可惜我都没注意过这方面的东西,能不紧张吗?
一面我感觉发挥的很好,因为心态比较平和,没有太大的期望,因为本来就没多么热切的希望要去,二来感觉那位面试官mm很好,在我没有回答出来的情况下会引导到答案附近(这也妨碍了二面的发挥)。所以回来就把手机关了,心想,我感觉发挥已经很好了,如果被刷,证明实力不足,我还得考研,没想到11点多的时候收到了二面的通知,大家都祝贺我,说我肯定有希望,因为人家已经给我定了方向:测试。我本来很放松的,经大家一说我就开始紧张了,觉得闹大了,再被刷下来,会很没面子的(一面知道我去的人不多),而且数学系往年也有人去的,二面就剩我一个了,我要争口气,不能给02级同学丢脸。所以就很紧张,就开始看书,12号上午还看了一本测试方面的书,因为人既然已经定了方向应该向这方面问吧(这是我的一个战略性失误,后面将会看到),下午四点去等着面试,这次我一个人去的(一面是一个朋友陪我去的),3:30到的,5:30才轮到我,通知的是四点,中间没事干就和大家聊天,聊着聊着就有点不对劲了,他们都是计算机系的,人讨论的问题,有很多我就没仔细想过,我就开始紧张了,觉得没底,而且面试完下来等hr的人一直在不停的讲一些智力题目,我就越来越没信心了,我最怕的就是智力题目(我感觉我反应能力可能是比较慢),而且人家一说这个题目是微软用过的,谁谁用过的,可惜我都没注意过这方面的东西,能不紧张吗?
在等候的时候尽量不要和自己不一样的人聊天,我就是犯了这个错误,当时应聘技术类的就我自己是数学系的,跟人聊天仅仅增加了自己的不自信。相信自己很重要,要不然我不会在面试官面前说一些我跟计算机系的人比有一些不足之类的话。
面试和面试之间联系性很少,你不要认为他们会开会来个交接仪式,没有,所以,你一面说过的话二面可以反着说,一面的面试官对你的评价,二面可能完全持相反的观点。
不要受别人的影响,特别是那些好心鼓励你的人,他们强调这是一个好机会只会增加你的紧张情绪(对我是这样)。
简历封面很不重要,特别是在你面试的时候直接交给他的那份(现在简历筛选都是电子的了,只有较差的公司还在手工筛选),我的封面在二面的时候已经被人家去掉了。
面试官有好的也有坏的,比如第一位就比较好,我想当然地认为二面的面试官也不应该太过分,结果我错了,被打个措手不及,大家一定要小心。面试官和面试官是没有继承关系的。你要学会应付不同的面试官。
最后告诉非科班出身的同学,计算机算法很重要,但是理论基础也同等的重要。我在大三之前只重视编程,不重视编译器原理就是一个例子。
以上就是我面试的一些过程和体会,接下来我要静静的准备考研了,不再有杂念,祝大家好运。