2012 百度实习生招聘 笔试试题
2014-02-26 14:12
288 查看
1、给一个单词a,如果通过交换单词中字母的顺序可以得到另外的单词b,那么b是a的兄弟单词,比如的单词army和mary互为兄弟单词。
现在要给出一种解决方案,对于用户输入的单词,根据给定的字典找出输入单词有哪些兄弟单词。请具体说明数据结构和查询流程,要求时间和空间效率尽可能地高。
答【网络】1:第一题,创建一个char
array[52](区分大小写)。初始化为0,读取一个单词,每遇到一个字母在相应位置+1。这样可以保证兄弟单词所得的字符串数组是相同的。其实当你加载字典的时候,就可以将兄弟单词放到同一个集合中。
当查询时只需要计算出单词的array字符串,找到相应集合就即可。
答【网络】2:[/b]第一题素数编码。比如将a编码为2,b为3,c为5,则由abc构成的单词,其码乘积就是2*3*5=30,这是唯一的。因此兄弟单词的码相同;这种方式必须限制单词长度,否则会出现溢出,除非采用大数计算。
最理想情况下,加载字典复杂度为O(n),查询复杂度为O(1).
2、系统中维护了若干数据项,我们对数据项的分类可以分为三级,首先我们按照一级分类方法将数据项分为A、B、C......若干类别,每个一级分类方法产生的类别又可以按照二级分类方法分为a、b、c......若干子类别,同样,二级分类方法产生的类别又可以按照是三级分类方法分为i、ii、iii......若干子类别,每个三级分类方法产生的子类别中的数据项从1开始编号。我们需要对每个数据项输出日志,日志的形式是key_value对,写入日志的时候,用户提供三级类别名称、数据项编号和日志的key,共五个key值,例如,write_log(A,a,i,1,key1),获取日志的时候,用户提供三级类别名称、数据项编号,共四个key值,返回对应的所有的key_value对,例如get_log(A,a,i,1,key1)。
请描述一种数据结构来存储这些日志,并计算出写入日志和读出日志的时间复杂度。
3、C和C++中如何动态分配和释放内存?他们的区别是什么?
算法与程序设计、
网页爬虫在抓取网页时,从指定的URL站点入口开始爬取这个站点上的所有URL
link,抓取到下一级link对应的页面后,同样对页面上的link进行抓取从而完成深度遍历。为简化问题,我们假设每个页面上至多只有一个link,如www.baidu.com/a.html链接到www.baidu.com/b.html再链到www.baidu.com/x.html,当爬虫抓取到某个页面时,有可能再链www.baidu.com/b.html,也有可能爬取到一个不带任何link的终极页面。当抓取到相同的URL或不包含任何link的终极页面,即完成爬取。爬虫在抓取到这些页面后建立一个单向链表,用来记录抓取到的页面,如:a.html->b.html->x.html...->NULL。
问:对于爬虫分别从www.baidu.com/x1.html和www.baidu.com/x2.html两个入口开始获得两个单向链表,得到这两个单向链表后,如何判断他们是否抓取到了相同的URL?(假设页面URL上百亿,存储资源有限,无法用hash方法判断是否包含相同的URL)
请先描述相应的算法,再给出相应的代码实现。(只需给出判断方法代码,无需爬虫代码)
答:
想到“算法与程序设计”题最快的方法。直接检查两条链表的结尾是否相同就可以了。
系统设计题
相信大家都使用过百度搜索框的suggestion功能,百度搜索框中的suggestion提示功能如何实现?请给出实现思路和主要的数据结构、算法。有什么优化思路可以使得时间和空间效率最高?
现在要给出一种解决方案,对于用户输入的单词,根据给定的字典找出输入单词有哪些兄弟单词。请具体说明数据结构和查询流程,要求时间和空间效率尽可能地高。
答【网络】1:第一题,创建一个char
array[52](区分大小写)。初始化为0,读取一个单词,每遇到一个字母在相应位置+1。这样可以保证兄弟单词所得的字符串数组是相同的。其实当你加载字典的时候,就可以将兄弟单词放到同一个集合中。
当查询时只需要计算出单词的array字符串,找到相应集合就即可。
答【网络】2:[/b]第一题素数编码。比如将a编码为2,b为3,c为5,则由abc构成的单词,其码乘积就是2*3*5=30,这是唯一的。因此兄弟单词的码相同;这种方式必须限制单词长度,否则会出现溢出,除非采用大数计算。
最理想情况下,加载字典复杂度为O(n),查询复杂度为O(1).
2、系统中维护了若干数据项,我们对数据项的分类可以分为三级,首先我们按照一级分类方法将数据项分为A、B、C......若干类别,每个一级分类方法产生的类别又可以按照二级分类方法分为a、b、c......若干子类别,同样,二级分类方法产生的类别又可以按照是三级分类方法分为i、ii、iii......若干子类别,每个三级分类方法产生的子类别中的数据项从1开始编号。我们需要对每个数据项输出日志,日志的形式是key_value对,写入日志的时候,用户提供三级类别名称、数据项编号和日志的key,共五个key值,例如,write_log(A,a,i,1,key1),获取日志的时候,用户提供三级类别名称、数据项编号,共四个key值,返回对应的所有的key_value对,例如get_log(A,a,i,1,key1)。
请描述一种数据结构来存储这些日志,并计算出写入日志和读出日志的时间复杂度。
3、C和C++中如何动态分配和释放内存?他们的区别是什么?
算法与程序设计、
网页爬虫在抓取网页时,从指定的URL站点入口开始爬取这个站点上的所有URL
link,抓取到下一级link对应的页面后,同样对页面上的link进行抓取从而完成深度遍历。为简化问题,我们假设每个页面上至多只有一个link,如www.baidu.com/a.html链接到www.baidu.com/b.html再链到www.baidu.com/x.html,当爬虫抓取到某个页面时,有可能再链www.baidu.com/b.html,也有可能爬取到一个不带任何link的终极页面。当抓取到相同的URL或不包含任何link的终极页面,即完成爬取。爬虫在抓取到这些页面后建立一个单向链表,用来记录抓取到的页面,如:a.html->b.html->x.html...->NULL。
问:对于爬虫分别从www.baidu.com/x1.html和www.baidu.com/x2.html两个入口开始获得两个单向链表,得到这两个单向链表后,如何判断他们是否抓取到了相同的URL?(假设页面URL上百亿,存储资源有限,无法用hash方法判断是否包含相同的URL)
请先描述相应的算法,再给出相应的代码实现。(只需给出判断方法代码,无需爬虫代码)
答:
想到“算法与程序设计”题最快的方法。直接检查两条链表的结尾是否相同就可以了。
系统设计题
相信大家都使用过百度搜索框的suggestion功能,百度搜索框中的suggestion提示功能如何实现?请给出实现思路和主要的数据结构、算法。有什么优化思路可以使得时间和空间效率最高?
相关文章推荐
- 百度2011年实习生招聘核心研发岗位笔试试题
- 百度2011年实习生招聘核心研发岗位笔试试题
- 2011百度实习生招聘笔试试题---软件测试—测试方向(BJ)
- 百度实习生招聘笔试题1
- 数据库表删除之drop table xxx (某公司实习生招聘笔试试题)
- 聊聊这个与代码优化有关的选择题 (某公司实习生招聘笔试试题)
- 2017百度实习生招聘笔试真题编程题集合
- 判断单链表是否带环(某公司实习生招聘笔试试题)
- 简单详解:x^6+4x^4+2x^3+x+1 至少要需要多少次乘法? (某公司实习生招聘笔试试题)
- 2011阿里巴巴集团实习生招聘笔试题 C&C++
- 任务调度时间 (某公司实习生招聘笔试试题)
- 2011阿里巴巴集团实习生招聘笔试题 C&C++
- 百度20150419实习生招聘笔试题-1-java
- int a1=x+y-z; int a2=x-z+y; a1和a2的值一定相等吗? (某公司实习生招聘笔试试题)
- 百度2012年春季实习生校园招聘笔试题和答案
- 2011阿里巴巴集团实习生招聘笔试题 C&C++
- 百度2015实习生招聘笔试
- 百度2011实习生招聘笔试题
- 2011阿里巴巴集团实习生招聘笔试题 C&C++ 腾讯附加题
- 百度2011实习生招聘笔试题