Rebornix

/*

  本来说好是要写完五家公司的,最后一家ebay因为一点特殊原因暂不更新了。不过Sunicy陶 (已拿国际性金融服务公司实习offer)和我都一致认为,ebay的氛围是最好的,非常open。所以,不写不代表不喜爱。

  另,Sunicykongfy 老是黑我,让我压力很大。我的这篇文章纯粹是记录一下经历,凑一篇博文更新。Sunicy的精彩面试经历详见 。孔哥拿百度offer的经历也在他的博客里有写,这两篇都属于精简类、启发型面经,与我的流水帐有很大的不同。

  本文纯属抛个砖头,求别黑。

*/

   从三月份投递简历到今天(27.4.2012),一共进行了五次比较完整的面试(完整是指,从投简历,笔试,面试,拿到offer/reject).五家公司分别为西门子,摩根,微软,华为,ebay.这里具体讲讲个人面试的经验,技巧和对所面公司的评价.

   首先,我会对我面试经历的收获作一个列表式的总结,然后再结合各个公司的面试过程具体阐述.这么做是因为文章较长,讲明白有什么没有什么可以避免浪费大家宝贵的时间,大家可以挑选自己感兴趣或者认同的部分,不感兴趣直接跳过,有异议的部分乎略或者与我探讨一下.

面试的几点原则:
  1. 准备好中英文简历各一份,且务必在一页纸内.简历中需样样属实,牢记面试是'a fair game'.
  2. 对自己要工作的方向有所熟悉,知道这个领域需要哪些技术.机会一定是留给有准备的人的.
  3. 务必对自己所投具体岗位做一个了解.岗位性质,工作地点,入职时间,实习持续时间是四个基本要素.
  4. 不要过于相信舆论上对某个公司的评价,纵使大家都这么说,一些最真实的信息还是可能被选择性失明了.但毕竟空穴来风,如果你想知道事实,和你的学长聊一聊,然后亲自去参加面试.
  5. 你参加面试的态度代表着你的个性,决定着面试官对你的评价.我主张本色出演,表现最真实的自己,再次牢记"It's a fair game".但我的意思绝不是把自己邋遢糟糕的一面拿出来到处显摆.
  6. 企业和面试官对待面试,求职者的态度,筛选的标准等,反应了这个公司(或者部门)的文化.故当你手握数个offer难以抉择时,回想一下面试官们,他们是你未来的模板;再回想一下面试的氛围,那将是你工作的氛围;最后回想一下和你一起进入终面的应聘者,他们将是你的同事.三思而后行.
  7. Last but not least,如果可能,和你喜欢欣赏的面试官做个朋友.
你不会看到:       
  1. 客观地评价一家公司的好坏.诚如原则4,自己去尝试一下才知道深浅.适合你的就是最好的.但是,这不妨碍我发表个人观点,同学们可作参考.
  2. 关于为什么我要找工作,为什么不考研,为什么不非技术岗. 这些问题我自己都很纠结,而且我觉得这和机遇有关,下一篇博文我会讲我是怎么走上这条不归路的,呵呵.
  3. 面试题目的答案.我会回忆我面试时遇到的问题,但是没有解答.想知道答案,就自己思索或查书,如果还有困难,那就求助他人.至少要有一个过程.

前期准备:

知识积累:    无论是考研还是找技术岗工作,英语、C++、数据结构和操作系统都是重心,所以这学期一开始,我就把心思放在这几个方向上。我看的都是比较具有代表性的书籍(属于考研找工作,谁用谁知道类型),如《C++ Primer》,《数据结构与算法分析》(为了应对英文技术面,看的是英文的)。如果你想搞运维,linux和脚本语言就是重点了.(原则2)
简历:
           要从投霸成功进化,就一定要有一个出色的简历。从摩根和微软的经验教训来看,简历一定只能有一页纸(原则1)。前者基本上不看第二页,理由是再牛的人也可以在一页纸内写清自己的成就(还记得大明湖畔的“I wrote python”?);后者未有明确规定,但面试时微软会亲自帮你把简历打印好,于是Sunicy面试时发现自己的第二页简历不见鸟(这个故事,在Sunicy的面经里也有所提及,呵呵),尿性十足。中英文简历各一份,身边的一些牛人因为没准备错过了好多机会。    写简历时很多人会烦恼,投技术岗没有项目经历怎么写,这么想往往会陷入深深的纠结之中,因为除了课程项目,大部分人鲜有别的代码经验。但只要你的课程项目是自己认真做的,没有打酱油,那就够了。HR就告诉我,凡是工科生就会有课程项目经历,关键在于有没有别的亮点。所以大家写简历时,一定要把自己不一样的地方突出来。我就把我的活动经历放在了前面,效果好了很多。    简历的另一特点是“it's a fair game",说法出自摩根的Mike。凡是你写在简历上的东西都有可能会被问到,作假时绝对不行的,甚至,不熟悉都是不行的。我们的操作系统实验算是非常有分量,基本上到哪儿面试官都不会深究下去,因为它的技术含量比较高。当然也有出岔子的时候,ebay coc二面时考官让我用英文介绍一下技术实现细节,我瞬间就给jyy大神跪了。当我脑海中飘过mutex,semaphore等等时,我甚至找不到单词来把它们链接起来。不过你想,如果连自己的简历细节都准备不好,遇到考官奇怪的各种问题,咱又有多少胜算呢。

西门子:

   严格意义上讲,这是我投的第一家公司,Java开发工程师,一个很不熟悉的岗位。没有任何前奏,没有预约,三月三十号上午十点HR mm给我打电话要进行面试。之前一直担心摩根会来电面,所以接到座机打来的电话时“hello,this is penn”差点就脱口而出了。简短交流后,mm发现我才大三,表示希望我立刻入职。但是我是有立场的,坚决不翘课(其实是不离开学校的意思,至于课嘛,偶尔翘偶尔翘),必须七月之后。然后,就没有然后了。这次面试没有任何技术含量,但是给我的提醒是,一定要看招聘职位的具体要求,实习开始时间、持续时间等等,考虑一下地点和工资有时也是必要的。(第一次投简历往往乎略了 原则3 ,我们总是"不管三七五十六,投出去再说,tnnd").

摩根:

笔试:    今年的实习招聘,我基本属于小白鼠类型,无论是笔试、电面还是face-to-face我都是最早接到的,甚至据信来的也比以往时候要早一些。周一上午收到Fiona Gao的邮件,被邀请参加MS的线上笔试。说到MS大家第一个想到的肯定是微软,但ms.com的域名确实在摩根手里的。比尔盖茨就算是世界首富他也买不到这个域名,因为摩根比他还不缺钱。    笔试题非常cool,全是选择题,做完一条下一条才会产生,因为题目会根据你做的情况做调整,直到逼近你的真实水平。所以做到C++单目运算符时,我和Sunicy都哭了,这是要有多差呀。题目类型很广,C++/OO/Sybase/Unix都占了较大的比重。整个过程中是不允许出现弹窗、跳转窗口,不能使用ctrl键,目测是为了避免搜索等作弊行为,一旦出现以上情况,比赛就终止了。至于像高神那样先后被360弹窗和邮件弹窗毁掉两次笔试的,我只能说,让你丫的用360,遭报应了吧哈哈!(用腾讯的也别笑,你也是有弹窗的)。我一共做了三十四条,算是比较多的。后来楠哥笔试时我们陪着一起刷题,一共也就三十四条。

电面:#全英文#    虽然之前一直强调摩根的英文要求比较高,但事实上,不到电面自己根本无法体会那种恐惧和压力。四月十一号上午接到摩根电面邀请,约好了下午五点 半电面半小时。立马翘了人工智能课回去准备,从看面经到英文的准备一共也就五小时,感觉上是还算充分。五点到五点半坐等电话时我是虚的(如果哪位同学过于紧张甚至难以开口说话,去买瓶百威,然后想像自己是Raj,你就会变身型男的),纠结于面试官会怎么和我打招呼。    五点半接到电话时心都到嗓子眼了,但是,听到对面的英文时,我瞬间压力全无。面试官应该是经验较少,略有些紧张,口语水平还不错但没有甩开我多少。我一下子就淡定了,很销魂的来了一句“Where should we start?”,自信满满地期待着他和我说“Introduce yourself”。结果他来了句“How was today?”,我一下子放空了,在差点憋出内伤的情况下终于表达出今天上了人工智能课感觉很蛋疼之后,他告诉我要先问我十个问题,简明作答。问题大致如下(后来发现大家的十个问题都差不多,我是悲剧的小白鼠啊,大家看看能不能用英语表达出来呢):

  •  recursive
  •  critical area
  •  call by value
  •  xml
  •  primary key & foreign key
  •  Singleton
  •  Concurrent VS Parallelism
  •  Compiled language VS Interpreted Language
  •  Stack

   有一个忘记了,英文的东西不好记,基本上是过脑就忘的。回答完我感觉还算ok。接着他貌似拿起我的简历,说你学过网络是吧,来问你几个问题,tell me the difference between TCP and UDP。之后又问了几个,多少回答了一些,直到最后一个问题,他连说出六个单词,我就听懂network这一词,我表示不要重复了,直接过吧,我完全不晓得是什么东西。网络就到这里了。    然后他让我挑一门语言,C++,Java或者别的什么。我当时非常尿性的想到了Scheme,当然我立马打住了我的傻逼念头,选了C++。问题都在我的料想之内,都是要详细介绍机制的,看过《C++编程思想》里面介绍编译器如何实现多态,于是回答各种爽:

  • pure virtual function
  • virtual constructor & virtual destructor
  • difference between memory copy & string copy
  • scope resolution operator
   最后一个问题时我一下子被resolution吓懵了,毕竟这个词,不同人是有不同的发音的(你应该知道日本人是怎么读blackberry的吧,就是那感觉)。我反问“scope resolution operator?”他很高兴我听懂了他的意思“Yes!”,我立马回了句“I don’t know.”,哥哥来了个七百二十度转体两周难度系数5.0,“what?U don’t know!?”,颇有见到火星人的感觉,我只好向他表明,也许我知道这个东西是什么意思,但是我tnnd不知道你在说什么,我还是回火星去吧。他也只好打住,结束了我们的C++之旅。    接着我们又回到了简历,谈了谈项目,主要是要我讲Java项目ifttt中采用了哪些技术,遇到哪些困难(团队的和技术的),去年做的很积极,而且最近正好在翻译play的manual,MVC阐述的比较好,得到一句“sounds great”,感到欣慰啊。人生中第一个正式的面试居然就是技术面而且还是全英文的,虽压力山大,但是回想起来依然觉得十分有趣,面试官那句“U don't know ”我会记着一辈子的。 收获:    记得第一次接触摩根是去年微软摩根高性能计算挑战赛,那时我们错误的估计了自己的水平,没有参加code storm来搞什么高性能计算,结果在学长和算法考试的双重压力下退赛,当时特别担心自己上了摩根和微软的黑名单,永世不得翻身了。如果仅从面试摩根的技巧上看,最重要的是英语,口语OK的话直接秒杀很多对手了。技术层面上难度不大,如果平时喜欢看原版的技术书籍或者文档的话,可以说是轻轻松松的,限制一部分同学的其实就是不知道如何用英文技术词汇把自己肚子里的货端出来。我本身对MS不报有太大的希望,所以面的时候比较轻松,纵使被血虐了也不太难过。而如果你梦想着加入摩根这样一个以IT为技术核心的投行的话,现在就开始准备吧,越早越好。摩根去年招聘时Mike说的话至今难忘“我们不需要你perfect,但如果你只是competitive,那是不够的,一定要superior!”,我以此作为奋斗的目标,与君共勉。

微软:

笔试:    

从一个MS到另一个MS大概只有一个星期的样子,有了摩根的笔试的经历,准备微软的笔试看似要好一些了。传说中微软和谷歌是两个专考算法题的巨擘,翻过一段时间的《编程之美》和《编程珠玑》,觉得这些题目都比较麻烦,要是笔试面试时遇到还真不一定就能立刻搞定。CSDN上关于微软面试的文章也全都是算法题,我估摸着自己学计算机不过三年,没搞过算法没参加过比赛,被血虐是一定的,也就继续淡定地看数据结构。

   

笔试题一共二十条,算法占了一大半,夹杂着智力题、操作系统、组员等等。倒数第二条就是去年算法倒数第二跳,看到题目非常喜感啊。题目大部分没有太大的难度,南大计算机算法课的水平应付没有问题的,这里要赞一下钱柱中老师,去年修了他的课,打下比较的基础了。题目就没有必要贴出来,因为万变不离其宗,如果水平到了,问题总是可以解决的。牛逼公司的优势在于,你几乎不可能靠运气通过数轮笔试面试,这是判断自己水平的一个好方法,呵呵。

面试:    

面试在笔试之后的一周,地点选在鼓楼的费楼。那段时间我的运气比较差,连续四天赶到鼓楼或软件达到参加笔试面试,而且时间都是上午九点,每天六点多起,疲惫不堪啊。面试那天我只是略微紧张,一方面刚进行了摩根的电面,自觉不会有更大的挑战,另一方面,面试官集体迟到二十分钟,氛围比较好。再就是签到时看到笔试的分数,相比而言还是不错的。

   

一面的面试官相当热情,我进入面试间时他是唯一一个主动出来找我并把我带到位置上的。从他走向我的那一刻,我的心情就彻底平复了。先是自我介绍,聊了聊做的一些项目,对Android的看法(看来整个公司都在看移动平台啊)。只问了一个技术问题,解释Java虚拟机。我一直谈到垃圾收集才停下。话刚落,面试官就拿出笔和纸,“OK,我们来做一条题目”。题目非常简单,处理一个二位矩阵,如果矩阵中某一个位置的值为0,则把该行和该列都赋值为0.我思考了一下,把空间复杂度从O(N)降为了O(1),面试官担心我会紧张,让我先讲一下想法,谈完后表示ok,让那个我用最优美的方式写出来。得到肯定更加自信了,很快的就写出代码。写的时候他在一边拍电脑,并不关注我。看我写完就让我写测试样例,测试以前从来没有接触过,不知道怎么挑选样例,后来还是面试官给举例子,在边界寻找样例,还真是发现问题了。面试官对我没有学过测试相关的课程但知道白盒子黑盒子比较满意,还和我讲在微软开发和测试一样重要。果然以找测试样例就发现问题了,修改起来也不麻烦。第一面相当愉快。

   

一面结束HR让我在外面等二面的通知,得看一面面试官对我的评价,那时有点担心,因为觉得题目比较简单(后来知道有学长也是这个题目但是木有搞定。。。)。通知二面时面试官直接向我走来,自我介绍并和我握手,相当的热情。面试教室不小心被关闭了,等待钥匙时就我的简历内容聊了一会儿,谈了会儿桌游,并且对早起赶鼓楼非常蛋疼这件事情达成共识,在开始正式面试前我感觉爽极了。不想坐下来的第一个问题是“tell me the difference between C++ and Java”。这个问题之前我有考虑过,甚至自作聪明的给自己设计了一个看似幽默的开头“Oh,it's a big question, haha”,效果倒是不错,博得面试官一笑。阐述完后,面试官居然来了一句“ask U a  smaller question, what's the difference between C and Java”,瞬间我都要精尽人亡了,我这是造什么孽,搬起脚砸了自己的石头。 扯完蛋后也没有什么技术问题,直接拿出纸做题目。我刚开始被挖了个坑直接跳了进去,后来提醒下才做出来。感觉比较糟糕。最后还在指针和引用的使用上产生了一点争执。

结果&收获:    

面试完了后觉得自己表现的不好,比较悲观,于是回来继续复习考研。感受到微软面试官的热情和专业之后,我立下誓言,这辈子一定要去微软工作。而正当我为最近一段时间花在复习上的时候较少而自责时,接到了微软的offer。那时正在通哥办公室开会,感觉自己略微对得起通哥了。虽然那个时候摩根和华为的终面或者实习通知还没有发出,我没有犹豫就答应了微软的SDE offer。用微软HR mm的说法,早点告诉你你就可以有时间拒掉别的offer了。

   

之所以经历了微软的面试之后,我会下一个一去MS的工作的决心,是两次面试专业且热情的面试官给我留下极其美好的印象。某些企业的面试官会给人一种高高在上的感觉,不做点名。相比之下微软的面试官或有意或无意地去放松应聘者的心情,光从这一点,国内一些企业和微软的差距就显而易见了。所以,不管自己的水平怎么样,如果是投技术,一定要到投一次微软,感受一下顶级IT企业的氛围。而且好处在于,并不需要太多的准备,只要把自己的基础发挥出来就Okay鸟。诚如赵建华老师所说“过度的复习就是作弊”,面一次MS,就知道自己在哪个位置了。

华为:

上机:  

 当我收到华为的短信通知时,我感觉真是回到了我那一去不复返的少年时代啊,“请于xxx日到软件大道xxx上机测试”。居然叫上机!哥看了这么多面经,从学长学姐那里耳濡目染这么多经历,第一听到上机的说法。从这个用词可以一窥华为对待coding的态度。

   

我选择的是周日上机测试,据其他一起上机的同学说,周日的题目要比周六难。HR任华女士告诉我们一共有三条题目,只要能做出来一条,就可以进入面试阶段。我当时就想,这要求是要有多低啊。所以我进入上机地点时压力为0。找好位置坐定后,HR开始讲机器和测试的使用方法,比较简单我就没听,开始玩纸牌。正式拿到题目后,我更加确信了我的想法“挑选标准极低”,第二条是将一个int型一位数组里的值拷贝到第二个数组中,第三条是为一串int型的输入构造一个不需要平衡的二叉树。

家君、lily他们告诉我说,他们身边一起面试的同学老是要问他们题目怎么做。我没有遇到这种情况,不过我观察了一下我身边的哥们。他先是打开VC6.0,犹豫了半响,然后打开eclipse。当他选择新建工程,看到弹出的一个满是选项的对话框时,他的表情算是欲哭无泪吧。    当我身边那哥们手忙脚乱好不容易建好工程,然后小心翼翼地进行输入时,我怀疑他是否知道自己写的究竟是Java还是C++。我的重点不在于他,他可能并不是这个领域这个专业的,没有进行过编程的训练。我只是想到了原则6,与我一起竞争岗位的同学的水准说明了公司筛选的标准。可能华为觉得要给每个人机会,可能华为觉得解决问题的能力比实际的技术更重要。但是这不意味着技术就没有门槛,既然是C++/Java上机测试,那么这位同学理应有编程经验。否则华为应当给他们进行笔头测试,以窥探其水准。

   

提前提交答案后出了华为,我从一定程度上了解了这家公司的情况,并作了自己的决定。之后的面试,处于礼貌和尊重,我进行了下去。


面试:    

华为的面试挑在了下一个周末。开始的时间是上午十点,我算是比较幸运的,一天把所有的面试全部结束了。其他大部分同学的战线拖到了两天。也许是人手不够用,总之安排地非常混乱。

 

 第一面是技术面,在等待时汇总了一下其他同学被问的问题,基本上和考研没有太大的区别,“什么是链表?“”什么是指针?”,诸如此类。给我面试的是一位女员工,我先是开始自我介绍,看她没有组织我的意思,于是我就把我的项目一个接着一个讲下去,她表示我可以详细讲。于是我就keep talking.中间她就问了我“迭代”是什么里面的,我回答敏捷,再没有其它问题。我从Android聊到Java建站,再到项目管理。一直讲到口干舌燥花了40分钟,我的面试就结束了。听说伟哥也是这样子的。如果面试者项目经历丰富一点,能扯一点,基本上节奏能够自己掌控,华为的面试官就把机会交给你自己了。家君那里还有一个段子,面试官问家君什么是Dijkstra,家君表示面试官的发音是不对滴。面试官惊叹“科班出身就是不一样啊!”,呵呵。

 

 第二面是群面。没想到技术面还有群面,不知道是为了什么,用华为的话说,是要看有没有团队精神。以前考虑过,如果投管培,就一定会有群面,群面就会有谁当Leader的问题,就会有争执。想到这个就让我很烦,因为那种争执没有意义,目的也只有一个就是为了显得夺目。带着这样的“有色眼镜”我开始我的群面。结果不出意料,开始讨论问题时,有一个姐姐立马站起来组织大家。而讨论过程中,无论我说什么,基本上我旁边那哥们都要反驳我。为了得到表现的机会,剩下的同学很自然的分成了两拨,一边支持喔,一边支持他。最后那个Leader姐姐就出来选择一种答案。基本上Leader姐姐说话时我就默不作声了。

 

 讨论结束后要做报告,大家随意讲,像是辩论一样。我从第一次发言后就老是被我们的Leader姐姐打断,每每我站起来,leader姐姐就站起来发言,完全不顾我的感受。最后面试官就受不了,说“你不要讲了,让别人讲讲”。最后结果是,群面就这个姐姐被淘汰了。虽然对于技术面群面意义不大,但是还是能从中有所收获,至少我学会了,可以抢眼,但是不要忽略了你的队友。

 

 第三面是性格测试,也是全场最精彩的部分。多少英雄豪杰在性格测试倒下了,走上了“黑华为一辈子"的不归路。我认识的基本都是大神们,所以可以论定,华为是要被黑出翔来了。性格测试主要是判断你是否诚实、是否能够吃苦耐劳。题目全是选择题,很多题目完全是矛盾的,也许就是靠这种方法来判定诚实度的吧。

   

钟面是一个大boss了。我今天一天大部分时间就是在聊天,钟面也不例外。不过boss问的几个问题还是很真诚的。他先是翻了翻我的简历,问我,为什么要来华为面试(潜台词其实是,干嘛不去别家要来这里)。我就告诉他可能会去考研。于是他花了五分钟和我讲读研三年和在华为工作三年的区别,意思就是读研太撮了(他的说法,非本人观点)。之后他直奔主题:”你来华为的话,如果发现和你一起入职的人比你差,你该怎么办?“我打个哈哈,意思就是说,可能是面试时他们侥幸进来的吧。他更加赤裸裸,”别闹,如果你来华为,你身边那些哥们就是水平比你差,工资还和你一样,肿么办“。第一见有面试官如此评价自己的同事,完全没有准备过。他看我难以回答,于是和我讲自己的故事,讲他在华为13年的工作经历芸芸,以一个长者的身份教导我,身边人比我撮没关系,自己要学习,就一定会有升迁的,会有更多的机会。一直聊到六点才结束。

结果&收获    因为上机时就已经做了决定,所以拿到offer时还是拒绝了。我想,即时没有上机时的奇遇,我也极大可能拒掉这个offer。原因有几点,首先是华为的人才挑选标准,实在是低了一点,每一轮你都会可以感觉到;第二就是华为对待招聘的态度,无论是面试通知、上机通知,甚至发offer,都是短信通知,”如果接受offer,请回复xxx;如果没有时间,请回复xxx“。不知道的还以为是10086自助服务台,”查询账单请按1,xxx请按2“。一个电话都没有,让人感觉很没有诚意。这样一番短信发过来,求职者心的凉了。第三点就是面试官,面试官和我交流体现的出的企业文化,自我感觉不是很搭,我比较喜欢的工程师文化至上、轻松欢愉的的氛围。从本次面试中我深刻地理解了”原则6“.



blog comments powered by Disqus

Published

26 April 2012

Tags