从3月9号投递出第一份简历开始算起到今天,整整两个月。如果没有今天微软HR的那句Congratulation的话,我已经彻底认定自己是一个弱逼。事实证明,我是一个好运的弱逼。
以下是笔试面试回忆:
微软:
第一关是简历筛选,筛选并不严格,基本上我周围的同学投了的都能够进入笔试环节。障碍点是要求英文简历,周围有同学就因为怕写英文简历放弃了这次机会,十分可惜。事实上英文简历也只是要求有就可以了。
第二关是笔试,苏州是安排在中科大苏州校区考的。题目分为技术题和智商题,技术题比较基础,智商题难度适中,高中数学能力不错的话应该没有问题。试卷是全英文的,20题不定项选择,部分正确给一半分,答错扣分。所以我的原则是不确定的一律不选,20题就选了一个多选结果发现还是错的。
这里是试卷
http://blog.csdn.net/fengbingyang/article/details/8764931
最终成绩微软不会公布,按照博主的答案自己估分是70分左右,进入了SDE的面试环节。
第三关是电话面试,由于之前关注了比较多的ML和NLP方向,所以简历里面写了一些相关的经历,因此面试我的是微软STC组的小哥。上午十点先打来要求面试,当时早饭都没有吃,于是推迟到下午1点。事实上并没有传说中全英文面试,也没有问下水道盖子为什么是圆的这类问题。也可能是因为我在第一轮就跪了,没有深入到这些环节吧。
面试我的是一个温柔的小哥,开始是他自我介绍。然后问了一些项目经历热场,比如分类器特征选择,TF-IDF算法。不过感觉好像不是特别重视项目经历这块,只是问问而已,大概是在验证简历的真实性吧。
热场完毕后,小哥话锋一转,“那我们就来写程序吧”,语气听起来有点像“hell,it’s about time!”让我心头一颤。
第一题比较简单,把atoi函数用自己熟悉的语言实现一下,10分钟内发送到他的邮箱。(也有同时段面试的本校研究生是用lync当场看着写的,看面试小哥心情吧)
碰巧这题以前看过,知道考察的不是算法本身,而是思考问题的全面性。算法的话就一句
num=num*10+*string-'0';就可以了。而其他问题却有很多,比如输入的str指针要Const,比如指针内容可能为空,可能不全为数字,单纯过滤非数字的话就会把正负号也过滤掉。尽管我把这些都考虑到了,但是还是被小哥找出了bug。函数异常我是用-1返回的,但是如果要转换的就是’-1’的话,就无能为力了。因此小哥给出的解决方案是函数用bool型返回,num放入参数即可。
第二题其实也不困难,但是第一次电话面试的强大压力让我不能集中精神,死在了这题上。
单纯说一下题目吧,过程实在是不忍回忆了。
1000位整数相乘。30分钟写完发邮箱。
很直观的就是用数组存数,用相加模拟相乘。小哥也给了很温馨的提示,不过还是想着想着脑子就突然断路一篇空白,最终没有能给出成型的代码。
最后小哥寒暄了一下,随便问了点职业规划之类的问题给我找补信心。
两个礼拜后收到Thank you letter。
腾讯内推
当时微博关注了一些关于自然语言处理方面的学者和研究员,因此获得了这次面试机会。
腾讯的小哥很有亲和力,声音同样十分温柔,谈话过程中一直循循善诱让人如沐春风。
没有问一些大众面试题,直奔主题问了一堆项目相关的问题。
比如脏话处理的语料中选了多少语料进行人工标注,LDA模型的原理,分类器,核函数之类。问的我满头大汗,因为这些涉及深层数学原理的我看论文都是直接跳过,所以回答的十分糟糕,只能游离在表面谈一些无关紧要的问题。
小哥最后问了一些环台湾岛的经历,说他自己也是MTB爱好者,有找到知音的感觉。
当晚收到邮件。
小哥邮件中委婉的指出了“未来无论工作还是学习中把基础打好,深入钻研一些问题,不仅仅是停留在使用的层面”
最终还是内力不足啊!!!
阿里电话面
一面
可能是因为内推的原因,面试我的是天猫Java组的小哥,而我的简历里面根本没有提到Java。
下午2点左右接到电话,因为小哥是做Java开发的,所以对于项目经历并没有问很多。
1.C++多态的实现?(最长遇见的面试题之一)
2.Socket套接字同步IO和异步IO的区别?列举一下异步IO?
3.数据库的索引为什么是BR树结构?
4.了解哪些分布式开发?
5.C#中多线程机制是否了解?尾递归是怎么实现的?
6.进程和线程的区别?(最长遇到的面试题之二)
7.一个程序中都有哪些空间?(堆栈静态变量区之类的)
然后让我简单解释了一下项目中用到的算法思想,其他就是以闲聊为主。
一开始我并不知道小哥是做Java开发的,和他大谈人生苦短,Coding boring之类的想法。
然后小哥很无奈的表示我可能不适合他们组做开发,但还是很nice的表示会有下一轮电面,大概是闲聊的时候聊的比较开心吧。
二面
两天后接到数据挖掘组的二面,当时在图书馆,信号不是很好,交流起来有点费劲。
这个小哥是做NLP的,所以上来就直接问了几个项目里面涉及到的问题。显然他对我的答案不是十分满意。然后问了一个基础题,“数组和链表分别在什么情况下使用”。我答了链表的动态增添和开在堆空间不像数组太大会把栈压爆掉,以及链表的节点可以是多种数据类型的集合。小哥还是不满意,要我回去多看看书。后来也问了TF-IDF算法,要求详细说明并举例。这个因为被问了很多次,所以回答起来没有什么困难。早知道简历里面把pagerank算法也写上了,大家好像都对google的东西比较感兴趣。后来还问了用浏览器打开taobao.com会发生的一系列事情,这个我确实不怎么熟悉。简单的回答对于客户端这边会有DNS,浏览器对js代码和html标签dom树的处理过程,服务器那边的cdn之类也是流于表面随便讲了点,小哥又一次不满意TNT........
比较有意思的是小哥问了我觉得国内哪些学校做NLP比较厉害,我脱口而出的就是清华和哈工大。小哥马上就问了清华那些方面厉害,语气里颇有不服的感觉。后来果然发现小哥是哈工大的,于是我又没节操的捧了哈工大的臭脚。结果还是跪了。
接下来是一些零碎的失败经历........
大众点评试吃员程序员笔试
第一阶段考智商。分文法类比,数字感觉和图形选择三块,和世面上的智商测试一样,就是图形那块时间很紧张,基本没时间思考,全靠直觉。
第二阶段考专业知识,不过笔试的时候应该是对方服务器出了点差错,导致专业题没有显示出来。所以也悲剧了。
另外还有一家叫Mobvoi的Startup的公司,经历了HR面和工程师面。
HR比较平易近人...而且懂技术。
后来工程师面就觉得工程师比较傲慢一点,可能是因为觉得我是个弱逼的原因吧。所以到现在也没有通知我。
当然最最令人伤心的还是百度的面试
HR面,先是问了一堆问题。比如职业规划,个人经历之类的。可以说是对答如流,相谈甚欢啊!
最后问了一下可以实习的时间,我说我们学校大概要7月中旬才会放假。HR就直接说抱歉,直接说抱歉啊!!!!
7月中旬才放假的好好回家玩儿蛋去吧!!!找毛实习啊!!!!
好吧终于要说到到目前为止唯一成功拿到offer的一次面试经历了。
事实上这次去无锡的主要任务是陪女朋友参加微软技术支持工程师的面试,但是由于在准备室里面不断的听到那些弱到暴的面试题,比如
-----------------------------------------------我是弱到暴的面试题--------------------------------------------
cookie和session的区别
Http和Https的区别
Ping会用到哪个协议
-----------------------------------------------我是弱到暴的面试题--------------------------------------------
基本都是这类题,不一而足。听得我实在是心痒难耐,加上准备室放眼望去都是硕士研究生,让我觉得技术支持工程师虽然算不上香饽饽但也不能弃之如敝屣。于是我厚着脸皮(本来也不薄)去找HR要求霸面,一开始HR表示两个面试团队是不一样的因此不能给我安排面试。不过HR MM绝对是个通情达理,平易近人的好MM,几乎没有费什么口舌就同意了看一下简历,只是要我考虑清楚是否确定不申SDE转申CSS了。
一开始我的确思考了一下我到底是适合是到前线厮杀,把人头栓在腰间刀尖舔血杀人分赃还是在后方军马粮草,稳扎营盘指点江山。后来才发现我想多了,SDE都面成屎了,即使我提着脑袋想上前线人家也不放心让我上啊。
于是我坚定的告诉HR mm我决定了要面一把CSS,说得大义凛然风萧萧兮易水寒。
因为微软并没有为陪同人员安排午餐,所以下午两点多HR通知我去面试的时候我还没有吃午饭。本来以为会和其他来面试的同学一样面一轮休息一下,可以抓紧休息时间吃点东西的没想到我这样的编外人员是三轮连着面的,以下是面到肾上腺素差点从食管喷出来的面经。
第一面是一个胖胖的小哥,给了张纸上面是三个应用情况让写sql语句,很久没写有点生疏,估计写的不是很理想。然后是两段英文介绍,一段是介绍做微软MSP的时候的工作,一段是介绍一个机器学习的项目经历。然后让我解释了一下TF-IDF算法(又一次)和LDA模型(同样又一次)。
问了一个逻辑题,一个病人,两幅手套,三个医生如何避免交叉感染。这题没什么听懂,一个病人如何产生交叉感染。就问了一下医生是否同时做手术,不同时的话一副手套用来绝缘,一副用来操作就好。小哥不置可否。
模拟了一个场景,面试小哥模拟成一个问题长久没有得到解决的客户,原本负责的同事因故离开联系不上了,于是由我接手。一开始被问的有点蒙,往自己身上揽责任。后来反应过来和客户确认了问题,并反馈了是是我们的业务流程存在问题,一定会改进并保证这样的情况以后不会发生。没看出小哥的态度。
又让我举出微软的十个产品,这个轻轻松松,如数家珍。从硬件kinect到软件ms sql,从桌面系统到服务器系统,毫无压力。甚至还举出了微软的arc鼠标。
还问了微软最近的产品更新,我说了kinect的windows sdk小哥表示不怎么新,我说了azure平台的整合表示微软在云端发力。似乎认可这个答案。
第二个是一个很阳光的小哥,一直都是微笑。
同样问了Msp期间做过什么,如实回答。
问了冒泡法排序的思想,时间复杂度。我本来拿了笔准备写代码了,结果小哥没要写。可能觉得太简单了吧。
然后问了一个逻辑题,碰巧我去听讲座的时候听说过:博弈双方在圆形桌子上安放棋子,最后有一方会放不下,放不下的那方为输,问必胜策略。我表示这题我做过了,讲了放圆心的策略。小哥略惊讶,换了下题。说他已经放了一个了,不在圆心,让我想必胜策略。直觉上说放与圆心对称一点,后来发现不管怎么放都是先下者必胜。因为圆形桌面上能放下的棋子数是奇数个的。(一个圆心加无数同心圆,组成同心圆的棋子数必为偶数)和小哥说了,小哥想了一下,说好像是这样,看来他也是即兴想的。
接着问我学过算法没,我说没有。他说那考一个算法题。TVT给一个数N,若N能由几个连续自然数之和表示,则输出连续自然数。如9可以由4,5的和表示,6可以由1,2,3的和表示。一开始给了一个力的O(N2),小哥让优化,一做算法题就紧张,脑子完全空白。小哥提示说连续自然数为等差数列,想了一会还是没想明白,由小哥写给我看,优化成O(N)的复杂度。一做算法题就虚绝对是病啊!!必须治!
最后问了C#中按值传递和按地址传递的机制,我问和C++不一样么,然后把C++里的说了一下。小哥说略有差别,然后耐心讲解。我弄明白是按引用传递就是真正按地址传递这回事。
最后是manger面,这一面没有问技术。谈了谈面试时间和职业规划,个人爱好和人生价值这类的话题。尽管我技术不是很牛逼.....但是谈人生还是蛮有把握的。于是这面几乎没什么问题。
最后今天接到电话通知说通过了。
下面对面试经历简单总结一下
1.算法和coding的能力绝对是计算机专业的核心竞争力,千万不要听信一些老师说的coding无用论,说coding是专科苦力干的脏活儿累活儿。首先,一室不扫何以扫天下,连coding都不过关的话根本没有地方能够展示你的soft skill。再者,coding绝对是世界上最有创造力的工作之一,说它是脏活累活的都是因为自己能力不强产生的酸葡萄心理。
2.外企面试主要看你未来成长空间,所以注重思维方式和学习能力的考察。国企面试会看重你现有的技能,因此面试内容会有点像大学考试,希望你一去就能发挥作用。另外一个有意思的事情是,微软的面试一般都安排在周五而阿里和大众点评的都是在周六周日,员工待遇可见一斑。
3.不要怕英语不要怕丢人不要怕秀下限。
4.希望学校能够考虑一下大三学生的实习需要,适当的提前放暑假。希望学院能够更加重视算法和编译原理这两门课,至少把算法列为必修课,对学生对学院都是有好处的。
关于面试的内容结束。
作为一名笔拙口讷的工科生,把以上经历写清楚已经十分不易。尽管有一些类似心灵鸡汤的想法想要分享,但是诉诸笔端的文字自己看来也是酸腐无比。只有一件事是必须要说的:
不要用父母的钱为自己的不努力买单,那是一件很可耻的事。