设为首页 加入收藏

TOP

2008-10-10阿里巴巴笔试记(一)
2014-11-23 22:07:00 来源: 作者: 【 】 浏览:20
Tags:2008-10-10 阿里巴巴 笔试

C++:1.关于DOM的描述;2.网络蜘蛛系统;3.UTF-8;4.数据库检索:查准率和查全率;5.索引压缩;6.设计cralwer;7.Trie树查询;8.HTML&HTTP协议;9.信息检索模型;10.分布式通信协议;11.分布式搜索引擎;12.双向循环链表;13.快速排序;14.32位系统。


1. 关于DOM的描述:
javascrip里面的dom(文档对象模型)它是一种模型,将格式化文档对象化处理。在xml和html 的处理中广泛应用。 //dom是定义超文本结构的对象及方法,分层次的,有容器类的对象,也有基本元素对象,而这些对象,都包含有相应的属性和对应的操作方法(接口)。
//一般而言,DOM结构准确地反映了HTML文档所包含的内容,也就是说,每个HTML标记表现为一个标记节点(tag node),每个文本项内容表现为一个文本项节点(text node)。//是W3C组织推荐的处理可扩展置标语言的标准编程接口。
2. 网络蜘蛛系统
网络蜘蛛即Web Spider,是一个很形象的名字。把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的链接地址来寻找网页,从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。如果把整个互联网当成一个网站,那么网络蜘蛛就可以用这个原理把互联网上所有的网页都抓取下来。
对于搜索引擎来说,要抓取互联网上所有的网页几乎是不可能的,从目前公布的数据来看,容量最大的搜索引擎也不过是抓取了整个网页数量的百分之四十左右。这其中的原因一方面是抓取技术的瓶颈,无法遍历所有的网页,有许多网页无法从其它网页的链接中找到;另一个原因是存储技术和处理技术的问题,
在抓取网页的时候,网络蜘蛛一般有两种策略:广度优先和深度优先(如下图所示)。广度优先是指网络蜘蛛会先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网页,继续抓取在此网页中链接的所有网页。这是最常用的方式,因为这个方法可以让网络蜘蛛并行处理,提高其抓取速度。深度优先是指网络蜘蛛会从起始页开始,一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接。这个方法有个优点是网络蜘蛛在设计的时候比较容易。两种策略的区别,下图的说明会更加明确。
在网络蜘蛛机器人系统里面,真正起指挥作用的是人工管理系统制定的规则和检索索引数据库。它可以决定什么样的网站抓的勤一点,或者干脆不抓.
3. UTF-8
使用UTF-8编码唯一的好处是,国外的用户如果使用Windows XP英文版,浏览UTF-8编码的任何网页,无论是中文、还是日文、韩文、阿拉伯文,都可以正常显示,UTF-8是世界通用的语言编码,UTF-8的推广要归功于Google的应用,以及Blog开发者。而如果用Windows XP英文版的IE6.0浏览gb2312语言编码的网页,则会提示是否安装语言包。因此,可能会失去很多的国外浏览者。 使用gb2312编码的好处是,因为程序产生的网页文本使用ANSI编码格式,会比UTF-8文本编码节省一些体积,访问速度会稍微快一点点,大约是30:38的比例,也就是30K的ANSI编码,转为UTF-8编码是38K,当然,这个比例并不准确,是会随Unicode字符集区域的不同而变化的。
UTF-8(8 位元 Universal Character Set/Unicode Transformation Format)是针对Unicode 的一种可变长度字符编码。它可以用来表示 Unicode 标准中的任何字符,而且其编码中的第一个字节仍与 ASCII 相容,使得原来处理 ASCII 字符的软件无需或只作少部份修改后,便可继续使用。因此,它逐渐成为电子邮件、网页及其他储存或传送文字的应用中,优先采用的编码。 UTF-8 编码提供了一种简便而向后兼容的方法, 使得那种完全围绕 ASCII 设计的操作系统, 比如 Unix, 也可以使用 Unicode. UTF-8. UTF_8字符集
UTF-8是UNICODE的一种变长字符编码,由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到6个字节编码UNICODE字符。如果UNICODE字符由2个字节表示,则编码成UTF-8很可能需要3个字节,而如果UNICODE字符由4个字节表示,则编码成UTF-8可能需要6个字节。用4个或6个字节去编码一个UNICODE字符可能太多了,但很少会遇到那样的UNICODE字符


4.数据库检索:查准率和查全率;
查全率与查准率是评价检索效果的两项重要指标。
查全率是指系统在进行某一检索时,检出的相关文献量与系统文献库中相关文献总量的比率,它反映该系统文献库中实有的相关文献量在多大程度上被检索出来。
查全率=[检出相关文献量/文献库内相关文献总量]×100%
查准率是指系统在进行某一检索时,检出的相关文献量与检出文献总量的比率,它反映每次从该系统文献库中实际检出的全部文献中有多少是相关的。
查准率=[检出相关文献量/检出文献总量]×100%
通过对查准率和查全率的概念分析,得到了定性的结论:查全率依赖于查准率,查准率的提高有利于查全率的提高。通过对两者间关系的数学推导,得到了查准率和查全率之间一般性的定量关系。
5.索引压缩
建立索引是搜索引擎核心技术之一,建立索引的目的是能够快速的响应用户的查询。搜索引擎最常用的索引数据结构是倒排文档,倒排文档的原理其实相当简单。为什么要进行索引压缩?对索引进行压缩有很多好处:比如可以减少索引占用的磁盘空间和内存;比如可以减少I/O读写量; 比如可以查询响应速度加快;为了能够增加压缩效果,一般在进行压缩前先改写索引内容,首先把倒排索引的数值按照大小排序,然后用差值而非实际值表示(d-gap);这个是每个压缩算法开展前要做的工作;目前的压缩方法可以分为固定长度的和变长压缩。
具体说是将索引编码(落实到机器中应该是MD5哈希值)以一种压缩的方式来表示,既利于节省存储空间,又可以提高检索速度。其实,我觉得这个东西最大的好处还是节约“缓存空间”,提高访问速度。采用索引压缩能够带来很多好处,所以实用的搜索引擎都会采用索引压缩技术,但是对索引进行压缩也会带来问题,就是比不压缩需要更多的计算量.
6.设计cralwer
搜索引擎的工作整体上可分为三个部分,在第一阶段,Crawler开始“爬行”页面,获取最原始信息,Crawler是一段小程序,它通过初始地址,访问页面,分析出页面内部包括的链接,将链接传送给Crawler控制模块,Crawler控制模块判断哪些链接对应的页面是下一步需要访问的,哪一些是已经被访问过的,从而指示Crawler进行下一步“爬行”;另一方面,Crawler将获取到的Web页面传送到页面数据存储库(Page Repository)中,临时存储起来。第二阶段,索引器将库中存储的页面进行解析,根据索引构建原则创建索引,并将索引存储到索引库中,另外,在一些基于页面链接对页面进行排名的搜索引擎系统中,链接分析与页面排名的确定也在这个阶段完成。第三阶段,检索引擎处理用户的搜索请求,找出相关页面文档,并根据页面排名高低,按顺序将结果返回给用户。

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇分享同事Abel Shen写的面试指导PP.. 下一篇百度2010非技术类笔试

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: