找工作是一个长期准备的过程,突击是没什么效果的。准备时间越长,准备就越充分,就越容易拿到好的offer。我基本上从研究生一入学就一直在准备找工作的东西,看书、研究研究笔试面试题、在线编程训练、参加实习招聘等等。当然,其实主要还是研二开始准备的,也算不上多认真,反正一天一天的积累吧。这里我把我准备的内容向大家分享一下。
一、推荐书籍
计算机的好书挺多的,我买了也有四五十本,也花了不少钱,但是这些投资都是值的,好好看一下这些书,让自己找工作时的薪水涨个几千是没问题的。当然,也有些书是电子版的。我是c++方向的,可能大部分书都是和c++相关的。
1. c、c++相关
C语言问题一般都是在笔试题中出现,面试题中问的比较少。首先是下面这三本经典的C语言书:
《C和指针》
《C专家编程》
《C缺陷与陷阱》
这里还要极力推荐的是:
《C语言深度剖析》
这本书是国内人写的,重点讲解了C语言里的一些晦涩的问题。
上面这几本书应该基本上就可以熟练掌握C语言的各种问题了,笔试题基本都能从容应对。
下面首先推荐三本C++相关的书:
《深度探索C++对象模型》
《Effective C++》
《STL源码剖析》
我觉得这三本是C++方向找工作必备的,这几本看熟了(我觉得至少认真看个3、5遍吧)至少可以搞定90%的C++笔试面试题。
下面这两本我也极力推荐:
《More Effective C++》
《C++反汇编与逆向分析技术》
如果这两本书也掌握了我觉得面试中一般没有什么C++问题能难倒你了。
当然还有很多其他经典的C++的书,有精力都可以好好去读一下,我就不一一列举了。
小结:C、C++知识是很重要的,是绝大数公司笔试面试中重点考察的知识,除了Google、微软等一些公司面试中基本不考察编程语言外,其他大多数公司都会把C++作为重点考察的内容之一,我面过的公司:百度、阿里巴巴、腾讯、网易游戏、雅虎等等都会问C++问题,当然具体问不问也可能跟你的简历、面试官的喜好有关。
2. 算法、数据结构相关
谈到算法自然少不了圣经了
《算法导论》
当然这本书我只是偶尔翻翻,但是我觉得这个应该从头到尾认真看一遍、好好做一下练习题。
下面是几本跟面试中的算法最相关的一些书籍:
《编程珠玑》
《编程之美》
这两本是最经典的了,这里面注重的是解决问题的思路,看的时候里面的问题要认真思考再参考解答。
下面两本是对具体的面试题做一些解答,同时有详细代码实现的。
《剑指Offer》
《Cracking the coding interview》
上面这四本我觉得都是必备的,里面的题目解决思路要数量掌握,能够举一反三、解决相关变种问题。同时,里面的题目,应该都要在纸上实现,然后再在电脑里实现、测试。Bug-free是面试中重点考察,面试官也会经常让面试者写测试用例,所以,平时我们要养成这些好的习惯。
下面也推荐一本经典书吧,
《算法艺术与信息学竞赛》
当然不适合算法薄弱的人看,这一般是ACM大牛的家常饭。不过,能看多少是多少,总归是会有收获的。
小结:算法是重中之重了,各个公司都把算法作为考察重点,甚至有的公司只考察算法。应该早点开始积累,比如多刷一下POJ,LeetCode等等,后面也会提到这些在线编程网站。
3. 数学相关
这方面我看的也不多,当然,我觉得这几本都很重要,对笔试面试都会很有好处的,而且这方面的内容笔试面试中考察的也很多。
《组合数学》
《具体数学》
《数学之美》
4. 操作系统相关
操作系统也是笔试面试考察的重点,我看的相关书的也不多,主要推荐下面两本吧
《深入理解计算机系统》
《操作系统精髓与设计原理》
我没有linux相关经验,但是我觉得linux内核应该好好研究一下,这方面我不懂,就不多说了。
我稍微研究过一点点windows内核源码,这里推荐
《Windows内核原理与实现》
还有和windows编程相关的
《Windows核心编程》
5. 网络相关
我基本就只看了一本
《TCP/IP详解卷1:协议》
6. 软件开发、设计相关
首先是设计模式,我觉得设计模式是很重要的,对以后工作也很有好处。当然面试中考察的不是特别深,一般就是问一下你熟悉的模式是哪一个,然后稍微问一下,估计Singleton是问的最多的。我还是极力推荐大家熟练掌握设计模式。下面这两本书配合一起看,效果相当好
《Head First设计模式》
《设计模式—可复用面向对象软件的基础》
然后是
《代码大全》
这个就不多说了,也是必备的。
我再极力推荐两本重构相关的书
《重构—改善既有代码的设计》
《重构与模式》
这两本可能对面试没有直接的帮助,但是应该会有潜移默化的影响吧,对以后工作肯定是相当有好处的。
7. 搜索引擎
这个不是必备的了,但是我为了丰富一下简历,也看了几本书,主要两本吧
《搜索引擎—信息检索实践》
《这就是搜索引擎—核心技术讲解》
这两本配合着看,就可以把搜索引擎原理、相关技术了解得差不多了,我简历上写了这个,面试中也经常被问到,应该是可以加分的。
8. 数据库
数据库也是重要的内容之一,尤其是数据库底层实现相关的一些东西,索引啊等等。
首先是大家最熟悉的
《数据库系统概念》
还有一本很好的,就是讲解数据库底层内容的
《数据库系统实现》
8. 其他
这里主要是推荐一本《垃圾收集》,这个算是比较底层的东西了,但是这个绝对的会给面试加分,我也很受益于这一点,同时可以稍微研究一下JVM的垃圾收集机制,可以参考《深入理解Java虚拟机》以及一些相关文章。
还有《CDN技术详解》,我觉得也不错,可以很好的了解一些大型网站使用的一些技术等等,面试中也常常会问到一些大型的网站系统设计问题,负载均衡等等。
二、推荐网站
1.LeetCode
http://leetcode.com/
这个网站里有很多经典面试题的讲解,当然最主要的是它的OJ系统,里面有100多道题目,和ACM OJ不同的是,这里面的题目都是来自于面试题,所有更有针对性,建议至少刷3遍,我刷了差不多5,6遍,多刷几遍不丢人。
2.POJ
http://poj.org/
这是北大的OJ,leetcode满足不了你,就可以来这刷了,如果还满足不了就找国外的OJ吧,USACO、URAL等。
3. NOCOW
http://www.nocow.cn/
这里也有不少acm相关的资料,推荐看一下USACO和URAL的题解。
4. Careercup
http://www.careercup.com/
国外著名的帮助找工作的网站,里面有很多Google,MS,FB,Amazon等等名企的面试题,有精力就一道一道做吧。
5.CSDN
http://www.csdn.net/
有不少人的博客还是不错的,总结很多笔试面试相关的东西,比如v_JULY_v。也常关注一下热门博客。
三、其他
在这里推荐一下陈利人的微博(http://weibo.com/lirenchen),该微博里有很多不错的资料。建议认真读一读google云计算的三篇论文,毕竟云计算仍然是热点。好好研究几个开源项目的源码,如levelDB。做几个有水平的项目。找个好公司实习一下,著名互联网公司的实习经历也挺重要的。
总结
以上基本上是我为找工作准备的东西,当然我也没把我所列的每一个方面都做的那么充分,但是只要准备个差不多,我觉得国内的公司BAT之类的还是不在话下的,希望来年准备找工作的同学早点准备,到时候拿到理想的offer。
转自http://blog.csdn.net/walkinginthewind/article/details/13000431
自己的总结:
感觉一般只有小公司比较注重编程语言方面的细节,大公司上来只考算法。个人感觉例如对于C++那么博大精深的语言,有太多不常用的语言知识都可以考,但是其实编程最核心的部分还是算法设计,其次才是根据算法如何优雅的实现。
该文章作者罗列出了的资料确实很全,但是很多资料感觉应该是在学习专业知识的时候就该深入学习了,复习准备的时候更多应该是不断做题和不断总结,这个不是简单看书就能获得的。
对于推荐的网站,我觉得还可以有两点补充:一个是北美留学生比较喜欢关注的MIT BBS,里面也有不少关于面试题的最新探讨,另外一个就是叫一亩三分地的国外留学论坛,以前留学申请的时候经常逛,最近发现论坛也变得丰富了不少,也有一些对国外最新面试题的探讨,不过讨论者的水平貌似比起MIT BBS要相对低一些。
Anyway,自己的准备也开始了,计划应该会坚持一年左右。也希望大家最后都能找到满意的工作!