程序员求职之道(《程序员面试笔试宝典》)之面试心得交流?
“前车之鉴,后事之师”,每一个成功的经验都能成为后来师弟师妹、学弟学妹学习的榜样,而每一次失败的经历也能给予后来者血的教训。本章以各大名牌高校、研究所的应届毕业生的亲身求职经历与体会为蓝本,对当前程序员面试笔试相关的准备工作、时间计划、书籍阅读、面试技巧、offer(中文指录取通知)选择等多个方面的内容进行了独到地分析,对于未出校门的应届毕业生有着极大的指引作用。通过本章的阅读,一个菜鸟可以慢慢变为老鸟,最终成长为其他人眼中的“offer帝”、“offer后”,手持大把大把明星企业的offer,当别人还在为混一口饭吃、为找一个窝居住而到处奔波的时候,自己却在“痛不欲生”地对比各个offer的好坏。
当offer没有的时候,该如何面对?当offer像雪花一样飘来的时候,又该何去何从?通过本章的内容,读者慢慢体会,一定可以在将来的求职过程中找到一份自己满意并且适合自己的好工作。
2.1 心态决定一切
董哥,男,中国科学院计算技术研究所2012届硕士研究生,现就职于北京腾讯搜搜。
1、抛砖引玉
找工作的过程是综合实力较量的过程,一个好的offer背后凝聚着无数辛勤的汗水,需要你勤奋,坚持,积累、付出与表现。我以过来人的身份介绍一下自己找工作的经验,希望对师弟师妹们有所启发。但需要注意的是,完全掌握做到了这里提到的几点并不意味着你一定可以拿到一流的offer,我仅是抛砖引玉,点播你,启发你而已,如果想在找工作时得心应手,需要你平时不断积累和总结,领悟其中的真谛。
2、心态决定一切
对于找工作,心态很重要,找工作之前,一定把心态端正。二十年寒窗苦读,几千个夜晚与孤独为伴,最重要的一个目的是找一份理想的工作,从而实现自身的价值,因而我觉得,我们至少应该像准备高考那样,全身心投入到找工作的准备中,将之前所学知识重新温习整理,以便将所有能力能够最大限度地发挥出来,进而向面试官充分展示自己,推销自己。
3、冰冻三尺非一日之寒
关于找工作前的准备,有两个因素直接决定着你是否能最终被录用,一个是项目,另一个是基础知识,这两个中任何一个被面试官相中,均可能拿到offer。
对于项目,不在多而在精,一般的项目,例如普通的管理系统、网站等,面试官几乎不用耗费脑力,一眼就能看到底,没有什么好讲的,最切合也最能引起面试官兴趣的项目往往是与他现在的领域相同或相近,解决的问题的确具有一定的难度且提出的解决方案具有一定的创新点。但遗憾的是,对于大部分毕业生,项目的深度往往不够,毕竟想在研究生短短的两三年时间里面成为这方面的专家,还是比较有难度的,所以这个时候就全靠你的基本功了。
基本功基本上可分为以下几个部分:编程语言,数据结构与算法,操作系统和其它小知识点。对于编程语言,个人认为C语言是必须掌握的,很多公司把C语言作为必考项,例如微软,另外要在C++和JAVA两种面向编程语言中选一个,主要知识点是面向对象编程中的一些基本概念,如:虚函数、构造函数、析构函数、拷贝构造函数等。有一些题目已经成为经典,是必须、一定、非要掌握的,例如:(C++语言)虚函数是怎么实现的?构造函数可以是虚函数吗?为什么鼓励将析构函数设计成虚函数?对于数据结构和算法,这是面试的重点,很多公司基本上只考算法与数据结构,比如微软四面全是写算法(几乎占面试题目的90%左右),这就需要大家平时多积累,多练习。尤其对一些基本数据结构和算法,要非常清楚,比如:单链表反转,Trie树,两个数组交并差集等;对于操作系统,主要掌握Linux里的一些基本概念,比如线程,进程,内存管理,文件管理等,这些也会在面试中出现,一定要好好复习。最后是一些其它知识点,比如设计模式(单例,工厂模式等),编译原理(程序从编译到运行要经历的几个过程)等。
4、修炼程序员之“葵花宝典”
找工作过程中,一些经典的题目,一定要反复推敲,很多题目来自固定的那几本参考书,大家应该好好琢磨这几本书中的题目:
(1) 面试指南类书籍
面试指南类书籍是非常基础的书籍,里面的题目比较经典,常常以笔试或者面试题的形式出现。虽然对于进入好企业帮助不大,但是应付一般的小企业,这本书可以作为一定的参考。
(2) 《编程之美》
这是一本实战书,任何找过工作的人都知道,很多笔试面试题直接来自该书,值得各位找工作的应届生反反复复地阅读和讨论。此外,该书中有些题目难度过大,从找工作角度考虑,可暂时不看。
(3) 《编程珠玑》
该书分为一二两本,但从找工作角度考虑,第二本可暂时不看。第一本书主要是软件设计思想,书中的例子已经成为百面不厌,百考不厌的经典题目,比如数组循环移位,随机采样算法等。
(4) 《算法导论》
大师级的书,几乎是找工作必看,该书对各种常见算法有很深入的讲解和详尽的证明,并对每个算法的起源,动机和求解过程有较多的涉及。
(5) 《深入理解计算机系统》
该书从程序员的视角介绍了计算机系统。几乎囊括了计算机的各个技术,包括数据表示、C程序的机器级表示、处理器结构,程序优化、存储器层次结构、链接、异常控制流、虚拟存储器和存储器管理、系统级I/O、网络编程和并发编程等。该书中提到的一些知识点,常作为面试题目出现,比如Linux信号量,虚拟内存管理等。
(6) CareerCup.Cracking.the.Technical.Interview.Ed4.2010
该书尚未在中国大陆发行,但在网上可找到非常清晰的电子版,本人在此留下一个链接:http://ishare.iask.sina.com.cn/f/12828753.html,仅作为学习之用,请勿用于商业目的。该书中的题目全是常见题,相对于上面基本书,其题目更新,技巧性更强。据说,有人借助此书拿下hulu(hulu是美国最知名的视频网站之一)的offer。
5、八面玲珑
关于找工作的技巧,这个主要介绍两点,一是回答问题的技巧。对于项目,主要回答点应该是遇到的挑战和解决问题的思路,对于算法问题,要从复杂度高的算法逐步向复杂度低的算法过渡,第一眼见到题目,可先将自己想到的思路说出来(比如O(n2)复杂度),然后不断优化(比如O(nlogn)复杂度),最后尽量得到一个最优的算法(比如O(n)复杂度),这时候可能要在纸上写出来,一旦你没有了思路,应该主动要求面试官加以提示。另一个是交流技巧,这里指的是同学之间的交流,这一点非常重要,每当前一个同学面试完后,应该主动跟他交流,主要打听一些个人收获和心得,尤其是别人的失误,应该尽量避免,因为面试官一天要面试众多的求职者,很可能会对不同的求职者提出相同的问题。
6、多多益善
最后是offer的选择。offer原则尽量多拿一些,以便给自己留一些选择的余地,至于怎么选择offer,这是个人的问题,每个人侧重点不一样,因人而异,但我觉得适合自己的就是最好的,没必要和别人进行比较。
技术的更新永无止境,作为一名即将毕业的学生,要时刻保持清醒的头脑,不断地学习,不断地充实自己,只有这样,才能在激烈竞争中不被淘汰,二十年寒窗苦读,最重要的一个目的是找一份理想的工作。梦想马上就要实现,希望学弟学妹们再接再厉,像准备高考那样准备找工作!
祝大家梦想成真!
2.2 未雨绸缪是王道
修竹,男,西安电子科技大学2012届硕士研究生,现就职于北京人民搜索网络股份公司。
弹指一挥间,找工作潮已经过去,最终我选择了为我提供户口的北京人民搜索核心研发部,回想起找工作这几个月的酸甜苦辣,仿佛发生在昨日,有太多的话想对以后的学弟学妹、师弟师妹们说。
1、未雨绸缪
最后能够进入帝都,从事自己喜欢的工作,我个人觉得确实很不容易,一路走来,我觉得有一点很重要,就是制定良好的计划,好的计划是成功的开始,通过合理安排时间,将实习、简历、读书等内容分阶段进行,做到各个阶段都有各个阶段的侧重点。
具体而言,我的时间安排是这样的:
(1) 2010.6~2010.7:制作简历,实习生面试。
(2) 2010年10月:准备找实习工作。
(3) 2010.11~2011.4:实习。
(4) 2011.5~2011.8 :制作简历,复习专业知识,参加相关竞赛。
(5) 2011.9~2011.11:找工作。
从9月份开始找工作,到11月一直面试笔试了很多公司,虽然最终拿到了很多offer,但是有很多offer我觉得含金量并不是非常高,这类企业的面经到处都有,所以我不打算将这些经历写下来,我只是把一些我感触比较深的企业的几个面试经历与大家分享。
(1) 完美世界
完美世界的题量也是非常大,不过我只笔试了1个小时就交卷了,把前面的C++部分做了,里面考图形学的知识比较多,幸好本科的时候学过这门课,答上来一些。面试问的时间很短,你有什么offer,你用过STL没,你用过xxx没,诸如此类,20分钟就结束了。最终面试后,也没有任何消息了。
(2) Amazon(亚马逊)
亚马逊笔试题跟其他公司差不多,面试就很不一样了。个人感觉亚马逊的面试官很有特色,一面的面试官给我出了一个算法题,然后给了我一个笔记本电脑,打开了Eclipse,让我使用C++语言编写代码,然后他就在Eclipse里面创建了一个C++工程,把数据线接到电视机上,让我写程序。然后我写完了,准备去运行,结果他那个配置没配置好,运行不了。他看了一会,估计认为我写的不对,也没说出哪里不对,然后就再调Eclipse,最后也没调好,我就和HR面了。接着是二面,二面是两个面试官,男面试官把笔记本接到电脑上,那个女面试官把电脑上的记事本打开,说写一个仓储管理系统。我当时很茫然,我是做设计呢?还是写代码呢?然后我就问她具体的需求,她说就是一个仓储的系统,不用考虑商品数量,然后就在一旁忙自己的事情了。当时我写得很郁闷,一边写那个男面试官还一边问我问题,后来过了四十分钟我算是搞明白了,其实就写个类似于内存管理系统的分配算法就OK了,折腾了那么久。最后也是无功而返,被拒了。
(3) 微策略
四轮英语面试被拒。微策略在交大笔试的,笔试总共六道题,最后一个是英文作文。感觉自己答得很烂,宣讲的时候听说在西安面试两轮再去杭州面试两轮,想着就冲去杭州的机会也得去一下。笔试完第二天就去交大面试了,面试全英文的,不过主要还是问算法,我写算法就行了,基本上我都能听明白。面试题倒是不难,基本上编程之美上面都有。面完了,过了几天就通知去杭州去面试。在杭州面试的前一天微软给通知了口头offer,感觉要是人家给offer还得想办法拒掉,就不大想继续面了。面试的第三轮好像是一个马来西亚人,也是问的程序题,都比较普通的那种。到第四轮的时候是个女面试官,表情看起来很冷冰冰的,感觉不是很好,问我说他们的题是简单还是难,我说不是很难。结果她把我的笔试题找出来,让我做里面的一个题,那个题是个图论的题,笔试的时候就一点头绪没有,当时让我做,我也没说话,想了一会也没写代码,最后就直接被拒了。
(4) 微软
微软的笔试很早,9月中旬就笔试了,到了10月下旬才开始面试。早上6点多起来去西安索菲亚酒店,总共有三轮面试,全是技术面。面试官都是从美国回来的,不过里面一句英文都没有面,这倒让我很意外。一面的面试官是测试的一个leader,问了我几个算法问题,有一个和编程珠玑上的题目很类似,我很快就回答了。估计他感觉我考虑的比较全,一直问我为什么不去做SDET(Software Development Engineer in Test,测试组软件开发工程师)。后来三面的面试官也是让我去做SDET,说一面的feedback就是觉得我很适合做SDET,面试一开始就跟我谈测试的好处,不过我还是坚持做SDE(Software Development Engineer,软件开发工程师)。面完了感觉还可以,不过估计会让我去做SDET,可是最后给的offer是SDE。
3、拨开云雾见青天
最后微软虽然给了我offer,但是最终我选择了人民搜索。个人感觉对于大多数互联网开发的公司,一般都是问算法方面的问题。很多问题在编程之美上面出现过,还有一些就是ACM的题。
其实工作只是另一份生活的开始,所以我对找工作的师弟师妹们的建议是平时要多看,多学,多练;做技术类的工作的话,关键还是平时积累,而且找工作要提早筹备,早做规划。
一餐美食,解不了一生之饥,一点成绩,堆不满事业之海,人生路还很漫长,新的起点,需要继续努力,以此与师弟师妹、学弟学妹共勉。