一、前言
好久没写blog了,可能工作比较忙的原因吧。工作之后也略显疲惫,有点懒,不是很愿意动笔。不过由于今年秋招的临近,于是决定整理一下自己和其他几个大牛的经验,指导一下自己的学弟学妹们。
首先要说明的是,此次我主要是针对互联网公司的面试来整理的。所以如果你打算以后搞销售,或者立志去某某渣滓公司的话,就大可不必这么辛苦的来按照这个复习准备。
在此特别鸣谢sdust的cl、fxl、zyz,以及qtech的oym、sh、ygq等诸位大牛的指点。
二、面试简介
目前就互联网市场的需求来看,java还是最多的,c++、php、python其次,像c#这种东西,也就微软或者其他很多软件公司会用到吧。大部分能给高新的互联网公司不会用到。。java同学也不要太过于乐观,毕竟竞争还是很激烈的。虽然需求是java的最多,不过c++的同学或者广大的acmer也不要灰心,因为面试的门槛一般公司都会有c++和java两个方向的面试,也就是说,如果公司要的是java的,但是只要你c++能够合格,也会录取的,sdust的cl大牛,精通mfc和win32,面到阿里之后,学了半年java。。。所以我在这里也主要分成java方向和c++两个方向的面试来写,希望会对大家有帮助。
而非语言篇幅,是大家基本都需要掌握的,也就是像操作系统、计算机网络、数据结构、数据库、海量数据等知识,我会在前面几条先写出来。
对于面试能否成功,各有各的说法,以我的经验来说,面试 = 运气(50-n)% + 实力(50+n)%,至于n,我想说n的意思n = f(x),x即实力,n与x成正比关系,这就意味着,你实力越强,对运气的依赖性越低,而不需要像我在春招的时候整天埋怨运气不好了。所以实力还是非常重要的一个环节。
对于面试题目类型的比例,大部分公司在笔试环节会是这样,笔试 = (数据结构+算法) 50%+ (计算机网络 + 操作系统)30% +逻辑智力题10% + 数据库5% + 歪门邪道题5%,而面试就不好说了,这个需要看你的简历,一般简历如何,面试重点就在哪里。
july博客有一些面试题,最好有一个月的时间去刷这些题目,链接在此。
我把我的简历发布到网上,随后也会陆续发几个大牛的简历,希望大家照着看一看。写的不怎么样,不过格式还是可以参照一下的。大家见笑了。
下载资料我会把链接放在文章的最后面,请大家随便下载。
三、操作系统、计算机网络、数据库
操作系统很重要吧,这个就不用说了,需要看的内容非常简单。大家把何昊老师出的《程序员面试笔试宝典》这本书第八章到第十章全都看一遍就可以了,计算机网络9.1、9.3、9.4是重点,操作系统部分10.1和10.2是重点,对于数据库,可能只需要记得简单的语句就行了,然后范式、一些锁、主键外键、索引看一看记住就可以,事物是非常重要的,必须掌握。
上面是对于做一般研发的要求,如果还想进深一下,那么这几本书堪称宝典:《UNIX环境高级编程》、《TCP/IP详解》卷一
四、算法 和 数据结构
对于没有项目经验的acmer来说,这个是重中之重。
首先一本必看的书《剑指offer》,你要保证上面的题目都能够掌握,并且代码一定要会写,不过像某些章节,可能代码量在100-200行的,一般公司不太可能让应届生在面试的时候手写那么多的代码,所以理解就行,毕竟要写出代码不能够靠死记硬背,就算是他让你写这么多的代码,你理解的意思也会写个八九不离十,所以不要担心,至于你怎么记住,就靠着一遍一遍的看了。我至少看过3、4遍,才能说记个差不多,理解之后看一遍会很快的。记得把这本书上面面试的例子都看一下,都是非常棒的例子。
《程序员面试笔试宝典》是本非常不错的书,非常的全面,不过美中不足的是,其中代码质量偏低,所以如果你感觉他的代码不是很好的话,就自己写一个,另外要说的就是,这本书和《剑指offer》有一样的题目的时候,请以《剑指offer》的代码和讲解为准。
对于算法,不得不说的就是《编程之美》和《编程珠玑》,如果时间不多,后面那本书就不用再看了,《编程之美》对于acmer来说比较easy吧。我刚开始看的时候一天就可以看到100-200页。两三天就搞定一遍,上面的有些难度比较大的题目,如果不想去微软这样的公司就没必要看了,像什么让你画一下cpu曲线之类的,现在都是四核cpu,你怎么给他画啊。其他的保证在秋招的时候看过3、4遍就可以了,关键是理解,并且能记住。
另外需要推荐的就是july的blog中的一个。http://blog.csdn.net/v_july_v/article/details/6543438
这个就是july博客的目录,数据结构和算法方面就看一下二、三、四章,其中重点我单独划一下。
第二章需要看的也不多,只有3、4、6、12,不过最好大家再看一下1、5、8、11,其他的我个人认为不太需要完全掌握,毕竟算法掌握起来需要的时间还是比较多的。
第三章就是程序员编程艺术这么一本书,july也快要把他出版了据说。这本书特别棒吧我感觉,最好都看一遍,如果时间不多的话,以下这么几章个人认为不太需要看,35-38.。。其实只是很少一部分,大家也可以挑着自己的需要看一下。
第四章就算是讲红黑树、b树之类的东东了,有能力的需要完全理解,代码就不用掌握了。如果精力或者时间有限,trie树弄懂、红黑树和b树看会就行了,当碰到你感觉他们不懂这方面的面试官的时候,可以逮着他们狂扯这部分,然后让他们感觉你很高大上,我认识的sdust的cmj大牛就是靠着这个进的去哪儿网,拿到了12.6w年薪。
算法方面我感觉我写的差不多,如果你们感觉有遗漏还可以提醒我,我会随后补上,如果感觉这些都掌握差不多了,可以看一下《数学之美》,其中讲到了一些实际应用中的很不错的例子,sdust的fxl在面百度的时候就用到了很多,最后成功面上!
随口一说,快排和kmp一定要做到看到就秒杀的境地,无论是代码还是什么其他的,堆排也非常重要。其他各种排序的话,因为你感觉都很简单,不过其实如果面试的时候问到,你也不一定能答出来,甚至没听说过,所以有必要找个时间好好的吧排序看一下,有次阿里电面问了我一个锦标赛排序,我直接愣了,没听说过。。。。
《算法导论》如果时间不多不建议看,毕竟问的东西不太会考到。。对了游戏公司很多会问到图论的一些知识,面游戏公司的也可以看看。毕竟游戏公司工资高,相对容易进一些。
如果还不知道怎么准备的话,可以再参考一下july的另一篇文章,如何快速准备面试中的算法。http://blog.csdn.net/v_july_v/article/details/19131887
五、C++
C++是个好东西,需要准备的东西比较多,推荐看一下《C++ Primer》和《effective c++》想依靠c++为门槛拿到不错的offer的话,这两本书打死也要看。最好边看边做笔记,把重点画下来,或者写blog,我在网上认识一个sdust大二的大牛zxf,他整理的blog就非常棒,还被评为了csdn的专栏达人,链接在此。
《Thinking in C++》也可以看下。不过我觉得太厚了。。所以。。。
《程序猿面试笔试宝典》这本书第七章的内容必须要记住。需要认真的看。
有些必须会写的代码,在july的博客其中一章中有写到,http://blog.csdn.net/v_JULY_v/article/details/6417600其中strcpy/strcmp/strlen/strncpy/memset/memcpy/atoi这个几个函数都是经常考到的,所以一定要做到,看到这种函数编写题就立刻把他秒杀的境地。我整理了一些,点进去就可以看到。
虚函数是个重点,别的在前面基本书中说的很清楚了,我也就不多说了。
六、JAVA
Java的话,我想有本书我不说你也知道,《thinking in java》。世界名著,必看无疑,另外其他的我要oym兄弟来补充。
还有几本书,java程序员面试宝典之类的。。可以看看。。
七、linux
这部分,对于这个我没啥好说的,java程序员要求比较低吧,c++程序员的要求相对比较高,特别是要去面试运维部门的,基本命令必须熟悉,http://blog.csdn.net/liuqiyao_01/article/details/12321509sdust的cl大牛整理的linux部分,值得一看。想深入了解的《UNIX环境高级编程》、《linux环境编程》都是不错的书,不过如果你时间不多,例如你现在5月份了,要准备9月的校招,就不太适合看了。
八、逻辑分析题 智力题
这类题目有点奇葩,占得比例不大,我也就把他放到后面来写。
《程序员面试笔试宝典》第六章,写的非常棒,看一下吧,上面的题目经常会考到,不放心的也可以刷一下往年考到的题目。
九、行业了解
有些公司可能会问到你对于目前互联网行业,或者电商行业的一些见解,这个主要就靠着你们对于业界的关注程度了,不得不说一本书《浪潮之巅》,qtech的ygq大牛,在面美团的时候,就和面试官狂侃了一下业界行情,最终被美团录取,拿到了15.75w的年薪。
《程序员练级之路》也是本对于晋升来说不错的书,可以读读。
点击这里,可以了解14年校招大部分互联网公司的待遇。
再说一次,有个自己的技术博客,把自己学到的一些东西整理在上面,会对自己有非常大的帮助的!推荐wp或者csdn,对博客园的感觉不是非常棒,所以。。。
十、设计模式
设计模式请看一下《Head first 设计模式》或者《大话设计模式》其中的一本吧!有时间两本可以都看。可以当小说一样看完,很有帮助的!几天就可以看完一遍。类似于如何实现一个单例模式这样的东东,一定会写。
十一、海量数据
海量数据的话,必考吧应该,笔试+面试一般的互联网公司至少都会来上一道,关于这个,看下july博客,然后看一下《程序员面试笔试宝典》就行了,熟悉下bitmap、hashmap、trie树这几个东东就可以了。
july博客的几个关于海量数据的链接
- 十道海量数据处理面试题与十个方法大总结 (十道海量数据处理面试题)
- 海量数据处理面试题集锦与Bit-map详解 (十七道海量数据处理面试题)
- 教你如何迅速秒杀掉:99%的海量数据处理面试题 (解决海量数据处理问题之六把密匙)
- 《程序员面试笔试宝典》中关于海量数据的几个东东,我整理到了有道云笔记上
十二、写在最后
如果你现在大三的话,就开始好好准备吧。如果大二,就把基础都补好,争取在会一些加分项,比如ssh、qt、mfc、win32、linux、android、python等东东,脚本语言会一种还是不错的,给自己打一打底气!经历足够旺盛,可以学习一下ml、数据挖掘等高大上的东东,去coursera上看一些外国名校的公开课,我感觉在中国,特别是我们这种下流学校上课真是一种煎熬,个人更喜欢国外的那种启发是教育。
其实看那些书,最好还是看原版,一开始虽然比较费劲,看一段时间就好了。又能锻炼英语,一举多得。
如果有时间,请刷一下july博客中的面试笔试题,会有很大帮助的。无论如何参加秋招之前也要有半个月的刷题时间!
十三、链接
博客中提到的东东的下载链接在此~~~~~~~~~~~~~here
july博客目录 http://blog.csdn.net/v_july_v/article/details/6543438
后记。。对于百度我表示非常无奈。。发了这么几个链接之后。。百度网盘把我这个地址给封了,说我侵权。。。- -#。。现在我已经把所有资料打包上传,百度这下封不了了哈哈!想下载的尽快了!here
最后唠叨一句,其实,每个人有每个人的追求,未必一定要去大型互联网公司才能实现自己的人生价值,相对于互联网公司,一些小公司更容易,自己喜欢干什么就去干吧!加油!
——671