logo资料库

百度历年招聘笔试试题汇总六篇.doc

第1页 / 共14页
第2页 / 共14页
第3页 / 共14页
第4页 / 共14页
第5页 / 共14页
第6页 / 共14页
第7页 / 共14页
第8页 / 共14页
资料共14页,剩余部分请下载后查看
百度历年招聘笔试试题汇总六篇 1:堆和栈的区别,什么时候用堆什么时候用栈? 百度试题 1 2:树的深度优先搜索算法 按照某种条件往前试探搜索,如果前进中遭到失败(正如老鼠钻迷宫老鼠遇到死胡同)则退 回头另选通路继续搜索,直到找到条件的目标为止。 3:广度优先搜索算法 宽度优先搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多 重要的图的算法的原型。Prim 最小生成树算法采用了和宽度优先搜索类似的思想。其别名 又叫 BFS,属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。 换句话说,它并不考虑结果的可能位址,彻底地搜索整张图,直到找到结果为止。 4:树的非递归实现 5:数据库事务的四大特性 原子性 atomic、一致性 consistency、分离性 isolation、持久性 durability ◎事务的原子性指的是,事务中包含的程序作为数据库的逻辑工作单位,它所做的对数据修 改操作要么全部执行,要么完全不执行。这种特性称为原子性。 ◎事务的一致性指的是在一个事务执行之前和执行之后数据库都必须处于一致性状态。 ◎分离性指并发的事务是相互隔离的。即一个事务内部的操作及正在操作的数据必须封锁起 来,不被其它企图进行修改的事务看到。 ◎持久性意味着当系统或介质发生故障时,确保已提交事务的更新不能丢失。即一旦一个事 务提交,DBMS 保证它对数据库中数据的改变应该是永久性的,耐得住任何系统故障。持 久性通过数据库备份和恢复来保证。 6:ASCII 码--十进制(对应关系) 9--57 Z--90 0--48 A--65 a--97 十进制:decimal,简称:DEC z—122 7:算法与程序设计题 #include 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<
始于可口可乐与百事可乐之争的。这是商业史上的著名案例,很多人曾经从不同角度分析这 个案例。而在 blink 书中,两种可乐在做产品比较时采取了错误的“切片”方法。百事在最 初攻击可口时,曾经通过在大街上随即抽取人员作双盲测试,并发现大多数人认为百事可乐 更好喝,以此为证据说明百事的优点。可口也作了同样的测试,惊恐的发现事实确实如此。 于是他们断定可口可乐必须在产品上改进,经过大量的投入,一种新的 New Coke 发布出来 了。New Coke 在做同样的双盲测试时,更多人认为 New Coke 比 Pepsi 好喝。当时的 CEO 郭 思达在发布时说,这是可口可乐有史以来做的最有把握的一件事。可是,事实是,New Coke 迅速被消费者抵制,最后可口可乐不得不重新推出原来的可口可乐并完全摒弃 New Coke。 这种双盲测试是一种错误的切片方法,因为在做这种试验时,用户对每种饮料都只喝一小口, 而不是像正常时一次喝一瓶。而当用户只喝一小口饮料时,大多数人会更喜欢更甜的那一种 ——虽然当他们喝一整瓶的时候会有不同的看法。书中又举了更多例子说明,所谓的用户测 试并不是一种能够让你相信的结果,因为用户测试会被很多不同的因素所影响,包括包装、 饮用方法。 9:链表和数组的优缺点? 链表:链表是一块不连续的动态空间,长度可变;链表需要按顺序检索节点,效率低; 链表的优点是可以快速插入和删除节点,大小动态分配,长度不固定。 链表不存在越界问题。 数组:数组是一快连续的空间,声明时长度就需要固定。 数组的优点是速度快,数据操作直接使用偏移地址。 数组有越界问题。 百度试题 2 1、请实现两棵树是否相等的比较,相等返回,否则返回其他值,并说明算法复杂度。 数据结构为: typedef struct_TreeNode{ char c; TreeNode *leftchild; TreeNode *rightchild; }TreeNode; 函数接口为:int CompTree(TreeNode* tree1,TreeNode* tree2); 注:A、B 两棵树相等当且仅当 Root->c==RootB-->c,而且 A 和 B 的左右子树相等或者左右互 换相等。 2、写一段程序,找出数组中第 k 大小的数,输出数所在的位置。例如{2,4,3,4,7}中, 第一大的数是 7,位置在 4。第二大、第三大的数都是 4,位置在 1、3 随便输出哪一个均可。 函数接口为:int find_orderk(const int* narry,const int n,const int k) 2'、已知一个字串由 GBK 汉字和 ansi 编码的数字字母混合组成,编写 c 语言函数实现从中 去掉所有 ansi 编码的字母和数字(包括大小写),要求在原字串上返回结果。 函数接口为:int filter_ansi(char* gbk_string) 注:汉字的 GBK 编码范围是 0x8140-0xFEFE
百度试题 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 亿网页已经被我们存下来,并提供如下信息:网页全文(即网页的源码)、全文长 度、网页正文(即网页中提取的主体文字)、 正文长度,以及其他网页提取物等,现在希望去掉其中的重复网页,请提出可行的方案,计 算出每个网页对应的重复度,你可以自己 对网页重复下定义,也可以提出需要哪些更多的网页提取物来实现更好的去重复方案
百度试题 4 一、 选择题:15 分 共 10 题 1.一个含有 n 个顶点和 e 条边的简单无向图,在其邻接矩阵存储结构中共有____个零元素。 A.e D.n2-2e B.2e C.n2-e 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 二、简答题: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); } } 三、编程题:30 分 共 1 题 注意:要求尽可能提供完整代码,如果可以编译运行酌情加分。 1.内存中有一个长数组,条目数为 10 万,数组单元为结构体 struct array,sizeof(struct array)为 512 字节。结构有一 int 型成员变量 weight。现需要取得按 weight 值从大到小排 序的前 500 个数组单元,请实现算法,要求效率尽可能高。 四、设计题: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 百度试题 5 一、选择题: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. 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) ) );
分享到:
收藏