您的位置:首页 > 职场人生

百度实习笔试、面试题

2011-06-09 21:54 288 查看
笔试题:
一、简答题30分
1. extern”C”{}的作用和应用场景;
2.写出两者你熟悉的设计模式,及应用场景,可以给出伪代码;
3.TCP中time_wait是表示那种状态,及应用场景,以及起好处和坏处;

二、算法题40分
1. 有一个任务执行机,任务数N<1000,该机器每次只能执行一个任务,而任务之间存在依赖关系,
但是任务之间没有循环依赖,请给出适当的任务执行顺序。算法、伪代码,并分析其时间复杂度和
空间复杂度。

2. 编写函数,统计在某段英文文本中完整句子的数目,文本中只包括大小写字母,空格,点好(.),逗号(,)。
完整的句子必须包含至少一个字母并以点号,结束。
要求:完整的代码,达到目标;高效;简洁;

三、系统架构30分
有一个监控系统,有大量的数据记录包括{url,用户访问ip,时间},要对这个监控系统进行维护,并提供查询。
设计一个能存储和维护1000亿条记录,实时监控,并支持一下两种查询:
1. 指定任意一个时间段(精确到分钟)和某个url,查处这个时间段内的所有url的访问总量。
2. 指定任意一个时间段(精确到分钟)和某个ip,查询这个时间段内的ip访问总量。

1.很多地方都见到这道题,extern “c”是指将该段代码以C语言形式进行编译、链接。由于C不支持函数重载,C与C++对于同一函数进行编译后在符号表中保存的函数名存在差异,故当进行C、C++混编时会出现一些问题。

  2.记得上学期还特意去借了一本《设计模式》书来看,翻是翻了几下,结果啥也没记住,这题直接空了。对于设计模式记得最深的一句就是“过分在意设计模式会阻碍你的创新思维”。

  3.前段时间腾讯笔试时有道选择题也是考TCP的几个状态,当时做错了。回来后看了下TCP的连接和释放,这次还真用上了。time_wait是TCP释放四次握手中的一个状态,当第三次握手完成时,即客户端收到来自服务器的FIN后,再发送一个ACK,客户便开始了time_wait状态。

  同时一个记时器开始记时,当达到2倍一个报文段在因特网中最大的生存期时代表超时。如果在超时前客户端再次收到FIN,则表示是服务器重发的FIN,客户端需重发送ACK。

  4.依题目得知是求有向图的一个拓扑序列。

  5.直接扫描一遍。

int count_prefect_sentence(string str)

{

int i = 0, cnt = 0, hasOneLetter = 0;

while(str[i])

{

if(str[i] == '.')

{

if(hasOneLetter)

cnt++;

hasOneLetter = 0;

}

else if(isalpha(str[i]))

hasOneLetter = 1;

i++;

}

return cnt;

}

  6.海量数据处理题,当时花了很长时间在想这两题,感觉没有想到什么好的思路。这样的系统应当是实时性优先吧,在时间空间上首先考虑时间。

  a、建个二维映射Map[time].bitset/, time代表某一时间点,将时间点表示为

  时间秒差数字作为映射索引。第二维考虑bitset的方式, 建立一个2^32(整型的最大位数)的数组(bitset),每一个bit位0或1代表该位上代表的IP整数是否访问过. 统计时枚举每个时间点,再按位和indexIP进行与运算进行统计,时间效率应该不差。以保存30天为例,空间为(30*24*3600)*(2^32)bit = 2^50B = 1000TB = 1PB

  b、时间以分钟为单位,第二维直接为IP, 映射值为该分钟访问量。(30*24*60)*(2^32)B= 2^50B = 1000TB = 1PB

  7、映射Map[url][time],将url进行字符串hash,再进行枚举统计。

  这两题如果做成两维映射,内存吃不消,既然两题中的一维是已经指定的,变化的只是时间段,因此可以用一维表示,先预处理,再进行统计。

面试一
1.自我介绍;结合自己的简历简单地介绍一下。
2.项目介绍;结合自己做主要的项目,以及带的项目介绍资料,互动式地讲解;面试官关系的是机器学习相关的问题。
3.算法题;二叉树的非递归实现前序遍历;
4. 算法设计题;如何去掉重复页面;

面试二
1. 自我介绍;(同上)
2. 项目介绍;(同上)
3. 算法题;(略)问到了一个TTest;
4. 算法设计题;如何对Query进行分类;

面试三
1. 自我介绍;
2. 项目介绍;
3. 算法题两道;
1>一串首尾相连的珠子(m个),有N种颜色(N《=10),设计一个算法,取出其中一段,要求包含所有N中颜色,并使长度最短。并分析时间复杂度与空间复杂度。
2>从1到1亿,所有出现的数字的和(125=1+2+5),手工计算机出来;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: