写给准备参加面试的学弟学妹们~一定要来看哦~
一、前言
首先要说明的是,此次我主要是针对互联网公司的面试来整理的。所以如果你打算以后搞销售,或者立志去某潮之类渣滓公司的话,就大可不必这么辛苦的来按照这个复习准备。
二、面试简介
目前就互联网市场的需求来看,java还是最多的,c++、php、python其次,像c#这种东西,也就微软或者其他很多软件公司会用到吧。大部分能给高新的互联网公司不会用到。。java同学也不要太过于乐观,毕竟竞争还是很激烈的。虽然需求是java的最多,不过c++的同学或者广大的acmer也不要灰心,因为面试的门槛一般公司都会有c++和java两个方向的面试,也就是说,如果公司要的是java的,但是只要你c++能够合格,也会录取的。
而非语言篇幅,是大家基本都需要掌握的,也就是像操作系统、计算机网络、数据结构、数据库、海量数据等知识,我会在前面几条先写出来。
对于面试能否成功,各有各的说法,以我的经验来说,面试 = 运气(50-n)% + 实力(50+n)%,至于n,我想说n的意思n = f(x),x即实力,n与x成正比关系,这就意味着,你实力越强,对运气的依赖性越低,而不需要像我在春招的时候整天埋怨运气不好了。所以实力还是非常重要的一个环节。
对于面试题目类型的比例,大部分公司在笔试环节会是这样,笔试 = (数据结构+算法) 50%+ (计算机网络 + 操作系统)30% +逻辑智力题10% + 数据库5% + 歪门邪道题5%,而面试就不好说了,这个需要看你的简历,一般简历如何,面试重点就在哪里。
三、操作系统、计算机网络、数据库
操作系统很重要吧,这个就不用说了,需要看的内容非常简单。大家把何昊老师出的《程序员面试笔试宝典》这本书第八章到第十章全都看一遍就可以了,计算机网络9.1、9.3、9.4是重点,操作系统部分10.1和10.2是重点,对于数据库,可能只需要记得简单的语句就行了,然后范式、一些锁、主键外键、索引看一看记住就可以,事物是非常重要的,必须掌握。
上面是对于做一般研发的要求,如果还想进深一下,那么这几本书堪称宝典:《UNIX环境高级编程》、《TCP/IP详解》卷一
四、算法 和 数据结构
首先一本必看的书《剑指offer》,你要保证上面的题目都能够掌握,并且代码一定要会写,不过像某些章节,可能代码量在100-200行的,一般公司不太可能让应届生在面试的时候手写那么多的代码,所以理解就行,毕竟要写出代码不能够靠死记硬背,就算是他让你写这么多的代码,你理解的意思也会写个八九不离十,所以不要担心,至于你怎么记住,就靠着一遍一遍的看了。我至少看过3、4遍,才能说记个差不多,理解之后看一遍会很快的。记得把这本书上面面试的例子都看一下,都是非常棒的例子。
《程序员面试笔试宝典》是本非常不错的书,非常的全面,不过美中不足的是,其中代码质量偏低,所以如果你感觉他的代码不是很好的话,就自己写一个,另外要说的就是,这本书和《剑指offer》有一样的题目的时候,请以《剑指offer》的代码和讲解为准。
对于算法,不得不说的就是《编程之美》和《编程珠玑》,如果时间不多,后面那本书就不用再看了,《编程之美》对于acmer来说比较easy吧。我刚开始看的时候一天就可以看到100-200页。两三天就搞定一遍,上面的有些难度比较大的题目,如果不想去微软这样的公司就没必要看了,像什么让你画一下cpu曲线之类的,现在都是四核cpu,你怎么给他画啊。其他的保证在秋招的时候看过3、4遍就可以了,关键是理解,并且能记住。快排和kmp一定要做到看到就秒杀的境地,无论是代码还是什么其他的,堆排也非常重要。其他各种排序的话,因为你感觉都很简单,不过其实如果面试的时候问到,你也不一定能答出来,甚至没听说过,所以有必要找个时间好好的吧排序看一下。《算法导论》如果时间不多不建议看,毕竟问的东西不太会考到。。对了游戏公司很多会问到图论的一些知识,面游戏公司的也可以看看。毕竟游戏公司工资高,相对容易进一些。
五、C++
C++是个好东西,需要准备的东西比较多,推荐看一下《C++ Primer》和《effective c++》想依靠c++为门槛拿到不错的offer的话,这两本书打死也要看。最好边看边做笔记,把重点画下来。《Thinking in C++》也可以看下。不过我觉得太厚了。。所以。。。《程序猿面试笔试宝典》这本书第七章的内容必须要记住。需要认真的看。 虚函数是个重点,别的在前面基本书中说的很清楚了,我也就不多说了。
六、JAVA
Java的话,我想有本书我不说你也知道,《thinking in java》。世界名著,必看无疑,另外其他的我要oym兄弟来补充。还有几本书,何昊大牛的新书,java程序员面试笔试宝典之类的。。也是要看哦!
七、linux
这部分,对于这个我没啥好说的,java程序员要求比较低吧,c++程序员的要求相对比较高,特别是要去面试运维部门的,基本命令必须熟悉。想深入了解的《UNIX环境高级编程》、《linux环境编程》都是不错的书。
八、逻辑分析题 智力题
这类题目占得比例不大,我也就把他放到后面来写。《程序员面试笔试宝典》第六章,写的非常棒,看一下吧,上面的题目经常会考到,不放心的也可以刷一下往年考到的题目。
九、行业了解
有些公司可能会问到你对于目前互联网行业,或者电商行业的一些见解,这个主要就靠着你们对于业界的关注程度了,不得不说一本书《浪潮之巅》。《程序员练级之路》也是本对于晋升来说不错的书,可以读读。
十、设计模式
设计模式请看一下《Head first 设计模式》或者《大话设计模式》其中的一本吧!有时间两本可以都看。可以当小说一样看完,很有帮助的!几天就可以看完一遍。类似于如何实现一个单例模式这样的东东,一定会写。
十一、写在最后
如果你现在大三的话,就开始好好准备吧。如果大二,就把基础都补好,脚本语言会一种还是不错的,给自己打一打底气!经历足够旺盛,可以学习一下ml、数据挖掘等高大上的东东,去coursera上看一些外国名校的公开课,我感觉在中国,特别是我们这种下流学校上课真是一种煎熬,个人更喜欢国外的那种启发是教育。 其实看那些书,最好还是看原版,一开始虽然比较费劲,看一段时间就好了。又能锻炼英语,一举多得。最后唠叨一句,其实,每个人有每个人的追求,未必一定要去大型互联网公司才能实现自己的人生价值,相对于互联网公司,一些小公司更容易,自己喜欢干什么就去干吧!加油!