ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:30.35KB ,
资源ID:17141010      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17141010.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(百度笔试题及答案百度笔试题及答案Word文件下载.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

百度笔试题及答案百度笔试题及答案Word文件下载.docx

1、=-1)fileName=(index+1);elsefileName=“;catch(MalformedURLException e)return fileName;/*统计指定文件名的个数*/public void stat(String filename)Integer count=null;if(filename)!=null)count=(Integer)(filename);count=new Integer()+1);count=new Integer(1);(filename,count);/*统计的主方法*/public void start() throws FileNot

2、FoundException,IOExceptionBufferedReader bfin=new BufferedReader(new FileReader();String temp=null;while(temp=()!stat(getFileName(temp);/*输出统计结果*/public void result()Iterator it=().iterator();while() entry=()();().equals(“)?”空文件名”:() + “的个数是” + ();public static void main(String args) throws Exceptio

3、nFileNameStat fns=new FileNameStat(“);/指定成待统计文件();第二题简评:这道题也与XX的业务有关,XX现在除了搜索外,还有贴吧,知道,博客等重要产品。 同时也在积极的探索社区化,包括前不久宣布进军电子商务领域,搜索之外的这些产品,其主要功能的实现主要是对数据库的操作。 因此,想进入XX,也需要对数据库有一定的认识。 实现思路及数据库设计: 1,该论坛主要有两个实体对象,用户和帖子;对于帖子对象,有一个问题:回复的帖子是否应该跟主题帖子存放在同一个表里?考虑到每天更新10万帖子,说明帖子数比较多,为了方便主题的呈现,我一般都把主题贴和回帖分别放在不同的表中

4、,把主题贴和回帖分开可以提高查询效率(300万的访问量每天)。2,按照1中的思路,该论坛由两个对象(用户和帖子)变成三个实体对象,分别是用户,主题帖子,回复帖子;3,上述三个对象存在三个关系,分别是:用户-主题帖,一个用户可以发0个或多个帖子,一个帖子对应一个用户(一对多关系),主题帖-回复帖:一个主题有0个或多个回复帖子,一个回复帖子对应一个主题(一对多关系);用户-回复贴:一个用户可以回0个或多个帖,一个帖子对应一个用户(一对多关系)。还存在对回复贴的回复,这个考虑用fatherId来表示。4,由于三个关系 “用户-主题帖,主题帖-回复帖,用户-回复贴” 都是一对多关系,根据表设计一般原则

5、,可以将这两个关系独立建立表,也可以不另外建表而将一对多的关系体现在实体表中;然而,表间的连接查询是非常耗资源的,所以应尽量减少表间连接,那么对三个关系不应该分别建表,而是把用户的id作为主题表和回帖表的外键,把主题贴id作为回帖表的外键。5,鉴于以上考虑,该论坛的三个表如下所示表名:t_user_info (用户信息表)字段名 类型 缺省值 中文含义 约束 备注id Int用户编号 PRI Auto_incrementName Varchar(30) 用户名Email Varchar(50)Phone Varchar(30)Addr Varchar(200)其他字段略,根据需要添加 表名:m

6、ain_content_info (主题帖信息表)id Int贴编号 PRI Auto_incrementTitle Varchar(200)发帖标题Content Text发帖容UserID Int 用户编号外键其他字段略,根据需要添加sub_content_info (回复贴信息表)UserID Int用户编号外键FatherID Int父编号MainID Int主题帖编号外键6,符合式分析:上述表中每个字段不可再分,首先满足1NF;然后数据库表中的每个实例或行都是可以被惟一地区分(id),不存在部分依赖,因此满足2NF;t_user_info (用户信息表)和main_content_i

7、nfo (主题帖信息表)不存在任何传递依赖,至少属于BCNF;但是sub_content_info (回复贴信息表)不满足3NF,因为存在如下传递依赖:id-FatherID,FatherID-MainID。式并不是越高越好,sub_content_info表只满足2NF却更有效率,也是当今论坛较主流的设计。第三题如何对海量数据进行快速检索,这是搜索引擎的必需考虑的问题。这又涉及到数据结构和算法。 因此,要想进入XX,就必须熟悉一些基本的算法和数据结构。 思路及解决方案如下:1: 设计用TRIE树实现关键词到其对应id的快速词典查找TRIE树的每一个节点为一个包含256个元素的数组,同时指针指

8、向其下一级节点节点定义如下:struct trienodeint id;struct trienode *child;TRIENODE;如果TRIE树的某个节点的指针为NULL,说明从跟节点到当前节点的路径构成文件B中的一个关键词,在其节点的id保存该关键词的id;如果指针不为NULL,则id对应为0或者一个无穷大的整数,标志从根节点到当前节点的路径不是一个完整的关键词。将关键词转化为二进制无符号char型数组,即对于汉字等双字节字符视为两个无符号char型整数,每个元素的取值围在0到255之间。2:生成文件b的TRIE树步骤1:依次读取文件b的每一行,对每一行执行步骤2到步骤5步骤2:读取关

9、键词id和关键词,令为key步骤3:依次读取key的每一个字符,对每一个字符,执行步骤4;步骤4:如果该字符对应的指针为NULL,则创建其儿子节点;步骤5:为当前节点的对应字符id置为关键词id3:根据A文件生成C文件依次读取文件A的每一行,对每一行执行步骤2到步骤5分别获取当前行关键词、ip地址和时间令关键词key=c1c2.cm,对c1到cm每个字符,执行步骤4获取根节点的第c1个元素指针,转移到节点node1,根据node1的第c2个元素指针,转移到node2.根据nodem的第cm个元素,获取关键词的id往文件c中写入一行数据,格式为关键词的id、ip地址和时间生成文件B的TRIE树过

10、程时间复杂度为O(n*m),其中n为文件b行数,m为文件b关键词的最大长度。TRIE的空间复杂度为O(n*m),n和m含义同上,但由于实际应用中关键词之间可能会有很多前缀相同现象,所以实际耗费空间并不会很高。生成C文件的时间复杂度同样为O(n*m),n为文件a行数,m为文件a关键词的最大长度,因为有了TRIE树之后,给定一个关键词获得其id的时间复杂度为关键词长度。生成C文件的过程除了TRIE树空间外基本不需要太多额外的空间,空间复杂度为O(1),由于系统有1G的可用存,TRIE占用的空间在几十兆到200M之间(与关键词集合有关),因此本方法完全可行。更多面试题,XX网上笔试题及答案编程: 1

11、 编程: 用 C 语言实现一个 revert 函数,它的功能是将输入的字符串在原串上倒序 后返回。 编程: 2 编程: 用 C 语言实现函数 void * memmove(void *dest,const void *src,size_t n)。memmove 函数的功能是拷贝 src 所指的存容前 n 个字节到 dest 所指的 地址上。 英文拼写纠错: 3 英文拼写纠错: 在用户输入英文单词时,经常发生错误,我们需要对其进行纠错。假设已 经有一个包含了正确英文单词的词典,请你设计一个拼写纠错的程序。 请描述你解决这个问题的思路; 请给出主要的处理流程,算法,以及算法的复杂度; 请描述可能的

12、改进。 寻找热门查询: 4 寻找热门查询 搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来, 每个查询串的长度为 1-255 字节。假设目前有一千万个记录,这些查询串的重 复度比较高,虽然总数是 1 千万,但如果除去重复后,不超过 3 百万个。一个 查询串的重复度越高,说明查询它的用户越多,也就是越热门。请你统计最热 门的 10 个查询串,要求使用的存不能超过 1G。 请给出主要的处理流程,算法,以及算法的复杂度。 集合合并: 5 集合合并 给定一个字符串的集合,格式如: aaa bbb ccc, bbb ddd,eee fff,ggg,ddd hhh 要求将其中交集不为空的集合

13、合并,要求合并完成后 的集合之间无交集,例如上例应输出 aaa bbb ccc ddd hhh,eee fff, ggg 请描述你解决这个问题的思路; 请给出主要的处理流程,算法,以及算法的复杂度 请描述可能的改进。/ 1 题 char *revert(char * str) int n=strlen(str); int i=0; char c; for(i=0;i c=str; str=str; str=c; return str; / 2 题 void * memmove(void *dest,const void *src,size_t n) assert(dest!=0)&(src!=

14、0); char * temp=(char * )dest; char * ss=(char * )src; for(;i *temp =*ss ; return temp; / 3 题 (1)思路: 字典以字母键树组织,在用户输入同时匹配 (2) 流程: 每输入一个字母: 沿字典树向下一层, a)若可以顺利下行,则继续至结束,给出结果; b)若该处不能匹配,纠错处理,给出拼写建议,继续至 a);算法: 1.在字典中查找单词 1.在字典中查找单词 字典采用 27 叉树组织,每个节点对应一个字母,查找就是一个字母 一个字母匹配.算法时间就是单词的长度 k. 2.纠错算法 2.纠错算法 情况:当输

15、入的最后一个字母不能匹配时就提示出错,简化出错处理,动态提示 可能 处理方法: (a)当前字母前缺少了一个字母:搜索树上两层到当前的匹配作为建议; (b)当前字母拼写错误:当前字母的键盘相邻作为提示; 根据分析字典特征和用户单词已输入部分选择(a),(b)处理 复杂性分析:影响算法的效率主要是字典的实现与纠错处理 (a)字典的实现已有成熟的算法,改进不大,也不会成为瓶颈; (b)纠错策略要简单有效 ,如前述情况,是线性复杂度; (3)改进 (3)改进 策略选择最是重要,可以采用统计学习的方法改进。 / 4 题 (1)思路 (1)思路:用哈希做 思路 (2) 首先逐次读入查询串,算哈希值,保存在

16、存数组中,同时统计频度 选出前十的频度,取出对应的日 志串,简单不过了。哈希的设计是关键。 / 5 题 思路:先将集合按照大小排列后,优先考虑小的集合是否与大的集合有交 思路 集。有就合并,如果小集合与所有其他集合都没有交集,则独立。独立的集合 在下一轮的比较中不用考虑。这样就可以尽量减少字符串的比较次数。当所有 集合都独立的时候,就终止。处理流程: 处理流程: 1.将集合按照大小排序,组成集合合并待处理列表 2.选择最小的集合,找出与之有交集的集合,如果有,合并之;如果无,则与 其它集合是独立集合,从待处理列表 中删除。 3.重复直到待处理列表为空 算法: 算法: 1。将集合按照大小从小到大

17、排序,组成待处理的集合列表。 2。取出待 处理集合列表中最小的集合,对于集合的每个元素,依次在其他集合中搜索是 否有此元素存在: 1若存在,则将此小集合与大集合合并,并根据大小插入对应的位置 。转 3。 2若不存在,则在该集合中取下一个元素。如果无下一个元素,即所有元素都 不存在于其他集合。则表明此集合独立,从待处理集合列表中删除。并加入结 果集合列表。 3。如果待处理集合列表不为空,转 2。 如果待处理集合列表为空,成功退出,则结果集合列表就是最终的输出。 算法复杂度分析: 假设集合的个数为 n,最大的集合元素为 m 排序的时间复杂度可以达到 n*log(n) 然后对于元素在其他集合中查找,

18、最坏情况下为*m 查找一个 集合是否与其他集合有交集的最坏情况是 m*m*(n-1) 合并的时间复杂度不会超 过查找集合有交集的最坏情况。所以最终最坏时间复杂度为 O(m*m*n*n) 需要说明的是:此算法的平均时间复杂度会很低,因为无论是查找还是合 需要说明的是 并,都是处于最坏情况的概率很小,而且排序后优先用最小集合作为判断是否 独立的对象,优先与最大的集合进行比较,这些都最大的回避了最坏情况。 (3)可能的改进: 可能的改进 首先可以实现将每个集合里面的字符串按照字典序进行排列,这样就可以 将查找以及合并的效率增高。另外,可能采取恰当的数据结构也可以将查找以 及合并等操作的效率得到提高。

19、XX11月4日网上笔试题及答案(仅供参考)XX11月4日网上笔试题及答案 1用C语言实现一个revert函数,它的功能是将输入的字符串在原串上倒序后返回。2 编程:用C语言实现函数void * memmove(void *dest,const void *src,size_t n)。memmove函数的功能是拷贝src所指的存容前n个字节到dest所指的地址上。3 英文拼写纠错:在用户输入英文单词时,经常发生错误,我们需要对其进行纠错。假设已经有一个包含了正确英文单词的词典,请你设计一个拼写纠错的程序。请描述你解决这个问题的思路;请给出主要的处理流程,算法,以及算法的复杂度;请描述可能的改进。

20、4 寻找热门查询:搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节。假设目前有一千万个记录,这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个。一个查询串的重复度越高,说明查询它的用户越多,也就是越热门。请你统计最热门的10个查询串,要求使用的存不能超过1G。请给出主要的处理流程,算法,以及算法的复杂度。5 集合合并:给定一个字符串的集合,格式如:aaa bbb ccc, bbb ddd,eee fff,ggg,ddd hhh要求将其中交集不为空的集合合并,要求合并完成后的集合之间无交集,例如上例应输出aaa bbb c

21、cc ddd hhh,eee fff, ggg请给出主要的处理流程,算法,以及算法的复杂度/11 题char *revert(char * str)int n=strlen(str);int i=0;char c;for(i=0;i c=str;str=str;str=c;return str;/2 题void * memmove(void *dest,const void *src,size_t n)assert(dest!char * temp=(char * )dest;char * ss=(char * )src;for(;*temp+=*ss+;return temp;/3 题(1)

22、思路 :字典以字母键树组织,在用户输入同时匹配(2)流程:每输入一个字母:沿字典树向下一层,a)若可以顺利下行,则继续至结束,给出结果;b)若该处不能匹配,纠错处理,给出拼写建议,继续至a);1.在字典中查找单词字典采用27叉树组织,每个节点对应一个字母,查找就是一个字母一个字母匹配.算法时间就是单词的长度k.2.纠错算法情况:当输入的最后一个字母不能匹配时就提示出错,简化出错处理,动态提示可能 处理方法:(a)当前字母前缺少了一个字母:(b)当前字母拼写错误:根据分析字典特征和用户单词已输入部分选择(a),(b)处理复杂性分析:影响算法的效率主要是字典的实现与纠错处理字典的实现已有成熟的算法

23、,改进不大,也不会成为瓶颈;(b)纠错策略要简单有效 ,如前述情况,是线性复杂度;(3)改进策略选择最是重要,可以采用统计学习的方法改进。/4 题(1)思路:用哈希做首先逐次读入查询串,算哈希值,保存在存数组中,同时统计频度选出前十的频度,取出对应的日志串,简单不过了。/5 题思路:先将集合按照大小排列后,优先考虑小的集合是否与大的集合有交集。有就合并,如果小集合与所有其他集合都没有交集,则独立。独立的集合在下一轮的比较中不用考虑。当所有集合都独立的时候,就终止。1.将集合按照大小排序,组成集合合并待处理列表2.选择最小的集合,找出与之有交集的集合,如果有,合并之;如果无,则与其它集合是独立集

24、合,从待处理列表 中删除。3.重复直到待处理列表为空算法:1。2。取出待处理集合列表中最小的集合,对于集合的每个元素,依次在其他集合中搜索是否有此元素存在:1转32如果无下一个元素,即所有元素都不存在于其他集合。并加入结果集合列表。转3。3。如果待处理集合列表不为空,转2。如果待处理集合列表为空,成功退出,则结果集合列表就是最终的输出。算法复杂度分析:假设集合的个数为n,最大的集合元素为m排序的时间复杂度可以达到n*log(n)然后对于元素在其他集合中查找,最坏情况下为*m查找一个集合是否与其他集合有交集的最坏情况是m*m*(n-1)合并的时间复杂度不会超过查找集合有交集的最坏情况。所以最终最坏时间复杂度为O(m*m*n*n)需要说明的是:此算法的平均时间复杂度会很低,因为无论是查找还是合并,都是处于最坏情况的概率很小,而且排序后优先用最小集合作为判断是否独立的对象,优先与最大的集合进行比较,这些都最大的回避了最坏情况。(3)可能的改进:首先可以实现将每个集合里面的字符串按照字典

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1