百度2013校園招聘題

2021-06-11 17:36:01 字數 2449 閱讀 5203

第一題,基礎題:

1. 資料庫及執行緒產生死鎖的原理和必要條件,如何避免死鎖。

2. 列舉物件導向程式設計的三個要素和五項基本原則。

解答:

封裝,繼承,多型
物件導向的五大基本原則

單一職責原則(srp)

開放封閉原則(ocp) 

黎克特制替換原則(lsp) 

依賴倒置原則(dip) 

介面隔離原則(isp)

單一職責原則(srp)

3.windows記憶體管理的方式有哪些?各自的優缺點。

第二題,演算法與程式設計:

1.公司舉行羽毛球比賽,採用淘汰賽,有1001個人參加,要決出「羽毛球最高選手」,應如何組織這次比賽?可以使用偽**。

解答:堆排序或者競標賽排序。

2.有100盞燈泡,第一輪點亮所有電燈,第二輪每兩盞燈熄滅一盞,即熄滅第2盞,第4盞,以此類推,第三輪改變編號為3的倍數的電燈,第3盞,第6盞,如果原來那盞燈是亮的,就熄滅它,如果原來是滅的,就點亮它,以此類推,直到第100輪。問第100結束後,還有多少盞燈泡是亮的?

解答:完全平方數。

3.有20個有序陣列,每個陣列有500個uint變數,降序排序。要求從這10000個元素中選出最大的500個。

解答:可能是多路歸併排序思想,用到了堆,使用了優先佇列資料結構

[cpp]view plain

copy

print?

#include 

#include 

#include 

#include 

using

namespace std;  

#define rows 20

#define cols 500

int data[rows][cols];  

void createdata()  

}  for( int i=0; isort(data[i],data[i]+cols, greater());     //對每一行降序排列

}  struct node   

};  

void outmindata( int k)  

priority_queuequeue( arr, arr+rows );  //使用優先佇列,預設是大堆

for( int i=0; i//演算法核心就是這個迴圈

}  int main()    

#include #include #include #include using namespace std;

#define rows 20

#define cols 500

int data[rows][cols];

void createdata()

struct node

};void outmindata( int k)

}  char *pszstringrotate(char *pszstring, int ncharsrotate)  

int main()  

#include using namespace std;

void reversestring( char* pbegin, char* pend )

}char *pszstringrotate(char *pszstring, int ncharsrotate)

int main(){

char str = "abcdefg";

char *s = pszstringrotate( str, 3 );

if( s )

cout << s 《第三題,系統設計題:

手機數字鍵上有拼音字母,乙個數字串對應著多個字母序列,如2--abc,6--mno,9--wxyz,則926對應著wan,yan,是漢字「萬」、「豔」的拼音等。要求設計乙個系統,輸入是聯絡人列表userlist,漢字字母對映dict,數字串numstr,輸出滿足下列條件的聯絡人列表resultlist:

(1)輸入乙個數字串,輸出與其部分連續匹配的所有手機號,如,輸入926,輸出13926118288

(2)輸入乙個數字串,輸出與其部分連續匹配的所有聯絡人姓名拼音,如輸入926,輸出「李萬」,「李豔」等

解答:

1,字典樹

2,雜湊表

2.2的解答:

這道題讓人一看覺著非常有趣,但又讓人感覺很複雜,其實這道題,只要弄清三點,問題就迎刃而解了。

1.對於每盞燈,拉動的次數是奇數時,燈就是亮著的,拉動的次數是偶數時,燈就是關著的。

2.每盞燈拉動的次數與它的編號所含約數的個數有關,它的編號有幾個約數,這盞燈就被拉動幾次。

3.1——100這100個數中有哪幾個數,約數的個數是奇數。我們知道乙個數的約數都是成對出現的,只有完全平方數約數的個數才是奇數個。

所以這100盞燈中有10盞燈是亮著的。

它們的編號分別是: 1、4、9、16、25、36、49、64、81、100。

2017百度校園招聘程式設計題

題目大概為輸入n個敏感詞彙和乙個文字串,在文字串中出現敏感詞彙的地方用 替代掉,輸出替換後的文字串。思路 直接kmp匹配出現敏感詞的地方,用乙個中間陣列標記。唯一的陷阱就是不區分大小寫,所以用kmp判斷兩個字元相等的注意下 替換敏感詞彙 include include include include...

2008百度校園招聘題一道

題目大意如下 一排n 最大 個正整數 1遞增,亂序排列,第乙個不是最小的,把它換成 1,最小數為 且未知求第乙個被 1替換掉的數原來的值,並分析演算法複雜度。解題思路 一般稍微有點演算法知識的人想想就會很容易給出以下解法 設 sn a a 1 a 2 a n 1 na n n 1 2 掃一次陣列即可...

百度2015校園招聘筆試題

一 簡答題 30分 1.程序和執行緒的聯絡與區別。2.簡述資料庫的儲存過程及其優點。3.static全域性變數與普通的全域性變數有什麼區別?static區域性變數和普通的區別?static函式和普通函式的區別?二 演算法與程式設計題 45分 1 請編碼實現memcpy函式 void memcpy v...