百度网页搜索部

一、算法效率比较

题目:针对数组A和数组B,两个数组的元素内容相同,不过数组A是已经排序的,数组B是乱序的,针对数组的中位数,存在以下两组程序,比较其效率并分析原因。

int g;
int main() {
    g = 0;
    for(int i = 0 ; i < n ; i++) {
        if( A[i] > mid )
           g++;
    }
    for(int i = 0 ; i < n ; i++) {
        if(B[i] > mid )
           g++;
    }
}

当包含流水线技术的处理器处理分支指令时就会遇到一个问题,根据判定条件的真/假的不同,有可能会产生转跳,而这会打断流水线中指令的处理,因为处理器无法确定该指令的下一条指令,直到分支执行完毕。流水线越长,处理器等待的时间便越长,因为它必须等待分支指令处理完毕,才能确定下一条进入流水线的指令。

这个题目之前在网上浏览到过,知道有序的数组的效率其实比无序的要高很多,但是原因实在想不出来。现在搜一下,原来是stackoverflow上面的经典问答呢,原因不是编译器动手脚,而是CPU动的手脚,CPU有一个叫分支预测的技术,是这个技术导致有序数组的效率很高。 CPU指令执行的过程是流水线,简单的分支预测方案是针对当前元素(实际是处理过元素的统计学规律)判断下一个元素的指令跳转方向,有序的话分支预测的准确率很高,无序的话分支预测技术就不生效了,无法提前装载指令进入流水线,这样就损耗了一定的CPU时间。

二、简单算法之求不同元素

题目:一个数组中只有一个数字出现1次,其他数字出现两次。

挺简单的题目,因为见过,所以就跳过了这个题目,所以元素异或即可。

三、DP题目

题目:一个m*n得棋盘,每个格子中有一个数字,计算从左上角至右下角的最大路径和,每一步行只能够向右或者向下行走。

ACM的时候做过,我只知道是DP,不过不是很理解,现在好好高一下。

先初始化二维数组S,用双重for循环,Arrays.fill方法只可初始化一维数组
	s[0][0] = a[0][0];
	for(int i=1; i<N; i++)
		s[i][0] = a[i][0] + s[i-1][0];
	for(int j=1; j<M; j++)
		s[0][j] = a[0][j] + s[0][j-1];
	for(int i=1; i<N; i++)
		for(int j=1; j<M; j++)
			s[i][j] += a[i][j] + Math.max(s[i-1][j],s[i][j-1]);

三、海量数据处理

问题:两个URL文件,分别有20亿条记录,每个URL的项目大约1KB。文件中有重复的URL记录,如何去除重复?

因为在一面的过程中了解到,有序的数组去除重复的时候能够得到快速的去重,所以就考虑到了首先排序,但是两个这么大的文件单机排序?外部排序,k路归并排序,然后面试官就顺势的问了我k路归并排序的知识,k路归并排序的时间估计,因为k路归并排序很多时间在磁盘的IO上面,所以我猜测可能磁盘的IO才是时间的平静,每个元素最终进出磁盘4次,所以我估计的方法是元素数量*4*磁盘IO平均时间。不知道这个方法对不对。

多机的扩展,MapReduce程序应该可以完成,但是我对hadoop不是很了解(所以这个方法没有答)。自己想一下多机的扩展吧,当然也是分治,想想也可以多机k路归并排序,后来面试官引导我说可以不排序么?我才意识到原始问题只是为了去除重复,所以这里分治并且利用hash的方法应该能够达到很快速的算法(复习一下《大型网站架构》这本书)一致性simhash方法应该是解决这个问题的。

我首先想到的是hash,因为前面见过如何求出访问最多的IP,就是对IP进行Hash,只不过不知道如何Hash而已,过两天专门搞海量数据的Hash处理。

参考文献http://www.cnblogs.com/weixliu/p/3900633.html

四、象棋问题

中国象棋中帅,将和一个将身边的士,输出其合理位置的方案。

刚看到这个算法题目的时候还卡了一下,不过后来自己把棋盘编号为1,2,3,4,5,6,7,8,9之后豁然开朗~不过我的代码if,else比较多,3类情况枚举,后来在面试官的提示下进行条件合并,节省了很多的代码。

for(int s = 1 ; s <= 9;s++) {

    for(int j = 1 ; j <= 9;j++) {

        for(int jsb = 1; jsb <= 9;jsb += 2) {

            if( validposition(s,j,jsb))

                printf("%d,%d,%d",s,j,jsb);

        }

     }
}

bool validposition(int s,int j,int jsb) {
   //将和帅相对应,并且不是士兵挡在将的前面的情况???
    if ( s%3 == j%3 && !( jsb % 3 == j % 3 && jsb < j ) )
        return false;
    return true;
}
时间: 2024-11-19 14:43:23

百度网页搜索部的相关文章

百度网页搜索部(转载)

一.算法效率比较 题目:针对数组A和数组B,两个数组的元素内容相同,不过数组A是已经排序的,数组B是乱序的,针对数组的中位数,存在以下两组程序,比较其效率并分析原因. 1 2 3 4 5 6 7 8 9 10 11 12 int g; int main() {     g = 0;     for(int i = 0 ; i < n ; i++) {         if( A[i] > mid )            g++;     }     for(int i = 0 ; i <

百度网页搜索部rank团队4S面试

1. du和df的区别? du统计文件的大小,需要遍历整个目录:df统计磁盘的使用情况: du -s /dir  du -ab /dir   ; df -h /disk1 正常情况下两者数值接近,但如果存在打开文件的进程,而该文件被rm或者mv出去,则统计该目录du空闲空间大于df的空间空间:因为df记录磁盘使用大小,进程没有关闭文件,df默认磁盘仍被使用:而du遍历目录,发现文件已经被移走,所以不记录这部分大小: 2. 软链接和硬链接区别 硬链接: 和原文件指向同一个inode,可以用ls -

百度面试-网页搜索部

今天参加了百度的面试,面试过程安排过程中出了些问题,上午面试完成后竟然要等到下午4点安排接下来的面试,安排的不是很紧凑,最好让每个面试者的连续面试安排在一起,面试挺消耗精力了.不过周五赶上百度的summer party,在大厅等待的时候看到很多美女-_-!百度的前台妹纸们真是很漂亮嘛. 一面:面试官很清瘦,个头很高.后来发现人很nice,很随和~,至少面试过程中让人感觉很舒服.一些我回答出来的问题可能记忆的不是很清楚了,主要记录一些我答的不是很好的问题.首先自我介绍,不过刚刚开始就被打断开始进行

谈谈百度为什么要推出《百度网页 搜索质量白皮书》

百度正在做一些事情,并且希望成为这样的老师.老师的学生就是大量的网站人员,也就是苦逼的网页设计师和SEOer.很长时间,百度看不上这群人. 你们不为我了带来利润,我的利润都是依靠竞价客户带来的,优化人员都是通过自主的优化实现网站排名的提升,对于百度来说,你们没有价值.所以,我无须讨好你们. 你们反倒损害了我的客户体验.大量的垃圾信息.虚假信息以及过载信息,让搜索用户使用搜索的体验大为降低,甚至恶劣,比如说通过搜索进行优化的欺诈网站.所以,我无需帮助你们. 我的很多产品失败,你们也有原因.如果不是

网页搜索核心模块架构重构

X模块是百度网页搜索的核心模块,与其他系统接口多,逻辑复杂,代码陈旧.长年密集的新特性开发导致留下了大量的技术债.我们在不影响新特性开发的情况下,在设计层面.编码层面重构了X模块架构代码,在代码可维护性.内存使用和运行效率上都取得了显著成果. 转:http://www.infoq.com/cn/presentations/architecture-reconstruction

百度移动搜索地域优化服务说明及心得!

今天广州SEO跟大家分享的文章题目是:<运用页面二次点击,提升网站用户体验度>,简单的说就是用户看了一个页面之后,还在当前浏览页面看了用户同样需要看得页面,这样就完成了用户二次需求,用户二次点击了. 在网站关键词排名比较稳定后,这时我们进入了SEO后期维护工作.SEO的后期工作,其实就是根据数据对网站不断进行微调,从而提升用户的体验.那么这些数据我们从个哪里来?这时我们需要用到百度统计里的页面点击图和链接点击图.注意,现在不能用第三方数据了哈.. 页面点击图是百度统计里面的一项统计工具,大多数

python解析百度网页源代码:取搜索引擎返回的前page_num*10个链接的url

如题:python解析百度网页源代码:取搜索引擎返回的前page_num*10个链接的url 最近因为做<信息检索>homework,需要在搜索引擎中搜索某个query,人工查找那些搜索引擎返回的链接,判断前30个是否相关,然后评价该搜索引擎的性能.蛋疼的一个个点进去链接,然后看网页搜索的内容是否和想要查询的query相关,从而进行下一步工作.于是想到解析网页,找到搜索引擎返回的链接的url,等做完了作业才做这个,无碍.目前分析了百度的源代码,进行了分析工作.对于其他搜索引擎的任务再分析. #

网页搜索基本知识

1. skiplist 巩固 skiplist 跳跃表,简单理解是用空间换时间,来实现链表二分查找的数据结构 可以用pre.next.blow.above实现四向的链表操作,可以简化search.insert.delete.get等操作 时间复杂度: 2. lucene 巩固 开源的全文检索引擎框架 主要过程: (1) 对数据源建立索引文件(反向索引) 网页搜集->预处理(提取关键字.消除重复和转载.重要信息分析.网页重要度分析.倒排文件) 搜索-> query -> 分词 ->

百度推出“搜索工具”对网站优化有何影响

百度推出"搜索工具"对网站优化有何影响2015年4月15日,百度最新推出的"搜索工具"功能,在搜索框下面多了一个"搜索工具"主要包含功能有"时间限制","选择网页或者文件","站点内检索".大家可能对新功能比较陌生,接下来301SEO网站优化团队就和大家一起来探讨下: 一.为什么会推出这个新功能?根据功能的选择性,我们不难看出最直接的一个作用就是让搜索结果更准确,相关性更强.可能这也是百