百度网上笔试题及答案

百度网上笔试题及答案【仅供参考】 百度网上笔试题及答案【仅供参考】编程: 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.在字典中查找单词 1.在字典中查找单词 字典采用 27 叉树组织,每个节点对应一个字母,查找就是一个字母 一个字母匹配.算法时间就是单词的长度 k. 2.纠错算法 2.纠错算法 情况:当输入的最后一个字母不能匹配时就提示出错,简化出错处理,动态提示 可能 处理方法: (a)当前字母前缺少了一个字母:搜索树上两层到当前的匹配作为建议; (b)当前字母拼写错误:当前字母的键盘相邻作为提示;(只是简单的描述,可 以有更多的) 根据分析字典特征和用户单词已输入部分选择(a),(b)处理 复杂性分析:影响算法的效率主要是字典的实现与纠错处理 (a)字典的实现已有成熟的算法,改进不大,也不会成为瓶颈; (b)纠错策略要简单有效 ,如前述情况,是线性复杂度; (3)改进 (3)改进 策略选择最是重要,可以采用统计学习的方法改进。 ////////////////////////////////////////////// 4 题 (1)思路 (1)思路:用哈希做 思路 (2) 首先逐次读入查询串,算哈希值,保存在内存数组中,同时统计频度(注 意值与日志项对应关系) my.chinahrlab.com 选出前十的频度,取出对应的日 志串,简单不过了。哈希的设计是关键。 ////////////////////////////////////////////////// 5 题 (1)思路:先将集合按照大小排列后,优先考虑小的集合是否与大的集合有交 思路 集。有就合并,如果小集合与所有其他集合都没有交集,则独立。独立的集合 在下一轮的比较中不用考虑。这样就可以尽量减少字符串的比较次数。当所有 集合都独立的时候,就终止。(2)处理流程: 处理流程: 1.将集合按照大小排序,组成集合合并待处理列表 2.选择最小的集合,找出与之有交集的集合,如果有,合并之;如果无,则与 其它集合是独立集合,从待处理列表 中删除。 3.重复直到待处理列表为空 算法: 算法: 1。将集合按照大小从小到大排序,组成待处理的集合列表。 2。取出待 处理集合列表中最小的集合,对于集合的每个元素,依次在其他集合中搜索是 否有此元素存在: 1>若存在,则将此小集合与大集合合并,并根据大小插入对应的位置 。转 3。 2>若不存在,则在该集合中取下一个元素。如果无下一个元素,即所有元素都 不存在于其他集合。则表明此集合独立,从待处理集合列表中删除。并加入结 果集合列表。转 3。 3。如果待处理集合列表不为空,转 2。 如果待处理集合列表为空,成功退出,则结果集合列表就是最终的输出。 算法复杂度分析: 算法复杂度分析: 假设集合的个数为 n,最大的集合元素为 m 排序的时间复杂度可以达到 n*log(n) 然后对于元素在其他集合中查找,最坏情况下为(n-1)*m 查找一个 集合是否与其他集合有交集的最坏情况是 m*m*(n-1) 合并的时间复杂度不会超 过查找集合有交集的最坏情况。所以最终最坏时间复杂度为 O(m*m*n*n) 需要说明的是:此算法的平均时间复杂度会很低,因为无论是查找还是合 需要说明的是 并,都是处于最坏情况的概率很小,而且排序后优先用最小集合作为判断是否 独立的对象,优先与最大的集合进行比较,这些都最大的回避了最坏情况。 (3)可能的改进: (3)可能的改进: 可能的改进 首先可以实现将每个集合里面的字符串按照字典序进行排列,这样就可以 将查找以及合并的效率增高。另外,可能采取恰当的数据结构也可以将查找以 及合并等操作的效率得到提高。

百度网上笔试题及答案【仅供参考】 百度网上笔试题及答案【仅供参考】编程: 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.在字典中查找单词 1.在字典中查找单词 字典采用 27 叉树组织,每个节点对应一个字母,查找就是一个字母 一个字母匹配.算法时间就是单词的长度 k. 2.纠错算法 2.纠错算法 情况:当输入的最后一个字母不能匹配时就提示出错,简化出错处理,动态提示 可能 处理方法: (a)当前字母前缺少了一个字母:搜索树上两层到当前的匹配作为建议; (b)当前字母拼写错误:当前字母的键盘相邻作为提示;(只是简单的描述,可 以有更多的) 根据分析字典特征和用户单词已输入部分选择(a),(b)处理 复杂性分析:影响算法的效率主要是字典的实现与纠错处理 (a)字典的实现已有成熟的算法,改进不大,也不会成为瓶颈; (b)纠错策略要简单有效 ,如前述情况,是线性复杂度; (3)改进 (3)改进 策略选择最是重要,可以采用统计学习的方法改进。 ////////////////////////////////////////////// 4 题 (1)思路 (1)思路:用哈希做 思路 (2) 首先逐次读入查询串,算哈希值,保存在内存数组中,同时统计频度(注 意值与日志项对应关系) my.chinahrlab.com 选出前十的频度,取出对应的日 志串,简单不过了。哈希的设计是关键。 ////////////////////////////////////////////////// 5 题 (1)思路:先将集合按照大小排列后,优先考虑小的集合是否与大的集合有交 思路 集。有就合并,如果小集合与所有其他集合都没有交集,则独立。独立的集合 在下一轮的比较中不用考虑。这样就可以尽量减少字符串的比较次数。当所有 集合都独立的时候,就终止。(2)处理流程: 处理流程: 1.将集合按照大小排序,组成集合合并待处理列表 2.选择最小的集合,找出与之有交集的集合,如果有,合并之;如果无,则与 其它集合是独立集合,从待处理列表 中删除。 3.重复直到待处理列表为空 算法: 算法: 1。将集合按照大小从小到大排序,组成待处理的集合列表。 2。取出待 处理集合列表中最小的集合,对于集合的每个元素,依次在其他集合中搜索是 否有此元素存在: 1>若存在,则将此小集合与大集合合并,并根据大小插入对应的位置 。转 3。 2>若不存在,则在该集合中取下一个元素。如果无下一个元素,即所有元素都 不存在于其他集合。则表明此集合独立,从待处理集合列表中删除。并加入结 果集合列表。转 3。 3。如果待处理集合列表不为空,转 2。 如果待处理集合列表为空,成功退出,则结果集合列表就是最终的输出。 算法复杂度分析: 算法复杂度分析: 假设集合的个数为 n,最大的集合元素为 m 排序的时间复杂度可以达到 n*log(n) 然后对于元素在其他集合中查找,最坏情况下为(n-1)*m 查找一个 集合是否与其他集合有交集的最坏情况是 m*m*(n-1) 合并的时间复杂度不会超 过查找集合有交集的最坏情况。所以最终最坏时间复杂度为 O(m*m*n*n) 需要说明的是:此算法的平均时间复杂度会很低,因为无论是查找还是合 需要说明的是 并,都是处于最坏情况的概率很小,而且排序后优先用最小集合作为判断是否 独立的对象,优先与最大的集合进行比较,这些都最大的回避了最坏情况。 (3)可能的改进: (3)可能的改进: 可能的改进 首先可以实现将每个集合里面的字符串按照字典序进行排列,这样就可以 将查找以及合并的效率增高。另外,可能采取恰当的数据结构也可以将查找以 及合并等操作的效率得到提高。


相关内容

  • 远程学习方法试题
  • 远程学习方法 试题 选择题: 1.人们在网络中可以完全不受时间.地域和资格等的限制而自由地学习,这体现了网络学习的( A ). A.开放性 B.虚拟性 C.交互性 D.自主性 2.断电后,会使存储的数据丢失的存储器是( A ). A.RAM B.硬盘 C.ROM D.软件 3.计算机软件一般分为系统 ...

  • 高中信息技术考试题8
  • 2006广东省普通高中信息技术考试(必修) 满分:100分 本卷分为第一卷和第二卷两部分.第一卷为客观题,含单选题和判断题,其中单选题30小题,共60.0分:判断题10小题,共10.0分.第二卷为操作题,共2题,第1题10.0分,第2题20.0分,共30.00分. 学校: 一.单选题 1.(2分)图 ...

  • 信息检索考试试题加答案
  • 1(D)是高校或科研机构的毕业生为获取学位而撰写的.(单选2分) A.科技报告B.政府出版物C.档案文献 D.学位论文 2对于企业来说,以下哪一项检索对其作用最大?(C)(单选2分) A.会议论文的检索B.学位论文的检索C.专利.商标信息的检索 D.研究论文的检索 3以下哪一个是Google指定文件 ...

  • 网络推广测试题
  • 单项选择题: 1.跟天涯属于同类型的网站是:(C) A.新浪 B.优酷 C.猫扑 D.赶集 2.以下网站属于站长论坛的是:(B) A.5173 B.A5 C.163 D.PLU 3.在发微博中用来提醒好友的符号是(A) A.@ B.$ C.& D.# 4.新浪博客每天可写多少篇日志(D) A ...

  • 1四年级计算机测试题
  • 1.Windows 的桌面是指(). A. 整个屏幕 B. 全部窗口 C. 某个窗口 D. 活动窗口 2.在智能ABC 的中文标点状态下,输入省略号(--)的正确方法是( ) A .按"\"键 B .按Shift +6键 C .按Shift +7键 D .按"/&quo ...

  • 渤海银行笔试试题
  • 渤海银行笔试试题与备考经历 [此帖已被设为精华] 今天(2009.5.27)刚参加完渤海的笔试,抢个新鲜把经验给大家分享一下. 渤海银行今年笔试是由考试公司承包所有考试过程,出题,监考,阅卷,据说全程银行人员不碰试卷.但考试时有人力资源部的老师协助. 题型种类很多,全部是选择题,分三部分: (一)6 ...

  • 网络信息检索与利用
  • I.课程性质与设置目的要求 <网络信息资源开发>课程是我省高等教育自学考试信息管理与信息系统专业(独立本科段)的必修课,该课程是信息管理专业课程体系中的基础课程之一. <网络信息资源开发>课程是一门非常实用的课程.21世纪为信息社会,信息资源是一种战略资源,是现代社会生产力的 ...

  • 病句及答案
  • 高一病句复习资料 1.(2013·高考浙江卷)下列各句中,没有语病的一项是( ) A.这部由第六代导演执导的青春片带有鲜明的时代印记,表现了主人公拒绝平庸.坚守梦想的成长故事,具有极强的感染力,深深地打动了观众. B.瑞典和芬兰研究人员最近发现某些癌症存在"基因开关",这一成果有 ...

  • 2005"百度之星"程序设计大赛网上决赛试题
  • 2005"百度之星"程序设计大赛网上决赛试题 第一题(共两题100分)站点统计(50分) 题目描述: 一个Internet站点集合,可以用如下的方式来描述站点和站点之间的链接引用关系: s 1 2 3 4 1 / 4 0 3 2 3 / 4 5 3 2 2 / 2 4 6 1 4 ...