第一次面试经历和体会分享
被拒,感觉很不爽,的是反思和后悔把我反思的结果跟大家共享,希望大家能有所收获。
声明我面试的是技术类的,所以非技术类的同学就不要看了,我是数学系的,一些情况只是个案,所以大家要有所看有所不看。
从头开始,在去 Tencent 笔试之前我一直在安安静静的准备考研究生,没有参加他们举行的宣讲会,甚至没有按时在网上投简历,笔试是带着简历争取来的,笔试很简单但你C/C++的基础一定要好,特别是细节,我大概看了一下试卷的分数,六七十的比较多,八十的非常少,九十的也有。,东大考点比南大考点的容易,所以那个工作人员说,那边的考点的面试资格分数稍高一点,不说了,这些大家都知道。
一面我感觉很顺利,除了面试我的MM把二叉搜索树排序误作堆排序外,一切都还顺利。先是做自我介绍,我就说了不到两分钟,就不说了,她就开始问问题。(被刷,这为我二面埋下了伏笔,我一会再说)。
我大致谈了一下我曾经做过的一些项目经历,并且重点强调了我在这些项目中的收获,她好象很满意。接下来问我一些C++方面的问题,很多,非常多,一个接着一个,有变量的存放区域,有函数的存放区域(我说是代码区,她好象不满意),内联函数和成员函数的差别(我感觉有点奇怪),就只各自说了一下各自的实现,有继承的实现机制,有虚函数的实现机制,有虚函数和纯虚函数的区别,有虚基类应用的时机,指针申请和释放的注意事项,内联函数比普通函数更快(我回答了内联函数是在调用的位置展开,而普通函数是有跳转,她好象不太满意,我有补充了还有参数的传递和返回值的开销,她才放过我),还有不下10个这样的关于C++的问题,我都尽量做了回答。
得到的经验是我的关于于C++的理论经验太肤浅,特别是对编译器的了解知道的太少,我认为主要是因为我学计算机的切入点是计算方法,所以这方面不太注重(只注重方法的优化效率,不太也没有能力注重编译器的优化运用,所以大家有机会补充一下理论方面的知识,理论很重要特别是在面试的时候,在平常学习的时候不要只把精力放在算法上。
她接下来问我TCP/UDP的差别,我就直说我不清楚,我对计算机网络通信不熟(我确实没在这方面看过,考程序员时看了一下,忘记了),所以她就没问我这个方面的问题。
接下来她开始问我算法,先让我叙述了一下hash map的实现原理和缺点极其实现方法,又说"你讲一下堆的实现方法",我很轻松的讲完了,我就感觉她不太满意,因为她一直在问我一些明显是在引导我的问题,比如父亲和儿子节点的关系是什么,我回答说如果父亲是i,儿子是2i,2i+1,根据i开始计数可能有所不同,她好象还不满意,就问我你怎么区分儿子的大小,我说没必要啊,只需要把两个二子中大的调上去了,扯了很长一端时间,她中间还问了我二叉树遍历的情况,我也顺利的答了(后来才知道她一直在引导我),她有问了一句,你为什么不规定左儿子大与右儿子哪,我当时听了就怒了,马上说,哦,你说的是二叉搜索树排序不是堆排序,接着有给她讲了半天两者的区别,她还认为堆排序效率太低,因为每次都要调整一次,我明确告诉她堆排序的排序效率是O(nlogn)的,不低,而且搬出了侯捷的一句话。
这个过程我发挥的很少,不过她好象没有堆排序的概念,我很纳闷(不知道是不是一个圈套)。可能是时间太久的缘故她没有再问我算法,就问了一些个人的意向,要不要考研什么的,我就直说了,我说这是我投的第一份简历,如果我拿到offer我就不考研了,如果拿不到,我就到计算机系去读研。她没说什么(这为我二面失败又埋下了伏笔),她接着说,你不适合做开发,因为我们开发人员都主要是研究生,而且是计算机系的(我感觉扯),我说我可以学啊,我承认在一些方面的不足,我有数学做基础的。她说,你算法很好,如果你有作测试的意向,我们可以考虑一下,我考虑了一会说,我考虑一下,然后说,可以啊。(不是很热切的那种)。接着我就扯了,在走之前我笑着说了一句二叉树排序和堆排序是不一样的。(现在也不后悔这句话)。