前年因为之前公司倒闭,被迫在短时间内找工作。一开始什么没看就去面试,记得一个游戏公司题目做的很差,我说了期望薪资后,他有点鄙视的问:你觉得你值这么多钱吗?后面面试时稍微背了些题目,好不容易拿到一个offer就去了。去年年末,本来只关心编程的我,也开始关注起项目收入、增长情况,我预测年后不久项目会被调整。(后来果然!)
从去年11月左右就开始准备面试,工作闲暇时看几页C++ primer。我发现大学时从来就没认真学好C++,大脑里只有谭浩强那本C语言程序设计的知识,从来就不会多少C++的方法。其中在STL一节,我发现有很多algorithm方法非常实用,我们平时都自己瞎写写,浪费多少人生时间。对两个vector求交集、并集、合集都是有相关的方法。另外学了很多C++11知识,我感叹这等于重新学了一下c++语法吧。希望面试或者以后工作能用上,如果新公司不给用C11我也不想去。
除了C++ primer 5其他准备的题目来源有:程序员面试金典、搜索C++面试题的很多题目、自己回忆以前面试题目。是的,及时是四年半前的面试题目,我也有能想起来的。搜了下以前去面过的小公司,发现他们四年半来还是老样子,并没有成为知名企业,创业维艰啊。找工作,还是偏向去那些大公司吧,如果大公司挤不进去,才去小公司了。
因为这次面试提前了很久做准备,专门把一些题目归纳下来,面试前可以反复背诵。金典上,不复杂的题目,能背的也背下来。每面一个企业,遇到不会的又感觉好的题目也记录下,以备不时之需。公司们的问题都非常近似,有一天我面3场,3个公司都问同一道题目,但是我赶路太着急没搜下,结果都没答上。
面了十几家公司,给我的感觉是,很少有公司能全面考察一个程序员基本功到底如何。你觉得我做的题目准确率很高,因为我恰好背了。如果多背点题目,面试确实能通过,肯定能找到工作。但,这些题目,大学生好好准备一样都会。我想即使题目能回答上来,不代表这个人就会写代码。
我觉得知乎上有些大牛说的挺好,面试就考一道题,看上去很简单。经过简单的交流,你开始在电脑上写代码,或者白纸上写代码。然后问你复杂度,有没有办法优化,优化后效果怎么样。然后继续深入问,是不是可以再优化,或者把题目增加一些条件和限制,继续让你实现出来。看你会不会问问题,和面试官怎么交流,完全没头绪时是否提出来(然后面试官给与一定的提示),然后再把自己的想法实现出来。整个过程十分轻松的,就像伙伴一样。
我遇到好几个面试官都是板着脸,出题目就像老师考小学生一样。遇到这样的情况,我个人是不会考虑这样的团队的。一般第一个面的人就是以后带你小领导,现在就感觉不舒服了,以后工作岂不是和上坟一样!
你不会那些网上一搜就搜到的题目,那就不能面上,我觉得不公平,但也没办法,目前很多公司就是这样考核人的。毕竟是知识,忘记的概念什么时候就能用上。比如这次我做了好些简单的递归和动态规划题目,我现在起码不怕这些题目了,可以拿出笔慢慢分析,有些题稍微一分析,真能做出来,甚至可以想出和书上不一样的解法。多做做题,多背背还是有好处的。
另外一点感受是,最好有去过大公司的工作经验。好几个面试官都知道我的现公司,有的甚至在同一栋大楼里。很多时候你很多题目答不上来,他们不会怀疑你水平很差,会怀疑自己的题目有点偏,他们会想到你能去知名公司,肯定有两把刷子。然后会给你进一步面试的机会,继续考察。我这次面试就遇到好几个公司,虽然我前面题目几乎全错,但是依旧让我面下去。想象下,如果你在BAT等公司待过,及时是很划水的人,别人还是会更多选择你,之前公司经历在你水平不咋的时(也可以说面试不理想)还是很重要的。所以前2次跳槽挺难的,看我从不知名公司出来,题目回答的也不咋地,也就不给机会了。
外企还有午餐面试,重点看面试者气质是否和团队相符。工作这些年,发现好些人编程能力可以,但是很难相处,或者有事情他不做啊,国内公司面试根本就无法发现这些情况。很多时候,一个勤劳的程序员贡献是另一个划水程序员的好几倍,但是工资又差不了多少(特别是在毕竟和气的公司里)。总体上,我感觉这样不好,很多企业找不到真正要找的人。
最后,还是推荐说,要找工作就多背点题目吧,准备时间越长越好。