百度面试题

发布时间:2010-09-18 21:13:50

一、编程题
1) 请用你熟悉的语言,写一个函数,给出一个数的原码,能得到该数的补码。
二、技能题(请在数据库题和运用题目中任选一题完成)

1、数据库
1 请说明关于数据库的性能优化,请问可以从那些方面着手.
2 请问delete from table a truncate table table a的区别
2、运用题
1) 请编写脚本实现将1,3,5。。到10000的奇数,写到一个新文件中,每个数一行。


2)请结合实际运用,说明如何彻底的查找出目前你使用的wiondows系统中,开机后会启动的所有程序。

三、测试题
1 结合百度首页,请给出相应的测试用例
2、关于B/S结构的一个学生成绩查询系统(通过学号查询成绩),某测试人员设计了如下用例作为该系统测试的所有用例,请进行评价,并做相应补充。
1)输入正确的学号,能够得到正确的成绩结果。
2)输入异常学号,系统正常处理,显示查询结果为0
3)加大数据库负载,查看响应速度。
4)查看界面在各种分辨率下是否正常显示。


1.5分)下面这段代码是把中英文混合字符串(汉字用两个字节表示,特点是第一个字节的最高位为1)中的大写字母转化为小写字母,请找出其中的bug,注意各种异常情况。 for (char *piterator = szWord; *piterator != 0; piterator ) { if (*piterator & 0x80 != 0) { piterator ; } else if (*piterator >= 'A' && *piterator <= 'Z') *piterator = 32; } 2.5分)对给定的上亿条无序的url,请按照domainsite以及path分别排序,并请指出排序过程中可能会遇到的哪些问题?如何提高效率?例如:http://www.baidu.com/path/about.htmldomainsite以及path的定义分别如下: Domain:baidu.com Site:www.baidu.com Path: www.baidu.com/path 3.10分)某型CPU的一级数据缓存大小为16K字节,cache块大小为64字节;二级缓存大小为256K字节,cache块大小为4K字节,采用二路组相联。经测试,下面两段代码运行时效率差别很大,请分析哪段代码更好,以及可能的原因。为了进一步提高效率,你还可以采取什么办法? A段代码 int matrix[1023][15]; const char *str = "this is a str"; int i, j, tmp, sum = 0; tmp = strlen(str); for(i = 0; i < 1023; i ) { for(j = 0; j < 15; j ) { sum = matrix[i][j] tmp; } } B段代码 int matrix[1025][17]; const char *str = "this is a str"; int i, j, sum = 0; for(i = 0; i < 17; i ) { for(j = 0; j < 1025; j ) { sum = matrix[j][i] strlen(str); } }



1)此题10
对任意输入的正整数N,编写C程序求N!的尾部连续0的个数,并指出计算复杂度。如:18!=6402373705728000,尾部连续0的个数是3
(不用考虑数值超出计算机整数界限的问题)
  
2)此题10
编写一个C语言函数,要求输入一个url,输出该url是首页、目录页或者其他url
如下形式叫做首页:
militia.info/
www.apcnc.com.cn/
http://www.cyjzs.comwww.greena888.com/
www.800cool.net/
http://hgh-products.my-age.net/
如下形式叫做目录页:
thursdaythree.net/greenhouses--gas-global-green-house-warming/
http://www.mw.net.tw/user/tgk5ar1r/profile/
http://www.szeasy.com/food/yszt/chunjie/
www.fuckingjapanese.com/Reality/
  
请注意:
a url有可能带http头也有可能不带
b)动态url(即含有""url)的一律不算目录页,如:
www.buddhismcity.net/utility/mailit.php?l=/activity/details/3135/
www.buddhismcity.net/utility/mailit.php?l=/activity/details/2449/
  
另:如果你会linux,请用linux下的grep命令实现第2题的功能(附加5分)。
  
3)此题40
如果必须从网页中区分出一部分"重要网页"(例如在10亿中选8亿),比其他网页更值得展现给用户,请提出一种方案。
  
4)此题40
假设有10亿网页已经被我们存下来,并提供如下信息:网页全文(即网页的源码)、全文长度、网页正文(即网页中提取的主体文字)、
正文长度,以及其他网页提取物等,现在希望去掉其中的重复网页,请提出可行的方案,计算出每个网页对应的重复度,你可以自己
对网页重复下定义,也可以提出需要哪些更多的网页提取物来实现更好的去重复方案

//////////////////////////////////////////////////////////
百度在线笔试题 一、编程题
1) 请用你熟悉的语言,写一个函数,给出一个数的原码,能得到该数的补码。
二、技能题(请在数据库题和运用题目中任选一题完成)

1、数据库
1 请说明关于数据库的性能优化,请问可以从那些方面着手.
2 请问delete from table a truncate table table a的区别
2、运用题
1) 请编写脚本实现将1,3,5。。到10000的奇数,写到一个新文件中,每个数一行。


2)请结合实际运用,说明如何彻底的查找出目前你使用的wiondows系统中,开机后会启动的所有程序。

三、测试题
1 结合百度首页,请给出相应的测试用例
2、关于B/S结构的一个学生成绩查询系统(通过学号查询成绩),某测试人员设计了如下用例作为该系统测试的所有用例,请进行评价,并做相应补充。
1)输入正确的学号,能够得到正确的成绩结果。
2)输入异常学号,系统正常处理,显示查询结果为0
3)加大数据库负载,查看响应速度。
4)查看界面在各种分辨率下是否正常显示。

//////////////////////////////////////////////////////////
一、选择题:15 10
1. 在排序方法中,关键码比较次数与记录地初始排列无关的是 .
A. Shell排序 B. 归并排序 C. 直接插入排序 D. 选择排序

2. 以下多线程对int型变量x的操作,哪几个需要进行同步:
A. x=y; B. x++; C. ++x; D. x=1;

3. 代码
void func() {
static int val;

}
中,变量val的内存地址位于:
A. 已初始化数据段 B.未初始化数据段 C. D.

4. 同一进程下的线程可以共享以下
A. stack B. data section
C. register set D. thread ID

5. TCPIP分别对应了 OSI中的哪几层?
A. Application layer
B. Data link layer
C. Presentation layer
D. Physical layer
E. Transport layer
F. Session layer
G. Network layer

6. short a[100]sizeof(a)返回?
A 2 B 4 C 100 D 200 E 400

7. 以下哪种不是基于组件的开发技术_____
A XPCOM B XP C COM D CORBA

8. 以下代码打印的结果是(假设运行在i386系列计算机上):
struct st_t
{
int status;
short* pdata;
char errstr[32];
};

st_t st[16];
char* p = (char*)(st[2].errstr + 32);
printf("%d", (p - (char*)(st)));

A 32 B 114
C 120 D 1112

9. STL中的哪种结构是连续形式的存储
A map B set C list D vector

10. 一个栈的入栈序列是ABCDE,则栈的不可能的输出序列是()
AEDCBA BDECBA CDCEAB DABCDE

二、简答题:20分,共2

1. 5分)重复多次fclose一个打开过一次的FILE *fp指针会有什么结果,并请解释。
考察点:导致文件描述符结构中指针指向的内存被重复释放,进而导致一些不可预期的异常。

2. 15分)下面一段代码,想在调用f2(1)时打印err1,调用f2(2)时打印err4,但是代码中有一些问题,请做尽可能少的修改使之正确。

1 static int f1(const char *errstr, unsigned int flag) {
2 int copy, index, len;
3 const static char **__err = {“err1”, “err2”, “err3”, “err4”};
4
5 if(flag & 0x10000)
6 copy = 1;
7 index = (flag & 0x300000) >> 20;
8
9 if(copy) {
10 len = flag & 0xF;
11 errstr = malloc(len);
12 if(errstr = NULL)
13 return -1;
14 strncpy(errstr, __err[index], sizeof(errstr));
15 } else
16 errstr = __err + index;
17 }
18
19 void f2(int c) {
20 char *err;
21
22 swtch(c) {
23 case 1:
24 if(f1(err, 0x110004) != -1)
25 printf(err);
26 case 2:
27 if(f2(err, 0x30000D) != -1)
28 printf(err);
29 }
30 }

三、编程题:30 1
注意:要求提供完整代码,如果可以编译运行酌情加分。

1. 求符合指定规则的数。
给定函数d(n) = n + n的各位之和,n为正整数,如 d(78) = 78+7+8=93。这样这个函数可以看成一个生成器,如93可以看成由78生成。
定义数A:数A找不到一个数B可以由d(B)=A,即A不能由其他数生成。现在要写程序,找出110000里的所有符合数A定义的数。
输出:
1
3


四、设计题:35 1
注意:请尽可能详细描述你的数据结构、系统架构、设计思路等。建议多写一些伪代码或者流程说明。

1. 假设一个mp3搜索引擎收录了2^24歌曲,并记录了可收听这些歌曲的2^30URL,但每首歌的URL不超过2^10个。系统会定期检查这些URL,如果一个URL不可用则不出现在搜索结果中。现在歌曲名和URL分别通过整型的SONG_IDURL_ID唯一确定。对该系统有如下需求:
1) 通过SONG_ID搜索一首歌的URL_ID,给出URL_ID计数和列表
2) 给定一个SONG_ID,为其添加一个新的URL_ID
3) 添加一个新的SONG_ID
4) 给定一个URL_ID,将其置为不可用

限制条件:内存占用不超过1G,单个文件大小不超过2G,一个目录下的文件数不超过128个。



为获得最佳性能,请说明设计的数据结构、搜索算法,以及资源消耗。如果系统数据量扩大,该如何多机分布处理?

/////////////////////////////////////////////////////
考虑一个字符串替换的过程,在一个文本文件中含有一些文本内容和一些需要替换的变量,变量的格式为“$Var$”,原来的“$”使用“$$”进行转义,原来的“$$”表示为“$$$”。我们将含有变量的文件称为模板(文件名为t),文本文件的平均长度为100K。另外,还有一系列的变量文件,里面为变量名和变量值的对应关系(文件名为1.v , 2.v… n.v),每个变量文件包含的变量数在百万数量级,且变量排列次序不定。现要求将,模板里的变量分别用变量文件里的变量替换,并将生成的文件写成(1.r, 2.r… n.r)
要求:从算法和实现上和实现技术上的细节对程序进行优化,尽量使程序高效。程序运行环境为2G内存,4CPU。阐明主要思路,给出伪码和说明,可以着重指出你使用的优化技术。
例子:模板文件为
This is an $FF$ $$. I like $FF$ and $FA$
变量文件为
1.v
FF : banana
FA : apple
2.v
FA: 苹果
FF : 香蕉
则生成文件为
1.r
This is an banana $$. I like banana and apple
2.r
This is an香蕉 $$. I like 香蕉and苹果。
//////////////////////////////////////////////////////

baidu的题目和实际应用有很大关系.

百度面试题

相关推荐