对学生朋友的一点建议

发表者:Google(谷歌)中国工程研究院工程师 方坤

自去年春天加入谷歌,我曾多次随公司校园招聘团队一起走访各地院校,帮助公司发掘人才

。利用这样的出差机会到处走走看看,饱览祖国大好河山,是我一点小小的私心。但更具挑

战性、更激动人心的,还是和我未来的同事们过招,不打不相识嘛。一想到马上就要和这样

优秀的人才一起工作,我就兴奋不已,真恨不得现在就买一张单程机票把他/她拽回北京。

然而,在面试过程中,我也相当惋惜地看到,由于种种主客观原因的限制,很多青春韶华的

学子未能充分发挥出他们应有的潜力。这里我不讲成绩,只把我遇到过的一些普遍的问题归

纳一下,希望对即将踏入社会的学生朋友们能有些许帮助。

实战!实战!

纸上得来终觉浅,绝知此事要躬行。对于一个未来的软件工程师来说,实际编程经验是相当

重要的。我们会要求应聘者在紧凑的时间内编写大量的代码,从中考察应聘者的分析能力,

编码速度,代码可读性,对所用编程语言的掌握程度,对边界条件与异常状况的处理,数据

结构与函数接口

的定义,程序运行的效率和应聘者查错纠错的能力等等。一口气列出这么多要求,听上去似

乎过于苛刻,其实只要积累了足够的实战经验,每一个应聘者都完全可以满足这些最低限度

的要求。

我记得开复对于青年学子们有一个建议,大学四年,至少要编写 10 万行代码。不是每一个

人都期望进入谷歌这样的顶级技术公司,但即使对开复的建议打个三折,也还有 3

万行呢,不努力,能行嘛。前来应聘的学生们在编写代码时暴露出这样那样的问题,大都可

以归结到同一个原因:锻炼太少。比如"for(int i = 0; i < strlen(s);

++i)",没有实战经验的人,怎么可能意识到暗藏其间的效率陷阱。再比如内存泄漏,就和

初恋一样,没有亲身经历过的人,不会有刻骨铭心的感受,而一旦经历,终身难忘,根本用

不着你有多聪明。遗憾的是,我看到许多相当聪颖的学生写出来的代码只能用惨不忍睹来形

容,真让我怀疑这是不是就是他们的第一次。大家不要怪谷歌要求高,恕我直言,如果不能

持之以恒,下点儿苦功夫,不光谷歌一家,其它公司恐怕也是进不去的。

北京、上海等地的学生,往往有更多实习、兼职机会,接受锻炼之余,还能攒下一笔小钱作

零用之资。其它一些地区的学生也许就没有这么幸运,这就尤其需要积极主动,寻找机会,

创造机会,把握机会。世界正在变平,互联网的发展改变着地球的面貌,让不发达地区的学

生也能相对容易地接触到发达地区的资源。前不久我在西安遇到一个学生,他半年来一直坚

持在北京大学的ACM 网站上参赛、做题,我看他写出来的程序就确实比他大多数同学都要

好一些。我相信,只要他能够持之以恒,还会取得更大的进步。我听说浙江大学的 ACM 网站、

TopCoder网站也都是不错的教育资源,感兴趣的同学不妨一看;虽说做竞赛题距离真正的软

件开发还有着显著差别,但也不失为一个不错的出发点。

在积累一定编码量的基础上,我建议大家总结经验教训,不断提高自我。如果几万行代码写

下来,学 C++ 的不知道 const 怎么用,学 python 的没听说过 GIL,我看也没什么意思。

到了这个阶段,我推荐大家读一些经典的进阶书籍,例如《Effective C++》、《Effective

Java》等,即使地处偏远地区,也可通过网上书店买到。(我建议编码量太少的同学就先不

要读了,会走火入魔的。我见过有学生连引用和指针都没搞清楚,就在那里重载操作符的。

)交流也很重要,如果能够与网上网下志同道合的朋友互相帮助,共同进步,当收事半功倍

之效。在这一方面,各校的 Google Camp也许能够起到一定作用。"我会写代码呀,为什么

谷歌不要我?"一家外包公司或许会满足于雇佣仅能从事简单的、机械性的重复劳动的软件蓝

领,而让谷歌苦苦寻觅的,乃是最优秀的软件工程师兼计算机科学家——是的,在谷歌,研究

与开发融为一体,软件工程师与计算机科学家当然也合二为一。计算机这几年算是比较热的,

能够得偿所愿挤进计算机科学相关专业的学生都是全中国顶尖的人才,如果大学四年荒芜学业,

未能取到真经,浪费了这一来之不易的学习机会,是不是太可惜了呢。

遍历一个数组或链表的时间复杂度是多少?对于这样一个不是问题的问题,竟然各地都有相

当数量的学生回答说是 O(logN)!有一次我实在忍不住了,提示应聘的学生说:"你是如何

理解'遍历'一词的涵义呢?"他立刻做恍然大悟状,回答说:"哦,对,应该是

O(NlogN)"。我当时失望得一句话都说不出来。类似的例子还有很多。坊间一直传说谷歌的

面试题有多难,其实大多数学生都卡在最基础的问题上。少数人费尽气力要收集谷歌曾经用

过的面试题,其实我们大多数题目都来自或改编自经典计算机科学教材的习题。

顺便提一句,上面提到的那个答错的学生乃是一流大学中成绩名列前茅的优秀生,门门功课

(包括所有计算机专业课)均在 90 分以上。反差何其大也!

诚信为本

我曾服务于多家公司,注意到不同的公司之间,乃至同一公司内不同的面试官之间,对应聘

者的要求都会有所差别,或看重潜质,或偏好经验,或强调态度。但有一点大家是共同的:

如果应聘者在诚信上有疑问,谁也不敢要。

总体而言,现在的学生其诚信还是相当不错的,大大超出了我们的期望。然而,不和谐音也

还是有的。我们曾在某著名高校进行笔试,就发现有学生严重作弊,他们毁掉自己的机会不

说,整个学校的名声也受到拖累。面试中偶尔也能遇到诚信堪忧的学生。有一次我出了一道

题,前来应聘的学生明明以前见过这道题,却告诉我说没见过,自以为得计,可他那一纵即

逝的狡黠一笑哪里逃得过我洞若观火的锐利眼神。大哥,你又不是专业演员,为什么要玩这

样的花招?我每年面试的求职者在百人以上,捣鬼是过不了我这一关的。两点之间直线最短

,说真话最简单。

做最好的自己

不是每一个人都会加入某一家具体的公司,但每一个人都可以成功,成为最好的自己。我这

里所谈,既不系统亦欠简练,但确实是我在几次校园招聘之旅中发现的一些具有共性的问题

,故不避好为人师之讥,罗列于此。我当然知道,本文的首要目标读者——大一新生是不听

劝的,他们更愿

意把所有的错误亲自重犯一遍。话虽如此,只要能够对一个学生有所启迪,我的时间就不算

白费。

Google(谷歌)中国工程研究院 工程师 方坤 对学生朋友的一些建议的更多相关文章

  1. Google 谷歌网页搜索, 学术搜索

    Google 谷歌网页搜索, 学术搜索 1. 网页搜索引擎-Google * https://letsgg.tk/ * https://google.kfd.me/ 谷歌搜索镜像:  http://d ...

  2. Google Developers中国网站

    正于北京举办的谷歌开发者大会上,谷歌宣布,Google Developers中国网站 (developers.google.cn) 正式发布! 谷歌表示,Google Developers中国网站是特 ...

  3. 如何在WindowsPhone Bing Map控件中显示必应中国中文地图、谷歌中国中文地图。

    原文:如何在WindowsPhone Bing Map控件中显示必应中国中文地图.谷歌中国中文地图. 最近正好有点业余时间,所以在做做各种地图.Bing Map控件本身就能显示必应地图,但是很遗憾微软 ...

  4. 【我的Android进阶之旅】 Google Developers中国网站发布啦!

    今天,Google Developers 中国网站 (https://developers.google.cn) 正式发布! Google Developers 中国网站是特别为中国开发者而建立的,它 ...

  5. Google Developers中国网站发布!(转)

    Google Developers 中国网站是特别为中国开发者而建立的,它汇集了 Google 为全球开发者所提供的开发技术资源,包括 API 文档.开发案例.技术培训的视频.并涵盖了以下关键开发技术 ...

  6. Google谷歌推出goo.gl缩短网址服务 - Blog透视镜

    Blog部落格文章的网址,例如本篇文章:http://blog.openyu.org/2014/01/google-goo.gl.html,通常都很冗长,分享到社群网站上,容易使得讯息内容过多,同时也 ...

  7. Google谷歌搜索引擎登录网站 - Blog透视镜

    建置好了网站之后,为了能提升流量或是增加曝光度,Mix通常会到Google谷歌,用手动登录的方式,登录网站,不久之后,搜索引擎就会派遣蜘蛛机器人,来检索你的网站,等一段时间之后,就会出现在搜索引擎内, ...

  8. google谷歌翻译插件-网页一键翻译

    上个月转载的一篇博文,是推荐的四款非常实用的翻译插件,这几天看这个chrome插件网首页有新增了一个google谷歌翻译插件.我能说实话,这款插件比之前推荐的4款翻译插件更好用吗?也不能完全说是更好用 ...

  9. Google Developers 中国网站正式发布

    Google Developers 中国网站 (developers.google.cn) 正式发布!Google Developers 中国网站是特别为中国开发者而建立的,它汇集了 Google 为 ...

随机推荐

  1. Erlang分布式在linux和windows上的注意事项

    没事做,就在两台机器间测试下Erlang分布式的例子,一个台是windowsXP,一台装的redHat9,没有详细的文档,自己摸索着搞成功了,记录下. 1.首先,分布式Erlang的实现提供了自有的安 ...

  2. EF的表连接方法Include() - nlh774

    在EF中表连接常用的有Join()和Include(),两者都可以实现两张表的连接,但又有所不同. 例如有个唱片表Album(AlbumId,Name,CreateDate,GenreId),表中含外 ...

  3. C# 中的值类型和引用类型

    原文 C# 中的值类型和引用类型 值类型(value type):int,long,float,double,decimal,char,bool 和 struct 统称为值类型.值类型变量声明后,不管 ...

  4. 【C/C++运行时库】 /MT /MTd /MD /MDd对C/C++运行库的影响

    欢迎转载 转载请注明出处:http://www.cnblogs.com/cuish/p/3146937.html 测试VS中[项目属性]-[C/C++]-[代码生成]选项中的[运行库]- [ /MT, ...

  5. 【暑假】[实用数据结构]UVAlive 3027 Corporative Network

    UVAlive 3027 Corporative Network 题目:   Corporative Network Time Limit: 3000MS   Memory Limit: 30000K ...

  6. 8.1.C++ AMP简介

    C++ AMP是专为设计支持C++的异构并行模型. 全程是: Accelerator Massive Parallelism 下面是一个Vector C++ AMP的代码,通过这段代码来解释C++ A ...

  7. Cocos2d-x中jsb结构剖析

    libs/javascript下有两部分bindings和spidermonkey.其中spidermonkey为js虚拟机,暂时不去管它.bindings下分为四部分,分别为主干部分,generat ...

  8. 那传说中的P、NP以及NPC问题

    那传说中的P.NP以及NPC问题     (这里只是自己的一些总结) 在讲这几个问题之前,有几个东西是必须要说的,包括时间复杂度.空间复杂度.图灵机什么的.那么我们就慢慢来一一说来.    图灵机:图 ...

  9. 【noip2007】树网的核

    题解: 首先我们要知道一个性质:如果有多条直径 这个核不论在哪条直径上 答案都是一样的 这样我们就可以随便找一条直径 在这条直径上枚举核的位置 并且dfs预处理maxlon[i] (i在直径上) 表示 ...

  10. Unity3D入门之JavaScript动态创建对象

    接着上一篇Unity3D入门文章,这里继续使用JavaScript脚本语言. 调试:Unity集成了MonoDevelop编辑器,在代码某行的左侧点击,即可下一个断点.然后先关闭Unity编辑器,在M ...