谷歌中国2009夏季实习生笔试题摘录_求职面试_非技术区_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 非技术区 > 求职面试 > 谷歌中国2009夏季实习生笔试题摘录

谷歌中国2009夏季实习生笔试题摘录

 2010/11/3 11:57:39    

 来源:BlogJava  我要评论(0)

  • 摘要:三道Google2009夏季实习生招聘笔试选择题1.从以下四项中选出两项Google工程师“20%时间项目”A、移动搜索B、音乐搜索C、整合搜索D、地图搜索2.有一个网络带宽为"下行速率为2Mbps和上行速率为512Kbps"的ADSL,请问下载一个120Mb的东西,至少需要A、4分钟B、8分钟C、16分钟D、32分钟3.只有两个结点的二叉树有两种形状,请问五个结点的二叉树有多少种形状A、22B、30C、42D、46参考答案:第一题:延伸阅读《李开复
  • 标签:笔试 实习

三道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值之差(即释放空间的大小)从大到小排序,然后依次做。

发表评论
用户名: 匿名