Google校园招聘的面试题目

xuzongchen 2006-12-06 10:38:09
刚在电脑报上看到一道有意思的题说是Google校园招聘的其中一道面试题
“有一个100层高的大厦,你手中有两个相同的玻璃围棋子。从这个大厦的某一层扔下围棋子就会碎,用你手中的这两个玻璃围棋子,找出一个最优的策略,来得知那个临界层面。”
大家都是怎么想的都来说说吧...........
...全文
9355 265 打赏 收藏 转发到动态 举报
写回复
用AI写文章
265 条回复
切换为时间正序
请发表友善的回复…
发表回复
westwin 2007-01-13
  • 打赏
  • 举报
回复
mark
mogolo 2006-12-12
  • 打赏
  • 举报
回复
为什么每个人都在说自己怎么想的 而没有看看别人的做法?
绿色夹克衫 2006-12-12
  • 打赏
  • 举报
回复
前几个纯数学证明,感觉都不太理想,只有阿丹的证明是比较全面充分的,而且很直观。看过之后,我觉得还有一些细小之处可以补充。

对于danjiewu(阿丹)证明的一点补充:

在最优方案中,临界层正好处于方案中的某一层时,会出现只有1个1的编码,例如:第一次在14层扔碎了,在1-13层扔没有碎,此时可以判断,临界层是14,编码为10000000000000。

否则14位编码,只有2个1的话,只能表示91层,再加上临界层正好处于方案中的某一层的情况,即只有1个1的情况,共14种,就能够表示105层了。实际上就是C15,取2的问题。15 = 14(最优情况下的次数) + 2(棋子数) -1

同理可以推出,如果有N个棋子的话,K层楼,最短编码会是多长呢(即最优情况下,需要多少次)?

以4颗棋子,1000层为例,经计算后,应当是11次,因为C14取4 = 1001,14 = 11(最优情况下的次数) + 4(棋子数) - 1。

第一颗棋子应当在286或285层扔,后面具体的扔法,大家可以自己考虑,在这里不细说了,最优方案应当有11种。
绿色夹克衫 2006-12-12
  • 打赏
  • 举报
回复
不好意思,我误导了大家,正确答案应当是楼上的。

我将C(11,4) + C(11,3) + C(11,2) + C(11,1)简化成了C(14,4),实际上二者不是一一对映的关系,虽然每个C(14,4)都能对应一个C(11,4) + C(11,3) + C(11,2) + C(11,1)中的元素,但存在C(14,4)中的多个情况对应同一个C(11,4) + C(11,3) + C(11,2) + C(11,1)元素的问题。

4个棋子,1000层楼应当是13次:C(13,4)(碎4个) + C(13,3)(碎3个) + C(13,2)(碎2个) + C(13,1)(碎1个) > 1000
danjiewu 2006-12-12
  • 打赏
  • 举报
回复
4颗棋子,1000层的话,应该是至少13次。
用C(13,4)+C(13,3)+C(13,2)+C(13,1)与1000比较,而不是用C(13+4-1,4)与1000比较。

前面提出的最优解的判断条件还是有点问题。
假设编码长度至少为i才能确保得到临界层,棋子数为n。
条件为:不存在未被使用的编码;并且对所有的编码,不存在2个编码长度之差大于2,除非较短的那个编码已经包含了n个1。
绿色夹克衫 2006-12-12
  • 打赏
  • 举报
回复
这么长时间还没有个定论么?

to:楼上的

你的方案,至少我看过了,是有问题的,你的错误在于按照固定的层数来试,却没有考虑到,扔过一次后,这个数值是需要重新计算的,比如第一次在10层扔,如果没有碎,那么这个问题就变成了2颗棋子,90层的楼,怎么扔最优的问题。

阿丹在后面的帖子里,修正了自己的方案,并给出了合理的数学证明,我想这个问题已经有了定论了,最悲观的尝试次数,处于13、14这个区间时,有最优方案。

至于数学证明方式,有很多种,大家有兴趣的话可以多讨论一下。
shuxuejianzi 2006-12-10
  • 打赏
  • 举报
回复
如此简单的问题被讨论了这么多竟然~~~简单的数学期望估算~~
首先说临界层是1到100的任意层,概率都相等
先说答案:如果楼层是N,则答案那个从一层开始往上走的步长是根下N
证明:当步长为一的时候:期望为101/2
为2时:51/2 ......
分析:当步长为n时候,最少需要一步完成,最多需要100/n完成(此处这个式子只适合n刚好能被100整除,当不能整除时,此值另说~公式稍微麻烦点,打起来麻烦呵呵)则期望为(1+100/n+n)/2
高中数学知识,当n为根下N时这个数最小,解决~~~
当然如果不能刚好开根下的时候,需要递归了,先是取开根后的整数,然后先解决这个数的平方内的这些楼层,剩下的楼层解决方案为剩下楼层数再开方,相当于一个递归的过程~~~~


解决完毕,望网友们指正~!
frank_c 2006-12-10
  • 打赏
  • 举报
回复
支持10楼10楼一扔
danjiewu 2006-12-10
  • 打赏
  • 举报
回复
mogolo(mogolo)的证明和我一开始一样没有注意到分成的多个小的题目不是等同的,想简单了。

不过如果是面试那么短的时间想要答出完全正确的答案恐怕不容易,题目不错。
finalcreator 2006-12-10
  • 打赏
  • 举报
回复
zzmsl(周先生) ( ) 信誉:100 Blog 2006-12-6 17:26:49 得分: 0



这种应该找数学的来解决。解决出来了程序员写代码。

































































danjiewu 2006-12-10
  • 打赏
  • 举报
回复
上次发帖漏了一段,sorry。现在补上。

=========================================
我把题目想简单了,每隔10层扔一次不是最优解,只是还算可以的解。

假设n为棋子数,i为可以扔的次数,F(n,i)表示可以确保能得到临界点的最大楼层数。
显然若n = 1,F(n,i)= i; //这里认为楼层从1层开始
若n >= i,F(n,i)=2^i - 1;
其他情况下F(n,i)=F(n-1,i-1)+ F(n,i-1)+1。
对F(n,i)计算有疑问的可以再另外讨论,F(n,i)的计算公式暂时还没有想出来。

要求n个棋子,楼层为f的情况下的最优解,首先找到i使得F(n,i-1)<f并且F(n,i)>=f。
i即至少需要扔i次才能确保找到临界点。第一次扔的楼层为F(n-1,i-1)+1,以此类推根据第一次扔的结果确定第二次扔的楼层。

对于google的这道题,就是要找到i使得F(2,i-1)<100并且F(2,i)>=100。
F(2,2)= 3
F(2,3)= 3+2+1 =6
F(2,4)= 6+3+1 =10
F(2,5)= 10+4+1 =15
可以发现F(2,n)正好等于1到n的和。
F(2,13)= 91
F(2,14)= 105
得到i = 14,至少需要14次可以确定临界点。
至于要得到所有情况下扔的次数最少的最优解,应该不止一种。

=========================================================
又考虑了一下,google的问题可以看为:
用0和1表示的编码来表示1-100的数,限制条件为:1最多只能出现2次,而且如果出现2次1,则第二个1必须在编码的最后。(实际题目还有个要求,1-100的编码必须是按顺序的,不过对解题没有影响)实际意义就是,1为摔碎,0为未摔碎,在第几位就是表示扔的第几次。
所要求的就是使编码的总长度最小。

要求最短的编码长度,参考Huffman编码、Shanon编码,只不过其中像11,101这样饱含了2个1的编码就不能再拆分,而且1-100是等概率的。简单点说,等概率的情况下,短编码没有用完,是不会用到长编码的。所以如果长度为14的编码已经足够,那么最优解(就是所有情况下扔的总次数之和最少)就不可能出现长度超过14的编码。如果满足下面的条件,那么就可以确定是最优解:
没有使用长度超过14的编码;
所有长度小于14的包含有2个1的编码都对应了一个值;
除了包含2个1的编码,没有使用长度小于13的编码。

至于证明解法满足上面的条件,应该不是很难,自己也可以判断的出来。
态度决定品质 2006-12-09
  • 打赏
  • 举报
回复
liaotao(牛牛) , 看了下你的代码,有些不明白。
问下:如五楼破,临界在五楼以下; 现在还有一个棋子,假设临界是3楼,3楼破;程序应该输出2楼,临界是2楼,矛盾;看看我的理解和你的有什么不同
zhangfan790913 2006-12-09
  • 打赏
  • 举报
回复
这个贴子怎么还没结啊?

越看越受不了, 竟然还有这么多人在 找破了两次的临界值????晕啊!!!!

在X楼不碎,在X+2碎了,你知道X+1是临界???他是怎么个临界?是碎还是不碎,好好看看人家的回贴!!!!
mogolo 2006-12-09
  • 打赏
  • 举报
回复
*****************************************************************************
希望都看看这个帖子 !!!!!!!!!!!!!
谢谢大家
*****************************************************************************
这道题使用的方法是 concurrence 的 merge方法
简单说就是把一个大的题目分成几个等份的小的题目
T(n)=aT(n/b) + f(n)
a表示分成的份数 b表示把n分成多少份 f(n)表示分的过程中的代价
这里 a=n/k 的话 b=k f(n)=k+2k+...+(n/k)*k
T(n)=n/kT(n/k) + k(k+n)/2=n/kT(n/k) +O(n)
根据master method(已经证明的方法,可以查找算法导论4.4的证明)
当O(n^logb(a))=f(n)=O(f(n))时 可取到整体最小为n^logb(a)*log2(n)
所以 logb(a)=1
logk(100/k)=1
k=100/k
k=10
证明完毕
******************************************************************************
wanna51 2006-12-09
  • 打赏
  • 举报
回复
这样,最多测试的次数在10-16次,
上面也有提到13次,为什么没有采取这个答案呢?

在61层以下最多次数在10-13次
在61层以上最多次数在13-16次

这种情况,在实际中,应该比每次最多测试次数都在13层要好吧。
具体应该用概率来解释吧,可惜我概率学得不好,讲不出详细的道理 :(
wanna51 2006-12-09
  • 打赏
  • 举报
回复
根据公式:f(x) = floor/x+x 算出f(x)最大值为sqr(floor)
第一次:floor = 100 , x = 10楼
如果10楼碎了,那么测试次数为 x -1 + 1 = 10次
如果在x=10楼没有碎
第二次:floor = 100 - x = 90楼,此时x = 10楼,意思为,从20楼开始丢。。。。依此类推


测试楼层 摔坏所在楼层 测试次数
1-100 10 10
11-100 20 11
21-100 29 11
30-100 38 12
39-100 46 12
47-100 54 13
55-100 61 13
62-100 68 14
69-100 74 14
75-100 80 15
81-100 85 15
86-100 89 15
90-100 93 16
94-100 96 16
97-100 98 16
98-100 99 16


class Program
{
static int count = 0;
static void Main(string[] args)
{
int floor = 100;
Trace.WriteLine("Floor Range\tBreak Floor\tCount");
GetN(floor);
Console.Read();
}

static void GetN(int floor)
{
double nn = Math.Sqrt(floor);
int n = (int)Math.Floor(nn);
if (n - nn != 0) n++;
count++;
int start = 100 - floor + 1;
int leftFloor = floor - n;
Trace.WriteLine(start + "-100\t\t" + (start + n - 1) + "\t\t" + (n + count - 1));

switch (leftFloor)
{
case 1:
break;
case 2:
Trace.WriteLine("98-100\t\t99\t\t" + (count + 1));
break;
default:
GetN(floor - n);
break;
}
}
}
aoricanfeng 2006-12-09
  • 打赏
  • 举报
回复
呵呵,有意思,二分法是很高效的,但对这道题好像不实用哦,毕竟这里的棋子如两次都被摔坏了,这题也没办法继续下去了。
阿丹的方法对这题很实用,其实对于“每隔n层楼试一次”的n值的确定,用高中的知识就行了。
把100楼分n份,每份100/n,求(n+100/n)的最小值(也是这种方法的最差情况),当n=10时,可以得该最差情况是20
zhangfan790913 2006-12-09
  • 打赏
  • 举报
回复
一、关注1楼站立丢到地面的距离
大家自己看结果
public static void main(String args[]) {
for (int n = 1; n <= 100; n++) {
System.out.println("-------------------");
System.out.print("n=" + n + " ");
if( 0 == 100%n ){
System.out.println("最多" + (n + (100 / n) - 2));
} else {
System.out.println("最多" + (n + (100 / n) - 3));
}
}
}
---------------------------------------------------
二、忽略1楼
大家自己看结果
public static void main(String args[]) {
for (int n = 1; n <= 99; n++) {
System.out.println("-------------------");
System.out.print("n=" + n + " ");
if( 0 == 100%n ){
System.out.println("最多" + (n + (100 / n) - 2));
} else {
System.out.println("最多" + (n + (100 / n) - 3));
}
}
}
fim 2006-12-08
  • 打赏
  • 举报
回复
up
Aricc 2006-12-08
  • 打赏
  • 举报
回复
晕,高手啊
加载更多回复(244)
BAT华为美团360谷歌等各大互联网公司软件校招面试笔试试题资料240MB合集: 2015年校招腾讯游戏策划笔试题.docx 2015年百度校招产品经理笔试题汇总.docx 2015年网易产品策划笔试题.docx 2015年网易用户研究员笔试题.docx 2015年阿里巴巴校招产品经理笔试题.docx 【2013-15年腾讯校园招聘】腾讯产品策划类笔试面试题整理.pdf 【2014年百度校园招聘】百度客户端产品设计师___产品经理___一面面经.pdf 【2014年谷歌校园招聘】腾讯产品笔试策划+经验.pdf 【2014腾讯校园招聘】腾讯产品策划运营类职位笔试题和参考答案(非本人所写_转自网上下载资源).pdf 【2015年微软校园招聘】产品经理题汇总.doc(1).pdf 【2015年搜狐校园招聘】产品专员笔试题.pdf 【2015年淘宝校园招聘】淘宝产品经理笔试.pdf 【2015年谷歌校园招聘】产品经理题汇总.pdf 六、互联网公司面试真题 华为校园招聘笔试面试题合集 去哪儿网校园招聘笔试面试题合集 奇虎360校园招聘笔试面试题合集 最新各互联网BAT等笔试面试真题复习资料 百度校园招聘笔试面试题合集 美团网校园招聘笔试面试题合集 腾讯招聘笔试题合集 阿里巴巴校园招聘笔试面试题合集 1.Google校招真题与面经68页.pdf 1.京东校招真题与面经77页.pdf 1.微软校招真题与面经47页.pdf 1.甲骨文校招真题与面经45页.pdf 1.百度校招真题与面经87页.pdf 1.腾讯校招真题与面经185页.pdf 1.阿里巴巴校招真题与面经101页.pdf 2.大众点评校招真题与面经23页.pdf 2.搜狐校招真题与面经47页.pdf 2.携程校招真题与面经60页.pdf 2.新浪校招真题与面经43页.pdf 2.网易校招真题与面经76页.pdf 2.雅虎校招真题与面经96页.pdf 3.三星校招真题与面经65页.pdf 3.中兴校招真题与面经59页.pdf 3.华为校招真题与面经131页.pdf 3.小米校招真题与面经46页.pdf 3.惠普校招真题与面经49页.pdf 3.联想集团校招真题与面经84页.pdf 3.苹果校招真题与面经27页.pdf 【2013-15年腾讯校园招聘】腾讯产品策划类笔试面试题整理.pdf 【2013-2015年迅雷校园招聘】迅雷近年产品经理笔试题汇总.pdf 【2014年百度校园招聘】百度客户端产品设计师___产品经理___一面面经.pdf 【2014年谷歌校园招聘】腾讯产品笔试策划+经验.pdf 【2014腾讯校园招聘】腾讯产品策划运营类职位笔试题和参考答案(非本人所写_转自网上下载资源).pdf 【2015年微软校园招聘】产品经理题汇总.doc.pdf 【2015年搜狐校园招聘】产品专员笔试题.pdf 【2015年淘宝校园招聘】淘宝产品经理笔试.pdf 【2015年百度校园招聘】百度产品经理面经.pdf 【2015年谷歌校园招聘】产品经理题汇总.pdf 【2015腾讯校园招聘】新鲜出炉腾讯产品策划运营类笔经(带题).pdf 优衣库校招真题与面经241页.pdf
2019HR实用经典面试笔试题库合集(51个文档): 10_HR经理面试问题样例大全(30余种能力考查).doc 10分钟面试招到核心员工(30页).doc 11_ERP面试题.doc 12_HR必备员工离职面谈样题.doc 13_IT公司面试问题.docx 14_IT项经理考题 V1-answer.doc 15_财务人员面试常见问题.doc 16_采购经理面试题.doc 16个经典面试问题回答思路.doc 17_行为面试题库.doc 18_行政助理面试题(含答案).doc 19_华为校园招聘面试题及流程.doc 1_2019年结构化面试题库(95页 经典全面).doc 20_价值需求测评题.doc 21_结构化面试题库.doc 22_结构化面试题库上.pdf 23_结构化面试题库下.pdf 24_九个情景模拟面试题.doc 25_面试评估表(附题).doc 26_企业各岗位人员笔试题库.docx 27_全球五百强压力面试的题.doc 28_世界五百强基层岗位面试情景模拟题.doc 29_微软的面试题及答案-超变态但是很经典.doc 2_HR实用工具101个面试难题及结构化面试题库.doc 30_无领导小组面试题汇总.doc 31_无领导小组讨论题.docx 32_物流计划招聘测试题(答案).doc 33_物流计划招聘测试题(题).doc 34_销售人员面试提问问题库.doc 35_销售人员招聘面试题.doc 36_心理素质及能力测试题库.doc 37_招聘测试工具之文件筐测试题.doc 38_招聘提问管理人员题库.doc 39_招聘提问通用题库.doc 3_HR招聘秘笈戴尔的30道价值观面试题.doc 40_招聘中常用的情景模拟题.doc 41_STAR面试题库.doc 42_集体面试流程+无领导小组讨论面试题精讲汇总+答案.doc 43_面试题库(14个维度选拔考查).doc 44_笔试题某公司+招聘笔试题(涵盖各部门人员)-19页.doc 45_《职业测评--职场成功测评之完整题库》附答案.doc 47_10个最经典的压力面试题及解答技巧.docx 48_美的集团校园招聘面试题库使用指南.doc 49_29套《职业测评和性格测试题库》HR必备测评库.docx 4_面试通用题库以及压力测试--经典.doc 50_人事面试题150问及答题思路.xls 51_世界五百强面试题及应答评点(全套50题).doc 5_《绝对挑战-测评题库与答案》20页.doc 6_2019HR招聘实战案例专家解析大全(250题).doc 7_HR工具书—面试经典50题-问的巧答的妙.doc 8_面试应对压力危机类真题120道详解.doc 9_200个名企的面试题详解(微软+谷歌+联合利华).doc 面试邀约之HR招聘面试流程与技巧(含STAR原则).doc 面试邀约之HR电话面试邀约技巧.doc 面试邀约之电话筛选及通知面试话术.doc
IT互联网各个公司面试真题与面经资料32个合集: 1.Google校招真题与面经68页.pdf 1.京东校招真题与面经77页.pdf 1.微软校招真题与面经47页.pdf 1.甲骨文校招真题与面经45页.pdf 1.百度校招真题与面经87页.pdf 1.腾讯校招真题与面经185页.pdf 1.阿里巴巴校招真题与面经101页.pdf 2.大众点评校招真题与面经23页.pdf 2.搜狐校招真题与面经47页.pdf 2.携程校招真题与面经60页.pdf 2.新浪校招真题与面经43页.pdf 2.网易校招真题与面经76页.pdf 2.雅虎校招真题与面经96页.pdf 3.三星校招真题与面经65页.pdf 3.中兴校招真题与面经59页.pdf 3.华为校招真题与面经131页.pdf 3.小米校招真题与面经46页.pdf 3.惠普校招真题与面经49页.pdf 3.联想集团校招真题与面经84页.pdf 3.苹果校招真题与面经27页.pdf 【2013-15年腾讯校园招聘】腾讯产品策划类笔试面试题整理.pdf 【2013-2015年迅雷校园招聘】迅雷近年产品经理笔试题汇总.pdf 【2014年百度校园招聘】百度客户端产品设计师___产品经理___一面面经.pdf 【2014年谷歌校园招聘】腾讯产品笔试策划+经验.pdf 【2014腾讯校园招聘】腾讯产品策划运营类职位笔试题和参考答案(非本人所写_转自网上下载资源).pdf 【2015年微软校园招聘】产品经理题汇总.doc.pdf 【2015年搜狐校园招聘】产品专员笔试题.pdf 【2015年淘宝校园招聘】淘宝产品经理笔试.pdf 【2015年百度校园招聘】百度产品经理面经.pdf 【2015年谷歌校园招聘】产品经理题汇总.pdf 【2015腾讯校园招聘】新鲜出炉腾讯产品策划运营类笔经(带题).pdf 优衣库校招真题与面经241页.pdf

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧