想成为Google工程师?先回答这15个面试问题

标签: Uncategorized | 发表时间:2012-02-03 12:35 | 作者:flychen
出处:http://flychen.com

1.请写出一个整数乘法的算法

挑战: 这是一个相当开放性的问题,设计初衷是看看工程师是否会定义参数。

编程语言是什么?

是汇编语言吗?

是:那么你得摆手起家开发出一套基本运算来。

否则的话:那就简单了,只需将数字套进去即可,因为大部分语言均支持数学运算。

2.合并两个排序链表

挑战: 这类问题是Google面试问题的一个共同趋势:找出解决问题的有效办法。

合并两条链表是一般会在链表之间发生“冲突”(因为它们各自有特定的次序,而你的合并会把次序搞乱)

你必须找出一种算法快速消除那些冲突。

3.给出一组区间(以秒计),让你找出重叠的部分

挑战: Google一般也会要你解决一堆数学问题。

这些设计的意图是让工程师对问题进行有效的思考,而不是仅仅知道如何对每个问题进行编码。

此处的问题会要你实现一个聪明的数学技巧。

4.如果你有n个节点的列表,对于一个有向无环图来说,最多可以有几条边?

挑战: 这是著名的数学问题旅行商(traveling salesman problem)问题的一个派生。

这是一个不要求你找出聪明的数学算法而是要你拓展思路的数学问题。

你必须在节点间画线,条件只有一个:无论你从哪里开始,永远不要回到原点

5.在Java里面,finally、final和finalize的区别是什么?

挑战: 看看你知不知道这些术语。比方说,Finalize处理的是“垃圾回收”,而Finally则是指向一个特定的错误。

6.从一大块文本中去掉重复的行

挑战: 一个基本问题,看你是不是能估算出问题是否可以在有限的时间内解决。

这样的问题通常可以采取暴力攻击手段,但却有可能永远都无法解决。

7.给你一串字符,要你找出包含有给定字符集的最小窗口

挑战: 此类问题有许多解决方式,这完全取决于你选择的算法是什么。

Google要找的是能选出更快算法的工程师。

8.写一段程序计算出某字符串(/矩阵)是否另一字符串(/矩阵)的旋转(/转置)

挑战: 这个问题靠的是看你是不是能够灵活掌握一些计算技术的转义。

比方说,“strings”一语通常是指由字符、单词或可打印、可见的东西组成的多行字符串。不过同时也可以是矩阵(二维对象)及别的对象。

你必须检查看看它是不是可以旋转(转置),然后跟另一个进行对比。

9.旧金山能容纳多少个气球?

挑战: 此类问题Google的面试官一般都会问到,目的是想看看你设定的“边界条件”是什么样的。

这个问题有许多解决方式,可以通过添加限定条件来进行简化—比如说旧金山的面积,这种限定在进行编程的时候是很重要的。

10. 粘滞位是什么?为什么要用?

挑战:粘滞位是一个跟设置和权限有关的系统管理员术语。

Google想测试一下,看看你是否了解一些管理的细节,而不是只会编程。

11.给出一组整数,值范围在很窄的区间,但是区间未明,如何找出其中位数?

挑战: 又是一个要你实现聪明的数学技巧的问题,离散数学课你有没有认真听?

这可不是什么简单问题。

12.给出一组区间,找出交集数最多的一个

挑战: 现在Google要你确信知道自己检查的是问题的正确部分,无视没有价值的部分,这样才能够令算法更高效。

13.100个整数组成的数组,次序被打乱。其中有一个数被拿掉了,把它找出来

挑战: 运用另外一个数学技巧可以几行代码搞定。

测试的目的是看看你是不是不仅知道用什么办法,还知道如何实现代码。

14.判断某个数独解决方案是否正确

挑战: 这个要你想出办法用另一种数学技巧从算术上快速检验解决方案。

15.给你一支股票的日价,找出一次买卖交易(buy-sell trading)如何操作才会损失最大

挑战: 这个问题非常棒,你必须竭尽所能,把所有的知识本领都用上。

看看边界条件(即挑出变动最大的股票价格点)然后有效地算出波动最大的一次。

我们能想到的唯一像样一点的办法是暴力计算,把每一个股价都遍历一遍。

 Via: SAI

除非注明,本站文章均为原创或编译,转载请注明: 文章来自 36氪

有关的故事

from 36氪 http://www.36kr.com/p/80243.html

相关 [google 工程师 回答] 推荐:

想成为Google工程师?先回答这15个面试问题

- - 搜索引擎技术博客
挑战: 这是一个相当开放性的问题,设计初衷是看看工程师是否会定义参数. 是:那么你得摆手起家开发出一套基本运算来. 否则的话:那就简单了,只需将数字套进去即可,因为大部分语言均支持数学运算. 挑战: 这类问题是Google面试问题的一个共同趋势:找出解决问题的有效办法. 合并两条链表是一般会在链表之间发生“冲突”(因为它们各自有特定的次序,而你的合并会把次序搞乱).

Google工程师:Google不懂平台,Google+就是证明

- kxxoling - 36氪
一位Google工程师在G+上发布了一篇5000字的文章,本来是用于内部分享,但是他错误地选择了公开发布给外部的2000多粉丝. 这位工程师Steve Yegge先是写了他的前雇主亚马逊和CEO Jeff Bezos,然后他开始谈论Google. “Google最后一件没做好的事情就是平台,我们不懂平台,我们没有做好平台.

Wave工程师:Google+不会代替Facebook 会分杯羹

- Leonhard - cnBeta全文版
据国外媒体报道,谷歌Wave前工程师,同时也参与过谷歌圈子开发的Dhanji R. Prasanna昨日撰文称,Google+不会代替Facebook,但会成为除Facebook的另一种选择. 他认为,Facebook的信息分组功 能不完善,而Google+的中心功能圈子在这一点上就做得很好,圈子的理念来源于Google用户体验前任主管用户体验主管保罗・亚当斯(Paul Adams),亚当斯曾经为此做过一个名为《现实生活社交网站(Real Life Social Network)》的幻灯片.

Google的系统工程师(SA)如何工作

- freefish - Tim[后端技术]
本文根据系统管理领域知名博客 Thomas A. Limoncelli 的 What is system administration like at Google 整理而成,添加了部分笔者观点. Google的系统工程师(System Administrator)如何工作. 由于Google的服务已经集群化,系统工程师并不大量接触硬件比如做安装服务器等事情.

谷歌的工程师利用Google Map追求女友

- 小熊TONY - cnBeta.COM
感谢Cnpda智能手机论坛的投递. 一个名叫阿里吉尔德的谷歌工程师建议他的女朋友今天务必要使用Nexus One里的谷歌地图,因为他为女朋友的Nexus One建立了一个谷歌地图的自定义应用程序,可以利用谷歌地图,计划她的路线,她会在不同地点使用这个自定义的程序,并且找到早就为她安排好的玫瑰花.

Google 资深工程师辞职,称公司不再创新

- - 最新更新 – Solidot
Google 资深工程师 Steve Yegge 在公司服务了将近 13 年后 辞职,他在 Google+ 和博客上发表文章谈论了 离开 Google 的原因,称公司不再创新,几乎完全失去了创新能力. 他例举了四个原因:首先是保守,过度集中在已拥有的东西上,害怕冒险和真正的创新,墨守成规和规避风险是常态而不是例外;其次是深陷政治,对于如此大的一个机构来说是不可避免的,唯一的替代是专制,但专制也有其缺点;第三是傲慢,谦虚的人组成的公司仍然会是傲慢的,傲慢的是集体而不是个人;第四可能是最糟糕的,Google 不再以客户为中心,而是完全盯住竞争对手,关心客户只是一个口号.

谷奥: 前 Google Wave 工程师说 Google 的软件架构也忒过时了

- 张宪伟 - 谷奥聚合——谷奥主站+谷安 aggregator
Google Wave前工程师 Dhanji R. Prasanna(上图是他的Twitter头像) 昨天发了一篇博文,解释了自己为何要离开Google,其中谈到了Google的文化,但最有趣的部分其实是他说“Google一直自夸的具备延展性的软件架构已经过时了”. 尽管他承认Google的硬件架构依然是完美的艺术品,但其上为搜索引擎和爬虫设计的软件架构至少落后了10年.

Google 工程师强大到用 Android 和 Google Maps 给他女朋友求婚

- skymare - 谷安——谷奥Android专题站
没有最稀奇只有更稀奇的事(不但是稀奇而且很威武),今天我们了解到了一件有意思的事情,Google 的工程师 Ari Gilder 给他女朋友求婚使用了 Google Maps 和一个自制应用,他将准备好的 Nexus One 交给他女朋友,通过为他女朋友策划的路线,她在不同的地方通过定制应用收到了玫瑰和照片.

Google工程师创建网站TechCompanyPay告诉你顶级科技公司给工程师们开多少薪水

- zhangyang - 36氪
来看看TechCompanyPay上面的数据. 最慷慨的5家公司开给工程师的平均薪水分别是:Twitter 12万美元,苹果 11万3千美元,LinkedIn 11万2千美元,Facebook 11万美元,Google 10万4千美元. 开发该网站的Google 客户解决方案工程师Gareth Jones表示这些数据“非常准确”.

可以回答你的问题的 Google 轱辘 Google Talk Guru 机器人

- Jesse - 谷奥——探寻谷歌的奥秘
Google Talk Guru 是 Google 实验室的最新产品,这是一个 Gtalk 的 bot (机器人),Guru 一词貌似在计算机圈内非常常用,有大师,专家等意思. 要使用这个 bot 非常简单,直接将 guru@googlelabs.com 这个用户添加到你的 Gtalk 联系人列表,然后就可以开始发问了,目前支持的指令有:.