谷歌笔试题目
google 笔试题汇总 (转载)

if (2 == n)
{
return 2;
}
int mid, right;
int left = find_trib(n, mid, right);
return left + mid + right;
}
啊啊,对了,答卷的时候我可没心情写注释……刚才到 2003上测试了一下,貌似没有啥问题。唉,看来我多少还是懂一点算法的……
大题虽然题型不一,但都有一个重要特点:考递归。精确点说,我每一题都用到了递归。
第一个的题目(嗯,记的不是很完整):
在一棵(排序?)二叉树中搜索指定值,数据结构定义为(唉唉,数据结构的具体名字都不记得了,my god):
struct Node
{
Node lnext;
Node rnext;
(A)等待时间 (B)寻道时间 (C)传输时间 (D)等待时间加寻道时间
(E)等待时间加寻道时间加传输时间
二、算法
1、打印出一个二叉树的内容。
2、在一个字符串中找到第一个只出现一次的字符。如abaccdeff,输出b。
3、给定一个长度为N的整数数组(元素有正有负),求所有元素之和,最大的一个子数组。分析算法时空复杂度。不必写代码。
int tribonaci(int n)
{
if (n 0)
{
Undefined feature.
return 0;
}
if (0 == n 1 == n)
{
return 1;
}
for(i=0;isize;i++)
{
temp_sum+=a[i];
最新 一些Google笔试题目-精品

一些Google笔试题目
1、有两根不均匀分布的香,香烧完的时间是一个小时,你能用什么方法来确定一段15分钟的时间?
答:2根香同时点燃,第一根两头都点燃,第二根只点一头,第一根点完的时候是半个小时,接着把第二根两头都点燃,第二根点完的时候就是15分钟。
答:2,2,9, 1岁不可能
3、有三个人去住旅馆,住三间房,每一间房$10元,于是他们一共付给老板$30,第二天,老板觉得三间房只需要$25元就够了于是叫小弟退回$5给三位客人,谁知小弟贪心,只退回每人$1,自己偷偷拿了$2,这样一来便等于那三位客人每人各花了九元,于是三个人一共花了$27,再加上小弟独吞了不$2,总共是$29。
可是当初他们三个人一共付出$30那么还有$1呢?
答:没错,三个人付了27块,老板拿了25块,小弟拿了2块
4、有两位盲人,他们都各自买了两对黑袜和两对白袜,八对袜了的布质、大小完全相同,而每对袜了都有一张商标纸连着。
两位盲人不小心将八对袜了混在一起。
他们每人怎样才能取回黑袜和白袜各两对呢?
答:不知道,还要仔细想想
5、有一辆火车以每小时15公里的速度离开洛杉矶直奔纽约,另一辆火车以每小时20公里的速度从纽约开往洛杉矶。
如果有一只鸟,以30公里每小时的速度和两辆火车同时启动,从洛杉矶出发,碰到另一辆车后返回,依次在两辆火车来回飞行,直到两辆火车相遇,请问,这只小鸟飞行了多长距离?
答:记好两车相遇时间,就是鸟飞行时间,乘以其飞行速度就得到飞行距离。
6、你有两个罐子,50个红色弹球,50个蓝色弹球,随机选出一个罐子,随机选取出一个弹球放入罐子,怎么给红色弹球最大的选中机会?在你的计划中,得到红球的准确几率是多少?
答:不知道,还要仔细想想。
Google公司笔试题目

Google公司笔试题目
1、一辆校车能装下多少个高尔夫球?
2、如果让你清洗西雅图市所有的窗户,你会对此索价多少?
3、在一个重男轻女的国家里,每家每户都想生男孩。
假设一户人家生了一个女孩,便会再生一个,直到生下的是男孩为止。
请问这个国家的男女比例是多少?
4、全世界共有多少位钢琴调音师?
5、下水道井盖为什么是圆的.?
6、为旧金山市设计一个紧急疏散方案。
7、时钟的指针一天内总共会重合多少次?
8、你有8个大小一样的球,其中7个重量相同,只有一个略重一些。
给你一个天平,而且只准称两次,如何找出重量不同的那个球?
9、向你8岁的侄子或外甥解释什么是数据库,只能用三个句子。
10、你缩小到只有一枚五分硬币那么高,你的质量也成比例缩小以保持原有密度不变。
随后你被扔到一个空的玻璃搅拌器里,搅拌刀片将在60秒后开始运转,你该怎么办?。
google应聘笔试题目.doc

google应聘笔试题目i.单项选择题1.下面一段代码的输出是口voidfn(int^b) {(*b)++;intmainO {inta=7:fn(a);cout}2.定义inti,j,*p=i;那么下面哪条语句可以完成i=j 的赋值[]=*p:B. *p=*j:=j:=水木p;3.用二叉搜索树和哈希表存储相同的数据集,对于以下何种操作,二叉搜索树比哈希表速度更快?[]A.检索B.插入C.删除D.更新E .排序4.包含N个几点和M条边的有向带权图G,边的权为正,以下操作中不可以在0(N+M)的时间复杂度内完成的操作是:[]A.求结点s到结点t之间的最短距离B.求距离结点s最近的结点C.已知起始结点,对图G中的结点进行拓扑排序D.求图G的最大强连通子图5.有如下递归函数f (n ),其时间复杂度为[] intf(intn) {if(n==0)re t urnO;if (n==l)retur nl;retu rn (5*f (n-1 ) -6*f (n -2));(n)B.O(rf2)C.O (rf 3)D. 0(2"n)6.下面所述步骤中,哪一个不是创建经常所必需有的[]A .由调度程序为进程分配CPUB.建立一个进程控制块 C.为进程分配内存D.将进程控制块链入就绪队列7.在多进程的系统中,为了保证公区变量的完整性,各进程应互斥进入临界区。
所谓临界区是[]A .一个缓冲区B.—个数据区C. 一个同步机构D .—段程序8.能产生满足如下条件语言的正则表达式是:1.每一个a 后至少紧跟两个c;2 .每一个b后至少紧跟一个c[]A. (ac c | be | c) *B. (acc | be ) *C. (ac | be ) *D.不是正则语9.以下哪项不是RPC (远程过程调用)的特点口A .速度快B.降低系统耦合度C.可以实现异构系统间的协作1 0.有三个桶,容量分别是3升,5升,7升,你只能进行下面的操作:把一个桶中所有的水倒掉;把一个桶A中的水倒入桶B,直到桶A空了或者桶B 满了;假设一开始容量为3升和5升的桶是满的,7升的桶是空的,希望通过一系列操作使3个桶中任意一个中正好有4升水,那么至少需要[]次操作。
(可发)GOOGLE考试提100道

问题1(单选题): 有关网站排除工具,哪个说法是正确的?A.可以将排除应用于广告组B.可以将排除应用于广告系列C.可以将排除应用于关键字D.可以将排除应用于广告的变体形式注意:网站排除主要椒针对内容网络,广告系列可以控制:地域投放、预算值、投放时间、广告投放时长、投放渠道。
广告组控制关键词、关键词价格、广告文字问题2(多选题): 黄金帐户法则中,规定把内容网络和搜索网络分开投放的好处是什么?A.可以提高客服人员的工作效率B.可以更清楚地跟踪不同投放渠道的广告效果C.可以提高关键字的点击率D.可以更好地控制广告预算注意:黄金法则:1、要求帐户的所有关键词大于30个;2关键词数量是5-15个;3、搜索网络与内容网络必须要分开;预算值的比例必须是4:1;4、一个组里面的广告要产生两套广告文字,因为要轮次展示,以最低的价格来展示;5、Google将会删除点击率低度于0.1%;6、客户人员将会把客户产品关键词连接到客户产品的相关网站;7、一个系列里面不能少与3个组的创建。
问题3(多选题): 以下选项中,影响广告排名的因素有哪2种?A.每日预算B.质量得分C.最高每次点击费用D.转换率问题4(单选题): 最高每千次展示费用出价是指A.您愿每天为自己的广告系列支付的最高费用B.您愿为每千次点击支付的最高费用C.您愿为每千次展示支付的最高费用D.您愿为每百万次展示支付的最高费用问题5(单选题): 您为自己的广告系列设置的目标国家/地区和语言将应用到___。
A.某个广告组中的特定广告副本B.相应帐户中的所有广告系列C.该广告系列中的选定广告组D.该广告系列中的所有广告组问题6(多选题): 以下哪些方法可以迅速找到相关的关键字列表?A.为同一个关键字使用不同的匹配形式B.利用Google相关搜索C.从客户的网站上找D.利用Google AdWords 账户中的“关键字工具”注意:关键字工具问题7(多选题): 使用Google AdWords 做广告的客户按下列哪种方式付费?A.按广告获得的展示次数支付费用B.按广告带来的实际订单金额支付费用C.按广告带来的网站访问次数支付费用D.按广告获得的点击次数支付费用注意:展示收费适合品牌推广和潜意识大企业问题8(单选题): 当您搜索您的关键字“医院”时,您的广告未在Google 上占据首位。
Google2022年笔试面试题

Google2022年笔试面试题Google2022年笔试面试题1.【单选题】10分| 下列关于整数的说法中哪个是正确的?A 在采用补码的计算机的系统中,无符号整数和有符号整数很容易区分开B 在32位系统中计算8位加法会比32位加法快C 作整数运算时应尽量避免溢出,因为溢出会占用额外的内存,影响系统性能。
D 常见计算机系统中整数除法比乘法慢。
2.【单选题】10分| 下列关于整数的说法中哪个是正确的()?A 在采用补码的计算机的系统中,无符号整数和有符号整数很容易区分开B 在32位系统中计算8位加法会比32位加法快C 作整数运算时应尽量避免溢出,因为溢出会占用额外的内存,影响系统性能。
D 常见计算机系统中整数除法比乘法慢。
3.【单选题】10分| 按照OSI模型的层次概念,下列几个协议中哪一个协议在协议栈的最底层A HTTPB FTPC IPD TCP4.【单选题】10分| 请阅读下面代码片段并且回答问题:#defineSIZE_20M(20*1024*1024)voidfunc_a(){char*temp=malloc(SIZE_ 20M)return;}voidfunc_b(){chartemp[SIZE_20M];//...dosomethingusingte mpreturn;}关于这段代码,下列说法正确的是A func_a获得临时内存的方式效率通常更高。
B func_b使用了太多的栈,程序可能会在运行时候崩溃。
C func_b存在内存泄露D func_a和func_b分配的内存会自动初始化05.【单选题】10分| 与十进制数28.5625相等的四进制数是A 121.30B 221.30C 121.31D 130.216.【单选题】10分| 由3个a,5个b和2个c构成的所有长度为10的字符串中,包含子串"abc"的共有几个?A 40320B 39600C 840D 7807.【单选题】10分| 一个有n个结点的连通图的生成树是原图的最小连通子图,且包含原图中所有n个结点,并且有保持图联通的最少的边。
Google招聘笔试

Google招聘笔试google2013校园招聘笔试题1、单项选择题1.1如果把传输速率定义为单位时间内传送的信息量(以字节计算)多少。
关于一下几种典型的数据传输速率:1.使用USB2.0闪存盘,往USB闪存盘上拷贝文件的数据传输速率2.使用100M以太网,在局域网内拷贝大文件时网络上的数据传输速率3.使用一辆卡车拉1000块单块1TB装满数据的硬盘,以100km/h的速度从上海到天津(100km)一趟所等价的数据传输宽带4.使用电脑播放MP3,电脑的pci总线到声卡的数据传输速率在通常情况下,关于这几个传输速率的排序正确的是:A. 4<1<2<3B. 1<4<2<3C.4<1<3<2D.1<4<3<21.2.#define SUB(x,y) x-y#define ACCESS_BEFORE(element,offset,value) *SUB(&element, offset) =valueint main(){int array[10]= {1,2,3,4,5,6,7,8,9,10};int i;ACCESS_BEFORE(array[5], 4, 6);printf("array: ");for (i=0; i<10; ++i){printf("%d", array);}printf("\n");return (0);}A.array: 1 6 3 4 5 6 7 8 9 10B.array: 6 2 3 4 5 6 7 8 9 10C.程序可以正确编译连接,但是运行时会崩溃D.程序语法错误,编译不成功1.3 在区间[-2, 2]里任取两个实数,它们的和>1的概率是:A.3/8B.3/16C.9/32D.9/641.4 小组赛,每个小组有5支队伍,互相之间打单循环赛,胜一场3分,平一场1分,输一场不得分,小组前三名出线平分抽签。
Google中国笔试题目.doc

Google中国笔试题目i. i关于IP协议那个正确AIP是TCP上层协议BIP协议是应用层协议C由于两个属于同一层协议,他们之间可以直接通信DIP协议不提供可靠的通信关于内存正确的是A内存的存取速度不能低于cpu速度,否则会造成数据丢失B程序只有在数据和代码等被调入内存后才能运行C采用虚拟内存技术后程序可以在硬盘上直接运行D某计算机的内存容量为16MB,那么他的地址总线为24位单链表中结点的结构为(dat a,link),若想删除结点P (不是头节点或者尾结点)的直接后继,则应执行下列哪个操作Ap=p -> 1 ink;p-> 1 ink=p-> 1 i nk->linkB p ->link->li nk=p->link;Cp=p-> 1 ink-> 1 inkDp-> 1 i nk=p->lin k->link 已知x>=yandy >=z为真,那么x>zory=z值为A真B假C无法确定Dx yz同为正数时为真某请求被随即分配到四台机器进行处理,分配到每台机器的概率A1 5 %B20%C30%D3 5%,处理请求的失败概率分别为5%,4%,3 %2%,现在请求失败,问由C造成的概率最接近A26%B28%C30 %D3 2%假设我们用d=(al,a2,一.a5)表示无向无环图G的5个顶点的度数,下面给出的哪组值是可能的A{3, 4, 4, 3,1}B{4,2,2, 1,1}C{3,3,3,2, 2}D{3, 4, 3, 2, 1}设栈S和队列Q的初始状态为空,元素el,e2,e3,e4, e5, e6 一次压入栈S,一个元素出栈后即进入队列Q, 若出队列的顺序为e2, e 4, e3, e6, e5,el则栈S的容量要求最小值为A2B3C 4D5在堆排序算法中我们用一个数组A来模拟二叉树T,如果该A[0]存放的是T的根节点,那么A[K] (K〉0)的父亲节点是A(K-1)/2BK/2C(K+1)/2D 都不对(v ia:)现有如下任务需要安排在若干机器上并行完成,每个任务都有开始时间和结束时间(开始和结束时间都包括在任务执行时间内)的要求任务名称开始时间结束时间al 7b89c25 d71 1 e36f79 gl 013则最少需要使用的机器数目为A1B 2C3D4在设计一个操作系统时,哪项不是必须考虑的A设备管理模块B文件系统模块C用户管理模块D进程管理模块正整数序列Q中的每个元素都至少能被正整数a和b中的一个整除,现给定a和b,需要计算出Q中的前几项,例如,当a:3, b:5, N 二6 时,序列为3,5 , 6,9,10, 12 (1 )设1个函数voidgenera t e ( inta, in tb , intN, in t*Q )计算Q的前几项(2)设计测试数据来验证函数程序在各种输入下的正确性有一个由大小写组成的字符串,现在需要对他进行修改,将其中的所有小写字母排在答谢字母的前面(大写或小写字母之间不要求保持原来次序),如有可能尽量选择时间和空间效率高的算法c语言函数原型voi dproc (char* str)也可以采用你自己熟悉的语言己知一颗无向无环连通图T的所有顶点和边的信息,现需要将其转换为一棵树,要求树的深度最小,请设计一个算法找到所有满足要求的树的根结点,并分析时空复杂度(描述算法即可,无需代码)1. 1关于IP协议那个正确AI P是TCP上层协议B IP协议是应用层协议C由于两个属于同一层协议,他们之间可以直接通信DIP协议不提供可靠的通信关于内存正确的是A内存的存取速度不能低于cp u速度,否则会造成数据丢失B程序只有在数据和代码等被调入内存后才能运行C采用虚拟内存技术后程序可以在硬盘上直接运行D某计算机的内存容量为16MB,那么他的地址总线为24位单链表中结点的结构为(d ata,link),若想删除结点P (不是头节点或者尾结点)的直接后继,则应执行下列哪个操作Ap二P-〉1 i nk;p->lin k=p-〉link_〉li nkBp->l ink- 〉link 二p-〉li nk;Cp =p-〉li nk-〉linkDp-〉li nk=p->li nk - >link 已知x〉=yandy〉=z为真,那么x〉zor y=z值为A真B假C 无法确定Dxyz同为正数时为真某请求被随即分配到四台机器进行处理,分配到每台机器的概率A15 %B2O°/oC3O %D 35%,处理请求的失败概率分别为5%,4%,3%2%,现在请求失败,问由C造成的概率最接近A26%B28 %C3O°/oD32°/o假设我们用d=(al,a 2, a5 )表示无向无环图G的5 个顶点的度数,下面给出的哪组值是可能的A{3,4, 4 ,3, 1}B{4,2 ,2, 1, 1}C{3,3,3,2, 2}D{3,4,3,2, 1}设栈S和队列Q的初始状态为空,元素el,e2,e3, e4, e5, e 6—次压入栈S,一个元素出栈后即进入队列Q, 若出队列的顺序为e2, e4,e3, e6, e5,el则栈S的容量要求最小值为A2B3C4D 5在堆排序算法中我们用一个数组A来模拟二叉树T,如果该A[0]存放的是T的根节点,那么A[K] (K〉0)的父亲节点是A(K-l) /2BK/2C (K +1)/2D 都不对(via:)现有如下任务需要安排在若干机器上并行完成,每个任务都有开始时间和结束时间(开始和结束时间都包括在任务执行时间内)的要求任务名称开始时间结束时间al7 b89c25d7 1 1e36 f79gio 13则最少需要使用的机器数目为A1B2 C3D4在设计一个操作系统时,哪项不是必须考虑的A设备管理模块B文件系统模块C用户管理模块D进程管理模块正整数序列Q中的每个元素都至少能被正整数a和b 中的一个整除,现给定a和b,需要计算出Q中的前几项,例如,当a=3,b=5, N:6 时,序列为3,5,6,9,10, 12 (1)设id 个函数voidgene r ate ( inta, i ntb, intN, in t氺Q)计算Q的前几项(2)设计测试数据来验证函数程序在各种输入下的正确性有一个由大小写组成的字符串,现在需要对他进行修改,将其中的所有小写字母排在答谢字母的前面(大写或小写字母之间不要求保持原来次序),如有可能尽量选择时间和空间效率高的算法C语言函数原型voidproc (ch ar^str)也可以采用你自己熟悉的语言己知一颗无向无环连通图T的所有顶点和边的信息,现需要将其转换为一棵树,要求树的深度最小,请设计一个算法找到所有满足要求的树的根结点,并分析时空复杂度(描述算法即可,无需代码)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Google笔试题
1、两个二进制数的异或结果
(我的答案:还是一个二进制数呗,难道考了别的知识?)
2、递归函数最终会结束,那么这个函数一定(不定项选择):
1. 使用了局部变量
2. 有一个分支不调用自身
3. 使用了全局变量或者使用了一个或多个参数
(我的答案:举个简单的阶乘的例子
Fun(int n)
{
if(n>1)
return n*Fun(n-1);
else
return 1;
}
肯定有一个分支使其结束继续递归,递归的函数之间肯定要传递(共享一些)信息,这些信息要么放在全局变量里面,要么通过参数传递。
)
3、以下函数的结果?
int cal(int x)
{
if(x==0)
return 0;
else
return x+cal(x-1);
}
(我的答案:该函数有问题,若输入参数>=0, 则返回从0到该数的所有整数之和。
若输入参数<0, 则无限递归,直到耗尽栈内存,或者知道 x溢出变成整数又重新回到0)
4、以下程序的结果?
void foo(int*a, int* b)
{
*a = *a+*b;
*b = *a-*b;
*a = *a-*b;
}
(我的答案,a和b指向的值互换了)
void main()
{
int a=1, b=2, c=3;
foo(&a,&b);
foo(&b,&c);
foo(&c,&a);
printf("%d, %d, %d", a,b,c);
}
(1,3,2)
5、下面哪项不是链表优于数组的特点?
1. 方便删除
2. 方便插入
3. 长度可变
4. 存储空间小
(我的答案 4 链表显然增加了存储空间)
6、T(n) = 25T(n/5)+n^2的时间复杂度?
(我的答案:O(log5(N)))
7、n个顶点,m条边的全连通图,至少去掉几条边才能构成一棵树?
我的答案:m-(n-1)。
对于树而言,n的点对应n-1条边。
所以却掉 m-(n-1) = n*(n-1)/2 - n-1 = (n-1)*(n-2)/2条边。
8、正则表达式(01|10|1001|0110)*与下列哪个表达式一样?
1.(0|1)*
2.(01|01)*
3.(01|10)*
4.(11|01)*
5.(01|1)*
我的答案:C。
这又是编译原理里面的东东,1001和0110都可以用(01|10)*开生成。
所以,题目等价于(01|10)*
很明显
9、如何减少换页错误?
1. 进程倾向于占用CPU
2. 访问局部性(locality of reference)满足进程要求
3. 进程倾向于占用I/O
4.使用基于最短剩余时间(shortest remaining time)的调度
机制 5. 减少页大小
我的答案:2
10、实现两个N*N矩阵的乘法,矩阵由一维数组表示
11、找到单向链表中间那个元素,如果有两个则取前面一个
(11、用两个指针,一个步长为1,一个步长为2,当步长2的那个指针走到头时,这个时候步)
12、长度为n的整数数组,找出其中任意(n-1)个乘积最大的那一组,只能用乘法,不可以用除法。
要求对算法的时间复杂度和空间复杂度作出分析,不要求写程序。
我的思路:
我理解的题目的意思是,找出n-1个数相乘,乘积最大的哪一组。
p.s:
据说由于题目比较简单,传言错2个就没戏了
发信人: DorisJackson (段誉), 信区: Job_Discuss
标题: Re: Google2007年笔试题(上海交大)(转载)
发信站: 武汉白云黄鹤站 (2006年10月11日16:24:41 星期三), 站内信件
偶只写自己会的,大家加吧
1 0
2。
2
3。
(n+1)*n/2
4.1 3 2
5.4
6. O(n^2*lgn)
后面的几题在想,最后一题要不要考虑负数?......................................
1、0
2、2,3(eg, if(n<2) return 1; else return a(n-1)+a(n-2))
应该要使用参数满足某个条件然后退出。
3、x(x+1)/2
4、1,3,2
5、4
6、O(log5(n))
7、(n-1)(n-2)/2
8、3
9、2,4
10、
void matrixmul(int a[N][N], int b[N][N], int result[N][N])
{
memset(result, 0, sizeof(int) * N * N);
for(int i = 0; i < N; i++)
{
for(int j = 0; j < N; j++)
{
for(int k = 0; k < N; k++)
{
result[j] += a[k] * b[k][j];
}
}
}
}
11、用两个指针,一个步长为1,一个步长为2,当步长2的那个指针走到头时,这个时候步长为1的那个指针刚好指着中间的那个结点。
12、
思路:定义一临时量保存当前最小的数(min),和一个保存总数的(sum),开始比较(从第
2个开始)如果有比这大的,那么乘上,如果比这小,那么乘于min,把小数放到min中。
算法复杂度为O(n)
空间复杂度为O(2) .......................................
.
11
somestruct* FindMiddle(somestruct* pHead)
{
if (pHead == NULL || pHead->next == NULL)
return pHead;
somestruct* p1 = pHead, p2 = pHead->next;
while (p2 != NULL && p2->next != NULL)
{
//每次p1前进一位,p2前进2位
p1 = p1->next;
p2 = p2->next->next;
}
return p1; }。