本文主要是介绍[面试] 我的五面经历,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
我今年大四,也许是人品爆发,找工作一共面试了5家公司,都比较顺利。下面我就回顾一下我这一个月来找工作的情景。
找工作的先准备简历,我的简历就一张单面A4纸,大概说了一下自己的个人履历,爱好特长,也说了下获奖情况,总之都比较简要,属于很通的那种,放到应聘的茫茫人海中毫无突出点。
然后就是面试第一步自我介绍,我从来没有刻意准备过自我介绍,没有提前背过一段自我总结的话,我自我介绍的时间一般相对较短,控制在三分钟内吧。一 般会针对我应聘的职位用2分钟说自己的擅长方面和与别的应聘者比较可能的优势,用1分钟左右谈我对这个职位的理解和与别的应聘者比我可能的不足。
下面是我阿里巴巴面试时的大概自我介绍,我面试别的公司时自我介绍也差不多,只是会针对不同的岗位稍稍改变:
“首先我对自己能通过笔试感到幸运,我知道贵公司招聘C++的研发人非常少,而且要求比 较高,对公司给我的机会笔试感谢。我和别的应聘者相比,其实我没有什么特别的优势。正如我简历上所写,我比较擅长C/C++开发,有接近三年的C/C++ 经验。但是有些东西本不好把握,老实说,这三年经验说得有点虚,可能夸大了,因为我并没有用C++开发过什么大项目,只是有三年的使用经验和读了一些书籍 罢了,但是对C++的基本知识,代码调试和设计模式还是有一定的了解。
同时我数据结构和算法基础比较扎实,比一般得应聘者应该要好一些,可能这就是我的一点优势。我熟悉的开源库不多,总的说来有STL,boost,larbin,Qt。其中对STL了解到比较深入,看过源代码,实现过某些功能。
但是,相比我所熟悉的,我没掌握的更多,与其他应聘者相比,我可能在很多方面具有非常大 的逆势。比如我应聘C++研发,如果让我去做服务器,我基本上不会Linux和网络编程。如果让我去客户端,现在主流的客户端技术WTL,ATL和COM 我都没接触过,对于多线程多进程也没接触过。这些方面可能就是我和别的应聘者相比比较主要的逆势吧。
总的说来,让我自己评价我自己的话,我只能说我只是一个普普通通的本科生,更多的是需要经验,需要人生阅历,需要学习,才能成长。”
第一次面试,腾讯
在面试腾讯之前,我还没有正式找过工作,对自己的实力没底。其实腾讯以前老提前招人,但我没网申,也没有去笔试。那天有个朋友去腾讯面试回来对我 说,腾讯那边鼓励“编程高手”去霸王面。当然我算不上编程高手,只是没去正式面试过,就拿着简历想去试试。说实话,当时只是想锻炼一下自己,抱着去打打酱 油的心态,并没有想到要拿offer。
第一次面试,还是比较紧张的,只记得一面开口我就说。不过这次腾讯的面试很顺利,问的都是一些简单的数据结构和算法,这正是我比较擅长的地方,答得比较快,一面二面都很快就结束了,而且当场就拿到了offer。
在我来等二面的时候,我前面有2个交大的研究生师兄,没事就和他们聊了一下。二面的时候我让师兄先进去,他在里面面了大概40分钟吧,然后出来就先回去了。后来我才知道,回去等通知就是基本被pass掉了。
然后我进去面试,二面面试官挺友好的,问了我10个左右的数据结构和算法的问题。我觉得不难,答了大概二十分钟。然后他说没问题了,问我有什么问题 没。我看我面这么短的时间就不谈了,以为自己被pass了,但是想了下他问的问题并不难,我基本肯定都答对了。当时本来就不抱希望能过,也就坦然说我没有 什么问题,只是感觉自己实力还不够。
结果那面试官来了句:作为一个本科生,我觉得你各方面都比较优秀了。如果你确定不考研的话,我就马上把你推荐到hr那里去。
一听他这话,我当时心情真激动啊,完全在我意料之外。当时很高兴,要是那时我有三方的话估计让我签我就签了。没签,后来拒绝腾讯的时候,总是心里不好意思,很有歉意,特别感激二面面试官的认可,总觉得他对我有种知遇之恩的感觉,给了我自信,在以后的面试过程中走得更顺。
后来我才知道,其实我二面的时候面试官对每个人问的问题都差不多,我觉得问的问题不难,都是简单数据结构和算法。但是那位师兄没能过,当然我并不是针对师兄,我想交大CS和SE的大部分同学都基础不过关啊,本科时候连常见的数据结构和算法都没掌握,其实应该重视基础的。
支付宝
支付宝是去霸王笔的,笔试通过后就去面试了。面试之前听他们招聘的说,我应聘的C++开发全国只招5个人,我自认为自己不算出类拔萃的那种人,所以 心态很好,完全是抱着打酱油的心态去的。支付宝一共有三次技术面,面试题比我面试腾讯的时候要难些。一面的时候问我对什么排序熟悉,我就说对常见的排序都 很熟悉,于是让我写个堆排序算法。前段时间刚写了STL部分代码,于是就用迭代器写了个泛型的推排序。然后问了一些简单的数据结构题,比如如何判断一个链 表是否有环,求环入**点。总之还算顺利,然后就直接去二面了。
二面的时候时候问了一点C++的问题,比如智能指针,我就说了一下auto_ptr,并且主要说了一下auto_ptr其实被C++标准所抛弃了, 由于在容器和通用算法中使用auto_ptr太容易异常,没有引用计数,难以解决二次释放等问题,顺便说了一下boost里面的smart_ptr库。然 后问我VC6.0和GCC的int储存有和区别,这是个比较偏的问题了,只要是VC6.0int的低16位在高地址,高16为在低地址,与GCC不同的, 但是GCC的实现方式更好一点。
三面的时候有个比较难的编程题,就是求一个字符串的最长的至少出现两次的字串。这个题在programing pearls上面有详细讲解,一般的ACM题也常见,标准解法是用后缀数组,不过实现起来比较麻烦,代码不短。
支付宝面试最长的就是hr面了,那hr太能聊了,从我高中问到大学,就像调查我一样。最后能拿到offer我也是很意外,毕竟人家全国就招5个人。
面试的时候比较有趣的是和面试官聊起来了游戏,他问我最少长什么族,我说暗夜精灵吧,但是很久不玩了,很菜的。然后又聊到dota,我最擅长什么位置。我说我就一菜鸟,玩的比较多的是C和G。
创新工厂
创新工厂是我感到压力最大的一次面试了。面试官是美国知名大学毕业的,前google工程师。hrMM说笔试500份卷子,只有七到八个人通过笔 试,这笔试筛选率,汗。面试官虽然是牛人,但还是很友好,先和我聊了一会我看的书籍,问我有没有看过《深入理解C++面向对象编程》这本书没,我说没有, 然后他推荐我看这本书。
问了一点C++的知识后,就开始做题了,可以看出来创新工场要招的是具有很强的编程功底和实践能力的人,面试官出的面试题不简单,而且要求现场写出 完整的程序。常见的几个题是15个人有3个leader,分成三组,每组5个人,但是每组必须有1个leader,打印出所有组合。这是个比较困难的组合 问题,而且我不会组合算法,当时感到非常困难,只想到了排列算法加hash判重。还有就是表达式求值,算法不难,但是实现很麻烦。n个硬币正面向上,现在 每次只能翻转k(k<n)个连续的硬币,用最少的次数将所有硬币翻为正面向下,打印出步骤,这个我至今没找到数学规律,只会dfs。
创新工厂面试给我的印象就是,自己实力还差很远,现场写代码能力还不够。不过创新工厂的hrMM非常漂亮,她最后留了个名片给我让我推荐人,不过我看他这种面试方式,估计没有多少人能受得了,就只推荐了一个同学。
阿里巴巴
去面阿里巴巴的时候,心情比较轻松的,都已经面试过这么多次了,习惯了,尽量答就是了。一面的时候技术面了很长的时间,问了一些C/C++语法知 识,比如如何修改字节对齐,如何求一个结构体中某个变量的偏移量、C++的初始化、虚函数实现等。好在这些都知道,而且我答了一些更偏的东西,比如如何设 计只能定义去没法初始化的变量,这是C++奇怪语法所致;然后就问了我很多STL的问题,迭代器问得最多,由于我看过源代码,所以答得很顺利;接下来问我 会不会多线程,多进程编程。我说完全不会,他好像很重视这方面,结果他非要问我个多线程多进程相关的问题(我汗,都说了完全不会)。
一面无意间看到面试官给我打了个分A S C,A应该是C和C++的理解吧,S应该是数据结构和STL的掌握,C估计就是他看重的多线程多进程了…
阿里二面和三面是一起面的,两个面试官面我一个人,1个技术官和1个hr。当时技术官并没有问我多少技术问题,就聊了一下设计模式,我就将就举 STL为例,说了一下STL设计时是用迭代器模式将容器与通用算法分离,用适配器模式去实现栈,优先队列,如何重写分配器,然后简单谈了一下如何扩展 STL,顺便聊了一下我对垂直搜索的理解。阿里系的hr都是很能忽悠的,不得不说,hr又把我从高中到大学问一遍,还问了我的爱好,从小到大收到的最大打 击,我也就老实的说了一下,然后让我回去等通知。
第二天让我去拿offer,发offer的是另外一个hrMM,把我分到广告搜索部去了。我先是很客气的说我了解你们阿里招C++研发的人不多,要 求不低,我真的没想到能走到这一步,非常感谢。然后hrMM说了一句让我很吃惊的话,他说根据我在面试时的表现,阿里认为我非常优秀,超过了他们对本科生 的期望。我连忙说了三个不,我说我其实是运气大于实力,很多东西我也不懂,只是我比较老实罢了。然后hr说你的坦诚也给面试官留下了很深的印象,你做人态 度很好。总之夸了我一番,然后就说给我发研究生的薪水(具体和腾讯研究生差不多)。我当时真的很开心,被hrMM夸得有点飘飘然了。
唉,怎么说啦,我这个人还是比较好色的,要是hrMM是个像Mars师姐那样的美女的话我估计就被她忽悠过去了。不过说实话hrMM和Mars姐别还是有一定差距的。
百度
由于百度是我心仪的公司,所以我特地的准备了一下百度的面试,也是我唯一一家特意准备的公司。在面试之前我看了很多海量数据处理的问题,我知道百度是和这方面打交道的,面试多半会问相关的问题。
一面的时候我开篇就表示了我对百度公司的向往。一面面试官居然和我算是老乡,所以大家聊得比较随意,问了我一些简单数据结构的问题,另外问了两个实 际问题,一个需要用后缀数组解决,一个需要用线段树,好在这些我都还懂,答得还算顺利。然后聊到STL,我说我看过STL源代码,他就问了我很多实现相关 的东西,这时我们差不多不算面试了,更多的算是讨论吧。
他问我STL实现某些东西(比如交换两个元素)时有没有用特殊的优化,我说没有,一般都是绑在迭代器上,解引用后交换,对于哑指 针而言,和普通swap没有任何区别。还看了一短程序,我说编译器一般都能正确编译运行吧,但是是个bug,以后出问题估计不好找,他说对,这种bug一 开始完全是编译运行正确的,但是出错时是非常的不好找。
接下来聊了一会和系统相关的东西,就是内存分配,这方面我不擅长就答不上,只是我记得我以前搞过编译器,知道搞编译器的时候首先就是写内存分配方 式。然后我就这样说了,但是我说写内存分配池太复杂了,至少要5000行的代码,我现在还不具备这个能力,然后他说,不止,至少要用1万行以上。他问我 Linux里面有没有用内存优化,我说我没看过linux源代码,不知道,他随后给我大概介绍了一下linux在实现内存分配时是优化过的。
面试的一大利器,自信心
一面给面试官留下的印象不错,面完就去三面了(二面有人在面,时间来不及)。看得出来,三面应该是我们部门的老大了,能不能过由他说了算。我自我介 绍了一下,他说那我就针对你擅长的问几个问题吧。于是问了我如何实现百度MP3的top100功能,我大概说了两种方法,一种是hash处理文件,另外一 种是trie加叶子节点计数,他好像对第二种方法比较满意。然后问了一下百度搜索框里面如何实现自动提示。其实这个是有道编程难题的竞赛题目。我就说了 trie的实现,先找公共前缀,然后以找到节点为根节点进行dfs或是bfs(一般自动提示只需要提示10个左右),所以在dfs或是bfs的时候卡一下节点就可以了。后来他让我实现提示出点击量最高的十个提示。由于trie没法排序,所以还要dfs所有节点再加维护一个10元素大小的小项堆。他似乎丢这个方法效率有点不太满意。
然后他给出了一种若干hash表加排序的方法。我说我也想到了这种方法,但是我觉得这个方法不可行,除非是只有读操作而无写操作。当时我不知道哪来的胆量去质疑面试官给的答案,总之我认为他的那个方法并不太好。然后三面也问了一点STL,我的长处,所以答得顺利。
三面结束后,面试官给我说,你是个很坦诚的人,那我也坦诚的告诉你,你在我这里过了。估计明天还会叫你过来聊一聊。程序还是要执行的,就是走个形式而已。我当时没听懂这句话的意思,汗。
第二天去的时候,要在外面等一会二面,正好碰到昨天三面的面试官,他让我到他屋子里面去坐会。然后我进去就大胆的说了一下我对百度公司的心仪,顺便 聊了一下百度的经营模式和发展方向,感觉这个时候我有点像是搞产品策划而非技术的(汗)。我说的都是些真心话,虽然不一定对,他也给我交流了一些百度的东 西。
终于等到二面了,二面的时候我才知道昨天三面面试官话的意思。百度面试一般是1个小时,但是我二面只面了10分多钟。面试官说我就不难为你了,昨天 两位面试官对你的评价很好,差不多就是决定要你的。不过我现在只能给你口头的offer,过两天会有hr来专门和你谈工资方面的事。当时我也没在乎工资多 少,因为在这几个offer中我还是比较心仪百度,而且我知道百度的薪水不会比前面几个offer低的。然后三面面试官把他的联系方式留给了我,让我要是 有什么问题就联系他。
百度虽然很难进去,但是面试官人都很友好,大家都是搞技术的,每次面试完面试官总是主动了和我热情握手,搞得我有点受宠若惊了。
这样就拿到了心仪的百度offer,当时真的很开心,于是回来再BBS上面高调的发了个帖子。等冷静下来时删帖都已经来不及了,无奈被顶到十大。这也充分说明,兴奋的确会冲昏一个人的头脑,当然,我的个人修为定力也还不足,毕竟年轻啊。
结语
其实我能拿到这些offer,很多时候我觉得算是我比较幸运,还是那句话,我是一个运气大于实力的人,和周围的同学比起来,我真的不觉得自己就比他们厉害,我只是一个普普通通的本科生。
在这二十多天找工作过程中,我学会最多的就是做人,包括积极乐观的心态、对面试官坦诚、谦逊学习的态度。很多面试官都给我留下了很深的印象,不管从技术还是对人态度,人生就是一个不断学习的过程,我知道我还差很远。
如果非要我总结个什么成功面试的秘诀,我只能说,程序设计基本功是必须的,这是硬件条件,大学的时候多看点书写点程序;然后就是面试的时候乐观,自 信,坦诚;第三就是要有谦虚学习的态度。对找工作而言最重要的就是第一点了,但是第三点在以后的人生路上去很有用,毕竟,正如开篇所说,生活是态度,一个 人重要的不是所站的位置,而是所朝的方向,一个人能走多远,也不在于他的脚,而在乎他的心。
最后再次谢谢各位师兄师姐的热心帮助和解答,祝大家一切顺利。
这篇关于[面试] 我的五面经历的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!