到了找实习的季节,原本以为自己有名校背景又有名企实习经历,这两年自以为水平也有所提高,找个实习应该易如反掌结果一次次撞墙。果然不能骄傲轻敌,还是要认清楚自己的。最大的教训就是一开始太自我感觉良好了,没有认真准备,其实和大多数公司的要求来比,自己的知识漏洞还是很大的,今后还是要抓紧时间弥补自己的不足。
战绩概况:
网易游戏 研发工程师 一轮hr电面 两轮技术面 挂之
腾讯 微博研发工程师 一轮笔试 一轮技术面 挂之
百度 爬虫研发工程师 两轮技术面 挂之
百度 基础架构部 研发工程师 2轮技术面 offer
遨游浏览器 内核研发工程师 两轮技术面 一轮hr面 offer
Amazon SDE 一轮hr电面 两轮技术面 offer
搜狐,搜狗 研发工程师 笔试过了后不太想去了就没去面试
人人 数据挖掘工程师 3.5面 offer
先不讲故事了,先上点干货
找实习的准备
###资讯来源
北京地区的基本上看应届生的北京版就可以了,主要看汇总的各个bbs的信息,里面有很多都是内推机会,比那些大规模的公司宣传的靠谱的多也快得多。我一般晚上吃完饭后就把一天新出的都刷一遍然后捡着想去的投,如果简历过了的话基本两天内就会通知面试了。
###复习准备
按惯例这一块会有长长的书单,先推荐几本我觉得一定要看的,后面会针对不同的要求再推荐几本。只推荐我看过的,因为我觉得推荐一堆我都没看过的书是件很没诚意的事情。
这是本传说中和同等重量金子同等价值的书。自我感觉操作系统的知识大部分都是从这里面学到的,而且这本书对计算机很多领域都有涉及,经过几次笔试和面试的感觉这些涉及都是恰到好处。不过这是部大块头的书,学弟学妹们如果没看过现在就可以着手看了,保证绝对不会后悔。
推荐这本书自我感觉就是件很没诚意的事情。个人对这本书的印象不太好,过于学术且理解起来很晦涩,不知道为啥这本书被捧上神坛。推荐的读法是把他当算法词典,把算法的思想看一遍,至于证明和推理什么的就不要强求了。这本书的好处就是看面经的时候说道的算法基本上就都见过名字了。
一本意料之外的好书,同大多数算法书不同这本书不是本词典,而是教了一个通用的从无到有设计算法的方案。具体来说就是用归纳法来设计算法,看完这本书后动态规划类的问题做起来和砍瓜切菜一样,其他问题也都能提供一个可行的思路。像我这种从来没搞过算法的小弱,看之前刷leetcode举步维艰,看完之后刷了几道题就觉得没意思了。所以如果算法基础弱的同学可以认真看一下。
被很多大牛都推荐过了,一个练习写代码的地方,里面的题目都很具有代表性并且每道题都给出了测试用例方便看自己错在了哪里,建议看完算法引论再来上面刷题,会轻松很多。
小弱的基本情况
木有竞赛经历,木有paper。有过百度做测试的经历,事实证明没人care。做过一个浏览器的项目,事实证明除了遨游别的公司要么不care要么听不懂。做了个博客一方面是个加分另一方面也给自己挖了个坑一会儿再说。兴趣十分广泛,已经被多个面试官肯定了,什么都能接一句,但是没有啥特长的基本都接不过三句。
具体过程
网易游戏
网易游戏的要求蛮苛刻的,北京只要北大清华的,工作地点在杭州或广州,一轮电面问了几个性格方面问题就是去酒店面试了。先是写一个编程题,数据结构方面的,应该没人会写不出来,两轮面试就再也没有写代码的题了。问了很多C++具体实现的细节,像迭代器,引用,dynamic_cast的东西这些东西已经不是看C++语法书能会的了,个人感觉有点太偏了。还问了些很常规的诸如线程和进程的区别,TCP和UDP的区别这种没营养的东西。算法的题都不要求写代码只要求说思路,可怜我当时还没读算法引论,只会用二分法去解题,用二分法把题都给糊弄过去了,现在想想有一道题是可以用归纳法轻松切掉的。项目什么的说了基本没人能理解,就对着我的博客各种问问题,有的写得年代久远了我自己都记不清了。还问了几个Python的问题,结果是个坑。总结网易游戏的面试就是坑比较多,总是问些犄角旮旯的和稀奇古怪的,让人容易掉进陷阱的题,估计最后是栽倒在坑里了。
推荐阅读:《C++ Primer》《深度探索C++对象模型》
网易游戏对C++的要求高到有点离谱,我原本以为第一本书就可以应付所有的C++问题,面完网易后才发现不够,于是挖掘出了第二本。讲C++的内存布局和具体实现的,但是这种东西没有个固定的标准,不同编译器实现都不一样,书中也有很多问题,所以建议读的时候要自己动手做实验验证真伪。
网易游戏的待遇还是很给力的,实习月薪也有1w,要求自然也高上去了。游戏还是个很综合的东西,目前技术人员才缺口也很大,在里面应该会学到很多稀缺的东西。不过做游戏这个东西和我三观不太相符,想想做游戏总觉得有些不舒服,毕竟这个东西的社会价值还是个不太好评价的东西,游戏对人的引导方向也很难把握,但是待遇确实很诱人,城市也是我喜欢的城市。
腾讯
其实自己开始很想去腾讯的,可以集齐三大互联网公司实习经历召唤神龙,可是临了因为自己情绪的问题早早败走。笔试的东西还是很基础的,据说和去年的很像不过之前也没看过,但是前面的题还是蛮简单的。后面有道编译连接的,预编译的概念没有搞懂,一道TCP链接的各种状态已经全忘了,还有道加密的题不是很清楚。附加题第一个算法用一下分治应该就可以了,第二个是考DHT的东西,总体来说范围很广但是没有特别难的地方。面试的时候让不知道中间出了什么问题让我等了一个多小时,整的我一时火气冲昏了头脑和面试官发飙了,一开始几个开场的问题全被我批评没水准了,后果自然可想而知了。倒不是腾讯的面试官气度不够,只能说自己太小心眼了。
我面的职位是去微博部门,个人感觉腾讯的微博尽管用户多但都是水分,已经不可能和新浪微博抗衡了,另一方面腾讯有了微信这张移动互联网的船票对微博的关注可能会降低了,微博将来的地位还是很尴尬的。如果能去微信部门的话说不定会有很多的机遇。
百度
个人对百度还是很有感情的,毕竟呆了不短的一段时间。面试还是一贯的高效节奏,第一天发简历,第二天打电话确认,第三天就面试了。由于写了熟悉python,博客里又有正则表达式的东西,问了一个环视匹配的正则问题,看样子会正则果然是个双刃剑,一问就问高级的匹配。惯例性的写了个算法,然后问了点python的问题,结果脑子一时短路,很简单的一个程序居然写的莫名其妙。再之后介绍了一下他们部门,感觉是个爬别人不让爬的网页这种不太道德的事情,不过还是有很多的挑战。第二个面试官花了半个多小时探讨如何设计一个爬虫系统。一会儿爬微博,一会儿爬论坛,一会儿爬博客,靠着我还有印象的一些搜索引擎知识勉强撑了一阵子,再然后一堆反作弊的问题我就扛不住了,很多都是开放性问题。还是百度一贯的风格一个问题一定要问到你不会了才能收手。之后写了一个链表数组的转置算法就结束了。可能是背景不太相符,尽管我觉得面试表现还可以,最后还是被拒掉了。
推荐阅读《搜索引擎:信息检索实践》
因为自己只读过这么一本和搜索引擎相关的,感觉原理和思路讲的还是很清晰的。对这方面感兴趣的同学可以再找找专门设计爬虫的资料,还有就是我印象里google公布过一些列的反作弊和链接农场的方法,可以去搜一下具体是怎么反作弊的。
感觉近两年百度已经从三大互联网企业中的优势地位慢慢退下来了,腾讯用微信革自己的命拿到了移动互联网的船票,阿里转型平台在技术上获得了大量的积累并且金融业务也逐渐成熟,而百度近几年却少了些革命性的东西,前景也逐渐暗淡,不过相信百度不会颓废太久会有突破性的产品出来。另外最近百度研究院貌似在研究高端洋气上档次的deep learning应该会出些高质量的产品。
遨游
其实在chrome出现前,本部落主一直是用遨游浏览器的所以还是有一定感情的。由于之前都被拒了,自己也收敛了很多,如果第一次就面遨游的话估计我都不会做什么准备就去了。写了一道算法题,基本上也算不上算法了,就是一个行数比较多的程序看一下编码功底。然后之前的浏览器项目终于有用武之地,终于有一个公司可以听懂了,终于说出来有人有反应了。之后扯了很多别的东西,我简历里关于编译器的东西第一次被人问了,我都记不清了,还扯了写函数式编程,现在主流浏览器的问题,还顺便聊了下之前在GDG上听说的dart语言,总之天南海北的技术都扯了一阵,还好平时知识面网撒的够宽都能接上一两句并引出一两个新鲜话题。估计是我的项目这么对口的人很少,而且聊得也挺开心,遨游也成了第一个拿到offer的地方。
推荐阅读
其实浏览器是个相对小众的技术,市面上没看到什么相关的书籍,最近看到两篇不错的文章How browsers work 和左耳耗子的浏览器的渲染原理简介在深入的东西恐怕要自己动调代码了可以看下我的VS2008编译Qtwebkit
遨游这个公司其实还是蛮有前途的,欧盟当年制裁IE不正当竞争推出的浏览器备选里面就有遨游,在国内也是家真正研究浏览器的公司,而且据hr说现在的盈利途径也很多。不过可能问题就是领域太专了,而且技术门槛还是比较高的,过去的人没一两个月学习是没法上手的。如果致力于浏览器的同学我倒是蛮推荐去遨游的。
###Amazon
话说投Amazon完全是抱着撞撞试试的心情,毕竟在北美Amazon也是很难进的公司。电话面试会让做英文介绍项目,磕磕绊绊的说了几句极为生硬的话算是糊弄过去了,由于知道我第三天要去遨游谈offer直接就给我安排了第二天的面试。
公司那叫一个远,坐到那人都虚了。两轮面试的面试官都是成熟型的,感觉和之前面的那些公司的人完全是两个风格。浏览器的项目又被问起来了,不过难得的是面试官居然还都感兴趣往后又问了一些。算法题都是很适合用归纳法做的,有一道dp的题砍瓜切菜的就做掉了,有一个归纳了一阵提出了一个很数学的解决方案还当场给面试官用归纳法证明了一下,不过最后还是在面试官的提示下找到了一个更直观的方法。之后有说啥都记不清了只记得还探讨了一下kindle的情况,问了一下为什么java ide不转到idea,还八卦了一下陈皓的事情,最后还对软工的东西是不是太务虚讨论了一下。
总体感觉面试官是我碰到的最有风度的,很会鼓励和引导面试者,至少让我面试的时候很放松很舒服。不过在Amazon这边要改用java和ruby这两种我都没怎么用过的语言,好在我对语言已经没有几年前的宗教主义了。其实除了觉得kindle挺好用和陈皓之前在Amazon呆过外对Amazon就没啥过多的了解了,希望进去后能了解些之前不知道的东西。
推荐
好好练练口语吧,感觉口语弱爆了。
###人人
投人人的数据挖掘主要是最近在追machine learning对数据分析燃起了兴趣,结果证明公司招实习生还是很看重研究背景的。前两面看我简历没啥数据挖掘的背景直接就写算法了,写的昏天黑地的不知写了多少个,不过基本都是LeetCode上见过的所以还好,只有一个人稍微问了我下hadoop的mapreduce怎么写,问的也是最基础的简历倒排索引和统计词频的东西。第三面面试官说了几句突然问我你是喜欢在后端敲命令还是前台做系统,暗示我没啥背景就不要来他们部了,我说好吧我喜欢做系统,想着赶快走人,结果他又给我找了个做前台系统的人面我…………那个人明显也是临时应付一下面了几道很简单的题就算了。不过最后居然还是过了。
由于没有做个数据挖掘方面的工作就没啥好推荐的了,不过coursera上的machine learning确实不错,感兴趣的可以看一下。那边的数据挖掘研究的是个很sad的事情,诸如为什么用户会流失,什么样的情况下流失的用户会回来之类的事情,听着感觉就很sad。毕竟人人还是个学生社交网络如何打入白领领域还有很多问题。
对于能坚持看到最后的人再推荐一篇最近看到过不错的文章ABC:always be coding译文在这里。总结来说就是要阅读,实践,思考。