百度笔试题

来源:互联网 发布:c语言中break的用法 编辑:程序博客网 时间:2024/05/29 15:11

百度2011实习生笔试题目(防忘记)


一、
1、extern "C"{}的作用以及能解决什么问题

答:C++里的关键字,以C风格编译生成函数名,具有C/C++通用性。

2、举两个经典设计模式,并用伪代码说明

答:必须一个单例模式,幼稚简单。 另外一个,随便整个观察者模式,工厂模式,无非就是多态的应用。

3、time_wait是什么,什么情况会发生,有什么好处和坏处

答:等是TCP/IP断开的4次握手时候的神马等待时间。
二、
1、有N<1000个模块,其中有些模块存在编译依赖(若A依赖B,那么编译B之前必须A),设计一个算法
  找出一个编译序列,并给出时间,空间复杂度

答:这样描述都能想到拓扑,建图的邻接表,加一个栈或者队列就可以完成拓扑序列了。


2、一个文本字符串由大小写字母,空格,',' '.'组成,求这个文本中完整句子的个数,一个完整的句子以'.'号
  结尾并至少包含一个字母(完整代码)

答:保持一个bool表示当前区间内是否出现过字母,初始化区间是[begin,end],begin==end,在头部。
然后end去往后走,如果有字母当然要记录bool为true,遇到文件结束符或者'.'则停止,如果是'.',根据bool决定是不是个句子。 之后继续搜索,令begin和end为'.'的下一位,end继续往后走。

三、
有1000亿条记录,每条记录由url,ip,时间组成,设计一个系统能够快速查询以下内容
1.给定url和时间段(精确到分钟)统计url的访问次数

答:哈希键值为url,实值为map<访问时间>。 给定url,直接哈希定位到相应map,给定时间段,直接两次find得到遍历区间范围,问题结束,效率logN;

2.给定ip和时间段(精确到分钟)统计ip的访问次数

同上。