算法是百度工程师的利器

算法是百度工程师的利器
2007年05月20日 星期日 17:47

“工欲善其事,必先利其器”,对于百度工程师来说,算法就是他们解决难题的利器。
为什么这么说?因为百度搜索引擎研发的各个环节都离不开算法。我们需要快速,准确、实用、创新和不断改进的算法来满足用户的需求。
百度面对的是海量的互联网数据,以及每天上亿次的检索请求。它要求百度能够收录和索引超过10亿的中文网页,并提供快速的检索服务。这只有高效率的算法才能完成。
百度招聘的工程师在加入公司后,有一道入门练习题,就是编写一个数据扫描分析程序,要求写出的程序能在1分钟之内扫描分析完千万量级的数据,才算及格。高水平的程序员可以利用高效的算法在10秒以内解决问题,甚至只要六七秒。但如果没用对算法,花一星期的时间,也做不到1分钟之内。
大家可以设想一下,百度有十亿以上的网页,如果要在一周甚至三天内处理一遍,平均每秒处理要多少个?每天1亿次的检索又意味着峰值时每秒要处理多少次检索?事实上,针对一个问题,我们可以想出很多的算法,但如果效率不高,是无法真正投入使用的。
Web搜索引擎是一个很新的研究领域,因为从它诞生到现在不过10年左右的时间。学术界IR(Information Retrieval)领域的研究为搜索引擎提供了不少算法方面的理论基础模型,但这些理论距构建一个好的Web搜索引擎还有很大一段距离。这需要我们探索和开发很多新的算法及系统。实际上,百度搜索引擎中的很多算法都极具创新性,而且都是基于实际应用的需求。这是和学术界研究工作的一个较大差异。学术界的算法研究主要是为了解决某个学术方面的问题,不是太关注实用性,以及效率。
举个例子来说,在传统的中文分词算法研究中,学术界最关注的是能达到多高的准确率,但对算法的运行速度上考虑的相对较少。可在百度,如果使用的分词算法速度太慢,就根本无法应用。此外,百度面对的是Web上的大量数据,大部分传统的IR算法都会遇到信息爆炸的问题,我们需要想出很多新的方法来解决这些问题。这对我们的工程师的算法提出了很高的要求。
Web上的数据是不断变化的,用户的检索需求也是不断变化的。百度就是要在这不断变化的两者之间需找一个最佳匹配。所以百度的算法需要持续的进行改进,以迅速适应这些变化。比如对搜索引擎来说有一个方面的技术很重要,就是判断一个网站是否在作弊的方法。由于那些针对搜索引擎作弊的人,如果能提高搜索引擎排名,将获得巨大的经济利益,所以他们会不断使用各种方法去猜测百度算法中潜在的漏洞,进行攻击。这是一个很复杂的问题,而且仍在不断发展变化中。这就要求我们能够迅速的发现这类问题,提出算法,并应用到百度搜索引擎中。在最短时间内消灭问题。否则作弊行为很快就会泛滥成灾。
在百度,算法的应用是融入到研发部门每个人的工作中的。在这里,不是经理告诉工程师做什么,怎么做,用什么算法,而是需要工程师自己在某个领域去发现问题,提出算法,评估效果,并不断改进。这要求每个工程师在算法上的基本功很强,并能灵活的加以应用,以解决实际问题。现在,百度有不少的程序员,他们大部分的时间是用在发现问题,分析问题,思考解决问题的方法上。实际编写代码所花的时间并不多。
有不少人觉得,现在的搜索引擎已经足够好了,算法上没有太多改进余地了。我不赞成这个观点。虽然每次CNNIC互联网用户调查的数据显示,超过90%的人对搜索引擎提供的服务表示满意,但是第一次搜索就能找到满意结果的用户只有50%左右,很多用户都是在多次更换关键词之后才搜索到自己想要的结果。这说明我们还有巨大的改进空间。让所有用户能在第一时间找到他们想要的信息,是我们的最终目标。
可以说,搜索引擎开发中使用的基本算法大部分都在大学课程中涵盖了。对于一个人来说,在学校学习过这个算法,和能够灵活运用是两个概念。只有通过参与较多的项目开发和程序编写,将算法和应用相结合,才能在这方面得到较好的发展。
对于算法学习,我的建议还是多思考,多做项目和程序。在做的过程中肯定会遇到一些问题,这是正常的。好的程序员善于从问题和失败中学到东西,举一反三,设法避免以后出现同样或类似的错误。另外,还要善于从别人身上学习,有意识的进行思考和总结,这是比较有效的。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++笔试题 Sony笔试题 几道题目及自做答案 北电 普天C++笔试题 我所收集的intel比试题 面试题 2005年腾讯招聘 微软 微软亚洲技术支持中心面试题目 微创笔试题目(微创,微软在中国的合资公司) Intel笔试面试题目 IBM 社会招聘笔试题 宝洁公司(P&G)面试题目 飞利浦笔试试题 阿尔卡特(中国)的面试题目 Google 戴尔 意法半导体软件试题 Sony笔试题 华为笔试题 华为 华为全套完整试题 慧通 华为面试题 大唐电信 大唐面试试题 网通笔试题 东信笔试题目 中软融鑫笔试题 Delphi笔试题目 EE笔试试题 软件笔试题 Hongkong Bank笔试题 A.T. Keaney笔试题 Shell company笔试题 KPMG笔试题 香港电信笔试题 LORAL的笔试题 维尔VERITAS软件笔试题 百威啤酒(武汉公司) 星巴克 凹凸电子软件笔试题 友立资讯笔试题目 Avant! 微电子EE笔试题 德勤笔试题 扬智(科技)笔试题目 高通笔试题 威盛笔试试题 2003 EE笔试题目 2003 Graphic笔试题目 汉王笔试题 北京信威通信技术股份有限公司面试题 中国国际金融有限公司CICC笔试题 国泰君安笔试题 广东北电面试题目 广州本田笔试题 明基面试问题 网易 广州日报 下面有些题也不错,可以参考 联想笔试题 普天C++笔试题 Sony笔试题 微软亚洲技术中心的面试题 MSRA Interview Written Exam(December 2003,Time:2.5 Hours) 百度笔试题 汉略曾考的测试题目 16道C语言面试题例子 死循环(Infinite loops) 数据声明(Data declarations) 位操作(Bit manipulation) 访问固定的内存位置(Accessing fixed memory locations) 中断(Interrupts) 代码例子(Code examples) 13. 评价下面的代码片断 动态内存分配(Dynamic memory allocation) 群硕笔试 基础题 笔试博朗 - [笔试 职业] C语言面试题大汇总 思科 慧通 雅虎笔试题(字符串操作) C语言最长平台算法 华为3COM C语言题库 将两个无序数组合并为有序链表 上海聚力传媒技术有限公司官方VC笔试题解答
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值