百度筆試150題

1、用C語言實現一個revert函數,它的功能是將輸入的字符串在原串上倒序后返回。

2、用C語言實現函數void * memmove(void *dest, const void *src, size_t n)。memmove

函數的功能是拷貝src所指的內存內容前n個字節到dest所指的地址上。

分析:由于可以把任何類型的指針賦給void類型的指針,這個函數主要是實現各種數據類型的拷貝。

3、有一根27厘米的細木桿,在第3厘米、7厘米、11厘米、17厘米、23厘米這五個位置上各有一只螞蟻。

木桿很細,不能同時通過一只螞蟻。開始時,螞蟻的頭朝左還是朝右是任意的,它們只會朝前走或調頭,但不會后退。

當任意兩只螞蟻碰頭時,兩只螞蟻會同時調頭朝反方向走。假設螞蟻們每秒鐘可以走一厘米的距離。

編寫程序,求所有螞蟻都離開木桿的最小時間和最大時間。

4、給定一個存放整數的數組,重新排列數組使得數組左邊為奇數,右邊為偶數。

要求:空間復雜度O(1),時間復雜度為O(n)。

5、在一維坐標軸上有n個區間段,求重合區間最長的兩個區間段。

6、系統有很多任務,任務之間有依賴,比如B依賴于A,則A執行完后B才能執行

(1)不考慮系統并行性,設計一個函數(Task *Ptask,int Task_num)不考慮并行度,最快的方法完成所有任務。

(2)考慮并行度,怎么設計

typedefstruct{intID;int*child;intchild_num;}Task;

提供的函數:

bool doTask(int taskID);無阻塞的運行一個任務;

int waitTask(int timeout);返回運行完成的任務id,如果沒有則返回-1;

bool killTask(int taskID);殺死進程

7、解釋下面ptr含義和不同

double* ptr = &value;

//ptr是一個指向double類型的指針,ptr的值可以改變,ptr所指向的value的值也可以改變

const double* ptr = &value

//ptr是一個指向const double類型的指針,ptr的值可以改變,ptr所指向的value的值不可以改變

double* const ptr=&value

//ptr是一個指向double類型的指針,ptr的值不可以改變,ptr所指向的value的值可以改變

const double* const ptr=&value

//ptr是一個指向const double類型的指針,ptr的值不可以改變,ptr所指向的value的值也不可以改變

8、去掉const屬性,例: ?const double value = 0.0f; ?double* ptr = NULL;怎么才能讓ptr指向value?

強制類型轉換,去掉const屬性,如ptr = (&value);

http://topic.csdn.net/u/201109 ... 09169

9、一個數組保存了N個結構,每個結構保存了一個坐標,結構間的坐標都不相同,請問如何找到指定坐標的結構(除了遍歷整個數組,是否有更好的辦法)?(要么預先排序,二分查找。要么哈希。hash的話,坐標(x,y)你可以當做一個2位數,寫一個哈希函數,把(x,y)直接轉成“(x,y)”作為key,默認用string比較。或如Edward Lee所說,將坐標(x, y)作為 Hash 中的 key。例如(m, n),通過 (m,n) 和 (n, m) 兩次查找看是否在 HashMap 中。也可以在保存時就規定 (x, y) , x < y ,在插入之前做個判斷。)

10、百度最新面試題:現在有1千萬個隨機數,隨機數的范圍在1到1億之間。現在要求寫出一種算法,將1到1億之間沒有在隨機數中的數求出來。

(編程珠璣上有此類似的一題,如果有足夠的內存的話可以用位圖法,即開一個1億位的bitset,內存為100m/8== 12.5m, 然后如果一個數有出現,對應的bitset上標記為1,最后統計bitset上為0的即可。)

11、linux/unix遠程登陸都用到了ssh服務,當網絡出現錯誤時服務會中斷,linux/unix端的程序會停止。為什么會這樣?說下ssh的原理,解釋中斷的原理。

12、利用互斥量和條件變量設計一個消息隊列,具有以下功能:

1). 創建消息隊列(消息中所含的元素)

2). 消息隊列中插入消息

3). 取出一個消息(阻塞方式)

4). 取出第一消息(非阻塞方式)

13、對已排好序的數組A,一般來說可用二分查找可以很快找到。現有一特殊數組A[],它是循環遞增的,如A[]={ 17 19 20 25 1 4 7 9},試在這樣的數組中找一元素x,看看是否存在。

請寫出你的算法,必要時可寫偽代碼,并分析其空間、時間復雜度。

14、動態鏈接庫與靜態鏈接庫的區別

靜態鏈接庫是.lib格式的文件,一般在工程的設置界面加入工程中,程序編譯時會把lib文件的代碼加入你的程序中因此會增加代碼大小,你的程序一運行lib代碼強制被裝入你程序的運行空間,不能手動移除lib代碼。

動態鏈接庫是程序運行時動態裝入內存的模塊,格式*.dll,在程序運行時可以隨意加載和移除,節省內存空間。

在大型的軟件項目中一般要實現很多功能,如果把所有單獨的功能寫成一個個lib文件的話,程序運行的時候要占用很大的內存空間,導致運行緩慢;但是如果將功能寫成dll文件,就可以在用到該功能的時候調用功能對應的dll文件,不用這個功能時將dll文件移除內存,這樣可以節省內存空間。)

15、指針與引用的區別

相同點:1. 都是地址的概念;

指針指向一塊內存,它的內容是所指內存的地址;引用是某塊內存的別名。

區別:

1). 指針是一個實體,而引用僅是個別名;

2). 引用使用時無需解引用(*),指針需要解引用;

3). 引用只能在定義時被初始化一次,之后不可變;指針可變;

4). 引用沒有 const,指針有 const;

5). 引用不能為空,指針可以為空;

6). “sizeof 引用”得到的是所指向的變量(對象)的大小,而“sizeof 指針”得到的是指針本身(所指向的變量或對象的地址)的大小;

7). 指針和引用的自增(++)運算意義不一樣;

8).從內存分配上看:程序為指針變量分配內存區域,而引用不需要分配內存區域。)

16、進程與線程的區別

①從概念上:

進程:一個程序對一個數據集的動態執行過程,是分配資源的基本單位。

線程:一個進程內的基本調度單位。

線程的劃分尺度小于進程,一個進程包含一個或者更多的線程。

②從執行過程中來看:

進程:擁有獨立的內存單元,而多個線程共享內存,從而提高了應用程序的運行效率。

線程:每一個獨立的線程,都有一個程序運行的入口、順序執行序列、和程序的出口。但是線程不能夠獨立的執行,必須依存在應用程序中,由應用程序提供多個線程執行控制。

③從邏輯角度來看:(重要區別)

多線程的意義在于一個應用程序中,有多個執行部分可以同時執行。但是,操作系統并沒有將多個線程看做多個獨立的應用,來實現進程的調度和管理及資源分配。)

17、函數調用入棧出棧的過程。

18、c++對象模型與虛表。

19、海量數據處理,以及如何解決Hash沖突等問題。

20、系統設計,概率算法。

21、判斷一個數的所有因數的個數是偶數還是奇數(只需要你判斷因數的個數是偶數個還是奇數個,那么可以這么做@濱湖&&土豆:那只在計算質因數的過程中統計一下當前質因數出現的次數,如果出現奇數次則結果為偶,然后可以立即返回;如果每個質因數的次數都是偶數,那么結果為奇。如果該數是平方數 結果就為奇? 否則就為偶了)。

22、寫一個C的函數,輸入整數N,輸出整數M,M滿足:M是2的n次方,且是不大于N中最大的2的n次方。例如,輸入4,5,6,7,都是輸出4 。

23、C++中虛擬函數的實現機制。

24、寫出選擇排序的代碼及快速排序的算法。

25、你認為什么排序算法最好?

26、tcp/ip的那幾層協議,IP是否是可靠的?為什么?

27、進程和線程的區別和聯系,什么情況下用多線程,什么時候用多進程?

28、指針數組和數組指針的區別。

29、查找單鏈表的中間結點。

30、最近在實驗室課題研究或工作中遇到的技術難點,怎么解決的?

31、sizeof和strlen的區別。

32、malloc-free和new-delete的區別

33、大數據量中找中位數。

34、堆和棧的區別。

35、描述函數調用的整個過程。

36、在一個兩維平面上有三個不在一條直線上的點。請問能夠作出幾條與這些點距離相同的線?

37、假設有一臺迷你計算機,1KB的內存,1MHZ的cpu,已知該計算機執行的程序可出現確定性終止(非死循環),問如何求得這臺計算機上程序運行的最長時間,可以做出任何大膽的假設。

38、C++ STL里面的vector的實現機制,

1).當調用push_back成員函數時,怎么實現?

(粗略的說@owen,內存足則直接 placement new構造對象,否則擴充內存,轉移對象,新對象placement new上去。具體的參見此文:http://blog.csdn.net/v_july_v/ ... 81522

2).當調用clear成員函數時,做什么操作,如果要釋放內存該怎么做。

(調用析構函數,內存不釋放。 clear沒有釋放內存,只是將數組中的元素置為空了,釋放內存需要delete。)

39、函數foo找錯,該函數的作用是將一個字符串中的a-z的字母的頻數找出來

voidfoo(chara[100],intcnt[256]){memset(cnt,0,sizeof(cnt));while(*a!='\0'){++cnt[*a];++a;}for(charc='a';c<='z';++c){printf("%c:%d\n",c,cnt[c]);}}intmain(){chara[100]="百度abc";intcnt[256];foo(a,cnt);return0;}

40、設子數組A[0:k]和A[k+1:N-1]已排好序(0≤K≤N-1)。試設計一個合并這2個子數組為排好序的數組A[0:N-1]的算法。要求算法在最壞情況下所用的計算時間為O(N),只用到O(1)的輔助空間。

41、一個單詞如果交換其所含字母順序,得到的單詞稱為兄弟單詞,例如mary和army是兄弟單詞,即所含字母是一樣的,只是字母順序不同,用戶輸入一個單詞,要求在一個字典中找出該單詞的所有兄弟單詞,并輸出。給出相應的數據結構及算法。要求時間和空間復雜度盡可能低

目前思想:

struct{chardata;intn};

根據數學定理:任何一個大于1的自然數N,都可以唯一分解成有限個質數的乘積 N=(P_1^a1)*(P_2^a2)......(P_n^an) , 這里P_1

例如

a=2 b=3 c=5 d=7 e=11...

f(abcd)=2*3*5*7=210

然后字典里找乘積210的位數相同的一定是這5個字母組合的單詞就是兄弟單詞?。

42、設rand(s,t)返回[s,t]之間的隨機小數,利用該函數在一個半徑為R的圓內找隨機n個點,并給出時間復雜度分析。

43、為分析用戶行為,系統常需存儲用戶的一些query,但因query非常多,故系統不能全存,設系統每天只存m個query,現設計一個算法,對用戶請求的query進行隨機選擇m個,請給一個方案,使得每個query被抽中的概率相等,并分析之,注意:不到最后一刻,并不知用戶的總請求量。

44、C++ STL中vector的相關問題:

(1)、調用push_back時,其內部的內存分配是如何進行的?

(2)、調用clear時,內部是如何具體實現的?若想將其內存釋放,該如何操作?

45、正常用戶端每分鐘最多發一個請求至服務端,服務端需做一個異常客戶端行為的過濾系統,設服務器在某一刻收到客戶端A的一個請求,則1分鐘內的客戶端任何其它請求都需要被過濾,現知每一客戶端都有一個IPv6地址可作為其ID,客戶端個數太多,以至于無法全部放到單臺服務器的內存hash表中,現需簡單設計一個系統,使用支持高效的過濾,可使用多臺機器,但要求使用的機器越少越好,請將關鍵的設計和思想用圖表和代碼表現出來。

46、如p([1,2,3])輸出:

[123]、[132]、[213]、[231]、[321]、[323]

求一個組合函數

如p([1,2,3])輸出:

[1]、[2]、[3]、[1,2]、[2,3]、[1,3]、[1,2,3]

這兩問可以用偽代碼。

47、如何快速訪問ipv6地址呢?ipv6地址如何存放?

48、正常用戶端每分鐘最多發一個請求至服務端,服務端需做一個異常客戶端行為的過濾系統,設服務器在某一刻收到客戶端A的一個請求,則1分鐘內的客戶端任何其它請求都需要被過濾,現知每一客戶端都有一個IPv6地址可作為其ID,客戶端個數太多,以至于無法全部放到單臺服務器的內存hash表中,現需簡單設計一個系統,使用支持高效的過濾,可使用多臺機器,但要求使用的機器越少越好,請將關鍵的設計和思想用圖表和代碼表現出來。

49、一個單詞單詞字母交換,可得另一個單詞,如army->mary,成為兄弟單詞。提供一個單詞,在字典中找到它的兄弟。描述數據結構和查詢過程。

評點:同去年9月份的一道題,見此文第3題:http://blog.csdn.net/v_july_v/ ... 03368

50、線程和進程區別和聯系。什么是“線程安全”

51、C和C++怎樣分配和釋放內存,區別是什么

52、一個url指向的頁面里面有另一個url,最終有一個url指向之前出現過的url或空,這兩種情形都定義為null。這樣構成一個單鏈表。給兩條這樣單鏈表,判斷里面是否存在同樣的url。url以億級計,資源不足以hash。

53、數組al[0,mid-1] 和 al[mid,num-1],都分別有序。將其merge成有序數組al[0,num-1],要求空間復雜度O(1)。

54、百度搜索框的suggestion,比如輸入“北京”,搜索框下面會以北京為前綴,展示“北京愛情故事”、“北京公交”、“北京醫院”等等搜索詞,輸入“結構之”,會提示“結構之法”,“結構之法 算法之道”等搜索詞。

請問,如何設計此系統,使得空間和時間復雜度盡量低。

評點:①直接上Trie樹「Trie樹的介紹見:從Trie樹(字典樹)談到后綴樹」 + ?TOP K「hashmap+堆,hashmap+堆 統計出如10個近似的熱詞,也就是說,只存與關鍵詞近似的比如10個熱詞,詳細方法可參看此文第2個題的講解:http://blog.csdn.net/v_july_v/ ... 82693」?

②or Double-array trie tree?同時,StackOverflow上也有兩個討論帖子:http://stackoverflow.com/quest ... pletehttp://stackoverflow.com/quest ... e-c-c

③此外,這里有一篇關于“拼寫錯誤檢查”問題的介紹,或許對你有所啟示:http://blog.afterthedeadline.c ... ions/。。

55、不使用隨機數的洗牌算法,詳情:http://topic.csdn.net/u/201208 ... .html

56、公司組織一次羽毛球比賽,采用淘汰制,假設公司共有1001人,如果要評出“公司羽毛球第一高手”的稱號,至少需要進行多少場比賽?請簡述設計過程,并編寫代碼模擬比賽過程(語言不限,可以使用偽代碼)。

57、一百個燈泡排成一排,第一輪將所有燈泡打開,第二輪每隔一個燈泡關掉一個,即排在偶數的燈泡都被關掉,第三輪每隔兩個燈泡,將開著的燈泡關掉,關掉的燈泡打開,以此類推,第100輪結束的時候,還有幾盞燈泡亮著?

58、假定有20個有序數組,每個數組中有500個數字,數字類型32位uint數值,降序排列,現在需要取出這10000個數字中最大的500個,怎么做?

59、手機上通常采用九鍵鍵盤輸入,即:1—9個數字鍵分別對應一定的英文字母(如:2對應ABC,3對應DEF,……,9對應WXYZ)。因此,用戶可以方便的輸入中文內容,比如,用戶輸入“926”,可以對應“WXYZ”,“ABC”和“MNO”的一系列組合“WAN”,“YAN”,“ZAO”等,這些對應“萬”,“嚴”,“早”等漢字的中文拼音。

要求:

現在我們把這樣的輸入方式應用在我們的手機聯系人查找功能上,有一個聯系人列表UserList,記錄了(姓名,手機號)這樣的組合,通過輸入的數組字符串NumStr,按照下面的規則把對應的聯系人查找出來,返回一個ResultList。

規則:

1).手機號能連續部分匹配輸入的數字字符串NumStr,如:輸入NumStr=926,則手機號為13926811111會被查找出來。

2).聯系人姓名中的漢字轉化成拼音后能夠連續匹配輸入數字字符串NumStr對應的英文字母組合,如:輸入NumStr=926,則聯系人“王二”,“萬事通”,“李艷”會被查找出來,因為“王二”的“王”的拼音“WANG”中含有“WAN”,和“926”能匹配。

輸入:聯系人列表UserList;漢字拼音映射表Dict;數字字符串NumStr。

輸出:符合規則的聯系人列表ResultList。

60、10億個int型整數,如何找出重復出現的數字。

61、有2G的一個文本文檔,文件每行存儲的是一個句子,每個單詞是用空格隔開的。問:輸入一個句子,如何找到和它最相似的前10個句子。(提示:可用倒排文檔)。

62、一個處理器最多能處理m個任務。現在有n個任務需要完成,每個任務都有自己完成所需的時間。此外每個任務之間有依賴性,比如任務A開始執行的前提是任務B必須完成。設計一個調度算法,使得這n這任務的完成時間最小。

63、有一個排序二叉樹,數據類型是int型,如何找出中間大的元素。

64、一個N個元素的整形數組,如何找出前K個最大的元素。

65、給定一個凸四邊形,如何判斷一個點在這個平面上。

點評:本題的討論及參考答案請見這:http://www.51nod.com/question/ ... 3D669

66、堆和棧的區別。

67、問如何數出自己頭上的頭發。

68、給定一數組,輸出滿足2a=b(a,b代表數組中的數)的數對,要求時間復雜度盡量低。

69、搜索引擎多線程中每個線程占用多少內存?如果搜索引擎存儲網頁內存占用太大怎么解決?

70、有很多url,例如*.baidu.com,*.sina.com ......

現在給你一個sports.sina.com 快速匹配出是*.sina.com。點評:老題,此前blog內曾整理過。

71、找出字符串的編輯距離,即把一個字符串s1最少經過多少步操作變成編程字符串s2,操作有三種,添加一個字符,刪除一個字符,修改一個字符(只要聽過編輯距離,知道往動態規劃上想,很快就可以找到解法)。

點評:請看鏈接:http://blog.csdn.net/Lost_Pain ... 57334

72、編程實現memcopy,注意考慮目標內存空間和源空間重疊的時候。

73、實現簡單的一個查找二叉樹的深度的函數。

74、進程和線程的區別。

75、一個有序數組(從小到大排列),數組中的數據有正有負,求這個數組中的最小絕對值。

76、鏈表倒數第n個元素。

77、有一個函數fun能返回0和1兩個值,返回0和1的概率都是1/2,問怎么利用這個函數得到另一個函數fun2,使fun2也只能返回0和1,且返回0的概率為1/4,返回1的概率為3/4。(如果返回0的概率為0.3而返回1的概率為0.7呢)。

78、有8個球,其中有7個球的質量相同,另一個與其他球的質量不同(且不知道是比其他球重還是輕),請問在最壞的情況下,最少需要多少次就能找出這個不同質量的球。

79、有一個數組a,設有一個值n。在數組中找到兩個元素a[i]和a[j],使得a[i]+a[j]等于n,求出所有滿足以上條件的i和j。

80、1萬個元素的數組,90%的元素都是1到100的數,10%的元素是101--10000的數,如何高效排序。

81、用簡單語句描述數據庫操作的步驟?。

82、寫出TCP/IP的四層結構。

83、什么是MVC結構,并描述各層結構的作用?。

84、字母a-z,數字0-9,現需要其中任意3個作為密碼,請輸出所有可能組合。(偽碼\C\C++\JAVA)

點評:如本文評論下第198樓所述,即從26+10=36個不同字符中選取3個字符的組合,用遞歸及非遞歸兩種方法,可以參照以下鏈接:

http://blog.csdn.net/wumuzi520 ... 87501(從n個數中選取m個數的組合數)。

85、實現字符串反轉函數。

86、給定字符函數a、插入 b、刪除 c、替換

例如字符串A=acegf,字符串B=adef,最少需要2步操作將A轉換為B,

即第一步將c替換為d,第二步將g刪除;

1).請問將字符串A=gumbo轉換為字符串B=gambol,最少需要幾步操作,列出如何操作

2).任意字符串A和字符串B,如何計算最小操作次數,計算思路,并給出遞歸公式

3).實現代碼(注意代碼風格與效率)

87、RSA SecurID安全系統

應用場景:這是一種用戶登錄驗證手段,例如銀行登錄系統,這個設備顯示6位數字,每60秒變一次,再經過服務器認證,通過則允許登錄。問How to design this system?

1).系統設計思路?服務器端為何能有效認證動態密碼的正確性?

2).如果是千萬量級永固,給出系統設計圖示或說明,要求子功能模塊劃分清晰,給出關鍵的數據結構或數據庫表結構。

考慮用戶量級的影響和擴展性,用戶密碼的隨機性等,如果設計系統以支持這幾個因素.

3).系統算法升級時,服務器端和設備端可能都要有所修改,如何設計系統,能夠使得升級過程(包括可能的設備替換或重設)盡量平滑?

88、什么是RISC。

89、通過后序、中序求前序?。

90、重寫與重載的區別?。

91、判斷兩個數組中是否有相同的數字?。

92、1000瓶水中找 出有毒的那瓶,毒性一周后發作,一周內最少需要多少只老鼠?。

93、系統設計 email客戶端,支持多賬戶和pop3等協議

1). 請寫出可能的至少5個用例;

2). 使用sqlite存儲帳戶、已收信息、已發信息、附件、草稿,請設計合理的表結構

3). pop3等協議等接口已完成,請給出email客戶端的模塊設計圖。

94、百度地圖里的路線查詢:給定兩個站點,如果沒有直達的路線,如何找到換乘次數最少的路線?

點評:螞蟻算法?還是廣搜,或A*算法?

95、有一箱蘋果,3個一包還剩2個,5個一包還剩3個,7個一包還剩2個,求N個滿足以上條件的蘋果個數。

96、用遞歸算法寫一個函數,求字符串最長連續字符的長度,比如aaaabbcc的長度為4,aabb的長度為2,ab的長度為1。

97、假設一個大小為100億個數據的數組,該數組是從小到大排好序的,現在該數組分成若干段,每個段的數據長度小于20「也就是說:題目并沒有說每段數據的size 相同,只是說每個段的 size < 20 而已」,然后將每段的數據進行亂序(即:段內數據亂序),形成一個新數組。請寫一個算法,將所有數據從小到大進行排序,并說明時間復雜度。

點評:

思路一、如@四萬萬網友所說:維護一個20個元素大小的小根堆,然后排序,每次pop取出小根堆上最小的一個元素(log20),然后繼續遍歷原始數組后續的(N-20)個元素,總共pop?(N-20)次20個元素小根堆的log20的調整操作。

思路二@飄零蝦、如果原數組是a[],那么a[i+20]>=a[i]恒成立(因為每段亂序區間都是小于20的,那么向后取20,必然是更大的區間的元素)。

第一個數組:取第0、20、40、60、80...

第二個數組:取第1、21、41、61、81...

...

第20個數組:取第19、39、59、79... ? ? (上述每個數組100億/20 個元素)

共計20個數組,每個數組100億/20 個元素「注:這5億個元素已經有序,不需要再排序」,且這20個數組都是有序的,然后對這20個數組進行歸并,每次歸并20個元素。時間復雜度跟上述思路一一樣,也是N*logK(N=100億,K=20)。

此外,讀者@木葉漂舟直接按每組20個排序,將排好的20個與前20個調整拼接,調整兩端接頭處的元素,寫了個簡單地demo:http://t.cn/zlELAzs。不過,復雜度有點高,目前來說中規中矩的思路還是如上文中@四萬萬網友 所說思路一「@張瑋-marihees按照思路一:http://weibo.com/1580904460/z1v5jxJ9P,寫了一份代碼:http://codepad.org/T5jIUFPG,歡迎查看」。

98、一在線推送服務,同時為10萬個用戶提供服務,對于每個用戶服務從10萬首歌的曲庫中為他們隨機選擇一首,同一用戶不能推送重復的,設計方案,內存盡可能小,寫出數據結構與算法。

99、來自《編程之美》的概率題:一個桶里面有白球、黑球各100個,現在按下述規則取球:的

i 、每次從通里面拿出來兩個球;

ii、如果取出的是兩個同色的求,就再放入一個黑球;

ii、如果取出的是兩個異色的求,就再放入一個白球。

問:最后桶里面只剩下一個黑球的概率是多少?

100、給你一個自然數N,求[6,N]之內的所有素數中,兩兩之和為偶數的那些偶數。

101、相似度計算用于衡量對象之間的相似程度,在數據挖掘,自然語言處理中是一個基礎性計算,在廣告檢索服務中往往也會判斷網民檢索Query和Adword的主題相似度,假設Query或者Adword的主題屬性定義為一個長度為10000的浮點數組Pr[10000](稱之為主題概率數組),其中Pr[i]表示Query或者Adword屬于主題ID為I的概率,而Query和Adword的相似度簡化定義為兩者主題概率數組的內積:即sim(Query,Adword)=sum(QueryPr[i]*AdwordPri,在實際應用場景中,由于大多數主題的概率都為0,所以主題概率數組往往比較稀疏,在實現時會以一個緊湊型數組topic_info_t[]的方式保存,其中100<=數組大小<=1000,并按照topic_id遞增排列,0<=topic_id<10000,0

Structtopic_info_t{Inttopic_id;Floattopic_pr;};

現在給出Query的topic_info_t數組和N(N>=5000)個Adwords的topic_info_t數組,現要求出Query與Adwords的相似度最大值,即max(sim(Query,Adword[i]))(0<=i

Float max_sim(comst vector&query_topic_info,

Const vectoradwords_topic_info[],

Int adwords_number);

102、動態鏈接庫和靜態鏈接庫分別有什么優缺點?

103、輪詢任務調度與搶占式任務調度的區別?

104、待更新。

105、待更新。

106、長度為N(N很大)的字符串,求這個字符串里的最長回文子串。

107、數軸上從左到右有n個點a[0],a[1]...a[n-1],給定一根長度為L的繩子,求繩子最多能覆蓋其中的幾個點。

108、三色球排序的問題,相同的球放到一起,讓你按順序輸出紅白藍三種顏色的球,可以用012來表示,要求只能掃描一次數組。

點評:荷蘭國旗問題,參見此文第8小節:http://blog.csdn.net/v_july_v/ ... 11155

109、實現C的strstr

點評:手寫字符串處理相關函數是面試中極為常見的一類題型。

功能:從字符串str1中查找是否有字符串str2,

-如果有,從str1中的str2位置起,返回str1中str2起始位置的指針,如果沒有,返回null。

C++參考代碼:

//copyright@caopengcs?2013/10月classSolution{public:char*strStr(char*haystack,char*needle){//?Start?typing?your?C/C++?solution?below//?DO?NOT?write?int?main()?functioninti,j;for(i=j=0;haystack[i]&&needle[j];){if(haystack[i]==needle[j]){++i;++j;}else{i=i-j+1;j=0;}}returnneedle[j]?0:(haystack+i-j);}};

110、寫一個memmove的函數

點評:手寫常見字符串處理函數是面試官很喜歡考的一類題型。

111、JAVA里面的線程同步機制、異常處理機制、集合類、簡單的設計模式、hashmap和hashtable的區別,及HashMap和ConcurrentHashMap的區別。

112、給出數組A={a_0,a_1,a_2,...,a_n}(n是可變的),打印出所有元素的組合

113、數組A中任意兩個相鄰元素大小相差1,現給定這樣的數組A和目標整數t,找出t在數組A中的位置。

114、求二叉樹的面積(高乘寬),高為二叉樹根到葉子節點的最大距離,寬慰二叉樹最多的節點數。

115、給了一個百度地圖的截圖,對于地圖上的某一點,需要在地圖上標注該點的信息,將信息抽象成一個矩形,可以在該點的左邊標記,也可以在該點右邊標記。但是任意兩點標記后的矩形是不能有覆蓋的,否則刪除其中一個點

問題1,現給一固定區域,有n個點,設計一個算法,要求標記足夠多的點

問題2,當點足夠多時候,算法會遇到性能瓶頸,需要對算法重新優化。

更多題目請參見:http://blog.csdn.net/xyanghome ... 87771

116、深度神經網絡目前有哪些成功的應用?簡述原因。

117、列舉不同進程共享數據的方式(至少三種)。

118、對于N個樣本,每個樣本為D維向量,采用歐式距離使用KNN做類預測。

1).給出預測時間復雜度。

2).當N很大時,有哪些方法可以降低復雜度?

3).k取值的大小對預測方差和偏差有何影響?

119、給出一個數據A=a_0, a_1, a-2, ... a_n,打印出該數值元素的所有組合。

120、有這樣一個數組A,大小為n,相鄰元素差的絕對值都是1,如A={4,5,6,5,6,7,8,9,10,9}。現在給定數組A和目標整數t,請找到t在數組中的位置。

121、在平面上有一組間距為d的平行線,將一根長度為l(l

122、關于K-means聚類算法,請回答以下問題:

1).寫出將N個樣本X=(x1, ... xN)聚類成k類的k_means聚類算法的優化目標;

2).描述K-means終止的常用條件;

3).以Kmeans算法為例,描述Expectation-Maximization(EM)算法的基本原理與步驟。

4).用偽代碼給出基于MPI或者HADOOP的Kmeans并行算法。

題目來源:http://blog.csdn.net/luoweifu/ ... 85169

123、簡述計算機的存儲系統分為哪幾個層次,為什么這樣的分層能夠提高程序的執行效率。

124、浮點數在計算中如何表示,如何對浮點數判等。

125、簡述TCP與UDP協議的差別,兩者與HTTP的關系。并列舉HTTP的方法,以及常見的返回狀態碼。

126、設計一個反轉字符串的函數 char *reverse_str(char *str),不使用系統函數。

127、給定一個字符串,(1,(2,3),(4,(5,6),7)),使它變為(1,2,3,4,5,6,7),設計一個算法消除其中嵌套的括號。(c/c++)

128、使用C語言實現htonl(將long性轉為網絡字節碼),不使用系統自帶函數。

129、面向對象是一種思想,使用C語言來實現下列問題。

1). 如何定義一個類?

2). 如何創建以及銷毀對象?

3). 如何實現類的繼承?

題目來源:http://blog.csdn.net/cocoarann ... 91025

130、數組A中任意兩個相鄰元素大小相差1,在其中查找某個數。

數組A中任意兩個相鄰元素大小相差1,現給定這樣的數組A和目標整數t,找出t在數組A中的位置。

如數組:[1,2,3,4,3,4,5,6,5],找到4在數組中的位置。

這道題目最差時間復雜度也是O(N),所以重點在于能不能找到一種盡可能減少比較次數的方法。@jefflee 的方法就很不錯,但感覺應該還可以繼續優化?

131、給定n個元素,打印出全排列

比如輸入1 2 3,打印出6種排列情況

132、有兩個不同的數在1-30之間(不包括1和30),甲知道兩數之和,乙知道兩數之積。乙問甲知道是那兩個數嗎?甲說不知道。甲同樣反問乙,乙也說不知道。然后乙說我知道了,再然后甲說我知道了。請問是哪兩個數?

解析:前提是甲不能能通過兩數之和確定具體哪兩個數,乙也不能通過兩數之積判斷出具體哪兩個數。

然后當乙知道甲也不能確定的時候,乙卻可以快速判斷出來說明甲心里已經有了幾個選項,然后根據甲不確定就可以排除掉不正確的。然后甲也是如此。

來源:http://ask.julyedu.com/question/261

133、子query統計和重要子query識別

問題定義:

當query A切詞后的term集是query B切詞后的term集的真子集時,稱query A為query B的子query,例如:

“劉德華”的切詞結果為“劉德華”;

“劉德華電影”的切詞結果為“劉德華 電影”;

“劉德華最新電影”的切詞結果為“劉德華 最新 電影”;

“劉德華電影下載”的切詞結果為“劉德華 電影 下載”;

根據以上切詞結果,劉德華”是“劉德華電影”,“劉德華最新電影”, “劉德華電影下載”的子query;

“劉德華電影”是“劉德華最新電影”, “劉德華電影下載”的子query;

但是,“劉德華電影下載”和“劉德華最新電影”互相不是對方的子query。

現有億級的用戶query,并且知道每個query的查詢次數,要求:

(1)列出一個query的全部子query,寫出C語言實現。

(2) query中的不同term對這個query的重要性不同的,例如“劉德華 電影 下載”中“劉德華”和“電影”的重要性比“下載”重要,因為:“劉德華 電影“所表達的查詢需求,與”劉德華 下載“或者”電影 下載“相比,更接近原query的需求。根據(1)中的統計的子query數據,請給出一種思路,來計算一個query中的所有子query的重要性排序。

如果認為子query數據的信息不夠充分,請給出還需要哪些信息,以及獲得這些信息的途徑,給出算法思路描述,必要的符號和推理公式即可。

134、給定多個集合,求他們的笛卡爾積。

比如給定{a, b}, {1,2,3},結果為{a, 1}, {a, 2}, {a, 3}, {b,1}, {b, 2}, {b, 3};

要求時間和空間復雜度盡可能低,不要使用遞歸,不要使用類似樹的非遞歸實現。

135、一個單詞單詞字母交換,可得另一個單詞,如army->mary,成為兄弟單詞。提供一個單詞,在字典中找到它的兄弟。描述數據結構和查詢過程。

136、假設張三的mp3里有1000首歌,現在希望設計一種隨機算法來隨機播放。與普通隨機模式不同的是,張三希望每首歌被隨機到的改了吧是與一首歌的豆瓣評分(0~10分)成正比的,如樸樹的《平凡之路》評分為8.9分,逃跑計劃的《夜空中最亮的星》評分為9.5分,則希望聽《平凡之路》的概率與《夜空中最亮的星》的概率比為89:95,。現在我們已知這1000首歌的豆瓣評分:

1).請設計一種隨機算法來滿足張三的需求。

2).請寫代碼實現自己的算法。

社區討論地址http://ask.julyedu.com/question/127

137、給定任意一個正整數,求比這個數大且最小的“不重復數”,“不重復數”的含義是相鄰兩位不相同,例如1101是重復數,而1201是不重復數。

138[6,N]之內的所有素數中,兩兩之和為偶數的那些偶數

RT

其中N是個自然數,請給出算法描述,代碼與時間復雜度分析。

139在由N個正整數的集合S中,找出最大元素C,滿足C=A + B

RT

其中A,B都是集合S中元素,請給出算法描述,代碼與時間復雜度分析。

140、請列舉出你熟悉的知名論壇/社區的名稱、URL、優勢以及原因。

141、如何提高老年人和兒童使用手機百度的頻率?

142、百度衛士新推出看片保護(觀看視頻時防止病毒侵害)功能, 請針對該功能設計一個具體的運營規劃。

143、Cookie、sessionStorage、localStorage的區別

144、javascript中call()方法和apply()方法的區別。

145、什么是 “use strict”? 使用它的好處和壞處是什么?

146、寫一段簡單的正則表達式,匹配并取出字符串”https://www.baidu.com/s?cl=3”中的域名部分(注:域名部分非固定)

147、用原生javascript編寫程序:創建一個ul無序列表元素添加到body中,ul下包含5個li元素,每個li元素包含一個text類型元素,text元素內容可自定義。

148、假設有一個基礎對象叫“動物”,擁有以下屬性:腿的數量、是否有尾巴,有另外一個對象叫“貓”,擁有“動物”對象的屬性,并增加一個屬性為:動物名稱,再增加一個方法,返回動物名稱+腿的數量+是否有尾巴的描述,請使用javascript原型鏈繼承來創建以上2個對象。

149、請解釋tcp連接建立過程,如果可能,請結合相應系統調用函數解釋交互過程。

150、給定一個整數的數組,相鄰的數不能同時選,求從該數組選取若干整數,使得他們的和最大,要求只能使用o(1)的空間復雜度。要求給出偽碼。

151、二分查找是常用的編程方法,請用完整代碼實現該函數(不許調用庫函數)

void *bsearch(const void *key, const void *base, size_t nel, size_t width, int (*compar) (const void *, const void *));

152、對于Edit控件,你如何抓防止密碼框內容被抓取?

153、DNS欺騙的方式有哪些?

154、列舉兩種應用層中簡單的跨進程DLL注入的方法。

155、假設有如下所示的一個數字金字塔,現在,要求寫一個程序來查找從頂點到底部任意處結束的路徑,使路徑經過的數字的和最大,并輸出該路徑的最大和。比如以下金字塔的和最大路徑的和為7+3+8+7+5=30。

7

3 2

8 1 0

2 7 4 4

4 5 2 6 5

156、假設有如下字符串: (234453)[234]{2324} 現在,要求編程分析其括號配對是否正確。請自行選擇下列兩種方案之一實現該程序:

方案一:不考慮括號優先級,只考慮配對正確性;方案二:考慮括號優先級,比如{1[2(3)4]5} 是正確的。但是[1{2}3]是不正確的。

157、百度是一個大型網站,內部含有多個產品線,比如廣為人知的貼吧、知道、空間等應用。然而設計這些應用的統一登錄平臺卻是一件非常艱巨的挑戰。需要考慮到通用性和安全性。

1). 對于一個Web應用程序,主要的身份驗證和憑證保持的方法主要有cookie和session兩種。他們又是如何起作用的?各有哪些優缺點?

2). 影響到cookie值作用范圍的因素有哪些?請一一說明。

3)?.從安全角度來考慮,一個大型網站的單點登錄可能會引入哪些安全問題?如何設計安全的在線單點登錄系統?

158、HTML的Doctype作用??嚴格模式與混雜模式如何區分?它們有何意義?

159、請用CSS實現如下圖的樣式,相關尺寸如圖示,其中dom結構為:

160、簡述document.write和 innerHTML的區別。

161、你知道的,javascript語言的執行環境是"單線程模式",這種模式的好處是實現起來比較簡單,執行環境相對單純;壞處是只要有一個任務耗時很長,后面的任務都必須排隊等著,會拖延整個程序的執行,因此很多時候需要進行“異步模式”,請列舉js異步編程的方法。

162、用戶從手機的瀏覽器訪問www.baidu.com,看到的可能跟桌面PC電腦,是不太一樣的網頁效果,會更適合移動設備使用。請簡要分析一下,實現這種網頁區分顯示的原因及技術原理。

163、Flappy Bird是風靡一時的手機游戲,玩家要操作一只小鳥穿過無窮無盡的由鋼管組成的障礙。如果要你在HTML前端開發這個游戲,為了保證游戲的流暢運行,并長時間運行也不會崩潰,請列舉開發要注意的性能問題和解決的方法。

164、如下圖,請實現表格信息的排序功能,當點擊表頭的屬性區域,將表格信息進行排序切換功能,即第一次點擊為降序排序,再一次點擊進行升序排序。

165、C++有哪些數據類型?為什么long和int都是4字節?

166、JAVA和C++的區別是什么?分別用在什么情景比較好?

167、給定一個文件每一行是字符串,找出所有的逆序對,比如abc和cba是逆序的對。

168、給定一個奇數n,比如n=3,生成1到n平方的數,如1到9,填入九宮格,使得橫豎斜的和都相等。

169、C和C++有什么區別,能用C實現C++所有功能嗎?C能實現多態嗎?

170、25匹馬,5條賽道,一匹馬一個賽道,比賽只能得到5匹馬之間的快慢程度,而不是速度,求決勝1,2,3名至少多少場。

171、請用c++ 實現stl中的string類,實現構造,拷貝構造,析構,賦值,比較,字符串相加,獲取長度及子串等功能。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,197評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,415評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,104評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,884評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,647評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,130評論 1 323
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,208評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,366評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,887評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,737評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,939評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,478評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,174評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,586評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,827評論 1 283
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,608評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,914評論 2 372

推薦閱讀更多精彩內容

  • 8086匯編 本筆記是筆者觀看小甲魚老師(魚C論壇)《零基礎入門學習匯編語言》系列視頻的筆記,在此感謝他和像他一樣...
    Gibbs基閱讀 37,298評論 8 114
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,714評論 18 399
  • 2017年11月11日是個特別值得紀念的日子,育心經典麗謙之家來自全國8個地方總109個家人從網絡相聚到深圳天安云...
    陳境墨閱讀 518評論 2 3
  • 一個月了,忽然又回到以前的狀態。我并不想吵架。忽然就不喜歡這里了。前天小姐姐忽然給我打電話,你想考個會計玩嗎?我自...
    a02296e86485閱讀 150評論 0 0