之前一直在CSDN吸收大神们的精华,现在也是时候来回馈大家了,希望对于大家接下去找工作有帮助,顺便补充人品(最近老是丢东西,online Test 电脑卡死)。一口气写完的,有什么错误,欢迎指正。
我思考了很久,决定分为以下三个部分来讲。
一. 面试过程回顾
二. 思考
三. 准备
一. 面试过程回顾
本人,985非计算机专业小硕,本科非211,代码差不多是研一下才开始写的。截止目前,我参加了百度,阿里,腾讯,网易游戏,网易互联网,微软,google等企业笔试及面试。作为一个穿行于汉子间的妹子,有着很大好处也有着很多无奈。废话不多说直接将面试经历,穿插讲一些我的血泪史和总结点。
百度提前批面试:百度面试的特点技术会面得很全面,比较深入细节,会考察你是否真的懂还是忽悠他的,三面技术面,没有hr面
一面,电话面,大约45分钟,电话面试优点是不用写代码,缺点的是表述不清楚的时候,无法用图来表达,所以电话面试一点要表述清楚,最好思考好再分点表述。百度一面先是自我介绍,项目介绍,从项目里面挑出了hash_table,问了原理;C++的问题:面向对象和面向过程的区别,这个我一下子就讲不出来,他就问我“继承、多态的作用” ,多态的实现;C++程序的栈的内存问题,通常栈的大小是有限的为2M;后面问了一些数据库的问题,但是我数据库一点都不懂,稍微问了一下索引,索引的原理。算法题:1. 给你一个数组如何将奇数放在前面,偶数放在后面 2. 回文是对称的文字 比如abcba,给你一个长字符串找出里面最长的回文 3. leetcode里面的largest rectangle in histogram,前面两题基本没有什么问题,第三题,我那个时候没有做过那题leetcode,直接和他说了暴力穷举的方法,说了一下计算负责度。
二面,大概是一个多礼拜后,电话面,大约80分钟,这个面试时间比较长,主要是问题问得比较多,一边一个问题会问到你不会的程度,比较虐,回补了很久。项目面,根据项目,把网络知识扫了一遍,记得有TCP,UDP的区别,nagle算法,流量控制,select,epoll的区别及分别的实现;C++问题,static的作用,单例,const的作用,多态实现及虚函数存在的问题,stl的sort的实现方法。操作系统,线程间通信方法,存在的问题。算法题:只记得一面的第三题,给出计算复杂度;还有就是两个人在圆桌上放棋,如何确保赢,等腰梯形呢。系统设计题,如何做负载均衡,好像随便说了一下,但是当时我还不懂一致性hash的原理,就说可以用这个方法。后面就是项目交流。没有问数据库,因为我直接和他说我不会。
三面。二面结束后半小时,就收到了三面的预约电话,要求现场面,大概面了一个半小时。首先是看了一下项目,问了一下怎么review别人的代码等等很细节的东西。然后是你怎么和你爸爸介绍多态,这个我想了很久都不会,面试官就让我把代码写出来,就想出来了。后面是多线程里面,怎么做信息交流,我说我只会用全局变量,就用全局变量做了一个程序,后面又是一面的第三题,一次我学会了leetcode的stack法,但是面试要求详细讲解,于是就在纸上和他说了很久,后面是用两个栈实现一个队列,求复杂度;智力题一辆车每走一公里就要消耗一吨煤,一次最多运一吨,在距离目的地三公里的地方有3吨煤,最多能运多少到目的地。
阿里巴巴校招,笔试+两轮技术面+一轮hr面,阿里面试难度总体比百度小一点,但是考察的点基本都是我不会的,来个回忆版
笔试整体题目时间比较紧张,我是先把会的做了,不会的就猜了一些上去,代码题是自己写的代码,但是没有编译就提交了,当时是八月份底,我还没有经过任何校招所以还是没有什么数,所以整个人还是比较焦虑的状态。收到面试通知的时候就比较兴奋了。一面时,面试官看了一下简历,就说咱们来做题吧,先是讲一种你熟悉的算法,然后我讲了快排,但是讲了《数据结构与算法,c语言实现》上的改进版,和面试官折腾了一会,终于把他讲明白了。然后是外排,我先是说了归并,k路归并,最小堆,但是面试官还问还有没有, 我就随便说了mapreduce,bitmap,但是限于假设条件太多,面试官也不是很满意。后面是C++,野指针的情况,内存管理里面的内存溢出的情况,这两个我都没有答全,面试官也不太满意,我只好说非计算机专业的;接着又问了数据库的事务是做什么的,这个完全不知道什么东西,就告诉他不知道了。接着是死锁的概念,又搞错了。写了一个生产者消费者模型,基本写对了。Linux,shell编程基本会,python编程基本会。问了一下top指令里面的load average 不知道什么意思。后面突然说到《数学之美》,面试官说他看不懂,我就告诉了他里面的精华贝叶斯公式。然后他嘿嘿,就送我去二面了。我一直以为自己要挂掉了,对于这种情况,只能说是to be yourself。二面面了项目的东西,问了一下怎么找到实习的,生活中喜欢干什么。问了一个linux的指令top,然后就去hr面。hr面基本是为什么选择,有什么经验之类的。
腾讯校招,对于腾讯的办公环境还是挺满意的,但是现在只能是说多了都是泪了。笔试+一面
笔试里面很多基础题,基本都会,但是也有很多web开发ios开发的题目,只能凭借当时的状态猜了。第二天拿到了面试通知,一面主要以项目为主,面了一个字符串前后交换的题目,面了mysql的存储引擎。然后没有消息了。面完感觉还不错,面试官还表扬了说干活速度挺快的,但是不知道为什么就没有然后了。
网易校招,在线笔试+逻辑测试+两轮技术面+一轮hr面 笔试和面试难度都比较大,涉及简单的内核,都不会啊
在线笔试要求全程摄像,不能切换页面,不能敢用google,考察算法偏多。记得有生产者消费者+DFS+hash_Table等。逻辑测试就是时间比较紧张。两轮技术面都是项目和知识半对半,但是问的都比较难。一面问了Linux的内存管理,stl的allocator原理,网络的滑动窗口,还有如何设计一套系统有负载均衡(一致性hash,虚拟节点)。二面问了mysql的特点,哪些存储引擎,innodB的优点,数据库优化(这个完全不会),如何查看一条语句有没有走索引,设计一个系统消除单点故障,如何同步,读过哪些开源代码(这个我就说读过某个项目的代码这类,对于这类问题,还是不要直接说没有)
网易游戏,忘记了投,霸笔没有通过笔试。网易游戏的题目和网易很像,整体比较细致,所以知识一点要掌握的全面一点,深入一点,算法题比较多,可以网上找一下。题目比较经典有滑动解锁,类似hihocoder上面的滑动解锁,DFS题目。微软,投了PM,参加了online test, 但是考着考着电脑卡死,第一题审题出错,第三题没有提交,简直了,所以大家还是在online test前面准备好电脑,还有审题时间不能少。google,也去做了一回online test,这些online test 很多时候也只是为了与时俱进,刺激和鼓励自己。
二. 思考
关于选择,《浪潮之巅》里面说,你的每一个选择最好都是让你能够在踏浪前进。互联网行业在排除了泡沫的可能性,目前看来是可能又是一次工业革命,是一个很好的浪潮,但是现在早已不是加入这个行业最好的时机了。只能选择里面比较细分的先进点来做。就是说现在你选择了这个行业,五年后,这个行业会怎么样,十年后,这个行业又会怎么样,虽然说不准,但是有所思考肯定好于没有思考。对于个人而言,相对于国企,军工企业的钱多事少而言,互联网行业除了活力与激情外,估计只剩下性价比很低了。但是人活着,工作,生活,都是为了一个状态,一个自己想要的生活状态,光看性价比有时候不能保证你十年后很开心,一定要想想自己想要的生活状态。关于发展,国内的程序员普遍比较年轻,这个我觉得可能和国内互联网行业兴起的时间相对于欧美比较短有可能,具体发展我也没有太多想法,欢迎大家讨论。关于地域,这个涉及的东西太多了,每个人都有自己看法。
关于面试,首先性别问题。到目前的面试中,至少我还没有因为我是女生而明着被刷的。所以广大妹子想当程序员,千万不要因为性别而放弃了。至少感觉目前一般工作的team都需要招女生的,认真干好自己的活就可以了。还有面试的时候,穿着整齐去面试,这些应该都会加分的,也是女生的天然优势所在。关于随机应变问题,面试中经常会碰到自己不会的题目,这个时候在to be yourself的基础上,要尽可能去分析问题,把你知道的和面试官讨论,面试官往往会提示你或者告诉你答案的,千万不可以直接放弃。
三.简历等软实力准备
简历很重要,这个谁都知道,那么为什么重要呢?因为面试官会根据你的简历,先打印象分和提问。所以对于简历的内容一定要考虑好是否和面试契合,是否自己都熟悉,你希望面试官问你什么问题,问你什么项目,一般放在最前面的都是最重要的。印象分就是排版,字体等问题了。任何一份好看的 简历,一定是对齐的。重点突出,一般项目经历要占超过一半的纸张,多用数据来说话。制作简历的时候,可以请一个同学来提意见,这样子能够更好的完善简历。
服装,化妆技巧准备。对于妹子来说,还是挺重要的。平时多练习一下。
紧张的问题,平时注意多在公众场合发言。
知识问题,实在太多了。基本是语言(C++/JAVA) + Linux ,操作系统+ 网络(TCP, IP)+算法题 + 数据库,问的深度完全看面试官喜好,下次出一个系列分别系统的理一理我觉得需要准备的点吧。