从今开始,为新的目标奋斗。
看了别人总结的各大公司的面试套路,大概如下:
转自:http://blog.youkuaiyun.com/yahohi/article/details/8146412
所有的公司的面试内容,大体分为:项目、基础知识、算法、智力题。
1. 项目
关于这个问题,首先要思考以下几个问题:
(1)做了哪些项目?
(2)哪个项目是自己觉得做的最好的?
(3)为什么认为这个项目做的最好?
选择项目的时候,要选择自己最熟悉,做的工作最多,能够提炼的关键点最有技术含量(当然是工程性的)。
描述项目的时候,一定要以让外行都能够听懂的语言来描述(除非面试官刚好是做的跟你类似的工作),并且尽量做到让面试官感兴趣。
一般是先描述项目的功能和作用,让面试官有一个宏观的认识,觉得你这个东西确实挺有用的。然后再去讲系统架构,最后落实到自己负责的一个模块上面。
在讲自己的模块的时候,一定要提炼出几个关键问题(当然是要有一点技术含量的关键点。。不然很容易会让人觉得你这个没什么技术含量)。这样,抛出一个问题,面试官也会思考这个问题如何解决,你再提出你的解决思路,让他觉得方法很合理很有效就OK了。所以,总体上,你要让面试官觉得你确实在这个项目里面承担了重要模块,并且确实解决了几个关键问题,以后到公司来也肯定能够自己定位问题解决问题。
以上是针对技术官,在面对HR时项目应该如何描述呢?其实这个就更简单了。你只需要传输一个观念,你确实做了很多工作,你挺牛的,就搞定了。当然,跟HR聊,是考验一个人的沟通能力的,要适时的开些玩笑什么的,这样整个谈话下来就很轻松,offer也会比较容易谈下来。
项目介绍在互联网企业中基本上都是需要的,腾讯、搜狗、网易、阿里巴巴、百度、人人都是要介绍项目的。当然,微软、有道、人搜、google这样的公司是不会问的。
2.基础知识
基础知识包括语言相关基础知识、计算机网络、数据库、操作系统等知识。常见的题目一定要会。如果挂在了基础上,就会让人特别郁闷。所以如果面试中遇到有不会的,一定要及时回来查清楚,记录下来。所以,面经这个东西就很重要了。
C++中的多态、指针(指针的指针、野指针、动态内存的申请)、引用、define、extern、static等问题,都是需要熟练掌握的。
计算机网络中的TCP/IP、网络七层模型等问题。
数据库的join, left join, group by, limit等用法。
操作系统中的线程与进程、文本处理命令(一定要会,笔者就在这上面吃了大亏了)等。
阿里、搜狗、网易、腾讯、人人在这方面要多准备一些。
3. 算法
除了基本的数据结构和排序查找算法之外,《编程之美》2-3章一定要看,除此之外还有一本也强烈推荐,就是《剑指offer》,这本书上面有很全面的代码,这本书可以很快的在一周之内就看完,是突击的必选书。以上如果都会了,基本上绝大部分的面试都没什么问题了。
如果想要算法上面更加进阶,可以多看看acm的题目,还有google的往年面试题目。
一般来说,人搜、微软这样的公司,最喜欢考的题目就是动态规划。
4.智力题
智力题一般是从网上找的一些素材,因此,有志于进微策略、微软、人人的都最好准备一下智力题。传说有同学准备了100多道智力题,后来面试一点问题没有。
大体内容就是这么多。整体来说,微软面试1-2面偏实现,先一道智力题,然后再编程实现简单的算法(不允许有bug);有道偏算法,而且是很多很难的算法,建议多看google的面试题目;阿里巴巴偏项目和基础,基础要非常牢固才可以;搜狗偏工程,要在某方面有特长,能够胜任工作,笔试题目比较偏基础,很多刁钻古怪的题目;网易偏基础,要求基础要牢固;微策略偏智力题和算法,想进这个公司的要多准备智力题了(传闻该公司很清闲,待遇也不错)。
http://zhan.renren.com/tbback?tagId=18599&from=template&checked=true
1.复习数据结构与算法
形象一点说,可以把这些内容分为3级。
1级包括:数组、链表、树、排序。这些都是最基本的东西,必须非常熟悉,如要多写写链表的插入删除节点,树的遍历啥的。特别是排序,各种排序算法都最好能在5分钟内写出来,排序几乎是任何一个公司面试都会考察的。掌握了第1级的技能,年薪12w以上的工作肯定就没问题啦。
第2级包括:所有常见的数据结构、简单的分冶和贪心、基本动归和搜索算法。掌握了这些,你应该能拿下18w左右的offer。
第3级:除了常见的数据结构,你还得对啥字符树啊,B+树啊比较熟悉,hash必须能写出一个优秀的hash算法并且知道hash的几种不同实现如何解决冲突等,对于几种常见算法类型如动归搜索等,最好在pku的acm平台上都做上几道题熟悉一下,锻炼解题思维。嗯,做到这些的话,你应该可以冲击25w以上的offer啦。
2.计算机科学技术的技术知识
也就是上课的时候学到的内容啦,越是优秀的公司越注重你基础是否稳固,烂公司只关心你会不会写javascript或php。最先得复习的两门课是操作系统和计算机网络。操作系统有多进/线程、虚拟内存、文件系统啥的。计算机网络把TCP/IP。HTTP,UDP的概念都熟悉一下。计算机系统结构最好也看一下,主要明白下cpu架构,流水线什么的。还有两门必须复习的是离散数学和概率论,离散数学主要是复习下各种概念,不用看太多。概率论要着重搞清楚条件概率是咋回事,去年好多的笔试题都有涉及。
3.书单最后推荐几本有用的书:
《编程之美》 : 这本书有许多面试题的真实案例,几乎我在每个公司的面试中都能遇上一道在书里能找到的题目,如找第K大数什么的。最好能完整读完。
《c++ primer》 : 在熟悉下c++语法,特别是面向对象部分(因为我学校里c++写得多,所以很多书是关于c/c++的,据我观察似乎学校里写c++比java要稍微好找工作,因为很多面试题c++实现比java要简单)
《c专家编程》 : 关于C的很多比较底层的知识,忽悠面试官专用。
《深度探索C++对象模型》 : 关于面向对象怎么实现的一本书,会解答诸如虚函数是怎么实现的,一个对象占用多少内存这种问题,据我所知网易游戏非常喜欢问这方面的东西
《effective C++》 : 忘了讲什么的了,记得我好像读过...
《c++/java程序员面试宝典》 : 这本书价值不大,不过可以看看...其中智力题部分,大部分公司不会问到智力题啥的,不过不能排除部分奇葩公司来一道。
《算法技术手册》 : 很多常用算法有很好的实现,可以做查阅用
fj-fly
2014.3.29