谷歌笔试题目
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的所有顶点和边的信息,现需要将其转换为一棵树,要求树的深度最小,请设计一个算法找到所有满足要求的树的根结点,并分析时空复杂度(描述算法即可,无需代码)。
Google面试笔试题目.doc
Google面试笔试题目Google面试题今年10月底,Google在美国《麻省技术评论》、〈〈LinuxJournal〉〉、〈〈Mensa》、《今日物理》等几本专业杂志上刊登了一份“Google 实验室能力倾向测试”的试卷,开头蛊惑地写着“试试看!把答案寄回Google, 你有希望去Google总部参观,并成为我们其中一员”。
有兴趣的人可以做完了邮寄给Google公司,也许会得到一个工作机会呢。
1、解答下面的隐藏等式,其中的M和E的值可以互换,但不允许第一位是0 :WWWDO T-GOO GLE=D 0TC0M2、用一个俳句(一种日本短诗,每句有一个与季节有关的词)来建立模型,借此预测网络搜索流量的季节性变化;3、11211 111 221下一行是什么?4、你正处于一个全部由崎岖小路构成的迷宫里,手里有一个满是灰尘的笔记本,可以无线上网,但是信号很弱。
与此同时,一些阴森可怕、毫无生气的妖怪在你身边游荡。
你会怎么做呢?(1)毫无目的的四处游荡,到处碰壁,直到被迷宫里的妖怪吃掉。
(2 )用笔记本作为挖掘工具,打穿地面直接进入下一关。
(3)玩网络游戏《魔法骑兵》,直至电池耗尽,你也心灰意冷。
(4)使用笔记本画出迷宫的节点地图,找到出路。
(5)发送简历给Google,告诉主管妖怪你选择退出,随后你就回到现实世界。
5、Unix有何缺陷?你准备如何补救?6、在Googl e工作的第一天,你发现身边的同事竟然是研究生一年级课本的作者,你会:(1)主动示好并索取签名。
(2)不改变坐姿,但放轻打字声音,避免影响她的工作和思考。
(3)把你每天的麦片和咖啡都留给她享用。
(4)在她所写的书中找到你最喜欢的内容,并告诉她这些内容已经成为你的座右铭。
7、下列哪句话最贴切的表达了 Goog le的企业文化?(1)我感到很幸运。
(2)不要干坏事。
(3)哦,我己经解决了那个问题。
(4)你身边50英寸之内,必定能找到食物。
(5)以上皆是。
Google笔试题2
2009,9,22--Google笔试题9.22晚上,Google到中山大学南校区的小礼堂举行了宣讲会和笔试。
以下是笔试题的大概内容,我只是凭借记忆写下来而已。
题型:9道单选题+3道算法题一。
单选题(不一定按照原来的顺序)1.以下存储设备速度最快的是()A 内存 B硬盘 C寄存器 D。
(忘了)2.以下不适合作为虚拟内存页面调度的算法是()A 先进先出 B后进先出 C最少不使用 D随机调度3.x=-54,整数都以两个16进制数表示,问一下不正确的是()A x的补码是0xCAB x/2的补码是0x??(忘了)C2x的补码是0x??(忘了)Dx向右移动一位后的补码是0x??(忘了)4.在24x+15y所表示的正整数集合里(x,y都是整数),按照由小到大的顺序排列,那么第23个数是多少()A 23B 65C和D都忘了。
5.设一个硬币抛出正面和反面的概率相等,抛10次中出现5次正面和5次反面的概率是p,抛10万次中出现5万次正面和5万次反面的概率是q,问()A p>qB p=qC p<qD 无法确定6.汉诺塔问题,设有3个柱子,标记为1,2,3号,现有10个盘子(编号由上到下为abcd。
j),现要把盘子按照原来的顺序搬到3号柱子,问第20个步骤是什么?有选项,不过全忘了,因为好长。
7.有4个相同的节点,用它们构建二叉树,问能有多少棵?(对称的算两棵)A 10B 17 C和D忘了二算法题1.(1)给一个字符串,要你统计里面的ACII码的频数,其中大写的字母算作小写字母来统计,输出的时候这样输出:假如字符串是bbCca* ,则输出b:2 C:2 a:1 *:1,按字母首次出现的顺序输出。
给出一个c函数的形式为void calc(char* input,int len),你也可以用你喜欢的语言去写。
(2)给出测试数据来证明程序运行的各种可能性。
2.给定一个数组A,里面只出现0-9这10个数字,但不一定全部出现,然后给定一个K的值,求A中大于K的整数当中最小的一个,并输出。
google面试,笔试逻辑题及问题详解
谷歌笔试面试逻辑题目,部分答案在最后边。
1.一辆学校班车里面能装多少个高尔夫球?2.你被缩小到只有硬币厚度那么点高(不是压扁,是按比例缩小),然后被扔到一个空的玻璃搅拌器中,搅拌刀片一分钟后就开始转动。
你怎么办?3.要是让你清洗整个西雅图的所有窗子,你会收取多少费用?4.怎么才能识别出电脑的内存堆栈是向上溢出还是向下溢出?5.你要向你8岁的侄子解释什么是数据库,请用三句话完成。
6.时钟的指针一天内会重合几次?7.你需要从A地去B地,但你不知道能不能到,这时该怎么办?8.好比你有一个衣橱,里面塞满了各种衬衫,你会怎么整理这些衬衫,好让你以后找衬衫的时候容易些?9.有个小镇有100对夫妇,每个丈夫都在欺骗他的妻子。
妻子们都无法识破自己丈夫的谎言,但是她们却能知道其他任何一个男人是否在撒谎。
镇上的法律规定不准通奸,妻子一旦证明丈夫不忠就应该立刻杀死他,镇上所有妇女都必须严格遵守这项法律。
有一天,镇上的女王宣布,至少有一个丈夫是不忠的。
这是怎么发生的呢?10.在一个重男轻女的国家里,每个家庭都想生男孩,如果他们生的孩子是女孩,就再生一个,直到生下的是男孩为止。
这样的国家,男女比例会是多少?11.如果在高速公路上30分钟内到一辆车开过的几率是0.95,那么在10分钟内看到一辆车开过的几率是多少(假设为常概率条件下)12.如果你看到钟的时间是3:15,那一刻时针和分针的夹角是多少?(肯定不是0度!)13.4个人晚上要穿过一座索桥回到他们的营地。
可惜他们手上只有一支只能再坚持17分钟的手电筒。
通过索桥必须要拿着手电,而且索桥每次只能撑得起两个人的份量。
这四个人过索桥的速度都不一样,第一个走过索桥需要1分钟,第二个2分钟,第三个5分钟,最慢的那个要10分钟。
他们怎样才能在17分钟内全部走过索桥?14.你和朋友参加聚会,包括你们两人在内一共有10个人在场。
你朋友想跟你打赌,说这里每有一个人生日和你相同,你就给他1元,每有一个人生日和你不同,他给你2元。
Google笔试(附笔试题)
Google笔试(附笔试题)Google笔试(附笔试题)1、两个二进制数的异或结果2、递归函数最终会结束,那么这个函数一定(不定项选择):1. 使用了局部变量2. 有一个分支不调用自身3. 使用了全局变量或者使用了一个或多个参数3、以下函数的结果?int cal(int x){if(x==0)return 0;elsereturn x cal(x-1);}4、以下程序的结果?void foo(int*a, int* b){*a = *a *b;*b = *a-*b;*a = *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);}5、下面哪项不是链表优于数组的特点?1. 方便删除2. 方便插入3. 长度可变4. 存储空间小6、T(n) = 25T(n/5) n^2的时间复杂度?7、n个顶点,m条边的全连通图,至少去掉几条边才能构成一棵树?8、正则表达式(01|10|1001|0110)*与下列哪个表达式一样?1.(0|1)*2.(01|01)*3.(01|10)*4.(11|01)*5.(01|1)*9、如何减少换页错误?1. 进程倾向于占用CPU2. 访问局部性(locality of reference)满足进程要求3. 进程倾向于占用I/O4.使用基于最短剩余时间(shortest remaining time)的调度机制5. 减少页大小10、实现两个N*N矩阵的.乘法,矩阵由一维数组表示11、找到单向链表中间那个元素,如果有两个则取前面一个12、长度为n的整数数组,找出其中任意(n-1)个乘积最大的那一组,只能用乘法,不可以用除法,,资料共享平台《Google笔试(附笔试题)》(https://www.)。
要求对算法的时间复杂度和空间复杂度作出分析,不要求写程序。
google招聘笔试题完整版
Google招聘笔试题完整版一、选择题(1) 以下哪个字符串不能被正则表达式a(bc)*d* 匹配到?A. adB. abcdC. abcD. abccd(2) 在x86 cpu中,下面哪种运算速度最慢?A. 加B. 减C. 乘D. 除(3) 下面程序输出的结果是什么?void main(){bool first=true;int sum =0;int current_value;for(unsigned short i=65535;i>=0;--i ){if(first){current_value=65535;sum+=current_value%3;first=false;}else{sum+=-current_value%3;if(current_value<=0){printf("%d,%d",sum,i);break;}}}} A. 65535, 0 B. 65536, 1 C. 65536, 65535 D. 65536, 0(4) 书架上有编号为1-19的19本书,从中拿5本,问5本编号都不相邻的拿法有多少种?A. 2002B. 3003C. 11628D. 比C大的一个数,具体多少我忘记了。
(5) 现在有一套房子,价格200万,假设房价每年上涨10%,一个软件工程师每年固定能赚40万。
如果他想买这套房子,不贷款,不涨工资,没有其他收入,那么他需要几年才能攒够钱买这套房子?A. 5年B. 7年C. 8年D. 9年E. 永远买不起(6) 一棵满二叉树,一共有n个叶子节点,请问该二叉树一共有多少个节点?A. 2n-1B. 2nC. n-1D. n(7) 下列哪种排序方法在最坏情况下的时间复杂度是nlgn?A. 归并排序B. 快速排序C. 冒泡排序D. 插入排序(8) 有两个从小到大排好序的数组,长度分别是N和M,将这两个数组合并成一个有序数组的最小比较次数是:?A min(N,M)B M+N-1C N+MD max(M,N)(9) 关于TLB和Cache的说法中,哪个是错的?A. TLB与Cache中保存的数据是不同的B. TLB miss后,有可能直接在Cache中找到页表内容C. TLB miss后会导致程序出错,但是Cache miss不会D TLB和Cache的命中率都与程序的访存模式有关(10) 关于数据库的说法,哪个是错误的?A. 每个表都必须有主键B. 跨表查询可能非常慢C. 数据库不支持多个用户对同一个表进行写操作D. 多维索引可以用KD树实现二、编程算法题(1) 编程实现多项式求值:f(n)=a0+ a1*x^1 + a2*x^2 +…+ an*x^n,函数声明如下:double foo(double x, double *A, int N)。
Google笔试题。
Google笔试题。
一、单选1. 80x86中,十进制数-3用16位二进制数表示为?解答:0xFFFD. 数据在计算机里用补码表示,正数的补码为其原码,不变,负数的值为其补码求反加一。
最高位为符号位。
因此,可以这样计算,3减去1,等于2,然后取反,则得到-3的补码。
2. 假定符号-、*、$分别代表减法、乘法和指数运算,且三个运算符优先级顺序是:- 最高,*其次,$最低;运算符运算时为左结合。
请计算3-2*4$1*2$3的值:(A)4096,(B)-61,(C)64,(D)-80,(E)512解答:-优先级最高,表达式从左到右计算,先运算3-2,得到1,然后乘以4,得四。
由于$d的优先级最低,所以接着计算1×2,为2.最后表达式为4$2$3.从左到右计算,为4的2次方,得到16,再3次方,得到4096.3.下列伪代码中,参数是引用传递,结果是?calc(double p, double q, double r){q=q-1.0;r=r+p}main({double a = 2.5, b = 9.0;calc(b-a, a, a);print(a);}(A)1.5 (B)2.5 (C)10.5 (D)8 (E)6.5解答:b-a的结果为6.5,作为一临时变量传进去,因此实际计算的表达式为a = a - 1.0; -> a = 1.5a = a + 6.5; -> a = 1.5 + 6.54、求输出结果:int foo(int x, int y){if(x <=0 || y <= 0) return 1;return 3 * foo(x - 1, y / 2);}printf("%d/n", foo(3, 5));(A)81 (B)27 (C)9 (D)3 (E)16解答:此题考查递归函数的调用,调用栈顺序:foo(3,5) -> 3*foo(2, 2) -> 3*3*foo(1, 1)-> 3 *3*3*f(0,0)foo(0,0) 返回一,因此结果为27.5、下列哪个数据结构在优先队列中被最广泛使用(A)堆 (B)数组 (C)双向链表 (D)图 (E)向量解答:众所周知优先队列的实现是基于堆的。
Google笔试题整理(超全!)附部分答案
Google笔试题整理(超全!)附部分答案写出这样一个函数,输入一个n, 输出从1到这个数字之间的出现的1的个数,比如f(13)等于6; f(9)等于1; 网上有很多这道题的解法,大多采用穷举法。
这把这个算法题变成了程序设计,这道题,我认为是总结一个递推公式,然后用递推法实现,比较好。
后来在网上考证了一下,这道题本来也是让总结一个数学函数即可,无需编程。
既然写了,就贴出来,发表一下自己的解法。
这道题还有另一半,当f(n)=n是,最小的n是多少?本人还没有好的方法,所以就不贴了。
下面的程序是上半部java实现的。
/* 可以推出下列递推公式:* f(n)=(a>1?s:n-s*a+1)+a*f(s-1)+f(n-s*a)当n>9时;* L是n的位数* a是n的第一位数字* s是10的L-1次方* n-s*a求的是a后面的数.* 公式说明:* 求0-n 由多少个数字1,分三部分,一是所有数中第一位有多少个1,对应(a>1?s:n-s*a+1)* 当a大于1是,应该有a的L1次,a小于1是有n-s*a+1。
* 如n是223 所有数中第一位有1是100;n是123所有数中第一位是1的有24* 二是对应a*f(s-1)如n是223应该有2*f(99)个1* 三是对应f(n-s*a) 如n是223应该有f(23)个1。
*/long f(long n){if (n<9) return n>0?1:0;int L=(int)(Math.log10(n)+1);//求n的位数llong s=(long)Math.pow(10, L-1);//求10的l-1次方,方便求后面n的第一位数字,及其后面的数。
long a=(long)(n/s);//求n的第一位数字return (a>1?s:n-s*a+1)+a*f(s-1)+f(n-s*a);}google笔试题:A+B=C在一个集合S中寻找最大的C使A+B=C且A,B,C均在集合当中解答(原创)1,将集合S中的数排序X1<=X2<=X3.............Xn;2,for(i=n;i>0;i--){for(j=0,k=i-1;k>j;){if(Xj+Xk>Xi){k--;cotinue;}if(Xj+Xk<Xi){j++;contiue;}A=Xj;B=Xk;C=Xi;break;}例子:1,4,7,10,11,13,15,18,3434:1-18,4-18........15-1818:1-15,4-15,4-13,7-13,7-11结果:A=7;B=11,C=18;第一个的题目(嗯,记的不是很完整):在一棵(排序?)二叉树中搜索指定值,数据结构定义为:struct Node{Node * lnext;Node * rnext;int value;};函数定义为():Node * search(Node * root, int value){}实现这个search函数。
google笔试集锦
Google笔试集锦选择题+三道算法题选择题没什么难的最后一道考的数据库使用什么存储结构不会做。
算法题第一题没什么好说第二题可破坏一个数组A[0..N-1]的条件下使用最少的内存判断是否存在相同的元素我的做法是堆排序时间O(NlogN) 空间O(1) 复杂度上来看应该最优了第三题已知每个点的父节点,求这棵树的最大独立集用递归求解类似动态规划但是不存在重叠子状态经典算法问题了预处理每个节点的子节点存在一张表里时间O(N)空间O(N)大家做的结果是这样吗?发信站: 饮水思源(2006年10月11日03:06:04 星期三), 站内信件开章明义,我是个废人,上来积攒rp了。
在宣讲会的时候,听旁边的师姐说上海只招两个职位每个职位只招一个人。
现在后悔只选了北京和上海的SWE了。
不过反正……也不指望了。
笔试题目:9道单选+3道问答时间:100分钟我做的是B卷。
单选题:1,求两个二进制数的异或值,基本上学过一点计算机的东西的人都能对的题目。
2,不记得了。
也是不需要思考的题目。
3,大概是如下的函数:int someFunc(int x){if (x == 0)return 0;elsereturn x + someFunc(x - 1);}问这个计算的是什么。
4,不记得了。
不需要思考吧。
5,不记得了。
不需要思考吧。
6,参见2,4,5。
7,似乎需要思考一下。
8,问链表结构和数组相比的优势不包括哪项,包括:插入的时间删除的时间存储空间剩下两个不记得了。
9,如下函数:T(x) = 1 (x <= 1)T(n) = 25 T(n/5) + n^2问T(n)随n的增长。
选项大概是这样的:O(n^2),O(n^2logn)等等的。
问答:1,写两个N*N的矩阵的乘法,给出了C的格式,你可以选择你喜欢的语言去写。
int* multi(int* a1, int* a2, int N){}2,寻找一个单向链表的中项,如果存在两个则返回前一个。
Google笔试题
Google笔试是没有门槛的。
这样说是因为Google根本没有限制笔试的人数,开了N个教室,让N多人参加……不过笔试本身却有门槛,看了题目就知道。
本来想上午写写的,但是,嗯,出于攒人品的目的,还是等到现在才写——现在,面试通知已经发过,很显然我又被无视了……OK,那也不错,我也没怎么准备这些东西呢,倒不是说我不重视,而是事情太多……唔,多少算是一种经验了。
回来说说昨天的笔试。
题目的量并不大,除了几个单选题,剩下就是三个编程或算法题。
单选就不说了,考得比较基础,涉及C语言常识、数据结构、文法、操作系统,主要说说大题。
大题虽然题型不一,但都有一个重要特点:考递归。
精确点说,我每一题都用到了递归。
第一个的题目(嗯,记的不是很完整):在一棵(排序?)二叉树中搜索指定值,数据结构定义为(唉唉,数据结构的具体名字都不记得了,my god):struct Node{Node * lnext;Node * rnext;int value;};函数定义为(情况同上,啥都记不清了):Node * search(Node * root, int value){}实现这个search函数。
用递归,经典的树的遍历,pass先。
第二个的题目:计算Tribonaci队列(嗯,九成九记错了那个单词……),规则是T(n) = T(n - 1) + T(n - 2) + T(n -3),其中T(0) = T(1) = 1,T(2) = 2。
函数定义:int Tribonaci(int n) {}备注,不考虑证整数溢出,尽可能优化算法。
这一题我一看就知道要考什么,很显然的递归定义,但也是很显然的,这里所谓的优化是指不要重复计算。
简单的说,在计算T(n)的时候要用到T(n - 1)、T(n - 2)和T(n - 3)的结果,在计算T(n - 1)的时候也要用到T(n - 2)和T(n - 3)的结果,所以在各项计算的时候必须把以前计算的结果记录下来,去掉重复计算。
- 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; }。