天天看點

百度2015校園招聘筆試題

百度2015校園招聘筆試題(自己憑記憶第一時間,記錄了這麼多,有些描述比較簡單,請大神們補充)

一 、簡答題(30分)

1. 程序和線程的聯系與差別。

2. 簡述資料庫的存儲過程及其優點。

3. static全局變量與普通的全局變量有什麼差別?static局部變量和普通的差別?static函數和普通函數的差別?

二、 算法與程式設計題(45分)

1 請編碼實作memcpy函數:void *memcpy(void *dst,const void *src,unsigned int len)

2 整數矩陣A[N][N],N<10000,滿足如下條件:

當 j < k 時,有:

A[i][j] < A[i][k] 且 A[j][i] < A[k][i]

輸入整數M,輸出M在矩陣中的位置<i,j>,如果未找到,則輸出NULL,要求盡可能的高效。

3 設計一個棧,要求提供min造作的函數,且算法複雜度為O(1)

三、系統設計題(25)

就一道題:新浪微網誌,URL --> TinyURL

問題一:tinyurl後面的編碼如何産生

問題二:當使用者給出一個已映射過的URL時,如何找到其已經存在的tinyurl

問題三:若URL數量達到十億條,在一個伺服器上存儲不下,要分不到10個伺服器,怎麼運作?

下面是一個插入的題目,百度面試時提問的題目:

依序周遊0到100閉區間内所有的正整數,如果該數字能被3整除,則輸出該數字及‘*’标記;如果該數字能被5整除,則輸出該數字及‘#’标記;如果該數字既能被3整除又能被5整除,則輸出該數字及‘*#’标記。于此,個人提點拙劣的想法

第一思路是:(有些拙計)

void myAnswer(){  
   for(int i=0;i<=100;i++){  
         if(i%3==0){  
            if(i%5==0)cout<<i<<"*#";  
            else cout<<i<<"*";  
         }  
         else if(i%5==0) cout<<i<<"#";  
  }  
}             

後來想了一下,感覺很熟悉(poj 上的湊數)

int n=100,m3=1,m5=1,p=1;  
while(p<=100)
{  
  if(m3*3>m5*5)
  {  
    m3++;  
    p=m3*3;  
    cout<<p<<"*";  
  }  
  else if(m3*3<m5*5)
  {  
    m5++;  
    p=m5*5;  
    cout<<p<<"#";  
  }  
  else
 {  
    m3++;  
    m5++;  
    p=m3*3;  
    cout<<p<<"*#";  
  }  
}            

繼續閱讀