百度網頁搜尋部

2021-09-06 20:20:53 字數 1837 閱讀 6619

一、演算法效率比較

題目:針對陣列a和陣列b,兩個陣列的元素內容相同,不過陣列a是已經排序的,陣列b是亂序的,針對陣列的中位數,存在以下兩組程式,比較其效率並分析原因。

int g;

int main()

for(int i = 0 ; i < n ; i++)

}

當包含流水線技術的處理器處理分支指令時就會遇到乙個問題,根據判定條件的真/假的不同,有可能會產生轉跳,而這會打斷流水線中指令的處理,因為處理器無法確定該指令的下一條指令,直到分支執行完畢。流水線越長,處理器等待的時間便越長,因為它必須等待分支指令處理完畢,才能確定下一條進入流水線的指令。

這個題目之前在網上瀏覽到過,知道有序的陣列的效率其實比無序的要高很多,但是原因實在想不出來。現在搜一下,原來是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三、海量資料處理

問題:兩個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處理。

參考文獻

四、象棋問題

中國象棋中帥,將和乙個將身邊的士,輸出其合理位置的方案。

剛看到這個演算法題目的時候還卡了一下,不過後來自己把棋盤編號為1,2,3,4,5,6,7,8,9之後豁然開朗~不過我的**if,else比較多,3類情況列舉,後來在面試官的提示下進行條件合併,節省了很多的**。

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

}} bool validposition(int s,int j,int jsb)

百度網頁搜尋部實習生面試

說說麵了什麼吧!一面面試官人很和善,笑眯眯的,開始先讓我做了乙個自我介紹。然後看我的簡歷,根據簡歷問,因為我寫的分類聚類演算法較多,所以讓我說說自己知道的分類演算法和聚類演算法有哪些,具體說一下步驟是怎樣的。以為這些自己掌握還挺好,說了不少演算法,然後讓我寫了乙個不能被例項化的類的 我對c 有點生疏...

百度網頁搜尋的查詢引數

pn page number 顯示結果的頁數 rn record number 搜尋結果顯示條數,預設設定rn 10,取值範圍在10 100條之間 google網頁搜尋的查詢引數 hl inte ce language google搜尋的介面語言 hl zh cn 簡體中文語言介面,我們用的goog...

python爬蟲 反反爬百度網頁教程

import urllib.request response urllib.request.urlopen print response.read 分三個步驟 1.建立請求物件,對應的 塊 headers req urllib.request.request url,headers headers ...