百度筆試題6.2

二、問答(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.csdn.net/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();

}

發佈了35 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章