內部資料 入口網站應聘考試曝光(百度篇)
內部資料:入口網站應聘考試曝光(百度篇)
先看看關於百度的筆試題。希望給大家點啟發。
一、選擇題:15 分 共 10 題
1. 在排序方法中,關鍵碼比較次數與記錄地初始排列無關的是:
A. Shell 排序 B. 歸併排序 C. 直接插入排序 D. 選擇排序
2. 以下多執行緒對 int 型變數x的操作,哪幾個需要進行同步:
A. x=y; B. x++; C. ++x; D. x=1;
3. 程式碼
void func()
{
static int val;
…
}
中,變數 val 的記憶體地址位於:
A. 已初始化資料段 B.未初始化資料段 C.堆 D.棧
4. 同一程序下的執行緒可以共享以下:
A. stack B. data section C. register set D. thread ID
5. TCP 和 IP 分別對應了 OSI 中的哪幾層?
A. Application layer B. Data link layer C. Presentation layer D. Physical layer E. Transport layer F. Session layer G. Network layer
6. short a[100],sizeof(a) 返回?
A. 2 B. 4 C. 100 D. 200 E. 400
7. 以下哪種不是基於元件的開發技術_____。
A. XPCOM B. XP C. COM D. CORBA
8. 以下程式碼列印的結果是(假設執行在 i386 系列計算機上):
struct st_t
{
int status;
short *pdata;
char errstr[32];
};
st_t st[16];
char *p = (char *)( st[2].errstr + 32 );
printf( "%d", ( p - (char *)(st) ) );
A. 32 B. 114 C. 120 D. 1112
9. STL 中的哪種結構是連續形式的儲存:
A. map B. set C. list D. vector
10. 一個棧的入棧序列是 A,B,C,D,E,則棧的不可能的輸出序列是:
A. EDCBA B. DECBA C. DCEAB D. ABCDE
二、簡答題:20 分,共 2 題
1. (5 分)重複多次 fclose 一個開啟過一次的 FILE *fp 指標會有什麼結果,並請解釋。
考察點:導致檔案描述符結構中指標指向的記憶體被重複釋放,進而導致一些不可預期的異常。
2. (15 分)下面一段程式碼,想在呼叫 f2(1) 時列印 err1,呼叫 f2(2) 時列印 err4,但是程式碼中有一些問題,請做盡可能少的'修改使之正確。
1 static int f1( const char *errstr, unsigned int flag ) {
2 int copy, index, len;
3 const static char **__err = { "err1", "err2", "err3", "err4" };
4
5 if( flag & 0x10000 )
6 copy = 1;
7 index = ( flag & 0x300000 ) >> 20;
8
9 if( copy ) {
10 len = flag & 0xF;
11 errstr = malloc( len );
12 if( errstr = NULL )
13 return -1;
14 strncpy( errstr, __err[index], sizeof( errstr ) );
15 } else
16 errstr = __err + index;
17 }
18
19 void f2( int c ) {
20 char *err;
21
22 swtch( c ) {
23 case 1:
24 if( f1( err, 0x110004 ) != -1 )
25 printf( err );
26 case 2:
27 if( f2( err, 0x30000D ) != -1 )
28 printf( err );
29 }
30 }
三、程式設計題:30 分 共 1 題
注意:要求提供完整程式碼,如果可以編譯執行酌情加分。
1. 求符合指定規則的數。
給定函式 d(n) = n + n 的各位之和,n 為正整數,如 d(78) = 78+7+8=93。 這樣這個函式可以看成一個生成器,如 93 可以看成由 78 生成。
定義數 A:數 A 找不到一個數 B 可以由 d(B)=A,即 A 不能由其他數生成。現在要寫程式,找出 1 至 10000 裡的所有符合數 A 定義的數。
輸出:
1
3
…
四、設計題:35 分 共 1 題
注意:請儘可能詳細描述你的資料結構、系統架構、設計思路等。建議多寫一些虛擬碼或者流程說明。
1. 假設一個 mp3 搜尋引擎收錄了 2^24 首歌曲,並記錄了可收聽這些歌曲的 2^30 條 URL,但每首歌的 URL 不超過 2^10 個。系統會定期檢查這些 URL,如果一個 URL 不可用則不出現在搜尋結果中。現在歌曲名和 URL 分別透過整型的 SONG_ID 和 URL_ID 唯一確定。對該系統有如下需求:
1) 透過 SONG_ID 搜尋一首歌的 URL_ID,給出 URL_ID 計數和列表
2) 給定一個 SONG_ID,為其新增一個新的 URL_ID
3) 新增一個新的 SONG_ID
4) 給定一個 URL_ID,將其置為不可用
限制條件:記憶體佔用不超過 1G,單個檔案大小不超過 2G,一個目錄下的檔案數不超過 128 個。
為獲得最佳效能,請說明設計的資料結構、搜尋演算法,以及資源消耗。如果系統資料量擴大,該如何多機分佈處理?
百度第二套
一、選擇題:15 分 共 10 題
1. 已知一個線性表(38,25,74,63,52,48),採用的雜湊函式為 Hash($Key)=$Key mod 7,將元素雜湊到表長為7的雜湊表中儲存。請選擇後面兩種衝突解決方法分別應用在該散列表上進行等機率查詢的平均查詢長度,拉鍊法 ,線性探測法 .
A. 1.0 B. 1.5 C. 1.7 D. 2.0 E. 2.3
F. 7/6 G. 4/3 H. 3/2
2. 需要將OS緩衝區的資料重新整理到硬碟,可以呼叫的函式有(多選):
A.fflush() B. fsync() C. sync() D.writev()
3. 下面哪個shell語句不能打印出使用者主目錄的路徑?
A. echo "$HOME" B. echo ~
C. echo `$HOME` D. echo $HOME
4. 最壞情況下,合併兩個大小為n的已排序陣列所需要的比較次數
A.2n B.2n-1 C.2n+1 D.2n-2
5. 一個B類網的子網掩碼是255.255.240.0,這個子網能擁有的最大主機數是:
A. 240 B. 255 C.4094 D. 65534
6. 以下程式碼執行後,val的值是___:
unsigned long val = 0;
char a = 0x48;
char b = 0x52;
val = b << 8 | a;
A 20992 B 21064 C 72 D 0
7. 記憶體的速度遠遠高於磁碟速度,所以為了解決這個矛盾,可以採用:
A 並行技術 B 虛存技術 C 緩衝技術 D 通道技術
8. 以下程式碼列印的結果是(假設執行在i386系列計算機上):
struct st_t
{
int status;
short* pdata;
char errstr[32];
};
st_t st[16];
char* p = (char*)(st[2].errstr + 32);
printf("%d", (p - (char*)(st)));
A 32 B 114
C 120 D 1112
9. 同一程序下的執行緒可以共享以下
A. stack B. data section
C. register set D. thread ID
10. 以下哪種操作最適合先進行排序處理?
A 找最大、最小值 B 計算算術平均值
C 找中間值 D 找出現次數最多的值
二、簡答題:20分,共2題
1. (6分)下面是一個http請求:
GET /baidu/blog/item/6605d1b4eb6433738ad4b26d.html HTTP/1.1
Host: hi.baidu.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://hi.baidu.com/baidu
Cookie: BAIDUID=AFB70E986AC48B336ABAB7505CDD1C76;
請解釋以下各欄位基本含義: Host、User-Agent、Accept-Charset、Connection、Referer、Cookie
2. (14分)函式A將字串str1轉成小寫,並打印出轉化前後的字串。另外,改錯時不能函式的介面和主要思路。改錯時,請指出行號。
1 #include
2 #include
3
4
5 char* str1 = "ABDFLjlero我們都是saf";
6
7 char* ToLower(char s[])
8 {
9 static size_t i=sizeof(s);
10
11 for (i; i>=0; i--) {
12 if (s>"A" && s<"Z") {
13 s += 26;
14 }
15 }
16 return s;
17 }
18
19 int A()
20 {
21 printf("old str[%s] after lower[%s]n", str1, ToLower(str1));
22 }
三、程式設計題:30分 共1題
注意:要求提供完整程式碼,如果可以編譯執行酌情加分。
1. 兩個已排序的整型陣列,求交集,最快演算法
輸入:兩個已排序的整型陣列(int a[m], b[n])
輸出:兩個陣列的交集
四、設計題:35分 共1題
注意:請儘可能詳細描述你的資料結構、系統架構、設計思路等。建議多寫一些虛擬碼或者流程說明。
1. 考慮一個字串替換的過程,在一個文字檔案中含有一些文字內容和一些需要替換的變數,變數的格式為“$Var$”,原來的“$”使用“$$”進行轉義,原來的“$$”表示為“$$$”。我們將含有變數的檔案稱為模板(檔名為t),文字檔案的平均長度為100K。另外,還有一系列的變數檔案,裡面為變數名和變數值的對應關係(檔名為1.v , 2.v… n.v),每個變數檔案包含的變數數在百萬數量級,且變數排列次序不定。現要求將,模板裡的變數分別用變數檔案裡的變數替換,並將生成的檔案寫成 (1.r, 2.r… n.r)。