IT外企那点儿事(3):奇怪的面试

外企的面试都面写啥?不同的企业也是不一样的,总的来说可以归结为以下几句话:

 

三类企业面实战,二类企业面基础,一类企业面算法。

 

在此声明,此处所谓的一二三类,绝没有轻视其他企业的意思,这里的一二三类基本上是按照本科毕业的时候起薪来划分的,一类企业指的是年薪15万以上的企业,二类企业指的是年薪10万左右的企业,三类企业指的是年薪5万左右的企业。当然按照上两次的描述大家可以知道,并不是起薪高的企业的程序员一定最好发展的最好,而进入创业企业的人最后可能后来居上,成为IT达人。当然此规律也不仅仅适用于外企。

 

三类企业

三类企业起薪不高,招聘的目的也相对的明确,是要找那种来了就能真枪实弹的把东西作出来的人。

他们多不太关心员工的培训和成长,不太关心员工是否对技术有浓厚的兴趣和深入的钻研,他们就是一个想法,他们要做一个东西,做这个东西需要某方面的技术,所以要找这会方面的人。

他们不知道,大多数的程序员其实喜欢做一些在自己能力以上20%的东西,也即研究研究可以做出来,但不是太熟练,而不喜欢做一些自己已经非常熟,毫无挑战的东西。

但是他们需要这样的人,所以在面试中,面试的问题比较具体,甚至具体到一个个的配置项,也有当场给你环境,让你搭一个框架,做一个东西的。他们希望,最好你以前做过的项目和他们现在的项目十分相似,来了就能够上手。

其实很多程序员跳槽,就是因为原来的工作已经没有了挑战,想找一个更有挑战的,有更多大牛的地方,如果原来的项目我干的不亦乐乎,还来你这里干什么?但是现在工作难找啊,所以他们总是能够找到需要的人,毕竟出来混,大家都是混口饭吃,不容易啊。

要想进入此类企业,一个最好的办法就是上手做,在学校里就可以找个实习的公司,哪怕不给钱也去(强烈谴责这种企业,剥夺劳动者的基本权利,也就在中国他们能干的出来,放到欧美罚不死他们),先混些实践经验,做些边角料的活,然后跟着lead一步一步进入核心模块,相信只要认认真真的做过,面过这类企业应该不成问题。

此类企业的流动性相对较大,往往被用作程序员的跳板,跳到二类甚至一类的企业中去。所以不幸进入此类企业的兄弟们,在实战的过程中,别忘了多看看源码,多想想背后的原理,多补充一下计算机科学的基本知识,早日脱离苦海。

 

二类企业

二类企业其实薪水已经非常不错了,毕业就能进入此类企业的程序员也多是学校中的优秀分子。

此类企业注重程序员的基础,认为只要基础好,他们愿意培训并培养程序员,给你机会进行学习。

此类企业招聘的时候,职位有可能是不太确定的,可能是Java,可能是C++,可能是windows,可能是Linux,他们认为只要你基础好,语言不是问题,平台不是问题,培训一下上手会很快。

记得面试一家与通信有关的欧企,面试官开始问了很多C/C++的基础知识,后来问了很多操作系统和计算机网络的基础知识,最后说,他们是需要有通信背景的,然后连问我三个有关通信方面的问题,我都说不知道,最后只有坦然承认,通信我确实一点都不懂。后来我认为我是彻底没希望了,没想到后来竟收到了他们的offer,并在入职后进行了长达两个月的通信方面的培训,后来我问我的面试官怎么回事,他说,你的C/C++,操作系统,计算机网络的面试题几乎都对了,我觉得你的基础不错。

所以要进入此类的企业,有关基础方面的书还是要认认真真,仔仔细细的看,下面推荐一部分:

  • C: 《The c programming langage》
  • C++:《Thinking in C++》,《The c++ programming language》,《effective c++》,《more effective c++》,《exceptional c++》,《more exceptional c++》,《inside the c++ object model》
  • Java:《Thinking in java》,《Core Java》,《effective java》,《Java Puzzlers》,《Java Network Programming》,《java concurrency in practice》,《深入Java虚拟机》
  • windows:《Windows核心编程》,《Windows Internals》
  • linux:《Advanced Programming in the UNIX.Environment》,《Understanding Linux Network Internals》,《UNIX Network Programming》
  • network:《TCPIP Illustrated Volume I》,《The Linux Networking Architecture》

我没有在装B,也不是看过以上所有的书,不过上述书籍的确是程序员必藏书,我也只不过是在用到的时候翻开相关章节看看。

然而给大家的建议是,在做项目的时候,千万不能够做什么就只知道什么,与此相关基础知识也应该多看一些。面试的时候也经常遇到这种情况,就是面试者号称做过socket,问到tcp/ip拥塞控制却一无所知,会简单使用socket client端和server端几个简单函数人太多了,如何保证你能够脱颖而出呢?

 

其实很多事情我们觉得不可能,但是这个世界上就是有牛人确实做到了,比如英语六级能够考99分(满分100),就是把答案全给我,就让我写作文,我也做不到啊,再如高考满分750分,山东的状元730+分,也就意味着数理化全对,语文140+,英语140+,我的天,也是把答案给我,就让我写语文和英语的作文,我也做不到啊。

然而读以上书籍却没有上面两个例子难的不可想象,我所知道的身边的人就有C, C++, linux, network这几个分支全读过的,而且不止一个。

能进入二类的企业,混个中层,也能过上满不错的生活了。

 

一类企业

一类企业薪水非常高,毕业就能进入的可以说是学校中的佼佼者了,一般会名校背景,名企实习,甚至有过获奖的才能够进入。

此类企业除了注重程序员的基础之外,更加重视程序员的思想,算法及聪明程度。

所以很多奇奇怪怪的面试题在网上都流传出来了,这些题目真可谓费尽心机。面试过程长达n轮,每轮都可能因为疏漏和状态不佳被刷掉,最后剩下的几近完美。在面试中,程序是要当场在黑板上写出来的,很短的时间,要求很强的健壮性,面试官还会在旁边施加心理压力,你确定吗?要注意XXX。

虽然问题是经常外流的,然而新的问题却是不断的会出,可能是因为工作中有些需要解决的问题,自己想了一天多才想出的解决方案,却抽象出来考别人,让别人在很短的时间作出来,这种心理开始很爽,后来觉得很罪恶,多少有些原来自己穷,受富人欺负,后来富了又欺负穷人的味道。

有些人会质疑,这些精巧的算法在工作中真的能够用到很多吗?答案当然不是。

这其实是一个供需的问题。马克思告诉我们,商品的价格是由价值量决定的,商品应该以价值量为基础,实行等价交换。西方经济学告诉我们商品的价格会随着供需关系的变化而变化。当供需矛盾相当大的时候,商品的价格就会远离价值量。

《经济学的思维方式》一书中写到,所有的稀缺品都需要以某种方式分配,必须建立某种规则和制度,对那些要求得到稀缺品的人加以甄别,决定谁该得到多少。价格只是最常用的一种方式。

想想我们的高考吧,那些千辛万苦考上清华的学子毕业后又有多少高中的知识留在脑子里呢?学到的东西又有多少是能够在实际中用到的呢?其实很少,高考分数不过是进入清华的一个价格而已,已经由于清华只有一所,考生却有千百万这样的供需差别远远的偏离了使用价值,毕竟能够轻松看懂教科书的人太多了,他们只能够不但要全会,还要全对。

进入一类企业也是同样的,能把我上述书籍都看完的人是大有人在的,仅仅基础知识已经不能够甄别想进入一类企业的人们,所以需要奇奇怪怪的算法题。

要进入一类企业,《算法导论》这本书必不可少,要前前后后仔细的看,而且应该不止一遍。《编程珠玑》也是一本不错的书,其中的例子可以常常的回味。《编程之美》也不错,更贴近面试,更实用一些。其实更重要的是Top coder,就是多看多练。

其实考入名校基本就是一种方法,多做题,以便在考场中看到题目就能够有思路,考场的时间仅仅用于保证正确率就可以了。

进入一类企业也是一样,要想很短的时间,在很大的压力下写出健壮的程序,其实只有一种方法,就是类似的题目遇到过,思路是马上就有的,在会议室的时间仅仅用于保证健壮性就可以了。

 

曾经一段时间,对精巧的算法十分的崇尚,甚至引以为豪,然而后来慢慢发现,天天沉浸在算法之中,沉浸在计算机的小天地里面,又对社会做了什么贡献呢?难道自己的才能,抱负就仅仅放在这些数字的技巧当中吗?我们不应该像孔乙己一样研究茴香豆有几种写法,而是应该如阿朱《走出软件作坊》中描述的一样,虽然方案不是完美和精巧,然而逢山开路,遇水搭桥,真正的解决一个个的问题,作出一些可以影响人们生活的软件。

 

先写到这里,下一章要开始写入职了。

你可能感兴趣的:(管理,面试,network,java,算法,windows,linux)