百度校园招聘历年笔试题.docx
《百度校园招聘历年笔试题.docx》由会员分享,可在线阅读,更多相关《百度校园招聘历年笔试题.docx(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2009百度笔试题 一、编程题(30分)输入:N(整数)输入:数据文件A.txt,不超过6条记录,字符串长度不超过15个字节文件格式如下:字符串t数字n说明:每行为1条记录;字符串中不含有t。数字描述的是该字符串的出现概率,小于等于100的整数。多条记录的出现概率之和为100,如果A.txt不满足该条件,程序则退出;如果文件格式错误,程序也退出。要求:编写一个程序,输入为N(正整数),读入文件A.txt,按照字符串出现概率随机地输出字符串,输出N条记录例如:输入文件A.txtabct20at30det50输入为:10即 abc有20%的概率输出,a有30%的概率输出,de有50%的概率输出,输
2、出10条记录以下为一次输出的结果,多次输出的结果可能不相同。abcadedeabcdeadeade二、算法题(35分)题目描述:设有n个正整数,将它们联接成一排,组成一个最小的多位整数。程序输入:n个数程序输出:联接成的多位数例如:n=2时,2个整数32,321连接成的最小整数为:32132,n=4时,4个整数55,31,312, 33 联接成的最小整数为:312313355题目要求1. 给出伪代码即可,请给出对应的文字说明,并使用上面给出的例子试验你的算法。2. 给出算法的时间空间复杂度。3. 证明你的算法。(非常重要)三、系统设计题(35分)在一个有1000万用户的系统中,设计一个推送(f
3、eed)系统。以下是一些预定义概念:1、用户:在这个系统中,每个用户用一个递增的unsigned int来表示user id(简写为uid);则uid的范围是从1到1000万的正整数。2、好友:用户之间可以形成好友关系,好友是双向的;比如说uid为3和uid为4的两个用户可以互为好友。每个用户好友的上限是500个;用户之间的好友关系可以被解除3、活动:每个用户只能发文章;文章可以被作者删除,其他人不能删除非自己发表的文章;每篇文章通过一个blogid表示。4、feed:我们希望,每个用户可以看到他所有好友的活动列表,在这个简化的系统中就是所有好友的文章更新列表。5、访问量要求:所有feed访问
4、量每天在1亿量级;所有的blogid增加量每天在百万量级。题目:请在以上限制条件下,设计一个高效的feed访问系统。要求:1、能够尽快的返回每个用户的好友feed列表,每个用户可以最多保留1000条feed;feed的展现按照时间倒排序,最新的在最前面2、用户删除某篇文章后,被推出去的feed需要及时消失。即每个用户看到的好友feed都是未被删除的3、尽可能高效2010百度校园招聘笔试题一、简答题1. 简述树的深度优先遍历及广度优先遍历及其非递归实现的特点;2. 找出以下程序中的bug:#include #include struct Record int a; int b; ;int cre
5、ate(struct Record *p, int num) p = new struct Recordnum; if (!p) return -1; else return 0;int Test() struct Record *p = NULL; int i; int num; printf(0x%08xn, p); scanf(Input record num:%d, &num); if (create(p, num) 0) return -1; printf(0x%08xn, p); for (i = 0; i num; i+) pi.a = 0; pi.b = 0; return 0
6、; int main(void) Test(); getchar(); return 0; #include #include struct Recordint a;int b; ;int create(struct Record *&p, int num)p=NULL;p = new struct Recordnum; if (!p)return -1;elsereturn 0;int Test()struct Record *p = NULL;int i;int num;printf(0x%08xn, p); printf(Input record num:); scanf(%d,&num
7、);if (create(p, num) 0)return -1;printf(0x%08xn, p);for (i = 0; i num; i+) pi.a = 0;pi.b = 0; delete p;return 0; int main(void)Test();getchar();return 0; 3. 有一台Mini计算机,内存大小为1K,CPU主频为1M(CPU状态每秒改变10的6次方次),问在这台计算机上可运行并且确定可以终止的程序的最长运行时间是多少?给出思路及推理过程(可以做任何假设)。二、算法设计1. 某大型项目由n个组件N1, N2Nn构成,每个组件都可以独立编译,但是某
8、些组件的编译依赖于其它组件(即某些组件只能在其它组件编译完成后才能编译),设计算法给出统计过程。#include #define MAXN 505#define MAXM MAXN*MAXNstruct edgeint v;edge *mNext;int inMAXN;int n,m;edge EMAXM;int en;edge *firstMAXN;int cntMAXNMAXN;void insert(int u,int v)Een.v=v;Een.mNext=firstu;firstu=&Een+;void topo()for(int i=1;i=n;i+)for(int u=1;umN
9、ext)ine-v-;break;int main()freopen(c:/a.txt,r,stdin);while(scanf(%d%d,&n,&m)!=EOF)memset(first,NULL,sizeof(first);memset(cnt,0,sizeof(cnt);memset(in,0,sizeof(in);int u,v;en=0;for(int i=0;im;i+)scanf(%d%d,&u,&v);if(cntuv=0)cntuv=1;insert(u,v);inv+;topo();printf(n);return 0;2. 完成函数:int maxnumstr(char
10、*inputstr, char *outputstr) 函数功能:找出inputstr中的最长连续数字串存储到outputstr里并返回长度,如调用maxnumstr(123abc1234a, outputstr)后返回4且outputstr中为1234。#include #define MAXN 1000int maxnumstr(char *inputstr, char *outputstr)if(inputstr=NULL | outputstr=NULL)throw Error NULL params;if(*inputstr=0) *outputstr=0; return 0;cha
11、r* begin=inputstr;int res=1;int cur=1;char pre=*inputstr+;while(*inputstr)if(0=*inputstr&*inputstr=9&pre=*inputstr-1)cur+;elsecur=1;if(rescur)res=cur;begin=inputstr-(cur-1);pre=*inputstr+;for(int i=0;ires;i+)outputstri=begini;outputstrres=0;return res;int main()freopen(c:/a.txt,r,stdin);char srcMAXN
12、,tarMAXN;while(scanf(%s,src)!=EOF)printf(%d ,maxnumstr(src,NULL);printf(%sn,tar);return 0;三、系统设计 URL(统一资源定位符)由site、path组成,并且有其它属性信息如访问时间等。 如: 1. 设计系统存储100亿条URL信息; 2. 说明如何完成URL信息的添加、删除及修改; 3. 如何添加URL的属性信息;百度2011校园招聘笔试题一、简答1.给定两个数A、B(0A,B100000),求AB中最后三位数是多少。请简要描述你的思路。(这题我用方法比较笨,应该是做错了,唉)答:定义A,B为unsig
13、ned int,共4个字节, (A & 1) (B & 1) 剩下两位分别与 2 和42.阅读一段代码,然后有四个小问题,代码和题都很简单基础。 a)C程序中的存储区分哪几个部分?常量存储区(如常量)、全局存储区(静态变量、全局变量)、代码区、堆、栈 b)指出程序中几个变量所在的存储区。 c)使用new分配的内存如果分配失败会如何?分配失败以后将会返回一个空指针 d)关于new/delete和malloc/free的区别。要点:调用new时有三步:分配空间、调构造函数、返回指针,而malloc不调用构造函数;delete与free类似3.判断一个括号字符串是否匹配正确,如果括号有多种,怎么做?
14、如()正确,()错误。首先需要确定的一点是这个括号字符串中不能包含除括号以外的其它字符。思路:用一个map来存放各种可能的括号对,如, , ,然后用一个栈来模拟整个字符串匹配过程:顺序读取字符串各字符ch,执行以下判断:若ch不在map中,则将其压入栈;否则则将map中ch对应的值与栈顶元素进行比较,若不相同,则退出(匹配错误),若相同,则将栈顶弹出。 二、算法1.百度Spider如何在不超过抓取限额的情况下使得抓取的网页价值之和最大,要求一个最佳抓取方案。请详细描述你的算法思路(可以用伪代码),并分析时间复杂度和空间复杂度。2.仅用O(1)的空间,将整数数组按奇偶数分成2部分,数组左边是奇数
15、、右边是偶数。(要求:给出完整代码,尽量高效,简洁)答:参考快排的partition思想,时间O(n),空间O(1)。三、系统设计题 微博上,每个用户可以发送一条消息,可以follow另一个用户,当用户发送消息时,所有follow他的用户都能看见这条消息。如A follow B,则B的消息,A都能看见。 实现一个微博客消息存储系统,可以使用多台机器来满足性能要求,可以再海量的用户和消息下,快速的实现以下两种查询: a)给定一个用户,查询他发送的消息,按消息发送时间排序,新的消息在前。b)给定一个用户,查询他follow的所有人的消息,按消息发送时间排序,新的消息在前.2011年百度校园招聘技术
16、类笔试真题 新鲜出炉第一大题1.定义栈的数据结构,添加一个min函数,找到栈的最小元素。要求函数min、push、pop的时间复杂度为O(1),请简要描述思路。2.是一个读程序写结果,并判断函数功能。同时要指出程序的隐患 程序太长了,记不住了。3.分析线性表、二叉平衡树和哈希表存储数据时各自的优劣。第二大题1.一串首尾相连的珠子,共m颗。每个珠子有自己的颜色,全部颜色共有n种 (n小于等于10),从中截取一段,要求包含所有不同的颜色,长度越短越好,如何截取。详述算法思路,并分析时间和空间复杂度。2.设计strnumcmp函数,比较字符串的大小。功能为 a.当字符串中有数字时,以数字大小为准 b
17、.对于只有其中一个字符串有数字的情况,仍然沿用strcmp方式。第三大题处理一个词搭配的词典,条件为1) 字典中存在的项是两个词的搭配,例如:字典中有“今天”和“晚上”两个词,那它们组成的搭配为“今天 晚上”和“晚上 今天”2)词的集合很大,约为10万量级3)一个词并不会和其它所有词搭配,通常只会和不超过1万个词搭配4)对字典的使用读操作很多,通常为上千次请求,几乎没有写入操作。请设计一个字典服务系统,当请求为两个词的搭配时,能快速返回搭配的相关信息,使用尽可能少的资源,并计算出需要使用的机器资源。百度2011.10.16校园招聘会笔试题一、算法设计1、设rand(s,t)返回s,t之间的随机
18、小数,利用该函数在一个半径为R的圆内找随机n个点,并给出时间复杂度分析。思路:这个使用数学中的极坐标来解决,先调用s1,t1随机产生一个数r,归一化后乘以半径,得到R*(r-s1)/(t1-s1),然后在调用s2,t2随机产生一个数a,归一化后得到角度:360*(a-s2)/(t2-s2)2、为分析用户行为,系统常需存储用户的一些query,但因query非常多,故系统不能全存,设系统每天只存m个query,现设计一个算法,对用户请求的query进行随机选择m个,请给一个方案,使得每个query被抽中的概率相等,并分析之,注意:不到最后一刻,并不知用户的总请求量。思路:如果用户查询的数量小于m
19、,那么直接就存起来。如果用户查询的数量大于m,假设为m+i,那么在1-m+i之间随机产生一个数,如果选择的是前面m条查询进行存取,那么概率为m/(m+i),如果选择的是后面i条记录中的查询,那么用这个记录来替换前面m条查询记录的概率为m/(m+i)*(1-1/m)=(m-1)/(m+i),当查询记录量很大的时候,m/(m+i)= (m-1)/(m+i),所以每个query被抽中的概率是相等的。3、C+ STL中vector的相关问题:(1)、调用push_back时,其内部的内存分配是如何进行的? (2)、调用clear时,内部是如何具体实现的?若想将其内存释放,该如何操作?vector的工作
20、原理是系统预先分配一块CAPACITY大小的空间,当插入的数据超过这个空间的时候,这块空间会让某种方式扩展,但是你删除数据的时候,它却不会缩小。 vector为了防止大量分配连续内存的开销,保持一块默认的尺寸的内存,clear只是清数据了,未清内存,因为vector的capacity容量未变化,系统维护一个的默认值。有什么方法可以释放掉vector中占用的全部内存呢?标准的解决方法如下template void ClearVector( vector& vt )vector vtTemp;veTemp.swap( vt ); 事实上,vector根本就不管内存,它只是负责向内存管理框架acqu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 百度 校园 招聘 历年 笔试
限制150内