百度笔试题面试题集总

1:堆和栈的区别,何时用堆何时用栈?
2:树的深度优先搜索算法
按照某种条件往前试探搜索,若是前进中遭到失败(正如老鼠钻迷宫老鼠遇到死胡同)则退
回头另选通路继续搜索,直到找到条件的目标为止。
3:广度优先搜索算法
宽度优先搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一,这一算法也是不少
重要的图的算法的原型。Prim 最小生成树算法采用了和宽度优先搜索相似的思想。其别名
又叫 BFS,属于一种盲目搜寻法,目的是系统地展开并检查图中的全部节点,以找寻结果。
换句话说,它并不考虑结果的可能位址,完全地搜索整张图,直到找到结果为止。
4:树的非递归实现
5:数据库事务的四大特性
原子性 atomic、一致性 consistency、分离性 isolation、持久性 durability
◎事务的原子性指的是,事务中包含的程序做为数据库的逻辑工做单位,它所作的对数据修
改操做要么所有执行,要么彻底不执行。这种特性称为原子性。
◎事务的一致性指的是在一个事务执行以前和执行以后数据库都必须处于一致性状态。
◎分离性指并发的事务是相互隔离的。即一个事务内部的操做及正在操做的数据必须封锁起
来,不被其它企图进行修改的事务看到。
◎持久性意味着当系统或介质发生故障时,确保已提交事务的更新不能丢失。即一旦一个事
务提交,DBMS 保证它对数据库中数据的改变应该是永久性的,耐得住任何系统故障。
持久性经过数据库备份和恢复来保证。
6:ASCII 码--十进制(对应关系)
0--48 9--57
A--65 Z--90
a--97 z—122
十进制:decimal,简称:DEC
7:算法与程序设计题
#include <iostream>
using namespace std;
//该函数实现返回一个以“\0”结束的字符串中最长的数字串的长度,
//并把该数字子串的首地址赋给outputstr
//不能使用任何库函数或已经存在的函数,如strlen。
//例如:在字符串“abc123abcdef12345abcdefgh123456789”中,
//把该字符串的首地址赋给inputstr,函数返回,
//outputstr指向字符串“”的首地址。
int maxContinuNum(const char inputstr,const char outputstr)
{
int max=0,count=0;
while(inputstr!='\0') //若是字符串没有到末尾,继续循环
{
if(
inputstr>=49 && inputstr<=57) //若是在统计范围内
{
count++;
}
else //若是在统计范围外
{
if(count>max)
{
max=count;
outputstr=inputstr-count; //返回最大数字子串的首地址对应的数字
count=0;
}
else
{
count=0;
}
}
inputstr++;
}
if(
inputstr=='\0') //特殊状况,最长字符串在末尾
{
max=count;
outputstr=inputstr-count; //返回最大数字子串的首地址对应的数字
}
cout<<"返回最大数字子串的首地址对应的数字:"<<outputstr<<endl;
return max;
}
int main()
{
int max;
char
str="abc123abcdef12345abcdefgh123456789";
max=maxContinuNum(str,str);
cout<<"字符串“abc123abcdef12345abcdefgh123456789”中最长的数字串的长度为:"<<max<<endl;
}
8:New Coke 的一项失败营销方略
始于可口可乐与百事可乐之争的。这是商业史上的著名案例,不少人曾经从不一样角度分析这
个案例。而在 blink 书中,两种可乐在作产品比较时采起了错误的“切片”方法。百事在最初
***可口时,曾经经过在大街上随即抽取人员做双盲测试,并发现大多数人认为百事可乐更
好喝,以此为证听说明百事的优势。可口也做了一样的测试,惊恐的发现事实确实如此。于
是他们判定可口可乐必须在产品上改进,通过大量的投入,一种新的New Coke发布出来了。
New Coke 在作一样的双盲测试时,更多人认为 New Coke 比 Pepsi 好喝。当时的 CEO 郭思
达在发布时说,这是可口可乐有史以来作的最有把握的一件事。但是,事实是,New Coke
迅速被消费者抵制,最后可口可乐不得不从新推出原来的可口可乐并彻底摒弃 New Coke。
这种双盲测试是一种错误的切片方法,由于在作这种试验时,用户对每种饮料都只喝一小口,
而不是像正常时一次喝一瓶。而当用户只喝一小口饮料时,大多数人会更喜欢更甜的那一种
——虽然当他们喝一整瓶的时候会有不一样的见解。书中又举了更多例子说明,所谓的用户测
试并非一种可以让你相信的结果,由于用户测试会被不少不一样的因素所影响,包括包装、
饮用方法。
9:链表和数组的优缺点?
链表:链表是一块不连续的动态空间,长度可变;链表须要按顺序检索节点,效率低;
链表的优势是能够快速插入和删除节点,大小动态分配,长度不固定。
链表不存在越界问题。
数组:数组是一快连续的空间,声明时长度就须要固定。
数组的优势是速度快,数据操做直接使用偏移地址。
数组有越界问题。
2008-9-24 百度电子科技大学网络工程师笔试题(第五套笔试题)
第一大题,共 6 小题,每题 5 分,共 30 分
1:什么是保留 IP 地址,请列举?为何规定保留 IP 地址?
保留 IP 地址:1 个 A 类地址 10...;16 个 B 类地址 172.16..---172.31..
256 个 C 类地址 192.168.0.
---192.168.255.;保留 IP 地址不会在 internet 网上出现,
用于企业网络,A 企业能够用,B 企业也能够使用!
2:IPv4 和 IPv6 的地址分别是多少?
IPv4 的地址是 32 位,IPv6 的地址是 64 位。
3:什么是访问控制列表?它的执行流程?
访问控制列表(ALC)实际上就是一系列容许和拒绝匹配准则的集合。总的一句话就是数据包与 ALC 中的一旦出现的匹配状况,就执行相应的操
做,而此时对此数据包的检测就到此为止了,后面无论出现多少不匹配的状况将不做检测。
4:802.1Q 协议实现什么功能?和 ISL 有何区别
5:端口镜像,链路汇聚的功能是什么,请用你熟悉的交换机写出它们的命名。
6:linux 下解释: ip rule add from 192.168.3.112/32 [tos 0x10] table 2 pref 1500
第二大题,30 分
你如今有一个文件,文件中顺序存有 N 个记录,R1,R2,...,RN,这些记录不是有序的,可是你
知道一个整数 M,
这些记录知足 R1<R2<...<RM 以及 RM+1<RM+2<...RN.
1,设计一个算法或编写一个程序,将文件中的记录排序为 R1',R2',...,RN',算法或程序读取文件
的次数为 O(N),不限内存使用,
2,设计一个算法或编写一个程序,将文件中的记录排序为 R1',R2',...,RN',算法或程序读写文件
的次数为 O(N),空间复杂度
为 O(1),亦即,你使用的内存大小和 M,N 均无关。
第三大题,每小题 20 分,共 40 分
1:在某些状况下,网络中会出现路由环路,请根据你的理解,说明可能出现路由环路的原
理,并以你最熟悉
的路由协议,说明该路由协议采起了哪些措施避免路由环路。
2:若是用户向你申述上百度主页很慢,你会从哪些方面取分析这个问题,如何高效的分析
并判断故障根源所在?
第四套题的第三大题的第一个
如今须要对 2000 台机器升级某个软件?已经有这个软件的最新代码,
1:你会选择用什么工具自动升级该软件?请给出具体步骤或方法?
2:为了便于后期的运维,若是让你设计一套软件部署方案,你会怎么设计?
一、请实现两棵树是否相等的比较,相等返回,不然返回其余值,并说明算法复杂度。
数据结构为:
typedef struct_TreeNode{
char c;
TreeNode
leftchild;
TreeNode rightchild;
}TreeNode;
函数接口为:int CompTree(TreeNode
tree1,TreeNode tree2);
注:A、B 两棵树相等当且仅当 Root->c==RootB-->c,并且 A 和 B 的左右子树相等或者左右互换相等。
二、写一段程序,找出数组中第 k 大小的数,输出数所在的位置。例如{2,4,3,4,7}中,第一大的数是
7,位置在 4。第二大、第三大的数都是 4,位置在 一、3 随便输出哪个都可。
函数接口为:int find_orderk(const int
narry,const int n,const int k)
2'、已知一个字串由 GBK 汉字和 ansi 编码的数字字母混合组成,编写 c 语言函数实现从中去掉全部 ansi
编码的字母和数字(包括大小写),要求在原字串上返回结果。
函数接口为:int filter_ansi(char* gbkstring)
注:汉字的 GBK 编码范围是 0x8140-0xFEFE
百度笔试题
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、 选择题:15 分 共 10 题
1.一个含有 n 个顶点和 e 条边的简单无向图,在其邻接矩阵存储结构中共有个零元素。
A.e B.2e C.n2-e D.n2-2e
2.
是面向对象程序设计语言中的一种机制。这种机制实现了方法的定义与具体的对象无
关,而对方法的调用则能够关联于具体的对象。
A.继承(Inhertance) B.模板(Template)
C.对象的自身引用(Self-Reference) D.动态绑定(Dynamic Binding)
3.应用层 DNS 协议主要用于实现 网络服务功能.
A. IP 地址到网络设备名字的映射 B. IP 地址到网络硬件地址的映射
C. 网络设备名字到 IP 地址的映射 D. 网络硬件地址到 IP 地址的映射
4.linux 默认状况下,一个进程最多能打开多少文件
A.64 B. 128 C. 512 D. 1024
5.下面结构体
struct s1 {
char ch, ptr;
union {
short a, b;
unsigned int c:2, d:1;
}
struct s1
next;
};
的大小是____

A. 12 字节 B.16 字节 C.20 字节 D. 24 字节
6.任何一个基于"比较"的内部排序的算法,若对 6 个元素进行排序,则在最坏状况下所需的
比较次数至少为
A.10 B.11 C.21 D.36
7.如下不是进程间通信的是_
A 共享内存 B 信号量 C 线程局部存储 D 消息队列
8.下面程序,求 count 的值
int func(x)
{
int count= 0;
x=9999;
while(x)
{
Count ++;
x = x&(x-1);
}
return count;
}
A 8; B 10; C 5; D 11
A
9.使用 malloc 系统调用分配的内存是在
D_ 上分配的
A 栈; B bss; C 物理内存; D 堆
10.最坏状况下,合并两个大小为 n 的已排序数组所须要的比较次数

A.2n B.2n-1 C.2n+1 D.2n-2
2、简答题:20 分,共 3 题
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,请按照 domain、site 以及 path 分别排序,并请指出排
序过程当中可能会遇到的哪些问题 如何提升效率
例如:http://www.baidu.com/path/about.html,domain、site 以及 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[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] + strlen(str);
}
}
3、编程题:30 分 共 1 题
注意:要求尽量提供完整代码,若是能够编译运行酌情加分。
1.内存中有一个长数组,条目数为 10 万,数组单元为结构体 struct array,sizeof(struct array)
为 512 字节。结构有一 int 型成员变量 weight。现须要取得按 weight 值从大到小排序的前 500
个数组单元,请实现算法,要求效率尽量高。
4、设计题:35 分 共 1 题
注意:请尽量详细描述你的数据结构、系统架构、设计思路等,建议多写一些伪代码或者
流程说明。
1.请设计一个字典。以字符串为索引,存储用户定义的定长结构。要求有增、删、查、改的
功能。已经给定一个函数,能够由字符串映射到一个签名,每一个签名由两个 unsigned int 类
型组成。假设每个字符串可以对应惟一的一个签名,彻底没有重复(或者重复的几率能够
忽略),而且签名分布足够均匀。
请描述你的数据结构 内存如何申请 增、删、查、改的功能如何实现 若是操做很频繁,该
如何优化
取 自
"http://wiki.xyzp.net/index.php/2006%E7%99%BE%E5%BA%A6%E7%AC%94%E8%AF%95
%E9%A2%98
1、选择题:15 分 共 10 题php

  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. TCP 和 IP 分别对应了 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. 一个栈的入栈序列是 A,B,C,D,E,则栈的不可能的输出序列是:
    A. EDCBA B. DECBA C. DCEAB D. ABCDE
    2、简答题:20 分,共 2 题
  11. (5 分)重复屡次 fclose 一个打开过一次的 FILE *fp 指针会有什么结果,并请解释。
    考察点:致使文件描述符结构中指针指向的内存被重复释放,进而致使一些不可预期的异常。
  12. (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 }
    3、编程题:30 分 共 1 题
    注意:要求提供完整代码,若是能够编译运行酌情加分。
  13. 求符合指定规则的数。
    给定函数 d(n) = n + n 的各位之和,n 为正整数,如 d(78) = 78+7+8=93。 这样这个函数可
    以当作一个生成器,如 93 能够当作由 78 生成。
    定义数 A:数 A 找不到一个数 B 能够由 d(B)=A,即 A 不能由其余数生成。如今要写程
    序,找出 1 至 10000 里的全部符合数 A 定义的数。
    输出:
    1
    3

    4、设计题:35 分 共 1 题
    注意:请尽量详细描述你的数据结构、系统架构、设计思路等。建议多写一些伪代码或者
    流程说明。
  14. 假设一个 mp3 搜索引擎收录了 2^24 首歌曲,并记录了可收听这些歌曲的 2^30 条
    URL,但每首歌的 URL 不超过 2^10 个。系统会按期检查这些 URL,若是一个 URL 不
    可用则不出如今搜索结果中。如今歌曲名和 URL 分别经过整型的 SONG_ID 和 URL_ID
    惟一肯定。对该系统有以下需求:
    1) 经过 SONG_ID 搜索一首歌的 URL_ID,给出 URL_ID 计数和列表
    2) 给定一个 SONG_ID,为其添加一个新的 URL_ID
    3) 添加一个新的 SONG_ID
    4) 给定一个 URL_ID,将其置为不可用
    限制条件:内存占用不超过 1G,单个文件大小不超过 2G,一个目录下的文件数不超过 128
    个。
    为得到最佳性能,请说明设计的数据结构、搜索算法,以及资源消耗。若是系统数据量扩大,
    该如何多机分布处理
    百度第二套

1、选择题:15 分 共 10 题html

  1. 已知一个线性表(38,25,74,63,52,48),采用的散列函数为 Hash($Key)=$Key mod 7,将元
    素散列到表长为 7 的哈希表中存储。请选择后面两种冲突解决方法分别应用在该散列表上进
    行等几率成功查找的平均查找长度,拉链法 ,线性探测法 .
    A. 1.0 B. 1.5 C. 1.7 D. 2.0 E. 2.3
    F. 7/6 G. 4/3 H. 3/2
  2. 须要将 OS 缓冲区的数据刷新到硬盘,能够调用的函数有(多选):
    A.fflush() B. fsync() C. sync() D.writev()
  3. 下面哪一个 shell 语句不能打印出用户主目录的路径
    A. echo "$HOME" B. echo ~
    C. echo $HOME D. echo $HOME
  4. 最坏状况下,合并两个大小为 n 的已排序数组所须要的比较次数
    A.2n B.2n-1 C.2n+1 D.2n-2
  5. 一个 B 类网的子网掩码是 255.255.240.0,这个子网能拥有的最大主机数是:
    A. 240 B. 255 C.4094 D. 65534
  6. 如下代码执行后,val 的值是___:
    unsigned long val = 0;
    char a = 0x48;
    char b = 0x52;
    val = b << 8 | a;
    A 20992 B 21064 C 72 D 0
  7. 内存的速度远远高于磁盘速度,因此为了解决这个矛盾,能够采用:
    A 并行技术 B 虚存技术 C 缓冲技术 D 通道技术
  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. 同一进程下的线程能够共享如下
    A. stack B. data section
    C. register set D. thread ID
  10. 如下哪一种操做最适合先进行排序处理
    A 找最大、最小值 B 计算算术平均值
    C 找中间值 D 找出现次数最多的值
    2、简答题:20 分,共 2 题
  11. (6 分)下面是一个 http 请求:
    GET /baidu/blog/item/6605d1b4eb6433738ad4b26d.html HTTP/1.1
    Host: hi.baidu.com
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.0.6) Gecko/20060728
    Firefox/1.5.0.6
    Accept:
    text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,/;q
    =0.5
    Accept-Language: zh-cn,zh;q=0.5
    Accept-Encoding: gzip,deflate
    Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7
    Keep-Alive: 300
    Connection: keep-alive
    Referer: http://hi.baidu.com/baidu
    Cookie: BAIDUID=AFB70E986AC48B336ABAB7505CDD1C76;
    请解释如下各字段基本含义:Host、User-Agent、Accept-Charset、Connection、Referer、Cookie
  12. (14 分)函数 A 将字符串 str1 转成小写,并打印出转化先后的字符串。另外,改错时不
    能改变函数的接口和主要思路。改错时,请指出行号。
    1 #include
    2 #include
    3
    4
    5 char str1 = "ABDFLjlero 咱们都是 saf";
    6
    7 char
    ToLower(char s[])
    8 {
    9 static size_t i=sizeof(s);
    10
    11 for (i; i>=0; i--) {
    12 if (s>"A" && s<"Z") {
    13 s += 26;
    14 }
    15 }
    16 return s;
    17 }
    18
    19 int A()
    20 {
    21 printf("old str[%s] after lower[%s]n", str1, ToLower(str1));
    22 }
    3、编程题:30 分 共 1 题
    注意:要求提供完整代码,若是能够编译运行酌情加分。
  13. 两个已排序的整型数组,求交集,最快算法
    输入:两个已排序的整型数组(int a[m], b[n])
    输出:两个数组的交集
    4、设计题:35 分 共 1 题
    注意:请尽量详细描述你的数据结构、系统架构、设计思路等。建议多写一些伪代码或者
    流程说明。
  14. 考虑一个字符串替换的过程,在一个文本文件中含有一些文本内容和一些须要替换的变
    量,变量的格式为“$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 苹果。 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 亿网页已经被咱们存下来,并提供以下信息:网页全文(即网页的源码)、全文长
    度、网页正文(即网页中提取的主体文字)、
    正文长度,以及其余网页提取物等,如今但愿去掉其中的重复网页,请提出可行的方案,计
    算出每一个网页对应的重复度,你能够本身
    对网页重复下定义,也能够提出须要哪些更多的网页提取物来实现更好的去重复方案
    百度面经:我是 9 月份跟百度联系的,当时连简历都没写,只是写了一下本身作过的一些东
    西,而后就通知我 9 月 21 日面试,第一次面试通过了 3 个小时,见了 4 位面试官,一个系
    统构建师,一个 team leader,一个技术部经理,还有一个 hrJJ,主要问的问题就是我曾经作
    过的信息检索项目,基本上照着简历(若是有的话)仔细地问,还会出点题目考你,建议大
    家多去看看《数据结构》,尤为是算法分析、查找、排序方面的东西。还有一些就看你的反
    应能力了,这里就不说了。
    而后她会让你问一些问题,记得去以前到网上搜集点百度的资料看看,对百度有些认识,然
    后再问写关于公司发展和我的发展的问题,薪水的问题就别问题。
    大约 3 个星期后,通知我去二面,又见了一个 team leader 和技术副总裁,这回仍是围绕着
    简历提问,但自由交流的成份不少,就看你的亲和力和素质了,总之让他认为你这我的有创
    意,有想法,跟你一块儿合做会很愉快就是了。
    当时那个副总裁邀请我到公司去作兼职,由于最近比较忙,就说下学期才能开始,能够说是
    整个面试中最大的败笔。
    一个星期后打电话到 HR 那里问结果,被告知应届生招聘计划暂时推迟,感受很 faint,只好
    去找别的工做了。
    百度的待遇一直不知道,工做时间大约是天天 10 小时以上,周六常常加班。
    有股票期权,看你是否是喜欢了。
    主要注意的是他让你问他问题的时候,必定问点有水平的问题,给他们点表现的机会,它表
    现的很爽,一高兴,对你也有好处。
    百度网络笔试题目
    1.假设 Apache 产生的日志文件名为 access_log,在 apache 正在运行时,执行命令 mv
    access_log access_log.bak,执行完后,请问新的 apache 的日志会打印到哪里,为何
    2.在 Shell 环境下,如何查看远程 Linux 系统运行了多少时间
    3.处理如下文件内容,将域名取出并进行计数排序,如处理:
    http://www.baidu.com/index.html
    http://www.baidu.com/1.html
    http://post.baidu.com/index.html
    http://mp3.baidu.com/index.html
    http://www.baidu.com/3.html
    http://post.baidu.com/2.html
    获得以下结果:
    域名的出现的次数 域名
    3 www.baidu.com
    2 post.baidu.com
    1 mp3.baidu.com
    能够使用 bash/perl/php/c 任意一种
    4.若是获得随机的字串,长度和字串中出现的字符表可定义,并将字串倒序显示,如
    把 0123456789 做为基准的字串字符表,产生一个 6 位的字串 642031,打印出的字串为
    130246,可以使用 bash/perl/php/c 任意一种.
    5.如何查看当前 Linux 系统的状态,如 CPU 使用,内存使用,负载状况等.
    6.你在大学中作的最成功的一件事是什么(没必要必定与计算机相关) 百度面试过程:
    个人求职路程好像非常艰辛„„到目前为止面试了不少家,简历更是投了几十份,只有
    Neusofe 给了我一个 offer。这个 offer 并非对我能力的确定,只是以为我可能会留在东软。
    惋惜东软我已经给拒了,基本上没有退路了。
    说一下个人百度求职过程吧。
    通过在线笔试、两轮电话面试,今天上午收到了百度的拒信,个人百度求职算是告一段落
    了„„
    从百度校园招聘开始,我就投了一份简历。在别人都有在线笔试机会的时候,我却没有任何
    消息。
    据说师兄能够给推荐,我就又经过内部推荐的方式投递了一次,此次很快就有消息了——拒
    信。
    那时基本上就放弃了百度。但是大概 20 多天之后,我投递的第一份简历有消息了——通知
    我在线笔试。通过精心准备,笔试题答得还凑合。过了几天给我来了封邮件告知我笔试经过,
    会找时间安排电话面试。又过了好几天,我正在剃头的时候接到百度电话,约了次日下午
    三点电话面试。心情异常兴奋,回到寝室拼命复习数据结构并收集百度面试题型„„临阵磨
    枪 呵呵。
    百度的面试氛围非常轻松,让你很快就以为是在聊天而不是面试。第一轮主要是在针对个人
    在线笔试的题目进行提问和分析,主要讲的是作题的思路和改进的方法。面试时间大概有半
    个小时,以为应该有下一轮。
    果真上个星期五晚上接到了百度技术经理的电话,自称姓刘。在前一天我同窗也是这个时候
    接到百度第二面电话,看来是同一我的,后来的面试内容证明了是同一我的。面试过程大概
    以下:
    一、介绍一下项目。
    二、提了一个问题:上千万条记录,统计出重复记录最多的前 N 条。
    三、一个几率题:54 张扑克牌,除去两张大小王剩下 52 张扑克牌。问红桃 A 和黑桃 A 同时
    被一我的拿到的几率是多少
    四、多个线程访问共享内存时因该怎么办
    五、在写程序遇到问题的时候,一般采用什么调试方法
    六、一个 client/server 的协议问题
    七、剩下就是随便聊聊,好比有缺点、指望工做的性质、职业规划等
    总结一下教训:
    一、介绍项目的时候不能一味的按照事前想好的模板说,应该根据所申请的工做的性质,多
    说一些和本身申请的工做内内容相近的东西说。我在介绍个人项目的时候,说了不少硬件的
    东西,而相关的 Linux 下的 C 编程却没有提到多少,一大失败之处。
    二、对于他提的第二个问题,当时由于紧张没有想出来,挂了电话之后才有了思路。
    三、这个几率题之前碰到过,并且和同窗们讨论过,答案很早就知道了。可是遇到面试的时
    候,不能立刻就说出答案,由于这样摆明了高诉人家你之前就见过这道题,这样就失去了做
    为考题的意义。因此,若是事前知道答案也不要立刻说出来,装做考虑中,而后慢慢说出答
    案。我就是很快就说出了答案,失败!
    四、在问项目的时候,他问我代码行大概有多少 我说大概有 5.6K 行左右。在回答第四个问
    题的时候,我几乎是将书上所讲过的东西背了一遍给他,虽然答案是正确的,可是我估计他
    一听就听出来是在背书了,因此这也会减分很多。,并且百度强调创新,其实就算你不知道
    答案也能够按照本身的思路说一下的,只要逻辑清晰、合理都会比我背书强„„
    五、个人回答是有时候用 gdb,有时候用输出日志的形式。以我以前给他讲的项目经验是不
    大可能会涉及这么多的知识的,因此估计他又听出我是在背书了„„继续减分
    六、后来我发现这个问题其实他不是在考我问题的答案,是考我解决问题的能力和考虑问题
    的思路。这点是我比较差的地方,没办法„„减分
    我前面表现那么失败,基本上已经没有什么但愿了,后面的谈话已经没有意义了,只不过是
    礼貌性的结束此次面试了。
    上面的总结是我收到拒信之后才总结出来的,可悲的是电话面试结束之后,还觉得能被录取
    呢„„
    面试官太和善了,并且气氛及其融洽,根本没有任何很差的征兆,面试官好厉害!
    至此,个人百度求职过程到此告一段落„„生活还在继续,工做还得继续努力去找,加油!
    百度电话面试题目: 1.谈谈你对数据库中索引的理解 2.如今普通关系数据库用得数据结构
    是什么类型的数据结构 3.索引的优势和缺点 4.session 和 cache 的区别是什么 5.若是有几千个
    session,怎么提升效率 6.session 是存储在什么地方,以什么形式存储的。
    百度技术研发笔试题目
    /*百度面试题
    • 有一根 27 厘米的细木杆,在第 3 厘米、7 厘米、11 厘米、17 厘米、23 厘米这五个位置
      上各有一只蚂蚁。
    • 木杆很细,不能同时经过一只蚂蚁。开始 时,蚂蚁的头朝左仍是朝右是任意的,它们只
      会朝前走或调头,
    • 但不会后退。当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。假设蚂蚁们每
      秒钟能够走一厘米的距离。
    • 编写程序,求全部蚂蚁都离开木杆 的最小时间和最大时间。
    • 分析:题目中的蚂蚁只可能相遇在整数点,不能够相遇在其它点,好比 3.5cm 处之类的,也就
      是可让每只蚂蚁走 1 秒,而后
    • 查看是否有相遇的便可.
    • 这样个人程序实现思路就是,初始化 5 只蚂蚁,让每只蚂蚁走 1 秒,而后看是否有相遇的,如
      果有则作相应处理.当每只蚂蚁都
    • 走出木杆时,我就记录当前时间.这样就能够获得当前状态状况下,须要多久能够走出木杆,
      而后遍历全部状态则能够获得所胡
    • 可能.
      /
      package baidu;
      public class Ant {
      /
    • step 表示蚂蚁每个单位时间所走的长度
      /
      private final static int step = 1;
      /
    • position 表示蚂蚁所处的初始位置
      /
      private int position;
      /
    • direction 表示蚂蚁的前进方向,若是为 1 表示向 27 厘米的方向走, 若是为-1,则表
      示往 0 的方向走。
      /
      private int direction = 1;
      /
    • 此函数运行一次,表示蚂蚁前进一个单位时间,若是已经走下木杆则会抛出异常
      /
      public void walk() {
      if (isOut()) {
      throw new RuntimeException("the ant is out");
      }
      position = position + this.direction
      step;
      };
      /**
    • 检查蚂蚁是否已经走出木杆,若是走出返回 true
    • */
      public boolean isOut() {
      return position <= 0 || position >= 27;
      }
      /**java

    • 检查此蚂蚁是否已经遇到另一只蚂蚁
    • @param ant
    • @return 若是遇到返回 true
      */
      public boolean isEncounter(Ant ant) {
      return ant.position == this.position;
      }
      /**
    • 改变蚂蚁的前进方向
      /
      public void changeDistation() {
      direction = -1
      direction;
      }
      /**
    • 构造函数,设置蚂蚁的初始前进方向,和初始位置
    • @param position
    • @param direction
      */
      public Ant(int position, int direction) {
      this.position = position;
      if (direction != 1) {
      this.direction = -1;//方向设置初始位置,好比为 0 时,也将其设置为 1.这样能够方便后面的
      处理
      } else {
      this.direction = 1;
      }
      }
      }
      /////////////////////////////////////////////////////////
      package baidu;
      public class Controller {
      public static void main(String[] args) {
      int time = 0;
      for (int i = 0; i < 32; i++) {
      Ant[] antArray = getAntList(getPoistions(), getDirections(i));
      while (!isAllOut(antArray)) {
      for (Ant ant : antArray) {
      if (!ant.isOut()) {
      ant.walk();
      }
      }
      time++;
      // 查看是否有已经相遇的 Ant,若是有则更改其前进方向
      dealEncounter(antArray);
      }
      System.out.println(time);
      // 将时间归 0,这样能够从新设置条件,再次获得所有走完所须要的时间.
      time = 0;
      }
      }
      /**
    • 这个函数的算法很乱,但暂时能解决问题
    • @param list
      */
      public static void dealEncounter(Ant[] antArray) {
      int num_ant = antArray.length;
      for (int j = 0; j < num_ant; j++) {
      for (int k = j + 1; k < num_ant; k++) {
      if (antArray[j].isEncounter(antArray[k])) {
      antArray[j].changeDistation();
      antArray[k].changeDistation();
      }
      }
      }
      }
      /**
    • 由于有 5 只 Ant,因此组合以后有 32 种组合.恰好用 5 位二进制来表示,若是为 0 则表示
      Ant 往 0 的方向走 若是为 1,则表示往 27 的方向走
    • 注:在经过 Ant 的构造函数设置初始值时,经过过滤把 0 修改为了-1.
      */
      public static int[] getDirections(int seed) {
      int result[] = new int[5];
      result[0] = seed % 2;
      result[1] = seed / 2 % 2;
      result[2] = seed / 4 % 2;
      result[3] = seed / 8 % 2;
      result[4] = seed / 16 % 2;
      System.out.println("directions is " + result[0] + "|" + result[1] + "|"
    • result[2] + "|" + result[3] + "|" + result[4]);
      return result;
      }
      /**
    • 批量设置 Ant 的初始位置,这样设置不是十分必要,能够直接在代码中设置
    • @return
      */
      public static int[] getPoistions() {
      return new int[] { 3, 7, 11, 17, 23 };
      }
      /**
    • 取得设置好初始值的 5 只 Ant
    • @param positions
    • @param directions
    • @return
      */
      public static Ant[] getAntList(int[] positions, int[] directions) {
      Ant ant3 = new Ant(positions[0], directions[0]);
      Ant ant7 = new Ant(positions[1], directions[1]);
      Ant ant11 = new Ant(positions[2], directions[2]);
      Ant ant17 = new Ant(positions[3], directions[3]);
      Ant ant23 = new Ant(positions[4], directions[4]);
      return new Ant[] { ant3, ant7, ant11, ant17, ant23 };
      }
      /**
    • 判断是否全部的 Ant 都已经走出了木杆,也就是设置退出条件
    • @param antArray
    • @return
      /
      public static boolean isAllOut(Ant[] antArray) {
      for (Ant ant : antArray) {
      if (ant.isOut() == false) {
      return false;
      }
      }
      return true;
      }
      }
      编程:
      用 C 语言实现一个 revert 函数,它的功能是将输入的字符串在原串上倒序后返回。
      2 编程:
      用 C 语言实现函数 void
      memmove(void dest,const void src,size_t n)。memmove
      函数的功能是拷贝 src 所指的内存内容前 n 个字节
      到 dest 所指的地址上。
      3 英文拼写纠错:
      在用户输入英文单词时,常常发生错误,咱们须要对其进行纠错。假设已经有一个包
      含了正确英文单词的词典,请你设计一个拼写纠错
      的程序。
      (1)请描述你解决这个问题的思路;
      (2)请给出主要的处理流程,算法,以及算法的复杂度;
      (3)请描述可能的改进(改进的方向如效果,性能等等,这是一个开放问题)。
      4 寻找热门查询:
      搜索引擎会经过日志文件把用户每次检索使用的全部检索串都记录下来,每一个查询串
      的长度为 1-255 字节。假设目前有一千万个记录,
      这些查询串的重复度比较高,虽然总数是 1 千万,但若是除去重复后,不超过 3 百万个
      。一个查询串的重复度越高,说明查询它的用户越多,
      也就是越热门。请你统计最热门的 10 个查询串,要求使用的内存不能超过 1G。
      (1)请描述你解决这个问题的思路;
      (2)请给出主要的处理流程,算法,以及算法的复杂度。
      5 集合合并:
      给定一个字符串的集合,格式如:
      {aaa bbb ccc}, {bbb ddd},{eee fff},{ggg},{ddd hhh}
      要求将其中交集不为空的集合合并,要求合并完成后的集合之间无交集,例如上例应
      输出
      {aaa bbb ccc ddd hhh},{eee fff}, {ggg}
      (1)请描述你解决这个问题的思路;
      (2)请给出主要的处理流程,算法,以及算法的复杂度
      (3)请描述可能的改进(改进的方向如效果,性能等等,这是一个开放问题)。
      ////////////////////////////////1
      1 题
      char revert(char str)
      {
      int n=strlen(str);
      int i=0;
      char c;
      for(i=0;i
      {
      c=str;
      str=str[n-i];
      str[n-i]=c;
      }
      return str;
      }
      ///////////////////////////////////
      2 题
      void memmove(void dest,const void src,size_t n)
      {
      assert((dest!=0)&&(src!=0));
      char
      temp=(char )dest;
      char
      ss=(char )src;
      int i=0;
      for(;i<N;I++)
      {
      temp++=*ss++;
      }
      return temp;
      }
      /////////////////////////////////////////////////
      3 题
      (1)思路 :
      字典以字母键树组织,在用户输入同时匹配
      (2)
      流程:
      每输入一个字母:
      沿字典树向下一层,
      a)若能够顺利下行,则继续至结束,给出结果;
      b)若该处不能匹配,纠错处理,给出拼写建议,继续至 a);
      算法:
      1.在字典中查找单词
      字典采用 27 叉树组织,每一个节点对应一个字母,查找就是一个字母
      一个字母匹配.算法时间就是单词的长度 k.
      2.纠错算法
      状况:当输入的最后一个字母不能匹配时就提示出错,简化出错处理,动态提示
      可能 处理方法:
      (a)当前字母前缺乏了一个字母:搜索树上两层到当前的匹配做为建议;
      (b)当前字母拼写错误:当前字母的键盘相邻做为提示;(只是简单的描述,可
      以有更多的)
      根据分析字典特征和用户单词已输入部分选择(a),(b)处理
      复杂性分析:影响算法的效率主要是字典的实现与纠错处理
      (a)字典的实现已有成熟的算法,改进不大,也不会成为瓶颈;
      (b)纠错策略要简单有效 ,如前述状况,是线性复杂度;
      (3)改进
      策略选择最是重要,能够采用统计学习的方法改进。
      //////////////////////////////////////////////
      4 题
      (1)思路:
      用哈希作
      (2)
      首先逐次读入查询串,算哈希值,保存在内存数组中,同时统计频度
      (注意值与日志项对应关系)
      选出前十的频度,取出对应的日志串,简单不过了。
      哈希的设计是关键。
      //////////////////////////////////////////////////
      5 题
      (1)思路:先将集合按照大小排列后,优先考虑小的集合是否与大的集合有交集。有
      就合并,若是小集合与全部其余集合都没有交集,则独立。独立的集合在下一轮的比
      较中不用考虑。这样就能够尽可能减小字符串的比较次数。当全部集合都独立的时候,
      就终止。
      (2)处理流程:
      1.将集合按照大小排序,组成集合合并待处理列表
      2.选择最小的集合,找出与之有交集的集合,
      若是有,合并之;
      若是无,则与其它集合是独立集合,从待处理列表 中删除。
      3.重复直到待处理列表为空
      算法:
      1。将集合按照大小从小到大排序,组成待处理的集合列表。
      2。取出待处理集合列表中最小的集合,对于集合的每一个元素,依次在其余集合中搜索
      是否有此元素存在:
      1>若存在,则将此小集合与大集合合并,并根据大小插入对应的位置 。转 3

      2>若不存在,则在该集合中取下一个元素。若是无下一个元素,即全部元素
      都不存在于其余集合。则代表此集合独立,从待处理集合列表中删除。并加入结果集
      合列表。转 3。
      3。若是待处理集合列表不为空,转 2。
      若是待处理集合列表为空,成功退出,则结果集合列表就是最终的输出。
      算法复杂度分析:
      假设集合的个数为 n,最大的集合元素为 m
      排序的时间复杂度能够达到 nlog(n)
      而后对于元素在其余集合中查找,最坏状况下为(n-1)
      m
      查找一个集合是否与其余集合有交集的最坏状况是 mm(n-1)
      合并的时间复杂度不会超过查找集合有交集的最坏状况。
      因此最终最坏时间复杂度为 O(mmnn)
      须要说明的是:此算法的平均时间复杂度会很低,由于不管是查找仍是合并,都是处
      于最坏状况的几率很小,并且排序后优先用最小集合做为判断是否独立的对象,优先
      与最大的集合进行比较,这些都最大的回避了最坏状况。
      (3)可能的改进:
      首先能够实现将每一个集合里面的字符串按照字典序进行排列,这样就能够将查找以及
      合并的效率增高。
      另外,可能采起恰当的数据结构也能够将查找以及合并等操做的效率获得提升。
      2006 百度笔试题
      1、选择题:15 分 共 10 题
      1.一个含有 n 个顶点和 e 条边的简单无向图,在其邻接矩阵存储结构中共有个零元素。
      A.e B.2e C.n2-e D.n2-2e
      2.
      是面向对象程序设计语言中的一种机制。这种机制实现了方法的定义与具体的对象无
      关,而对方法的调用则能够关联于具体的对象。
      A.继承(Inhertance) B.模板(Template)
      C.对象的自身引用(Self-Reference) D.动态绑定(Dynamic Binding)
      3.应用层 DNS 协议主要用于实现 网络服务功能.
      A. IP 地址到网络设备名字的映射 B. IP 地址到网络硬件地址的映射
      C. 网络设备名字到 IP 地址的映射 D. 网络硬件地址到 IP 地址的映射
      4.linux 默认状况下,一个进程最多能打开多少文件?
      A.64 B. 128 C. 512 D. 1024
      5.下面结构体
      struct s1 {
      char ch,
      ptr;
      union {
      short a, b;
      unsigned int c:2, d:1;
      }
      struct s1 next;
      };
      的大小是_
      A. 12 字节 B.16 字节 C.20 字节 D. 24 字节
      6.任何一个基于"比较"的内部排序的算法,若对 6 个元素进行排序,则在最坏状况下所需的
      比较次数至少为__

      A.10 B.11 C.21 D.36
      7.如下不是进程间通信的是_

      A 共享内存 B 信号量 C 线程局部存储 D 消息队列
      8.下面程序,求 count 的值
      int func(x)
      {
      int count= 0;
      x=9999;
      while(x)
      {
      Count ++;
      x = x&(x-1);
      }
      return count;
      }
      A 8; B 10; C 5; D 11
      9.使用 malloc 系统调用分配的内存是在__ 上分配的?
      A 栈; B bss; C 物理内存; D 堆
      10.最坏状况下,合并两个大小为 n 的已排序数组所须要的比较次数___

      A.2n B.2n-1 C.2n+1 D.2n-2
      2、简答题:20 分,共 3 题
      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,请按照 domain、site 以及 path 分别排序,并请指出排
      序过程当中可能会遇到的哪些问题?如何提升效率?
      例如:http://www.baidu.com/path/about.html,domain、site 以及 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);
      }
      }
      3、编程题:30 分 共 1 题
      注意:要求尽量提供完整代码,若是能够编译运行酌情加分。
      1.内存中有一个长数组,条目数为 10 万,数组单元为结构体 struct array,sizeof(struct array)
      为 512 字节。结构有一 int 型成员变量 weight。现须要取得按 weight 值从大到小排序的前 500
      个数组单元,请实现算法,要求效率尽量高。
      4、设计题:35 分 共 1 题
      注意:请尽量详细描述你的数据结构、系统架构、设计思路等,建议多写一些伪代码或者
      流程说明。
      1.请设计一个字典。以字符串为索引,存储用户定义的定长结构。要求有增、删、查、改的
      功能。已经给定一个函数,能够由字符串映射到一个签名,每一个签名由两个 unsigned int 类
      型组成。假设每个字符串可以对应惟一的一个签名,彻底没有重复(或者重复的几率能够
      忽略),而且签名分布足够均匀。
      请描述你的数据结构?内存如何申请?增、删、查、改的功能如何实现?若是操做很频繁,
      该如何优化?
      2007 百度笔试题
      1、选择题:15 分 共 10 题
  15. 在排序方法中,关键码比较次数与记录地初始排列无关的是 .
    A. Shell 排序 B. 归并排序 C. 直接插入排序 D. 选择排序
  16. 如下多线程对 int 型变量 x 的操做,哪几个须要进行同步:
    A. x=y; B. x C. x; D. x=1;
  17. 代码
    void func() {
    static int val;

    }
    中,变量 val 的内存地址位于:
    A. 已初始化数据段 B.未初始化数据段 C.堆 D.栈
  18. 同一进程下的线程能够共享如下
    A. stack B. data section
    C. register set D. thread ID
  19. TCP 和 IP 分别对应了 OSI 中的哪几层?
    A. Application layer
    B. Data link layer
    C. Presentation layer
    D. Physical layer
    E. Transport layer
    F. Session layer
    G. Network layer
  20. short a[100],sizeof(a)返回?
    A 2 B 4 C 100 D 200 E 400
  21. 如下哪一种不是基于组件的开发技术_____。
    A XPCOM B XP C COM D CORBA
  22. 如下代码打印的结果是(假设运行在 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
  23. STL 中的哪一种结构是连续形式的存储
    A map B set C list D vector
  24. 一个栈的入栈序列是 A,B,C,D,E,则栈的不可能的输出序列是( )
    A、EDCBA; B、DECBA; C、DCEAB; D、ABCDE
    2、简答题:20 分,共 2 题
  25. (5 分)重复屡次 fclose 一个打开过一次的 FILE *fp 指针会有什么结果,并请解释。
    考察点:致使文件描述符结构中指针指向的内存被重复释放,进而致使一些不可预期的异
    常。
  26. (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 }
    3、编程题:30 分 共 1 题
    注意:要求提供完整代码,若是能够编译运行酌情加分。
  27. 求符合指定规则的数。
    给定函数 d(n) = n n 的各位之和,n 为正整数,如 d(78) = 78 7 8=93。 这样这个函数
    能够当作一个生成器,如 93 能够当作由 78 生成。
    定义数 A:数 A 找不到一个数 B 能够由 d(B)=A,即 A 不能由其余数生成。如今要写程序,
    找出
    1 至 10000 里的全部符合数 A 定义的数。
    输出:
    1
    3

    4、设计题:35 分 共 1 题
    注意:请尽量详细描述你的数据结构、系统架构、设计思路等。建议多写一些伪代码或
    者流程说明。
  28. 假设一个 mp3 搜索引擎收录了 2^24 首歌曲,并记录了可收听这些歌曲的 2^30 条 URL,
    但每
    首歌的 URL 不超过 2^10 个。系统会按期检查这些 URL,若是一个 URL 不可用则不出如今
    搜索结
    果中。如今歌曲名和 URL 分别经过整型的 SONG_ID 和 URL_ID 惟一肯定。对该系统有如
    下需求

    1) 经过 SONG_ID 搜索一首歌的 URL_ID,给出 URL_ID 计数和列表
    2) 给定一个 SONG_ID,为其添加一个新的 URL_ID
    3) 添加一个新的 SONG_ID
    4) 给定一个 URLID,将其置为不可用
    限制条件:内存占用不超过 1G,单个文件大小不超过 2G,一个目录下的文件数不超过 128


    为得到最佳性能,请说明设计的数据结构、搜索算法,以及资源消耗。若是系统数据量扩
    大,该如何多机分布处理?
    腾讯笔试题:
    1 计算 a^b << 2 (运算符优先级问题)
    2 根据先序中序求后序
    3 a[3][4]哪一个不能表示 a[1][1]: (&a[0][0]) ((a+1)+1) (&a[1]+1) (&a[0][0]+4)
    4 for(int i...)
    for(int j...)
    printf(i,j);
    printf(j)
    会出现什么问题
    5 for(i=0;i<10;++i,sum+=i);的运行结果
    6 10 个数顺序插入查找二叉树,元素 62 的比较次数
    7 10 个数放入模 10hash 链表,最大长度是多少
    8 fun((exp1,exp2),(exp3,exp4,exp5))有几个实参
    9 希尔 冒泡 快速 插入 哪一个平均速度最快
    10 二分查找是 顺序存储 链存储 按 value 有序中的哪些
    11 顺序查找的平均时间
    12
    p=NULL p=new char[100] sizeof(p)各为多少
    13 频繁的插入删除操做使用什么结构比较合适,链表仍是数组
    14 enum 的声明方式
    其余 1 个选择暂时想不起来了
    大题:
    1 把字符串转换为小写,不成功返回 NULL,成功返回新串
    char
    toLower(char ***cStr)
    {
    char
    sDest= NULL;
    if( 1
    )
    {
    int j;
    sLen = strlen(***cStr);
    sDest = new [__2];
    if(sDest == NULL)
    return NULL;
    sDest[sLen] = '\0';
    while(_3)
    sDest[sLen] = toLowerChar(***cStr[sLen]);
    }
    return sDest;
    }
    2 把字符串转换为整数 例如:"-123" -> -123
    main()
    {
    .....
    if(
    string == '-' )
    n = 1__;
    else
    n = num(string);
    .....
    }
    int num(char string)
    {
    for(;!(
    string==0);string++)
    {
    int k;
    k = 2;
    j = --sLen;
    while( 3)
    k = k * 10;
    num = num + k;
    }
    return num;
    }
    附加题:
    1 linux 下调试 core 的命令,察看堆栈状态命令
    2 写出 socks 套接字 服务端 客户端 通信程序
    3 填空补全程序,按照个人理解是添入:win32 调入 dll 的函数名 查找函数入口的函数名 找
    到函数的调用形式 把 formView 加到 singledoc 的声明 将 singledoc 加到 app 的声明
    4 有关系 s(sno,sname) c(cno,cname) sc(sno,cno,grade)
    1 问上课程 "db"的学生 no
    2 成绩最高的学生号
    3 每科大于 90 分的人数
    其余
    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 亿网页已经被咱们存下来,并提供以下信息:网页全文(即网页的源码)、全文
    长度、网页正文(即网页中提取的主体文字)、
    正文长度,以及其余网页提取物等,如今但愿去掉其中的重复网页,请提出可行的方案,
    计算出每一个网页对应的重复度,你能够本身
    对网页重复下定义,也能够提出须要哪些更多的网页提取物来实现更好的去重复方案
    百度 2008 年校园招聘笔试题(研发技术)
    不定项选择题
    线程与进程比较而言,下面论述成立的有()
    A. 一个线程能够有多个进程组成
    B. 一个进程能够有多个线程组成
    C. 相对而言,线程运行须要更多的资源
    D. 线程比进程运行须要更少的系统资源
    2.13*16=244 在使用
    进制时成立()
    A.6 B.11 C.9 D.7 E.8
    3.如下的 C 程序代码片断运行后 C 和 d 的值分别是多少()
    Int a =1,b =2;
    Int c,d;
    C =(a&b)&&a;
    d =(a&&b)&a;
    A.0,0 B.0,1 C.1,0 D.1,1
    4.假设局域网中子网掩码是 255.255.0.0,那么在这个局域网中哪些 IP 地址是可用的?()
    A.192.168.0.0 B.192.168.0.1 C.192.168.255.1 D.192.168.255.255
    5.给定数列(541,132,982,746,518,181,946,314,205,827)按照从小到大的顺
    序排列,采用冒泡排序时,第一趟扫描 结果是();采用直接选择大值开始排序时,第一趟扫
    描结果是();采用快速排序(以中间元素 518 为基准)的第一趟扫描结果是()。
    A.(541,132,827,746,518,181,946,314,205,984)
    B.(205,132,314,181,518,746,946,984,541,827)
    C.(132,541,746,984,181,518,314,946,205,827)
    6.有若干 5g 和 7g 的砝码,任何大于()克都可以用 5g 和 7g 的砝码组合出。
    A.35 B.23 C.12 D.53
    7.93486781634*22349659874=_____6(30 秒)
    8.在 Linux 系统中,对命令“In file 1 file2”描述正确的是?()
    A.创建软连接 file1,并指向 file2
    B. 创建硬连接 file1,并指向 file2
    C. 创建软连接 file2,并指向 file1
    D. 创建硬连接 file2,并指向 file1
    9.在 Shell 编程中,下面哪一个表示上一步所运行程序的返回值?()
    A. $#
    B. $(后一字符打不出来能够描述一下„S 下面在加一点‟)
    C. $&
    D. $!
    编程和测试设计题(2 道)
    (一) 简述:实现一个函数,对一个正整数 n,算获得 1 须要的最少操做次数:
    若是 n 为偶数,将其处以 2; 若是 n 为奇数,能够加 1 或减 1; 一直处理下去。
    例子:
    ret = func(7);
    ret = 4,能够证实最少须要 4 次运算
    n = 7
    n—6
    n/2 3
    n/2 2
    n++ 1
    要求:实现函数(实现尽量高效)
    Int func(unsign int n);n 为输入,返回最小的运算次数。
    给出思路(文字描述),完成代码,并分析你算法的时间复杂度。
    请列举测试方法和思路
    (二) 简述:IP 防火墙
    Security 公司的网络管理工程师 Mr. leak 最近发现有很多来自公司外部 IP 的请求,试图
    非法访问公司内部资源,为了避免影响数据访问流程。他不得不写一个高效的程序——一个工
    做在 Ipv4 上的防火墙,若是请求来自非受权的 ip 地址,则将请求丢弃。为了便于管理,通
    过文本文件 IP.TXT 来配置受权的 IP 地址,文件格式为每行(‟/n‟)一个 IP 地址(或 IP 段),范
    围不超过一个 B 类。例如:
    162.105.91.163
    59.66.105.0 59.66.105.255
    211.71.0.0 211.71.255.255
    限制:IP 段的起止地址间以空格隔开。文件不超过 10 万行,内存不超过 4M 字节。
    要求:请编写一个程序,读入 IP.TXT 文件。并从标准输入接受一个 IP 地址。若是该地址在
    受权范围内,则在标准输出上打印 Y,不然打印 N.若是输入为一个空行,程序结束。
    请给出思路(文字描述),完成代码,分析你采用算法的优劣。
    请列举测试方法和思路
    设计思考题(2 道,请选作一道)
    (三) 设计一个简单的网页抓取系统,目标是抓取 z.baidu.com 站点上的有价值网页。
    1) 请设计基本模型,并作出简要说明。
    请考虑如何获取网页、如何存储网页、如何判断网页的价值。。。。。。。。
    2) 实际应用中,须要考虑哪些因素。
    (四) 简述:某广告投放系统采用 B/S 结构,其主要用户为广告主,广告主可经过该广
    告投放系统在各个网站上投放广告并查看投放效果。该广告系统须要实现以下功能:
    1) 用户可向本身帐户中加款。
    2) 用户可提交广告,广告包括四种形式:文字广告,图片广告,flash 广告和对媒体广
    告。
    3) 用户可制定哪些广告在哪些网站上展示,用户可分别广告在制定网站上的点击单价
    4) 广告被点击时,直接从用户帐户中扣除相应的钱款
    5) 用户帐户余额不足时,全部广告失效,用户加款后,恢复生效。
    6) 用户可查询广告的每日消费状况(点击次数、消费额)、广告在各个网站的消费状况。
    要求:1)设计该系统的数据表结构,要求知足上述功能,结构清晰,并尽量灵活。
    2)写出功能 6 所涉及的 SQL 语句
    3)请分析随着广告主的增长、广告点击次数的增加,系统可能会在哪些方面出项性能瓶
    颈?你在设计时是如何考虑解决这些瓶颈的?潜在的性能瓶颈还有哪些?
    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 编程:
    用 C 语言实现一个 revert 函数,它的功能是将输入的字符串在原串上倒序后返回。
    2 编程:
    用 C 语言实现函数 void memmove(void dest,const void src,size_t n)。memmove 函数
    的功能是拷贝 src 所指的内存内容前 n 个字节到 dest 所指的地址上。
    3 英文拼写纠错:
    在用户输入英文单词时,常常发生错误,咱们须要对其进行纠错。假设已经有一个包含
    了正确英文单词的词典,请你设计一个拼写纠错的程序。
    (1)请描述你解决这个问题的思路;
    (2)请给出主要的处理流程,算法,以及算法的复杂度;
    (3)请描述可能的改进(改进的方向如效果,性能等等,这是一个开放问题)。
    4 寻找热门查询:
    搜索引擎会经过日志文件把用户每次检索使用的全部检索串都记录下来,每一个查询串的
    长度为 1-255 字节。假设目前有一千万个记录,这些查询串的重复度比较高,虽然总数是 1
    千万,但若是除去重复后,不超过 3 百万个。一个查询串的重复度越高,说明查询它的用户
    越多,也就是越热门。请你统计最热门的 10 个查询串,要求使用的内存不能超过 1G。
    (1)请描述你解决这个问题的思路;
    (2)请给出主要的处理流程,算法,以及算法的复杂度。
    5 集合合并:
    给定一个字符串的集合,格式如: {aaa bbb ccc}, {bbb ddd},{eee fff},{ggg},{ddd
    hhh} 要求将其中交集不为空的集合合并,要求合并完成后的集合之间无交集,例如上例应
    输出 {aaa bbb ccc ddd hhh},{eee fff}, {ggg}
    (1)请描述你解决这个问题的思路;
    (2)请给出主要的处理流程,算法,以及算法的复杂度
    (3)请描述可能的改进(改进的方向如效果,性能等等,这是一个开放问题)。
    ////////////////////////////////
    1 题
    char
    revert(char str)
    {
    int n=strlen(str);
    int i=0;
    char c;
    for(i=0;i {
    c=str;
    str=str[n-i];
    str[n-i]=c;
    }
    return str;
    }
    ///////////////////////////////////
    2 题
    void
    memmove(void dest,const void src,size_t n)
    {
    assert((dest!=0)&&(src!=0));
    char temp=(char )dest;
    char ss=(char )src;
    int i=0;
    for(;i {
    temp =ss ;
    }
    return temp;
    }
    /////////////////////////////////////////////////
    3 题
    (1)思路: 字典以字母键树组织,在用户输入同时匹配
    (2) 流程:
    每输入一个字母:
    沿字典树向下一层,
    a)若能够顺利下行,则继续至结束,给出结果;
    b)若该处不能匹配,纠错处理,给出拼写建议,继续至 a);
    算法:
    1.在字典中查找单词
    字典采用 27 叉树组织,每一个节点对应一个字母,查找就是一个字母
    一个字母匹配.算法时间就是单词的长度 k.
    2.纠错算法
    状况:当输入的最后一个字母不能匹配时就提示出错,简化出错处理,动态提示可能 处理方
    法:
    (a)当前字母前缺乏了一个字母:搜索树上两层到当前的匹配做为建议;
    (b)当前字母拼写错误:当前字母的键盘相邻做为提示;(只是简单的描述,可 以有更多的)
    根据分析字典特征和用户单词已输入部分选择(a),(b)处理
    复杂性分析:影响算法的效率主要是字典的实现与纠错处理
    (a)字典的实现已有成熟的算法,改进不大,也不会成为瓶颈;
    (b)纠错策略要简单有效 ,如前述状况,是线性复杂度;
    (3)改进
    策略选择最是重要,能够采用统计学习的方法改进。
    //////////////////////////////////////////////
    4 题
    (1)思路:用哈希作
    (2) 首先逐次读入查询串,算哈希值,保存在内存数组中,同时统计频度(注意值与日志项
    对应关系) my.chinahrlab.com 选出前十的频度,取出对应的日志串,简单不过了。哈希的
    设计是关键。
    //////////////////////////////////////////////////
    5 题
    (1)思路:先将集合按照大小排列后,优先考虑小的集合是否与大的集合有交集。有就合并,
    若是小集合与全部其余集合都没有交集,则独立。独立的集合在下一轮的比较中不用考虑。
    这样就能够尽可能减小字符串的比较次数。当全部集合都独立的时候,就终止。
    (2)处理流程:
    1.将集合按照大小排序,组成集合合并待处理列表
    2.选择最小的集合,找出与之有交集的集合,若是有,合并之;若是无,则与其它集合是独
    立集合,从待处理列表 中删除。
    3.重复直到待处理列表为空
    算法: 1。将集合按照大小从小到大排序,组成待处理的集合列表。 2。取出待处理集合列
    表中最小的集合,对于集合的每一个元素,依次在其余集合中搜索是否有此元素存在:
    1>若存在,则将此小集合与大集合合并,并根据大小插入对应的位置 。转 3。
    2>若不存在,则在该集合中取下一个元素。若是无下一个元素,即全部元素都不存在于其
    他集合。则代表此集合独立,从待处理集合列表中删除。并加入结果集合列表。转 3。
    3。若是待处理集合列表不为空,转 2。
    若是待处理集合列表为空,成功退出,则结果集合列表就是最终的输出。
    算法复杂度分析:
    假设集合的个数为 n,最大的集合元素为 m 排序的时间复杂度能够达到 nlog(n) 而后
    对于元素在其余集合中查找,最坏状况下为(n-1)
    m 查找一个集合是否与其余集合有交
    集的最坏状况是 mm(n-1) 合并的时间复杂度不会超过查找集合有交集的最坏状况。因此
    最终最坏时间复杂度为 O(mmn*n)
    须要说明的是:此算法的平均时间复杂度会很低,由于不管是查找仍是合并,都是处于
    最坏状况的几率很小,并且排序后优先用最小集合做为判断是否独立的对象,优先与最大的
    集合进行比较,这些都最大的回避了最坏状况。
    (3)可能的改进:
    首先能够实现将每一个集合里面的字符串按照字典序进行排列,这样就能够将查找以及合
    并的效率增高。另外,可能采起恰当的数据结构也能够将查找以及合并等操做的效率获得提
    高。
    取 自
    "http://wiki.xyzp.net/%E7%99%BE%E5%BA%A611%E6%9C%884%E6%97%A5%E7%BD%9
    1%E4%B8%8A%E7%AC%94%E8%AF%95%E9%A2%98%E5%8F%8A%E7%AD%94%E6%
    A1%88%EF%BC%88%E4%BB%85%E4%BE%9B%E5%8F%82%E8%80%83%EF%BC%89.ht
    m"
    、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
    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 亿网页已经被咱们存下来,并提供以下信息:网页全文(即网页的源码)、全
    文长度、网页正文(即网页中提取的主体文字)、正文长度,以及其余网页提取物等,如今
    但愿去掉其中的重复网页,请提出可行的方案,计算出每一个网页对应的重复度,你能够本身
    对网页重复下定义,也能够提出须要哪些更多的网页提取物来实现更好的去重复方案。
    取 自
    "http://wiki.xyzp.net/%E7%99%BE%E5%BA%A6%E7%AC%94%E8%AF%95%E9%A2%98%
    282005%29.htm"
    、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
    很久没来了。
    发生了一些事情,其间的心情已不是几行文字所能表述的了。
    终于明白有些事情,并非本身努力就必定能圆满的;有些事情,是我控制不了的。
    唉,不提也罢!
    说说今天去百度笔试的经历吧
    部门:百度搜索应用技术部。
    地点:海淀南路银科大厦(海淀图书城西临)18 层。
    时间:2005/6/15 10:00-11:20 am
    九点从实验室出发,725 到知春路,转 735,到海淀桥下车,9:50 到达百度。在 725
    的车上碰到一男士索要手机号,说本身认识信息产业部的部长杨泽民先生,以居高临下的姿
    态把手机号给了他-_-!
    在百度前台见到了一直帮我安排笔试的杨韫敏 jj,不是想象中的 HR 形象,而是一副干
    练的女 IT 的样子跳跃的灵魂很快,给我找了一间小会议室,只有一张桌子,两把椅子,还
    帮我开了灯,关门,走人,我开始看题。冷汗也开始流。翻了一下三页纸的笔试题,只有很
    少的传说中的 Linux 题目,其余的全是 C、数据结构、算法编程的题。第一反应:走人!但
    又以为对不起陈 jj,关键的是我已经在笔试题上写了姓名和学校了,sign,总的为本身的名
    字和学校负责吧,他们是无辜的。如此斗争良久,决定坚持下来。
    题目大体是这样的:
    第一部分选择题:有几道网络相关的题目,巨简单,好比第一题是 TCP、RIP、IP、FTP
    中哪一个协议是传输层的......。有一道 linux 的 chown 使用题目。其余的全是数据结构的题目!
    什么链,表,码的,不知所云跳跃的灵魂唉,我能够没有学过数据结构的人呐!真残忍!这
    一部分迅速猜完!
    第二部分简答题:
    一、在 linux 中如何编译 C 程序,使之成为可执行文件?如何调试?
    答案:
    1)检查程序中.h 文件所在的目录,将其加入系统 PATH 中;
    2)执行 C 编译:#gcc [源文件名] -o [目标文件名]
    执行 C++编译:#g++ [源文件名] -o [目标文件名]
    3)改变目标文件为可执行文件:#chmod +x [目标文件名]
    4)如需将多个可执行文件连续执行,可生成批处理文件:
    #vi [批处理文件名]
    可执行文件 1
    可执行文件 2
    .........
    最后将该批处理文件属性该位可执行。
    调试:在编译时使用-g 参数,就能够使用 gdb 进行调试。
    二、写出内存分配和释放的函数,并指出区别。
    答案:
    C 语言的标准内存分配函数:malloc,calloc,realloc,free 等。
    malloc 与 calloc 的区别为 1 块与 n 块的区别:
    malloc 调用形式为(类型)malloc(size):在内存的动态存储区中分配一块长度为“size”
    字节的连续区域,返回该区域的首地址。
    calloc调用形式为(类型
    )calloc(n,size):在内存的动态存储区中分配n块长度为“size”
    字节的连续区域,返回首地址。
    realloc 调用形式为(类型)realloc(ptr,size):将 ptr 内存大小增大到 size。
    free 的调用形式为 free(void*ptr):释放 ptr 所指向的一块内存空间。
    C++中为 new/delete 函数。
    三、写出 socket 函数,并指出其功能。
    socket():创建 socket 通讯描述符;
    bind():将套接字和机器上的必定的端口关联;
    connect():链接到远程主机;
    listen():使套接字作好链接的准备,规定等待服务请求队列的长度;
    accept():接受链接,一旦有客户端发出链接,accept 返回客户地址信息和一个新的
    sock;
    有了这个新的 sock,双方就能够开始收发数据:
    send()和 recv():用于流式套接字或者数据套接字的通信;
    sendto()和 recvfrom():用于无链接的数据报套接字;
    close():关闭套接字;
    shutdown():选择性的关闭套接字,能够只容许某一方向的通信关闭;
    getpeername():返回流式套接字时对端 peer 信息;
    gethostname():返回程序所运行的机器的主机名字;
    gethostbyname():返回本机 IP;
    第三部分编程题:
    一、从文件中读取字符串数据,反序显示并大小写转换。
    二、给定 26 字母表以及对应的密码表,编程实现加密及解密功能。
    第四部分思考题(正是传说中的字典纠错题):
    用户在输入英文单词时常常出错,现对其进行就错。给定一个正确的英文词典,考虑纠
    错实现。1)指出思路。2)流程、算法难易程度及可能的改进策略。
    不过陈 jj 没有给我答题纸,只好拿试题的背面作了答题纸兼草稿纸-
    -!说实话有些题
    目是很基础的,就是没背过。不知怎么搞得,巨潦草。实验室参加过笔试的通同窗都是憋着
    劲作了两个多小时才答完,而我只一个小时就完了,唉,正好说明肚子里只有别人一半的东
    西看着潦草而不着边际的答题,决定在最后给陈 jj 写段话,大意就是感谢她帮我挽回了
    一次笔试的机会,但个人表现很遗憾等等......而后交卷走人

    没想到交了试卷没让我走,等了大约 30 分钟的样子,有个很深沉的 gg 来看个人卷子跳
    跃的灵魂-___-!我颤颤的跟他说我很长时间没有接触 C 了,当时脖子都红了,真以为丢人。
    gg 看了一下,没有很鄙视的样子,问我有没有带简历。固然木有啦~~答应回来给他发个电
    子版的,而后赶忙跑人了!
    、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
    题目大体是这样的:
    第一部分选择题:
    有几道网络相关的题目,巨简单,好比第一题是 TCP、RIP、IP、FTP 中哪一个协议是传
    输层的......。有一道 linux 的 chown 使用题目。其余的全是数据结构的题目!什么链,表,
    码的,不知所云.唉,我能够没有学过数据结构的人呐!真残忍!这一部分迅速猜完!
    第二部分简答题:
    一、在 linux 中如何编译 C 程序,使之成为可执行文件?如何调试?
    答案: 1)检查程序中.h 文件所在的目录,将其加入系统 PATH 中;
    2)执行 C 编译:#gcc [源文件名] -o [目标文件名]
    执行 C++编译:#g++ [源文件名] -o [目标文件名]
    3)改变目标文件为可执行文件:#chmod +x [目标文件名]
    4)如需将多个可执行文件连续执行,可生成批处理文件:
    #vi [批处理文件名]
    可执行文件 1
    可执行文件 2
    .........
    最后将该批处理文件属性该位可执行。
    调试:在编译时使用-g 参数,就能够使用 gdb 进行调试。
    二、写出内存分配和释放的函数,并指出区别。
    答案:
    C 语言的标准内存分配函数:malloc,calloc,realloc,free 等。
    malloc 与 calloc 的区别为 1 块与 n 块的区别:
    malloc 调用形式为(类型)malloc(size):在内存的动态存储区中分配一块长度为“size”
    字节的连续区域,返回该区域的首地址。
    calloc调用形式为(类型
    )calloc(n,size):在内存的动态存储区中分配n块长度为“size”
    字节的连续区域,返回首地址。
    realloc 调用形式为(类型)realloc(ptr,size):将 ptr 内存大小增大到 size。
    free 的调用形式为 free(voidptr):释放 ptr 所指向的一块内存空间。
    C++中为 new/delete 函数。
    三、写出 socket 函数,并指出其功能。
    socket():创建 socket 通讯描述符;
    bind():将套接字和机器上的必定的端口关联;
    connect():链接到远程主机;
    listen():使套接字作好链接的准备,规定等待服务请求队列的长度;
    accept():接受链接,一旦有客户端发出链接,accept 返回客户地址信息和一个新的 sock;
    有了这个新的 sock,双方就能够开始收发数据:
    send()和 recv():用于流式套接字或者数据套接字的通信;
    sendto()和 recvfrom():用于无链接的数据报套接字;
    close():关闭套接字;
    shutdown():选择性的关闭套接字,能够只容许某一方向的通信关闭;
    getpeername():返回流式套接字时对端 peer 信息;
    gethostname():返回程序所运行的机器的主机名字;
    gethostbyname():返回本机 IP;
    第三部分编程题:
    一、从文件中读取字符串数据,反序显示并大小写转换。
    二、给定 26 字母表以及对应的密码表,编程实现加密及解密功能。
    第四部分思考题(正是传说中的字典纠错题):
    用户在输入英文单词时常常出错,现对其进行就错。给定一个正确的英文词典,考虑纠
    错实现。1)指出思路。2)流程、算法难易程度及可能的改进策略。
    一道算法题目答案
    int Replace(Stringtype &S,Stringtype T,Stringtype V);//将串 S 中全部子串 T 替换为 V,并返回置
    换次数
    {
    for(n=0,i=1;i〈=Strlen(S)-Strlen(T)+1;i++) //注意 i 的取值范围
    if(!StrCompare(SubString(S,i,Strlen(T)),T)) //找到了与 T 匹配的子串
    { //分别把 T 的前面和后面部分保存为 head 和 tail
    StrAssign(head,SubString(S,1,i-1));
    StrAssign(tail,SubString(S,i+Strlen(T),Strlen(S)-i-Strlen(T)+1));
    StrAssign(S,Concat(head,V));
    StrAssign(S,Concat(S,tail)); //把 head,V,tail 链接为新串
    i+=Strlen(V); //当前指针跳到插入串之后
    n++;
    }//if
    return n;
    }//Replace
    分析:i+=Strlen(V);这一句是必需的,也是容易忽略的.如省掉这一句,则在某些状况下,会引发
    不但愿的后果,虽然在大多数状况下没有影响.请思考:设 S='place', T='ace', V='face',则省掉
    i+=Strlen(V);运行时会出现什么结果? (无限递归 face)
    百度 2005 年的笔试题
    1.实现 void delete_char(char
    str, char ch);
    把 str 中全部的 ch 删掉
    2.把字符串 S 中全部 A 子串换成 B,这个没给函数原型
    3.搜索引擎的日志要记录全部查询串,有一千万条查询,不重复的不超过三百万
    要统计最热门的 10 条查询串. 内存<1G. 字符串长 0-255
    (1) 主要解决思路 //具体用词和原题不大同样
    (2) 算法及其复杂度分析
    4.有字典,设计一个英文拼写纠正算法 (1) 思想 (2) 算法及复杂度 (3) 改进
  29. { aaa, bb, ccc, dd }, { bbb, ff }, { gg } 等一些字符串的集合
    要求把交集不为空的集合并起来,如上例会获得 { aaa, bb, ccc, dd, ff }, {gg}
    (1) 思想 (2) 算法及复杂度 (3) 改进
    取 自
    "http://wiki.xyzp.net/%E7%99%BE%E5%BA%A6%E7%AC%94%E8%AF%95%E9%A2%9820
    05.htm"
    、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
    1、选择题:15 分 共 10 题
    1.一个含有 n 个顶点和 e 条边的简单无向图,在其邻接矩阵存储结构中共有个零元素。
    A.e B.2e C.n2-e D.n2-2e
    2.
    是面向对象程序设计语言中的一种机制。这种机制实现了方法的定义与具体的对象无
    关,而对方法的调用则能够关联于具体的对象。
    A.继承(Inhertance) B.模板(Template)
    C.对象的自身引用(Self-Reference) D.动态绑定(Dynamic Binding)
    3.应用层 DNS 协议主要用于实现 网络服务功能.
    A. IP 地址到网络设备名字的映射 B. IP 地址到网络硬件地址的映射
    C. 网络设备名字到 IP 地址的映射 D. 网络硬件地址到 IP 地址的映射
    4.linux 默认状况下,一个进程最多能打开多少文件?
    A.64 B. 128 C. 512 D. 1024
    5.下面结构体
    struct s1 {
    char ch, ptr;
    union {
    short a, b;
    unsigned int c:2, d:1;
    }
    struct s1
    next;
    };
    的大小是_
    A. 12 字节 B.16 字节 C.20 字节 D. 24 字节
    6.任何一个基于"比较"的内部排序的算法,若对 6 个元素进行排序,则在最坏状况下所需的
    比较次数至少为__

    A.10 B.11 C.21 D.36
    7.如下不是进程间通信的是_

    A 共享内存 B 信号量 C 线程局部存储 D 消息队列
    8.下面程序,求 count 的值
    int func(x)
    {
    int count= 0;
    x=9999;
    while(x)
    {
    Count ++;
    x = x&(x-1);
    }
    return count;
    }
    A 8; B 10; C 5; D 11
    9.使用 malloc 系统调用分配的内存是在__ 上分配的?
    A 栈; B bss; C 物理内存; D 堆
    10.最坏状况下,合并两个大小为 n 的已排序数组所须要的比较次数___

    A.2n B.2n-1 C.2n+1 D.2n-2
    2、简答题:20 分,共 3 题
    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,请按照 domain、site 以及 path 分别排序,并请指出排
    序过程当中可能会遇到的哪些问题?如何提升效率?
    例如:http://www.baidu.com/path/about.html,domain、site 以及 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);
    }
    }
    3、编程题:30 分 共 1 题
    注意:要求尽量提供完整代码,若是能够编译运行酌情加分。
    1.内存中有一个长数组,条目数为 10 万,数组单元为结构体 struct array,sizeof(struct array)
    为 512 字节。结构有一 int 型成员变量 weight。现须要取得按 weight 值从大到小排序的前 500
    个数组单元,请实现算法,要求效率尽量高。
    4、设计题:35 分 共 1 题
    注意:请尽量详细描述你的数据结构、系统架构、设计思路等,建议多写一些伪代码或者
    流程说明。
    1.请设计一个字典。以字符串为索引,存储用户定义的定长结构。要求有增、删、查、改的
    功能。已经给定一个函数,能够由字符串映射到一个签名,每一个签名由两个 unsigned int 类
    型组成。假设每个字符串可以对应惟一的一个签名,彻底没有重复(或者重复的几率能够
    忽略),而且签名分布足够均匀。
    请描述你的数据结构?内存如何申请?增、删、查、改的功能如何实现?若是操做很频繁,
    该如何优化?
    取 自
    "http://wiki.xyzp.net/2006%E7%99%BE%E5%BA%A6%E7%AC%94%E8%AF%95%E9%A2%
    98.htm"
    、、、、、、、、、、、、、、、、、、、、、、、、、、
    通过在线笔试、两轮电话面试,今天上午收到了百度的拒信,个人百度求职算是告一段落
    了……
    从百度校园招聘开始,我就投了一份简历。在别人都有在线笔试机会的时候,我却没有
    任何消息。
    据说师兄能够给推荐,我就又经过内部推荐的方式投递了一次,此次很快就有消息了
    ——拒信。
    那时基本上就放弃了百度。但是大概 20 多天之后,我投递的第一份简历有消息了——
    通知我在线笔试。通过精心准备,笔试题答得还凑合。过了几天给我来了封邮件告知我笔试
    经过,会找时间安排电话面试。又过了好几天,我正在剃头的时候接到百度电话,约了第二
    天下午三点电话面试。心情异常兴奋,回到寝室拼命复习数据结构并收集百度面试题型……
    临阵磨枪 呵呵。
    百度的面试氛围非常轻松,让你很快就以为是在聊天而不是面试。第一轮主要是在针对
    个人在线笔试的题目进行提问和分析,主要讲的是作题的思路和改进的方法。面试时间大概
    有半个小时,以为应该有下一轮。
    果真上个星期五晚上接到了百度技术经理的电话,自称姓刘。在前一天我同窗也是这个
    时候接到百度第二面电话,看来是同一我的,后来的面试内容证明了是同一我的。面试过程
    大概以下:
    一、介绍一下项目。
    二、提了一个问题:上千万条记录,统计出重复记录最多的前 N 条。
    三、一个几率题:54 张扑克牌,除去两张大小王剩下 52 张扑克牌。问红桃 A 和黑桃 A 同时
    被一我的拿到的几率是多少?
    四、多个线程访问共享内存时因该怎么办?
    五、在写程序遇到问题的时候,一般采用什么调试方法?
    六、一个 client/server 的协议问题
    七、剩下就是随便聊聊,好比有缺点、指望工做的性质、职业规划等
    总结一下教训:
    一、介绍项目的时候不能一味的按照事前想好的模板说,应该根据所申请的工做的性质,多
    说一些和本身申请的工做内内容相近的东西说。我在介绍个人项目的时候,说了不少硬件的
    东西,而相关的 Linux 下的 C 编程却没有提到多少,一大失败之处。
    二、对于他提的第二个问题,当时由于紧张没有想出来,挂了电话之后才有了思路。
    三、这个几率题之前碰到过,并且和同窗们讨论过,答案很早就知道了。可是遇到面试的时
    候,不能立刻就说出答案,由于这样摆明了高诉人家你之前就见过这道题,这样就失去了做
    为考题的意义。因此,若是事前知道答案也不要立刻说出来,装做考虑中,而后慢慢说出答
    案。我就是很快就说出了答案,失败!
    四、在问项目的时候,他问我代码行大概有多少?我说大概有 5.6K 行左右。在回答第四个问
    题的时候,我几乎是将书上所讲过的东西背了一遍给他,虽然答案是正确的,可是我估计他
    一听就听出来是在背书了,因此这也会减分很多。,并且百度强调创新,其实就算你不知道
    答案也能够按照本身的思路说一下的,只要逻辑清晰、合理都会比我背书强……
    五、个人回答是有时候用 gdb,有时候用输出日志的形式。以我以前给他讲的项目经验是不
    大可能会涉及这么多的知识的,因此估计他又听出我是在背书了……继续减分
    六、后来我发现这个问题其实他不是在考我问题的答案,是考我解决问题的能力和考虑问题
    的思路。这点是我比较差的地方,没办法……减分
    我前面表现那么失败,基本上已经没有什么但愿了,后面的谈话已经没有意义了,只不过是
    礼貌性的结束此次面试了。
    上面的总结是我收到拒信之后才总结出来的,还觉得能被录取呢……
    面试官太和善了,并且气氛及其融洽,根本没有任何很差的征兆,面试官好厉害!
    至此,个人百度求职过程到此告一段落……生活还在继续,工做还得继续努力去找,加油!
    百度电话面试题目:
    1.谈谈你对数据库中索引的理解
    2.如今普通关系数据库用得数据结构是什么类型的数据结构
    3.索引的优势和缺点
    4.session 和 cache 的区别是什么
    5.若是有几千个 session,怎么提升效率
    6.session 是存储在什么地方,以什么形式存储的。
    百度川大站笔试题
    技术类试卷一
    一、编程题
    判断字符串 b 的全部字符是否都再字符串 a 中出现过,a,b 都是可能包含汉
    字的字符串。b 中重复出现的汉字,那么 a 中也要至少出现相同的次数。
    汉字使用 gbk 编码(简单的所,用两个字节表示一个汉字,高字节最高位为
    1 的表明汉字,低字节最高位能够不为 1)。
    int is_include(char a , char b)
    返回 0 表示没有都出现过,返回 1 表示都出现过。
    二、 算法题
    序列 seq=[a,b,…,z,aa,ab,…,az,ba,bb,…,bz,…,za,zb,…,zz,aaa,…]相似于 excel 的
    字母序排列,任意给一字符串 s=[a-z]+(由 a-z 字符串组成的任意长度字符串),
    请问 s 是序列 seq 的第几个字符串。
    三、 系统设计
    需求:须要引入用户对搜索结果相关性的评分,100 分制。但愿用户的打分
    能帮助搜索引擎排序,但又避免恶意投票、做弊等。请设计一个比较公平的评分
    系统。
    觉得你们对百度不是很敢兴趣呢,我上个月去那里面试了,来发一篇吧
    我是上个月在 chinahr 上直接给他们投的简历,那个时候可能人比较少吧,他们很快就发
    了笔试通知,而后偶就过去了,地点在盈科 18 层(海淀图书城很近),到了,之后,先给偶
    做了一套题,一共四道大题,时间是两个小时,题都是很是典型的算法题,对算法的效率和
    健壮性要求比较高,好比说,在百万数量级的文件中查找某个可匹配的关键字,千万个节点
    的链表的逆序(具体的题目因为百度要求不让外泄,因此只能说这么多拉)偶憋了半天写了
    三道题,能够说都没写完。还有一题只是把想法写了写,没有编代码,就交了,而后在一个
    屋子里面等,过了一会进来一个看起来像颇有编程经验的 gg,自我介绍是高级软件工程师,
    他主要问的是关于笔试这四道题,个人思路什么,偶的数据结构早就还给老师拉,憋了半天,
    就瞎说了一通,他显然不是很满意,说给 5 分钟,再好好想一想,偶又憋了半天,仍是没想出
    好的办法,基本上没题都要问一遍,偶实在答不出来了,他说时间不够了,算了,终于长舒
    了一口气,而后就问了些作过的项目,终于轻松一些了,偶就老老实实作了什么就说什么了,
    二面是技术经理,就是网上鼎鼎有名的齐玉杰,见到真人后,看起来很是亲切,不知道
    为何心情就放松起来了,接下来就聊了聊项目,还有对搜索的见解,还重点文了搜索算法
    的思路9是没答上来?( 不过齐 gg 仍是很是 nice 的,也没有刁难我,三面是技术总监,他们
    叫 dan,就是很是有名的郭耽,偶是次日去的,偶想象技术总监怎么也应该有些年纪了,结
    果也是出乎意料的年轻,感受像个学生,最令偶吃惊的是,他竟然穿着拖鞋....呵呵,他主要
    问一些概要的东东,好比说最大的困难是什么啊,能为百度贡献什么啊,诸如此类
    整个过程就是这样,补充一下,我申请的是搜索应用部(就是作 mp 搜索的部门),对了,
    他们还屡次问到有没有用过百度地业务,偶只知道 mp3,其实还有好多,寒...感受百度的氛
    围仍是挺宽松,经理也没什么架子,你们放松心情去就行了
    转 载 请 注 明 出 自 应 届 生 求 职 招 聘 论 坛 http://bbs.yingjiesheng.com/, 本贴地
    址:http://bbs.yingjiesheng.com/thread-14497-1-1.html
    百度 2010 暑期实习笔试面试全面备战
    百度 2010 暑期实习网申将于 2010 年 5 月 29 日截止。
    笔试阶段
    5 月 30 日前,对于经过了简历筛选的申请人百度将会经过系统发送笔试通知。注册时请务
    必填写正确有效的邮箱地址。
    面试阶段
    6 月 7 日起,百度将陆续安排现场面试。
    大街网为你们准备了百度往年的实习和校园招聘笔试及面试经验,供你们参考。
    如下为百度 2010 校园招聘各岗位笔试真题,所有是大街网网友整理,不表明今年笔试内容,
    请你们参考。
    【百度 2010 校园招聘技术类笔经】
    第一题:简要说明树的深度优先、广度优先遍历算法挤特色
    第二题:一个复数相加的编码挑错题
    第三题:告诉内存大小和 cpu 速度,计算可能的程序运行最长时间
    第四题:复杂项目的组件编译依赖,设计一个快速算法并计算复杂度
    第五题:写个 c 程序,返回字符串中最长数字字符串的长度和地址,不能用标准库函数
    第六题:设计个系统,存储 100 亿个 url 和属性信息,并能够更改属性信息和查找 url,快速
    搜索站点的全部 url 及信息
    【百度 2010 校园招聘非技术类笔试题】
    一、09 年的第一道图形推理题,不过我不知道正确答案,知道的童鞋请帮忙告诉一声,我选
    的 C
    二、仍是往年论坛上有的非技术题,只是换了下字,分析 2010 年的网络购物,宠物用品和化
    妆品
    三、说出 10 种易拉罐为何作成圆柱形的理由
    四、一个八边形,各角觉有一小虫,爬呀爬,计算终点之类的,题目太长,没记住,抱歉。。。
    五、3 个男人、2 个女人一块儿渡河,只有一条船,每次只能渡两我的
    女人要求:不能让一男一女同时一块儿过河
    男人要求,每人只能划一次浆
    若是只有一个划桨的,阿特第一,本第二,**第三。。
    问:用最短的过河次数推测,谁最后一个划桨渡河?
    六、有两张标准版的世界地图,一张的比例尺是 1:3600 万,另外一张的比例尺是 1:2000 万,
    将较大的一张彻底的覆盖较小的一张(两张都是平整铺开的状况)。请问:取出一枚图钉,
    是否能够选择到一个点,按下去,刺穿的两张地图的点对应的是同一个真实地球上的点?不
    论是或否,请给出你的思考和论证过程。
    七、说明一些你对互联网和百度产品的理解、分析之类的
    八、你认为此次测试是否可以基本反映出本身的水平?你对本身今天的答案满意么?若是不
    是,你还有哪些补充?
    【2010 校园招聘百度用户体验部笔试题】
    第一部分:答一题,多答不限
    1.方差分析的统计原理和运用条件
    2.什么是社会网络研究?它的主要观点是什么?有哪些应用?
    3.市场调研过程分为几个阶段?各个阶段的核心任务和目标是什么?
    第二部分:三题必须都答
    1.用户体验研究领域有哪些专家?用一句话描述他们的主要观点?
    2.用户体验研究和产品运营之间的关系
    3.交互设计是什么?一个好的交互设计具有哪些特征?举例说明。
    第三部分:答两题,多答不限
    1.简述用户体验研究方面的企业实践项目?(没有能够不写)
    2.有用户提出反馈“搜索结果页面,须要将页面拖放到最底才可点击下一页,能否实现翻页
    置顶或自动反应功能”,如何处理这个问题
    3.百事可乐***可口可乐时,曾经在马路上随机作双盲实验,多数人认为百事可乐比可口可
    乐好喝,百事可乐公司以此为据进行推广。可口可乐也在马路上作双盲实验,惊奇地发现,
    多数人认为百事可乐比可口可乐好喝,所以,可口可乐公司下定决心改进产品,推出新产品
    “new coke”,没想到“NEWCOKE”推出后消费者抵制,而且要求推出原来的口味。请分
    析“new coke”失败的缘由。
    4.统计关键词的搜索量时(有一个图,统计 2007 2008 2009 关键词搜索量),有人说“......,
    所以,当台风来时,人们就更关注变形金刚”,设计一个研究说明结论正确与否。
    第四部分:附加题
    有四道逻辑推理题
    估算你所在城市的出租车数量?简述估算理由。
    【百度 2010 校园招聘运维 web 开发两道笔试题】
    1.推理:24 我的,每人至少养一种宠物,养鸟、狗、鱼、猫的分别为 1三、五、十、9 人,同
    时养鸟和狗的 2 人,同时养鸟和鱼、鸟和猫、鱼和猫的各为 4 人,养狗的既不养猫也不养鱼。
    问只养一种宠物的总共几人?同时养鸟鱼猫的几人?
    2.找程序的错和不足:
    int test(char *value,int value_len,int flag)
    {
    char temp_buf[BUF_SIZE];
    sprintf(temp_buf,value);
    char temp_new_buf=new char[value_len];
    if(flag)
    {
    strcat(temp_buf,"flag is true");
    printf(temp_buf);
    return 1;
    }
    delete[] temp_new_buf;
    return 0;
    }
    【百度 2010 网页搜索产品市场部笔试题】
    1.微软搜索引擎 Bing 的相关搜索是放在搜索结果左侧的,而百度的相关搜索是放在搜索结
    果下方,请分析一下,这样作各有什么优缺点,你以为怎样设计更好?
  30. 分别列出如下检索 query 的网页前十理想结果,须要给出每条结果的排名并阐明理由。(我
    以为这几个关键词是比较实事性或随机的,因此每一个时期笔试给出的检索词可能不同。)
    【百度 2010 非技术类笔试】
    1、选择题
    30 道,共 60 分
    主要是逻辑(verbal 类、推理类,无数字题)和互联网商业常识(好比市场份额最大的搜索
    引擎)。
    2、论述题
    1 道,40 分
    对推广“百度知道”产品的思路和方法。
    难度不大,时间充裕。不少人提早交卷的。
    【2010 年百度运维部笔试及相关说明】
    此次应聘的是运维部的数据库 DBA,实际上运维部的全部岗位试题是一张卷子,五个简答,
    一个算法完善程序,一个系统设计题。
    此次百度是分部门考试的,每一个部门一张卷,不是像以往的好几张卷子。
    因为公司的保密性以及对其余同窗的公平性考虑,这里不透漏具体题目,可是能够告诉你们
    方向。
    以前一直觉得会考不少算法,后来证实是错误的
    运维部的备考仍是以运维岗位的需求为主题,重点不是算法,而是系统,数据库,以及简单
    的算法知识。
    整张卷子只有一道题目要写程序,并且是比较基础的。
    其余简答题里,有一道算法题,只是简答,EASY;另外有关于 linux 的文件系统的题,性
    能优化,数据库基本概念,以及硬件处理能力相关知识之类
    最后的设计题,也是和运维紧密相关的,固然是数据库和系统架构知识的结合,不是很细。
    但愿对你们有帮助。祝考完的同窗好运!
    【百度 2010 运维部笔试题】
    总共三部分 7 道题
    第一部分·简答
    1·简述树的深度优先算法、广度优先算法,及非递归实现的特色。
    2·在文件系统中,元数据(好比 ext2 中的 inode)的基本做用是什么?ext2 跟 ext3 的根本
    区别是什么?
    3·在 web 服务中,负载均衡的基本做用是什么?请举例你熟悉的一款负载均衡软件或者实
    现方案,简述它们的实现原理。(这题后半部分为开放性,我也没记多深,大概就这样)
    4·数据库事务的四大特性是什么?请你简单举例对一个彻底不懂数据库的人解释这四个特
    性。投数据库管理员(DBA)必答。
    5·一个微型处理器,1KB 内存和 1MHz(每 MHz 运算次数为 10^6),在这样的计算机上面
    运行程序(程序到该终止时会自动终止,不会出现死循环)最长能运行多长时间?你能够进
    行任何须要的假定。
    第二部分·算法和程序设计
    1·int maxContinuNum(const char inputstr,char outputstr)
    编写一段程序实现该函数,实现返回一个以“\0”结束的字符串中最长的数字串的长度,并
    把该数字子串的首地址赋给 outputstr。不能使用任何库函数或已经存在的函数,如 strlen。
    例如:在字符串“abc123abcdef12345abcdefgh123456789”中,把该字符串的首地址赋给 inputstr,
    返回 9,outputstr 指向字符串“123456789”的首地址。
    第三部分·备份系统设计
    (这题太长了,记住的很少,下面是大概的)
    设计一个备份系统,要求符合三个备份场景,写出你的设计思路,框架模块设计,实现原理。
    要求:1·该系统要能实现对多服务器备份工做(大概这样,仍是。。)
    2·该系统要具有很好容错性,不能由于多服务器中的一台出现故障儿致使整个备份工做不
    能进行。
    3·。。。
    4·。。。(这两点记不清了,很差意思)
    5·具备较强的扩展性,例如当服务器内存不够时,能灵活的添加内存。
    扩展性是附加,在实现前面的要求后再考虑扩展性
    备份场景服务器备份网络速度 备份开始时间
    场景 1 a1~a1010M/S 天天上午 10 点 10 分
    场景 2a1,b1,c1,d130M/S(忘了- -!)
    四台服务器
    场景 3a1~a100 5M/S(也不大记得了。。)
    【分享百度 13 日笔经】
    1.简述深度优先及广度优先遍历算法,并说明非递归实现的特色
  31. 程序找错,一大段。
  32. 假设有一台迷你计算机,1KB 的内存,1MHZ 的 cpu,已知该计算机执行的程序可出现
    肯定性终止(非死循环),问如何求得这台计算机上程序运行的最长时间,能够作出任何大
    胆的假设。
  33. 大型软件有不少组件,编译时存在复杂的依赖关系,好比 N1 和 N2 存在依赖关系,要编
    译 N1 必须先编译 N2,假设存在 N<1000 个组件,之间存在复杂的依赖关系,但不存在依赖
    环,问采用怎样的算法来构建编译规则,说明算法的复杂度。
    5.写一个函数 int MaxContinuNum(const char inputstr,char outputstr)
    找出一个字符串中最长的连续数字串,返回最长数字串的长度,并将最长字符串存入
    Outputstr 指定的地址,
    如, abcd1234abd123abcd123456789, 最长连续字符串为 123456789,长度为 9
    6.有 100 亿个 url,要求设计一个系统,能实现 url 的添加、删除、更新,并能查看 url 的内

    【百度 2010 商务搜索部笔试】
    1,深度优先广度优先定义。它们非递归实现的特色
    2,一个复数实部 虚部分别相乘求和的程序改错
    3,一个有内存 1KB, 处理器速度 10^6/S
    最长计算时间
    4, N 个文件相互有倚赖(编译的时候) 设计一个算法,编译之
    5,一个字符串中最长的数字子串
    6,100 忆个 URL 的存储,查找,删除,更新,添加
    【百度 2010 笔试归来】
    第一题:树的深度遍历,广度遍历,和非递归实现算法的特色。
    第二题:一堆代码,找错误和潜在的危险。
    第三题:一个有 1kb 内存和 1mhz 处理器的计算机在上面运行的程序的最长时间是多少
    算法题目
    1.包编译依赖问题,设计算法,可以最快的完成包的编译
    2.对输入的字符串可以从中找到最大连续数字的字符串
    系统设计题目
    百度最常出的题目,如何在 100 万 url 处理 path、属性等等。
    其余笔试经验:
    昨晚监考百度技术类考试的感想 2008.10.17
    http://company.dajie.com/discuss/theme/20/0/280
    09.10.18 百度商业产品部笔试归来~~~真题奉献~
    http://company.dajie.com/discuss/theme/20/0/8091
    百度 2010 年校园招聘软件测试笔试题
    http://company.dajie.com/discuss/theme/20/0/8452
    百度笔试-2009.10.18
    http://company.dajie.com/discuss/theme/20/0/8169
    百度 2010 校招运维部门笔试
    http://company.dajie.com/discuss/theme/20/0/8095
    百度 09 年 10 月 18 号的交大笔试题——质量部
    http://company.dajie.com/discuss/theme/20/0/8099
    09 年 10 月 18 日百度商务搜索笔试题
    http://company.dajie.com/discuss/theme/20/0/8098
    09 年 10 月 18 号百度北京管培笔试
    http://company.dajie.com/discuss/theme/20/0/8097
    09 年 10 月 18 日百度产品市场部笔试题型
    http://company.dajie.com/discuss/theme/20/0/8096
    09.10.18 百度商业应用产品部(非技术类)笔试题目
    http://company.dajie.com/discuss/theme/20/0/8094
    2009.10.18-百度质量部笔试试题
    http://company.dajie.com/discuss/theme/20/0/8093
    09 年 10 月 18 号 RD-2 卷(质量部等)笔试真题
    http://company.dajie.com/discuss/theme/20/0/8092
    百度 08-9-24 成都电子科技大学笔试题(第五套)
    http://company.dajie.com/discuss/theme/20/0/3002
    百度 08-9-24 成都电子科技大学笔试题(第四套-网工)
    http://company.dajie.com/discuss/theme/20/0/3001
    百度 08-9-24 成都电子科技大学笔试题(第一套)
    http://company.dajie.com/discuss/theme/20/0/3000
    2009 校园招聘 NS 试题
    http://company.dajie.com/discuss/theme/20/0/310
    百度 08-9-24 成都电子科技大学笔试题(第三套)
    http://company.dajie.com/discuss/theme/20/0/307
    百度 08-9-24 成都电子科技大学笔试题(第二套)
    http://company.dajie.com/discuss/theme/20/0/306
    昨晚百度的笔试题(市场部) 2007.10.23
    http://company.dajie.com/discuss/theme/20/0/300
    百度笔个人题目 2007.05.29
    http://company.dajie.com/discuss/theme/20/0/283
    baidu 非技术类一道笔试题
    http://company.dajie.com/discuss/theme/20/0/282
    baidu 2007 校园招聘电子商务软件笔试题
    http://company.dajie.com/discuss/theme/20/0/281
    百度商业应用产品部笔试真题 2007.09.14
    http://company.dajie.com/discuss/theme/20/0/271
    2007 年百度招聘在线笔试真题解答
    http://company.dajie.com/discuss/theme/20/0/259
    百度往年实习面试经验及体会
    百度日文产品部实习两周分享 09-09
    http://company.dajie.com/discuss/theme/20/0/20538
    百度系统部实习面试-2009.6.17
    http://company.dajie.com/discuss/theme/20/0/19750
    百度搜索新产品研发部实习一面面经-2009.6.17
    http://company.dajie.com/discuss/theme/20/0/19752
    百度实习面试-2009.6.16
    http://company.dajie.com/discuss/theme/20/0/19751
    百度往年校园招聘面试经验分享
    众里寻他签百度--从网申到 OFFER(搜索引擎产品市场部-产品设计师-武汉)
    http://company.dajie.com/discuss/theme/20/0/10120
    在百度 SEARCHPM 作实习生经历
    http://company.dajie.com/discuss/theme/20/0/264
    北京?百度?互联网产品经理助理?2007-04-25
    http://company.dajie.com/discuss/theme/20/0/314
    我也来 88 我所经历的百度
    http://company.dajie.com/discuss/theme/20/0/18819
    SuperHR 找工做须要积极的心态【关于百度之争】
    http://company.dajie.com/discuss/theme/20/0/18823
    产品设计师终面(武汉)
    http://company.dajie.com/discuss/theme/20/0/10122
    百度面试趣味见闻【面经】
    http://company.dajie.com/discuss/theme/20/0/10121
    百度最后的电面!热呼呼的新鲜出炉
    http://company.dajie.com/discuss/theme/20/0/8715
    百度质量部面经-2009.10.19
    http://company.dajie.com/discuss/theme/20/0/8416
    百度质量部一面热乎的面经-2009.10.22
    http://company.dajie.com/discuss/theme/20/0/8394
    百度质量部一面面经-2009.10.22
    http://company.dajie.com/discuss/theme/20/0/8393
    百度产品类(非技术)面经分享 -2009.7.14
    http://company.dajie.com/discuss/theme/20/0/316
    百度-搜索应用部-面经+笔经 -2007.9.26
    http://company.dajie.com/discuss/theme/20/0/317
    北京-百度系统部面试归来 -2009.6.18
    http://company.dajie.com/discuss/theme/20/0/315
    写写百度的事
    http://company.dajie.com/discuss/theme/20/0/313
    sniper·找工之路·百度篇
    http://company.dajie.com/discuss/theme/20/0/312
    Suth_Job hunting_百度篇
    http://company.dajie.com/discuss/theme/20/0/311
    百度 Ecom 二面 2007.10.27
    http://company.dajie.com/discuss/theme/20/0/304
    百度电面 2007.10.26
    http://company.dajie.com/discuss/theme/20/0/303
    百度二面归来 2007.10.25
    http://company.dajie.com/discuss/theme/20/0/302
    百度一面归来 2007.10.25
    http://company.dajie.com/discuss/theme/20/0/301
    发滚烫的百度一面面经 2008.09.23
    http://company.dajie.com/discuss/theme/20/0/299
    尘埃落定,回顾个人漫漫求职路(4)Baidu 篇
    http://company.dajie.com/discuss/theme/20/0/298
    分享百度一二面经历 以记念第一个 offer 2007.09.15
    http://company.dajie.com/discuss/theme/20/0/297
    发下午的百度软件质量部面经 2007.10.24
    http://company.dajie.com/discuss/theme/20/0/296
    百度软件质量部测试工程师面经 2007.10.24
    http://company.dajie.com/discuss/theme/20/0/295

    开始答题
    提醒:请注意分配各个部分的答题时间
    本次在线笔试答题已过期间: 0 小时 06 分 22 秒 剩余时间: 1 小时 53 分 38 秒
    题目
    2010 年实习生招聘笔试题 RD-混合
    试卷说明:
    <!--[if !supportLists]-->1. <!--[endif]-->本试卷共两套题目,请先用几分钟的时间浏览一遍,
    选择一套适合你的试卷进行笔试。
    <!--[if !supportLists]-->2. <!--[endif]-->请在您答案的第一行标注您选择的是 A 卷仍是 B
    卷。
    <!--[if !supportLists]-->3. <!--[endif]-->两套试卷的成绩不会合并计算,仅计算其中一套的
    分数。请安排好答题时间,不要两套都作而耽误时间。
    A 卷(共三道大题)
    【请先阅读卷首的试卷说明,在 A、B 卷选择一套试卷做答,同时做答试卷无效】
    第一题、简答题
    <!--[if !supportLists]-->1. <!--[endif]-->简要说明树的深度优先、广度优先遍历算法,及非
    递归实现的特色。
    <!--[if !supportLists]-->2.<!--[endif]-->在处理磁盘数据时,须要首先将其读入内存才能进行
    处理。若是要读取的数据已经在内存中,则能够直接访问内存。一般来讲内存是有限的,
    所以要读取新的数据时必须覆盖内存中一部分原有的数据。假设如今有 n 块一样大小的
    数据,内存一共能够容纳 m 块数据。如今给出一系列对这些数据的读取请求,要求它们
    必须按照给定的顺序被读取,同时要求读取磁盘的次数尽量地少。请简述一个策略满
    足这样的要求。
    第二题、算法与程序设计
    1.百度全体员工玩分组游戏,前面五分钟你们分头找队友,并将每一个人找到的队友信息汇
    报给主持人,若是 A 和 B 是队友,B 和 C 是队友,那么 A 和 C 也是队友;接着主持人不断
    地随机抽取两我的,但愿判断两者是否为队友。请设计一个计算机程序辅助主持人判断两个
    人是否为队友,说明程序的关键算法,不须要代码实现。
    例如:
    <小明,小王>,<小军,小王>,<小丽,小李>是队友,那么小军和小明是队友,小军和小
    丽不是队友。
    2.给定如下二叉树:
    struct node_t
    {
    node_t left, right;
    int value;
    };
    要求编写函数 node_t foo(node_t node, unsigned int m, unsigned int k);
    输出以 node 为根的二叉树第 m 层的第 k 个节点值.
    (level, k 均从 0 开始计数)
    注意:
    <!--[if !supportLists]-->1) <!--[endif]-->此树不是彻底二叉树;
    <!--[if !supportLists]-->2) <!--[endif]-->所谓的第 K 个节点,是本层中从左到右的第 K 个节

    第三题、系统设计题
    百度打算开发一个投票系统,它提供建立、查看、参与和管理投票功能。用户建立一个投票
    时,有以下信息可知:建立者、标题、各选项内容、截止时间、可投票数。另外,该投票是
    否对全部用户可见继承于建立者的个性设置。查看一个投票时,除了显示上述信息外,还需
    要显示每一个选项的投票数。在截止时间以前,用户能够参与投票。管理投票功能为建立者提
    供删除一个投票和调整进行中投票截止时间的功能。
    预计该投票系统会很受用户欢迎,天天可望建立超过 1 万个投票。天天浏览次数达数
    百万,而且有约一百万人次参与投票。经验还代表,用户更喜欢新近的内容。
    实习生小 A 针对上述需求,打算用数据库来实现这个投票系统,他给出了数据库的表
    设计以下:
    user_info:
    uid name … visible
    1 “Alex Wang” … 1 (all)
    2 “Jeff Li” … 0 (self)
    vote_info:
    vid u
    id
    title options counts close_time max visible
    1 1 “Do you like “Yes; No; Who?” “4; 2; 1” 1339071276 1 1
    Lady Gaga?”
    2 1 “Who‟s the best
    forward?”
    “Messi; Ronaldo;
    Droba; Millito”
    “912;
    654; 400;
    301”
    1339076234 1 1
    (红色为主键)
    问题:
    一、小 A 的设计存在什么问题,如何改善?
    二、若是想增长一个功能,即每一个用户对每一个投票只能投一次。如何设计?
    三、系统运行了较长一段时间以后,用户反馈使用中速度变慢。请分析可能的缘由,并提出
    解决办法。
    四、请完整给出新系统下各功能的实现流程。涉及数据库查询的,请给出 SQL 语句。
    B 卷(共三道大题)
    【请先阅读卷首的试卷说明,在 A、B 卷选择一套试卷做答,同时做答试卷无效】
    第一题、算法和程序设计题
    一、请编写函数 foo(int x, int y, int n) 计算:随机生成 x 个大小为[1,y]的正整数,它们的和为
    n 的几率是多少?语言仅限于 PHP、C/C++、Java 中的一种。
    二、设计函数,输入为一个字符串,里边包含中文、英文、数字等字符,编码为 GBK。中文
    字符的编码规则假定为:双字节组成,高字节大于 0x80,低字节任意。
    a) 用经常使用语言(c/c++/php/java)编写函数,实现功能为:按顺序提取输入文本中的中文
    字符,造成新的文本串返回调用者。
    b) 若是调用者有时但愿获得输入串的全中文内容,有时但愿获得英文内容,那么该函数
    应如何设计。
    c) 若是调用者但愿获取输入串中包含中文、英文、数字这三种字符中的一种或多种的需
    求不定时,函数应如何设计。
    三、有一个图书馆系统,含有 Book 和 BookMaster 两个类。Book 能够用来设置书的属性(如
    title),BookMaster 天天作的事情就是根据上级的要求重设设定某些书的 title,以增长借阅
    者的注意力,让更多的人对书有新的兴趣。
    有一天,上级须要 BookMaster 在 setTitle 的操做以前都要在日志中记录一条 log。但不幸
    的是因为一些很特别的缘由,没有办法去修改 Book 类,没法在 Book 类的 setTitle()方法
    中增长记录 log 的操做。更不幸的是上级不信任 BookMaster 本身的统计结果,使 BookMaster
    不能在作 setTitle()以前本身作 log 记录。
    请问如何作才能达到目标,请写出必要的实现代码。
    相关类定义以下:
    public interface Book {
    public void setTitle(String title);
    public String getTitle();
    }
    public class BookException extends Exception {
    public BookException() {
    }
    }
    public class BookImpl implements Book {
    private String title;
    public void setTitle(String title) {
    this.title = title;
    }
    public String getTitle() {
    return this.title;
    }
    }
    public class BookMaster {
    public static void main(String[] args) {
    Book book = new BookImpl();
    out.println("set a book‟s title today"); // 不能添加这行语句,由于上级不信任
    BookMaster 本身的统计结果
    book.setTitle("I feel good.");
    out.println(book.getTitle());
    }
    }
    注:题目中所提供类的定义为 Java 实现,但您能够根据您的喜爱自由选择其它语言完成题
    目要求。
    第二题、简答题
    一、网站如何维护用户的登陆状态?百度知道、百度贴吧、百度百科三个网站域名不一样,但
    同在.baidu.com 主域下,它们之间如何共享用户登陆状态?若是两个网站域名也不在一个主
    域下,例如 www.baidu.com 和 www.qiyi.com,那么要如何共享用户登陆状态?
    要求:请尽可能提供多种方案并分析各类方案的优劣。
    二、在炎炎夏日,你十分口渴,想要买一瓶冰汽水,商店中有三瓶汽水供你选择(如 ABC),
    其中只有一瓶是冰过的。当你选定了其中的某一瓶后(设为 A),店员摸了下剩余两瓶中的
    一瓶(设为 B),并告诉你 B 不是冰的,此时你会将你的选择变动为剩余的那瓶嘛(C)?
    请详述你的理由?
    三、TCP 服务器在启动时,须要通过 socket、bind、listen 和 accept 四个步骤。
    一个单进程的服务器的伪代码以下:node

  34. listen_fd = socket(TCP);
  35. bind(listen_fd, my_addr);
  36. listen(listen_fd, backlog);
  37. while(true)
  38. {
  39. client_fd = accept(listen_fd);
  40. read(client_fd, request);
  41. response = process(request);
  42. write(client_fd, response);
  43. close(client_fd);
  44. }
    某客户端的伪代码以下:
  45. fd = connect(server_addr);
  46. write(fd, request);
  47. read(fd, response);
  48. display(response);
  49. close(fd);
    假设服务器在 04 行执行了 sleep(1000000):
    问题 1:请简介服务器四个步骤的意义或做用是什么?
    问题 2:当 1 个客户端访问该服务器时,客户端执行到哪行会失败?会发生阻塞吗?为何?
    问题 3:当 50 个客户端从 50 台机器几乎同时访问该服务器时,各个客户端的反应有差异吗?
    为何?(注:忽略防火墙因素)
    第三题、系统设计题
    一、假设系统里有不少模板文件,每一个模板文件都有一个惟一的文件名,其内容是一个长字
    符串,其中包含不少经过$...$方式标记起来的模板变量,如:
    my name is $spname$, i‟m $spage$ years old ...
    其中 spname, spage 就是咱们所谓的模板变量,请设计一个简单高效的模板解析系统,要求
    上游模块向该系统提供一个模板文件名和一个模板变量值字典时,
    系统可以返回通过模板变量解析后的文本内容,例如:
    假设模板文件 A.tpl 的内容为:
    my name is $spname$, i‟m $spage$ years old ...
    提供的模板变量值字典 dict 为:
    array(‟spname‟ => ‟robin928‟, ‟spage‟ => ‟29‟),
    则解析后的文本内容应该为:
    my name is robin928, i‟m 29 years old ...
    (访问字典时能够经过 dict[‟spname‟]访问到模板变量 spname 的参数值)
    二、目前最流行的, 被称为微革命的互联网应用Twitter中, 人民能够在Twitter中互相关注, 被
    关注的人发出的每一条微型博客(通常都在 140 字之内), 都会被关注他的人看到. 而一我的
    可能被几万,几十万, 甚至上百万的人关注; 固然, 理论上, 一我的也能够关注几万,几十万,
    甚至上百万的人.
    1) 请设计出这样的一个系统, 并详细说明你的设计.
    2) 请指出你设计中的缺点, 并给出改进后的设计.
    3) 请评述你的最终设计的优势和缺点.
    • 您可先离线完成全部答案,再把整份答案内容剪贴到这里;全部内容都将以.txt 文件格式保存。
    • 若是您长时间未进行任何操做,答题页面可能会超时失效;若失效请从新登陆,以防止提交失败。
    • 请务必在笔试时间结束前提交您的答案,以保证咱们能及时处理。
    • 答案一旦提交成功,则您的笔试结束,您将不能继续提交答案。
    答题区(请在下边文本区域填写答案)
    答案附件: (500K 之内,能够为 doc,zip,pdf,jpg 文件)
    提交答案
    B 卷
    第一题、算法和程序设计题
    2(a)读取中文
    public static String getChinese(String src) throws UnsupportedEncodingException {
    String desc="";
    for (int i = 0; i < src.length(); i++) {
    char ch=src.charAt(i);
    byte[] buf=(ch+"").getBytes("GBK");
    if(buf.length>1){
    desc+=ch;
    }
    }
    return desc;
    }
    2(b)读取中文或英文
    public class GetPart {
    public static final int CHINESE=1;
    public static final int ENGLISH=2;
    /**
    • @param src
    • @param type 当 type 为 CHINESE,获得中文,当 type 为 ENGLISH 时,获得英文
    • @return
    • @throws UnsupportedEncodingException
      */
      public static String getPart(String src,int type)throws UnsupportedEncodingException{
      if(type==CHINESE){
      return doGetChinese(src);
      }else if(type==ENGLISH){
      return doGetEnglish(src);
      }else {
      throw new IllegalArgumentException("参数 type 应该为 1,2,3");
      }
      }
      private static String doGetEnglish(String src) throws UnsupportedEncodingException {
      String desc="";
      for (int i = 0; i < src.length(); i++) {
      char ch=src.charAt(i);
      byte[] buf=(ch+"").getBytes("GBK");
      if(buf.length==1 && Character.isLetter(ch)){
      desc+=ch;
      }
      }
      return desc;
      }
      private static String doGetChinese(String src) throws UnsupportedEncodingException {
      String desc="";
      for (int i = 0; i < src.length(); i++) {
      char ch=src.charAt(i);
      byte[] buf=(ch+"").getBytes("GBK");
      if(buf.length>1){
      desc+=ch;
      }
      }
      return desc;
      }
      public static void main(String[] args) throws UnsupportedEncodingException {
      System.out.println(getPart("123 你好 ok",ENGLISH));
      }
      }
      2(c)能够同时读取任意的文本
      public class GetPart {
      public static final int CHINESE=0x1;
      public static final int ENGLISH=0x2;
      public static final int DIGIT=0x4;
      /**
    • @param src
    • @param type 当 type 为 CHINESE,获得中文,当 type 为 ENGLISH 时,获得英文
    • @return
    • @throws UnsupportedEncodingException
      */
      public static Result getPart(String src,int type)throws UnsupportedEncodingException{
      Result result=new Result();
      if((type & CHINESE) == CHINESE){
      result.setChinese(doGetChinese(src));
      }
      if((type & ENGLISH) == ENGLISH){
      result.setEnglish(doGetEnglish(src));
      }
      if((type & DIGIT) == DIGIT){
      result.setDigit(doGetDigit(src));
      }
      return result;
      }
      private static String doGetDigit(String src) throws UnsupportedEncodingException {
      String desc="";
      for (int i = 0; i < src.length(); i++) {
      char ch=src.charAt(i);
      byte[] buf=(ch+"").getBytes("GBK");
      if(buf.length==1 && Character.isDigit(ch)){
      desc+=ch;
      }
      }
      return desc;
      }
      private static String doGetEnglish(String src) throws UnsupportedEncodingException {
      String desc="";
      for (int i = 0; i < src.length(); i++) {
      char ch=src.charAt(i);
      byte[] buf=(ch+"").getBytes("GBK");
      if(buf.length==1 && Character.isLetter(ch)){
      desc+=ch;
      }
      }
      return desc;
      }
      private static String doGetChinese(String src) throws UnsupportedEncodingException {
      String desc="";
      for (int i = 0; i < src.length(); i++) {
      char ch=src.charAt(i);
      byte[] buf=(ch+"").getBytes("GBK");
      if(buf.length>1){
      desc+=ch;
      }
      }
      return desc;
      }
      public static void main(String[] args) throws UnsupportedEncodingException {
      Result result=getPart("123 你好 ok",CHINESE|ENGLISH|DIGIT);
      System.out.println(result.getChinese());
      System.out.println(result.getEnglish());
      System.out.println(result.getDigit());
      }
      }
      public class Result {
      private String chinese;
      private String english;
      private String digit;
      public Result() {
      }
      public String getChinese() {
      return chinese;
      }
      public void setChinese(String chinese) {
      this.chinese = chinese;
      }
      public String getEnglish() {
      return english;
      }
      public void setEnglish(String english) {
      this.english = english;
      }
      public String getDigit() {
      return digit;
      }
      public void setDigit(String digit) {
      this.digit = digit;
      }
      }
  50. 答:不少方法能解决这个问题.第一:用动态代理为 Book 生成个代理.
    第二:用设计模式的代理设计模式完成.
    第三:用 spring 的 aop.
    这里咱们选用设计模式的方式:
    class BookProxy implements Book{
    private Book target;
    public BookProxy(Book target) {
    this.target = target;
    }
    public String getTitle() {
    return target.getTitle();
    }
    public void setTitle(String title) {
    System.out.println("set a book’s title today");//增长的日志信息
    target.setTitle(title);
    }
    }
    class BookMaster {
    public static void main(String[] args) {
    Book book = new BookImpl();
    book=new BookProxy(book);
    book.setTitle("I feel good.");
    }
    }
    第三题、系统设计题
    1。模板解析
    答:由于模板文件的内容比较长,不能用正则表达式,这样的效率很低.
    由于模板变量有明确的标志${}.那么一遍全文查找就能够了.遇到${,就开始记录便利,遇到}
    就读取了变量 var,那么查字典 dict['var'],就能获得其值,而后填充在里面.
    特别须要说明:字典用散列表创建,这样效率很高.
    伪代码:
    public class TemplateUtil {
    /*字典/
    private final static Map<String,String> dict=new HashMap<String, String>();
    static{
    //初始化字典
    }
    /**linux

    • 替换模板变量
    • @param source
    • @return
      /
      public static String replace(String source){
      StringBuffer sb=new StringBuffer();
      for (int i = 0; i < source.length(); i++) {
      char ch=source.charAt(i);
      if(ch=='$'&& (i+1)<source.length() && source.charAt(i+1)=='{'){
      i+=2;
      String var="";
      while(i<source.length()&&source.charAt(i)!='}'){
      var+=source.charAt(i);
      i++;
      }
      sb.append(dict.get(var));
      }else{
      sb.append(ch);
      }
      }
      return sb.toString();
      }
      }
      1912 制做
      试卷说明:
      <!--[if !supportLists]-->1. <!--[endif]-->本试卷共两套题目,请先用几分钟的时间浏览一遍,
      选择一套适合你的试卷进行笔试。
      <!--[if !supportLists]-->2. <!--[endif]-->请在您答案的第一行标注您选择的是 A 卷仍是 B
      卷。
      <!--[if !supportLists]-->3. <!--[endif]-->两套试卷的成绩不会合并计算,仅计算其中一套的
      分数。请安排好答题时间,不要两套都作而耽误时间。
      A 卷(共三道大题)
      【请先阅读卷首的试卷说明,在 A、B 卷选择一套试卷做答,同时做答试卷无效】
      第一题、简答题
      <!--[if !supportLists]-->1. <!--[endif]-->简要说明树的深度优先、广度优先遍历算法,及非
      递归实现的特色。
      <!--[if !supportLists]-->2.<!--[endif]-->在处理磁盘数据时,须要首先将其读入内存才能进行
      处理。若是要读取的数据已经在内存中,则能够直接访问内存。一般来讲内存是有限的,
      所以要读取新的数据时必须覆盖内存中一部分原有的数据。假设如今有 n 块一样大小的
      数据,内存一共能够容纳 m 块数据。如今给出一系列对这些数据的读取请求,要求它们
      必须按照给定的顺序被读取,同时要求读取磁盘的次数尽量地少。请简述一个策略满
      足这样的要求。
      第二题、算法与程序设计
      1.百度全体员工玩分组游戏,前面五分钟你们分头找队友,并将每一个人找到的队友信息汇
      报给主持人,若是 A 和 B 是队友,B 和 C 是队友,那么 A 和 C 也是队友;接着主持人不断
      地随机抽取两我的,但愿判断两者是否为队友。请设计一个计算机程序辅助主持人判断两个
      人是否为队友,说明程序的关键算法,不须要代码实现。
      例如:
      <小明,小王>,<小军,小王>,<小丽,小李>是队友,那么小军和小明是队友,小军和小
      丽不是队友。
      2.给定如下二叉树:
      struct node_t
      {
      node_t
      left, right;
      int value;
      };
      要求编写函数 node_t
      foo(node_t *node, unsigned int m, unsigned int k);
      输出以 node 为根的二叉树第 m 层的第 k 个节点值.
      (level, k 均从 0 开始计数)
      注意:
      此树不是彻底二叉树;
      所谓的第 K 个节点,是本层中从左到右的第 K 个节点
      第三题、系统设计题
      百度打算开发一个投票系统,它提供建立、查看、参与和管理投票功能。用户建立一个投票
      时,有以下信息可知:建立者、标题、各选项内容、截止时间、可投票数。另外,该投票是
      否对全部用户可见继承于建立者的个性设置。查看一个投票时,除了显示上述信息外,还需
      要显示每一个选项的投票数。在截止时间以前,用户能够参与投票。管理投票功能为建立者提
      供删除一个投票和调整进行中投票截止时间的功能。
      预计该投票系统会很受用户欢迎,天天可望建立超过 1 万个投票。天天浏览次数达数
      百万,而且有约一百万人次参与投票。经验还代表,用户更喜欢新近的内容。
      实习生小 A 针对上述需求,打算用数据库来实现这个投票系统,他给出了数据库的表
      设计以下:
      user_info:
      uid name … visible
      1 “Alex Wang” … 1 (all)
      2 “Jeff Li” … 0 (self)
      vote_info:
      vid u
      id
      title options counts close_time max visible
      1 1 “Do you like
      Lady Gaga?”
      “Yes; No; Who?” “4; 2; 1” 1339071276 1 1
      2 1 “Who‟s the best
      forward?”
      “Messi; Ronaldo;
      Droba; Millito”
      “912;
      654; 400;
      301”
      1339076234 1 1
      (红色为主键)
      问题:
      一、小 A 的设计存在什么问题,如何改善?
      二、若是想增长一个功能,即每一个用户对每一个投票只能投一次。如何设计?
      三、系统运行了较长一段时间以后,用户反馈使用中速度变慢。请分析可能的缘由,并提出
      解决办法。
      四、请完整给出新系统下各功能的实现流程。涉及数据库查询的,请给出 SQL 语句。
      B 卷(共三道大题)
      【请先阅读卷首的试卷说明,在 A、B 卷选择一套试卷做答,同时做答试卷无效】
      第一题、算法和程序设计题
      一、请编写函数 foo(int x, int y, int n) 计算:随机生成 x 个大小为[1,y]的正整数,它们的和为
      n 的几率是多少?
      二、设计函数,输入为一个字符串,里边包含中文、英文、数字等字符,编码为 GBK。中文
      字符的编码规则假定为:双字节组成,高字节大于 0x80,低字节任意。
      a) 用经常使用语言(c/c++/php/java)编写函数,实现功能为:按顺序提取输入文本中的中文字
      符,造成新的文本串返回调用者。
      b) 若是调用者有时但愿获得输入串的全中文内容,有时但愿获得英文内容,那么该函数应
      如何设计。
      c) 若是调用者但愿获取输入串中包含中文、英文、数字这三种字符中的一种或多种的需求
      不定时,函数应如何设计。
      第二题、简答题
      一、网站如何维护用户的登陆状态?
      百度知道、百度贴吧、百度百科三个网站域名不一样,但同在.baidu.com 主域下,它们之
      间如何共享用户登陆状态?
      若是两个网站域名也不在一个主域下,例如 www.baidu.com 和 www.qiyi.com,那么要如
      何共享用户登陆状态?
      要求:请尽可能提供多种方案并分析各类方案的优劣。
      (1) 若是在同一域下,能够用 cookie 共享方式实现.
      在服务器把 cookie 信息写到 response 时,须要加密.
      当服务器读取 cookie 时,须要解密.
      (2) 若是在不一样的域,可用一个服务器群集来存放用户的登陆信息.
      当须要 session 信息,直接到服务器群集去取得.
      注:Cookie:
      Cookie 是由服务器端生成,发送给 User-Agent(通常是浏览器),浏览器会将 Cookie
      的 key/value 保存到某个目录下的文本文件内,下次请求同一网站时就发送该 Cookie 给
      服务器(前提是浏览器设置为启用 cookie)。Cookie 名称和值能够由服务器端开发本身
      定义。
      Cookie 记录着用户的账户 ID、密码之类的信息,若是在网上传递,一般使用的是 MD5
      方法加密。
      Cookie 欺骗:
      截获 Cookie 的人不须要知道这些字符串的含义,他们只要把别人的 Cookie 向服务器提
      交,而且可以经过验证,他们就能够冒充受害人的身份,登录网站。这种方法叫作 Cookie
      欺骗。
      服务器群集技术:
      最主要的应用即在于网络负载平衡的功能。群集由经过输入/输出系统互联的若干服务
      器构成。
      Session:会话
      在计算机中,尤为是在网络应用中,称为“会话”。 Session 是指一个终端用户与交互系
      统进行通讯的时间间隔,一般指从注册进入系统到注销退出系统之间所通过的时间。具
      体到 Web 中的 Session 指的就是用户在浏览某个网站时,从进入网站到浏览器关闭所经
      过的这段时间,也就是用户浏览这个网站所花费的时间。所以从上述的定义中咱们能够
      看到,Session 其实是一个特定的时间概念。
      二、在炎炎夏日,你十分口渴,想要买一瓶冰汽水,商店中有三瓶汽水供你选择(如 ABC),
      其中只有一瓶是冰过的。当你选定了其中的某一瓶后(设为 A),店员摸了下剩余两瓶中的
      一瓶(设为 B),并告诉你 B 不是冰的,此时你会将你的选择变动为剩余的那瓶嘛(C)?
      请详述你的理由?
      答:若 A 已是冰的,那就不用选择 C;若 A 不是冰的,而且店员已经确认 B 不是冰的,所
      以只有 C 是冰的。
      三、TCP 服务器在启动时,须要通过 socket、bind、listen 和 accept 四个步骤。
      一个单进程的服务器的伪代码以下:
  51. listen_fd = socket(TCP);
  52. bind(listen_fd, my_addr);
  53. listen(listen_fd, backlog);
  54. while(true)
  55. {
  56. client_fd = accept(listen_fd);
  57. read(client_fd, request);
  58. response = process(request);
  59. write(client_fd, response);
  60. close(client_fd);
  61. }
    某客户端的伪代码以下:
  62. fd = connect(server_addr);
  63. write(fd, request);
  64. read(fd, response);
  65. display(response);
  66. close(fd);假设服务器在 04 行执行了 sleep(1000000):问题 1:请简介服务器四个步骤的意义或做用是什么?答:socket:是创建套接字.Bind:是让创建的套接字指定到具体的网络接口(若是一个机器有多个网络接口)和端口号.Listen:监听客户端的请求Accept:若是有请求到来,accept 返回一个客户端套接字.此时能够通讯了.问题 2:当 1 个客户端访问该服务器时,客户端执行到哪行会失败?会发生阻塞吗?为何?问题 3:当 50 个客户端从 50 台机器几乎同时访问该服务器时,各个客户端的反应有差异吗?为何?(注:忽略防火墙因素)答:有差异,由于没有用多个线程或者多进程技术,那么 50 个请求会放在操做系统的队列里面.每一次只能处理一个请求,1,2,...,50 等待时间各不相同.也许后面的会由于超时重传.建议换成多线程技术来处理,也能够用非阻塞 IO 来处理.那么用户的体验没有那么差.二、目前最流行的, 被称为微革命的互联网应用Twitter中, 人民能够在Twitter中互相关注, 被关注的人发出的每一条微型博客(通常都在 140 字之内), 都会被关注他的人看到. 而一我的可能被几万,几十万, 甚至上百万的人关注; 固然, 理论上, 一我的也能够关注几万,几十万,甚至上百万的人.1) 请设计出这样的一个系统, 并详细说明你的设计.2) 请指出你设计中的缺点, 并给出改进后的设计.3) 请评述你的最终设计的优势和缺点.(1) 这个系统中有两张重要数据库表:account, attention_accountaccount 是用户表,而 attention_account 记录关注用户的用户列表.account(id, name, password)attention_account(id, attention_id)--id 为用户 id,好比 zhangsan,而 attention_id 为关注 id 用户的用户 id,好比 lisi每一个用户均可以订阅本身感兴趣的用户,当某个用户每发布一篇文章时,都通知关注他的用户.这是典型的发布订阅模式.(2)缺点:发布订阅原本是一种比较好的解决方式,可是用户必须登陆到 Twitter 系统才能看到本身感兴趣的信息.因此若是采起 B/s 模式的话,用户很难实时的看到本身感兴趣的信息.因此若是能够,建议在提供 B/s 模式的同时,也提供一个可选的 GUI 客户端,当用户每次登陆操做系统的时候,自动启动 GUI 客户端.这样实时性更好.(3)评价:这个系统的优势是采用发布订阅方式,可以在用户发布信息的时候及时通知对其感兴趣的用户.难点是如何让用户实时的读取本身感兴趣的文章.注:GUI:graphical user interface:图形用户接口,采用图形方式显示的计算机操做用户界面。即人机交互图形化用户界面。B/S 模式:browser/server,浏览器/服务器模式,这种方式下,用户工做界面经过 IE 浏览器来实现,最大的优势是能实现不一样的人员,从不一样的地点,以不一样的接入方式访问和操做共同的数据。最大的缺点是对外网环境严重依赖。发布订阅消息模式:注册用户成功后发送一个消息给消息管理器,由消息管理器转发该消息给须要处理的业务。如今,用户业务只依赖于消息管理器了,它不再会为了注册用户成功后的其余处理而烦恼。发布-订阅消息模式已经呈如今咱们面前,利用它能够产生更灵活、更松散耦合的系统。主要是实现客户端与服务端的即时数据交互,客户端经过订阅事件以待接收数据,服务端经过发布服务将即时数据发布至服务,服务通知订阅了事件的客户端。三、有一个图书馆系统,含有 Book 和 BookMaster 两个类。Book 能够用来设置书的属性(如title),BookMaster 天天作的事情就是根据上级的要求重设设定某些书的 title,以增长借阅者的注意力,让更多的人对书有新的兴趣。有一天,上级须要 BookMaster 在 setTitle 的操做之前都要在日志中记录一条 log。但不幸的是因为一些很特别的缘由,没有办法去修改 Book类,没法在 Book 类的 setTitle()方法中增长记录 log 的操做。更不幸的是上级不信任BookMaster 本身的统计结果,使 BookMaster 不能在作 setTitle()以前本身作 log 记录。 请问如何作才能达到目标,请写出必要的实现代码。相关类定义以下:public interface Book { //Book 类能够设置书的属性public void setTitle(String title);public String getTitle();}public class BookException extends Exception {public BookException() {}}public class BookImpl implements Book {private String title;public void setTitle(String title) {this.title = title;}public String getTitle() {return this.title;}}public class BookMaster {public static void main(String[] args) {Book book = new BookImpl();out.println("set a book‟s title today"); // 不能添加这行语句,由于上级不信任BookMaster 本身的统计结果book.setTitle("I feel good.");out.println(book.getTitle());}}注:题目中所提供类的定义为 Java 实现,但您能够根据您的喜爱自由选择其它语言完成题目要求。第三题、系统设计题一、假设系统里有不少模板文件,每一个模板文件都有一个惟一的文件名,其内容是一个长字符串,其中包含不少经过$...$方式标记起来的模板变量,如:my name is $spname$, i‟m $spage$ years old ...其中 spname, spage 就是咱们所谓的模板变量,请设计一个简单高效的模板解析系统,要求上游模块向该系统提供一个模板文件名和一个模板变量值字典时,系统可以返回通过模板变量解析后的文本内容,例如:假设模板文件 A.tpl 的内容为:my name is $spname$, i‟m $spage$ years old ...提供的模板变量值字典 dict 为:array(‟spname‟ => ‟robin928‟, ‟spage‟ => ‟29‟),则解析后的文本内容应该为:my name is robin928, i‟m 29 years old ...(访问字典时能够经过 dict[‟spname‟]访问到模板变量 spname 的参数值)