三道Google 2009夏季实习生招聘笔试选择题
1.从以下四项中选出两项Google工程师“20%时间项目”
A、移动搜索
B、音乐搜索
C、整合搜索
D、地图搜索
2.有一个网络带宽为"下行速率为2Mbps和上行速率为512Kbps"的ADSL,请问下载一个120Mb的东西,至少需要
A、4分钟
B、8分钟
C、16分钟
D、32分钟
3.只有两个结点的hashu.html" target="_blank">二叉树有两种形状,请问五个结点的二叉树有多少种形状
A、22
B、30
C、42
D、46
参考答案:
第一题:延伸阅读《李开复:用谷歌20%时间高校演讲 喜欢玩跳舞机》《Google员工用20%工作时间制作冰淇淋》
第二题 下载速度 = 下行速/8 即:2M/8,即4秒下载1M,
120M要 480秒即8分钟,当然,这是理论速度。
所以选 B 回复 更多评论
第三题 选c
根据层次关系推理
一道Google 2009夏季实习生招聘笔试程序设计题
要求:写一个函数void count(char* input,int len),此函数的功能是计算出一个字符串中每个字符的个数,不区分大小写,输出结果时按字符在字符串中出现的先后顺序。使用程序语言不限。
例如:input="abCc*b",输出结果是a:1 b:2 c:2 *:1
以下实现方法出自:http://www.blogjava.net/andyelvis/archive/2009/04/14/265496.html
本人实现的Java版本如下:
public class CountTest {
public static void main(String[] args) {
String input="abCc*b";
count(input,6);
}
private static void count(String input,int len){
String strVisited=null;
int num=0;
for(int i=0;i<len;i++){
char ch=Character.toLowerCase(input.charAt(i));
if(strVisited==null){
strVisited+=ch;
}else if(strVisited.indexOf(ch)==-1){
strVisited+=ch;
}else{
continue;
}
for(int j=0;j<len;j++){
if(Character.toLowerCase(input.charAt(j))==ch)
num++;
}
System.out.print(ch+":"+num+" ");
num=0;
}
}
}
C++版本如下:
#include <stdlib.h>
#include <iostream>
#include <string>
#include <cctype>
using namespace std;
void count(char *input, int len) {
string strVisited;
int num = 0;
for (int i = 0; i < len; i++) {
char ch = tolower(input[i]);
if (strVisited.empty()) {
strVisited += ch;
} else if (strVisited.find(ch, 0) == string::npos) {
strVisited += ch;
} else {
continue;
}
for (int j = 0; j < len; j++) {
if (tolower(input[j]) == ch)
num++;
}
cout << ch << ":" << num << " ";
num = 0;
}
}
int main(int argc, char** argv) {
string input="abCc*b";
count((char*)input.c_str(),6);
return (EXIT_SUCCESS);
}
一道Google 2009夏季实习生招聘笔试算法题
有一台机器,上面有m个储存空间。然后有n个请求,第i个请求计算时需要占R[i]个空间,储存计算结果则需要占据O[i]个空间(其中O[i]<R[i])。问怎么安排这n个请求的顺序,使得所有请求都能完成。你的算法也应该能够判断出无论如何都不能处理完的情况。
比方说,m=14,n=2,R[1]=10,O[1]=5,R[2]=8,O[2]=6。在这个例子中,我们可以先运行第一个任务,剩余9个单位的空间足够执行第二个任务;但如果先走第二个任务,第一个任务执行时空间就不够了,因为10>14-6。
一种解法:按照R值和O值之差(即释放空间的大小)从大到小排序,然后依次做。