百度笔试题6.2

本文探讨了搜索引擎的工作原理,包括从用户提交关键词到显示搜索结果的全过程。此外,还讨论了一个优秀文件系统的关键要素,并提供了日志切分工具的实现示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二、问答(4×10分)

 

1. 在网络信息爆炸的时代,搜索引擎扮演着越来越重要的角色,当人们想要从网上获取全面、详尽的信息,只需要在搜索框里输入几个关键词便能获取所需。请从计算机网络原理的角度简要描述一下用户从提交关键词到结果的展现这一过程中都发生了哪些事情。

 

2.  你认为一个优秀的文件系统需要具备哪些要素?

 

3. 日志切分在运维中扮演着重要角色,日志切换工具通常从一个管道文件读取日志内容,并以小时、或天、或星期等单位将日志内容保存到不同的文件中。请使用任意脚本实现一个简单的日志切分工具。

该工具的调用参数为:日志文件的路径    保存路径前缀  时间格式后缀

    举例说明:

./cronolog.sh  /var/log/something.log  /tmp/saved_log/my.log  %Y%m%d(为时间命令date支持的参数,%Y为年,%m为月,%d为日)

执行后,该脚本会一直运行并不断读取/var/log/something.log中的内容 ,把每一天的日志信息分别保存到如下日志中:

……

/tmp/saved_log/my.log.20090501

/tmp /saved_log/my.log.20090502

/tmp /saved_log/my.log.20090503

……

 

4. 1~N的每一个数字标记一种颜色,使得其中任意两个数字A,B,如果A可以整除B,则AB必须标记不同的颜色,要求所使用的颜色最少,并得到1~N的每一个数字所标记的颜色(用数字表示)。请编写程序解决这个问题。

例子:

输入:(1 <= N <=10000

16

输出:

5

编号:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

颜色:1 2 2 3 2 3 2 4 3 3  2  4 2  3  3  5

 

 

1Answer

网络编程方面的知识。

封装,发送,等待处理,接收,解析。

http://www.networkdictionary.cn/ask/5-20080528-7644

在索引数据库中搜索。

搜索的处理过程是对用户的搜索请求进行满足的过程,当用户输入关键词搜索后,通过提交查询请求给“查询服务器”(通过建立socket,然后向服务器提交请求),搜索服务器对应关键词字典,把搜索关键词转化为wordID,然后在标引库中得到docID列表,对docID列表进行扫描和wordID的匹配,从网页“索引数据库”中找到符合该关键词的所有相关网页。

对搜索结果进行处理排序。

所有相关网页针对该关键词的相关信息在索引库中都有记录,“网页评级”把查询请求和链接信息结合起来对搜索结果进行相关度的评价,通过“查询服务器”按照相关度进行排序,返回前K篇结果(不同的搜索引擎每页的搜索结果数不同)返回给用户。

 

2Answer

需要注意高性能(读写速度及获取速度)、可靠性(数据一致性,健壮性),扩展性。

参考http://www.itmop.com/network/system/linux/0803544.html

http://blog.chinaunix.net/u3/94683/showart_1955952.html

一个优秀的文件系统,应该具备: 超级块,i节点,目录块,数据块,间接块,并允许文件中产生孔。

3Answer

http://bbs3.chinaunix.net/archiver/tid-1472916.html

运行方式:
1) test /log /tmp %Y%m
2) test /log /tmp %Y%m%d

因不好确定文件名,就随便用了下find命令查找最近1天内修改的*.log文件当作源文件。

[quote]
#!/bin/sh

usage="$0 <logPath> <SavePath> <logDateFormat>"

if [ $# -ne 3 ]; then
  echo "$usage"
  exit -1
fi

logPath=$1
savePath=$2
format=$3

if [ ${logPath:0:1} != "/" -a ${savePath:0:1} != "/" ]
then
  echo "--path must begin with /."
  exit -1
fi

if [ ! -d "$logPath" ]; then
  echo "--path $logPath is not exists."
  exit -1
fi

if [ ! -d "$savePath" ]; then
  mkdir -p $savePath
fi

tmpFormat=${format//%/ %}

for tmp in $tmpFormat;do
  if [ $(man date|grep "^ *$tmp"|wc -l) -lt 1 ]; then
    echo "--not support date format $tmp"
    exit -1
  fi
done

find $logPath -mtime -1 -type f  -name "*.log"|while read file
do
   logFile=${file##*/}
   tail -f $logPath/$logFile |cat >>$savePath/$logFile.$(date +$format) &
done 2>/dev/null

 

4Answer

http://topic.youkuaiyun.com/u/20090604/19/B60BB1D2-EC6A-4384-B082-D58D9313A521.html

用动规做

算法思想:(是你的输出提醒的我)

对于数字 N : 它的 颜色标号 MAX{ 所有因子的颜色标号 } + 1

举例:

对于质数  13 因子只有 1 13 13是本身,1的标号为 1 所以为2

对于合数  16 因子 2 4 8 ,最大的因子标号是 84 所以为 5

如此建立一个 一张2维表就可以

找到因子 查询因子的颜色标号 取最大 + 1作为自己的标号 OK

自己:

#include "head.h"

 

#define M 100

 

void FillColor()

{

  int color[M];

 

  int i;

  int j;

 

  int max=16;

  color[1]=1;

  for(i=2;i<=max;i++)

  {

    for(j=i-1;j>0;j--)

       {

         if(i%j==0)

         {

           color[i]=color[j]+1;

              break;

         }

       }

  }

 

  for(i=1;i<=max;i++)

         printf("%3d",color[i]);

  printf("/n");

}

 

void main()

{

FillColor();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cyf31

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值