查文庫>試題> 往年百度校園招聘筆試題

往年百度校園招聘筆試題

往年百度校園招聘筆試題

  在現實的學習、工作中,我們都可能會接觸到試題,藉助試題可以更好地考核參考者的知識才能。什麼樣的試題才能有效幫助到我們呢?以下是小編整理的往年百度校園招聘筆試題,歡迎閱讀與收藏。

往年百度校園招聘筆試題1

  1、假設進棧次序是e1, e2, e3, e4,那可能的出棧次序是()

  A、e2, e4, e3, e1

  B、e2, e3, e4, e1

  C、e3, e2, e4, e1

  D、e1, e2, e4, e3

  給定入棧順序,求出可能的出棧順序。(點評:老得掉渣得題目了,只要小心點都沒有問題)

  2、表示式X=A+B__(C-D)/E的字尾表示形式可以是()

  A、XAB+CDE/-__=

  B、XA+BC-DE/__=

  C、XABCD-__E/+=

  D、XABCDE+__/=

  分析:XABCD-__E/+=

  3、四叉樹中包含地空指標數量有多少?假設每個節點含有四個指向其孩子的指標,那麼給定n個節點,其4n個指標有多少指向空?(比較簡單的題目,n個節點使用了的指標有n-1,所以最後的答案位4n-(n-1)=3n+1)

  分析:或者舉例說明也行。。

  4、那個排序演算法是非穩定的?選擇,冒泡、希爾,堆排序,快速等(也是比較基礎的題目)

  A、氣泡排序B、歸併排序C、快速排序D、堆排序E、希爾排序

  分析:凡是O(n^2)的全部是穩定排序,O(nlogn)的全部是非穩定排序。。

  5、根據函式,賦予引數值,寫輸出。。請問func(0x7f530829)的返回值是()

  int func(unsigned int i)

  {

  Unsigned int temp = i;

  Temp = (temp & 0x55555555) + ((temp & 0xaaaaaaaa)>>1);

  Temp = (temp & 0x33333333) + ((temp & 0xcccccccc)>>2);

  Temp = (temp & 0x0f0f0f0f) + ((temp & 0xf0f0f0f0)>>4);

  Temp = (temp & 0xff00ff) + ((temp & 0xff00ff00)>>8);

  Temp = (temp & 0xffff) + ((temp & 0xffff0000)>>16);

  return temp;

  }

  A、15 B、16 C、17 D、18

  分析:函式實現的是求二進位制表示的時候,1的個數,一共15個

  最開始把每一個位看做一個節點,相鄰節點值相加,結果用兩個位表示、、、、、、然後每兩個位看做一個節點,相鄰節點值相加,結果用四個位表示、、、、、、以此類推,直到只剩下一個節點、、、、、、

  6、程序與執行緒的區別:系統排程是對程序還是執行緒,執行緒與程序共享的記憶體空間、公共地址空間等;

  A、作業系統只調度程序,不排程執行緒

  B、執行緒共享記憶體地址空間,程序不共享

  C、執行緒間可共享記憶體資料,但程序不可以

  D、程序可以透過IPC通訊,但執行緒不可以

  7、記憶體管理:段頁式管理,地址對映表是?(作業系統方面的知識也不能掉以輕心呀)

  A、每個作業或程序一張段表,一張頁表

  B、每個作業或程序的每個段一張段表,一張頁表

  C、每個作業或程序一張段表,每個段一張頁表

  D、每個作業一張頁表,每個段一張段表

  8、關於TCP協議,下面哪種說法是錯誤的()

  A、TCP關閉連線過程中,兩端的socket都會經過TIME_WAIT狀態

  B、對一個Established狀態的TCP連線,呼叫shutdown函式可以讓主動呼叫的一方進入半關閉狀態

  C、TCP協議預設保證了當TCP的一端發生意外崩潰(當機、網線斷開或路由器故障),另一端能自動檢測到連線失效

  D、在成功建立連線的TCP上,只有在Established狀態才能收發資料,其他狀態都不可以。

  分析:tcp/ip協議的實際使用過程中的問題:例如單方面斷開後,另一端出於哪種狀態,還有

  9、關於主鍵Primary Key和索引index的說法哪些是錯誤的?()

  A、唯一索引的列允許為NULL值

  B、一個關係表中的外來鍵必定是另一表中的主鍵

  C、一個表中只能有一個唯一性索引

  D、索引主要影響查詢過程,對資料的插入影響不大

  分析:資料庫方面的知識:主鍵和索引的基本定義及其性質,例如主鍵在表中是否唯一,索引的速度以及對錶的改變的影響;無論是唯一索引還是非唯一索引,索引列都允許取NULL值

  10、資料庫的'事務隔離級別一般分為4個級別,其中可能發生“不可重複讀”的事物級別有()

  A、SERIALIZABLE

  B、READ COMMITTED

  C、READ UNCOMMITTED

  D、REPEATABLE READ

  分析資料庫:資料庫的不可重複訪問異常,四種事務隔離級別中哪些可以避免該類異常?

  各隔離級別對各種異常的控制能力

  LU丟失更新DR髒讀NRR非重複讀SLU二類丟失更新PR幻像讀

  未提交讀RU Y Y Y Y Y

  提交讀RC N N Y Y Y

  可重複讀RR N N N N Y

  序列讀S N N N N Y

  11、如果F(n)為該數列的第n項,那麼這句話可以寫成如下形式:

  F(1)=1,F(2)=1,F(n)=F(n-1)+F(n-2) (n>=3)

  請實現該函式F(n)的求解,並給出演算法複雜度,要求演算法複雜度小於O(n^2)。

  思路:使用滾動陣列可以儲存以前儲存的結果,加快速度,減少空間複雜度。

  int Fib(int index)

  {

  if(index<1)

  {

  return-1;

  }

  int a1=1,a2=1,a3=1;

  For(int i=0;i

  {

  A3=a1+a2;

  A1=a2;

  A2=a3;

  }

  return a3;

  }

  第二部分(必做):程式設計

  1、下面的程式的輸出是什麼?

  #include

  int main(void)

  {

  int n;

  Char y[10] = "ntse";

  Char __x = y;

  n = strlen(x);

  __x = x[n];

  x++;

  printf("x=%s ",x);

  printf("y=%s ",y);

  return 0;

  }

  輸出:

  x=tse

  y=

  因為n=4,則__x = x[n];的功能是將x指向的第一個字元n修改為,這樣y字串就結束了,所以第二輸出為空,x++操作後,x指向第二個字元t,所以第一個輸出為:tse。

  2、請給出下面程式的輸出結果,並說明原因。

  #include

  #include

  Using namespace std;

  Template

  Class array

  {

  public:

  Array(int size);

  size_t getVectorSize()

  {

  return _data、size();

  }

  size_t getSize()

  {

  return _size;

  }

  public:

  vector _data;

  size_t _size;

  };

  Template

  Array::array(int size) : _size(size) , _data(_size)

  { }

  int main(void)

  {

  Array __arr = new array(3);

  Cout

  Cout

  return 0;

  }

  12、寫一個程式來確定系統是大端模式還是小端模式;

  13、程式設計實現採用位操作來實現整數的加法操作。

  14、圖的矩陣表示法,圖的深度優先遍歷,演算法思路及其實現。

  15、CAS(compare and swap)操作實現:(具體原理可以參考)

  16、fork函式的用法。具體題目為:

  #include

  #include

  #include

  int main(void)

  {

  int i;

  For(i=0; i<2; i++){

  Fork();

  printf("-");

  Fflush(stdout);

  }

  return 0;

  }

  6個-

  詳見:style="text-indent: 2em; text-align: left;">17、spin lock原理:

  先來一些程式碼吧!

  void initlock(volatile int__ lock_status)

  {

  __lock_status = 0;

  }

  void lock(volatile int__ lock_status)

  {

  while(test_and_set(lock_status = =1);

  }

  void unlock(volatile int__ lock_status)

  {

  __lock_status = 0;

  }

  問題:volatile的作用?lock函式最佳化(針對在多cpu上提高cpu cache)?上面的缺陷(記憶體模式上的)?

  volatile的作用:作為指令關鍵字,確保本條指令不會因編譯器的最佳化而省略,且要求每次直接讀值。如果沒有volatile,基本上會導致這樣的結果:要麼無法編寫多執行緒程式,要麼編譯器失去大量最佳化的機會。

  18、給定一個巨大的檔案,如何從中選出k行,隨處輸出k行到檔案中。要求每一行出現的機率都相等。設計算法、說明思路,演算法複雜度。

  19、win32中WM_Quit的作用是什麼?

  20、比較mutex和臨街區之間的區別,並說明其使用場景。

  21、多執行緒程式設計,如何安全退出執行緒。

  還有網易資料探勘方面的題目,這次資料探勘的題目比較新奇,都是簡答題。如下:

  1,簡述你對資料與處理的認識;

  2,簡述你對中文分詞的理解,說明主要難點和常用演算法;

  3,常見的分類演算法有哪些;

  4,簡述K-MEANS演算法;

  5,設計一個智慧的商品推薦系統;

  6,簡述你對觀點挖掘的認識

  網易遊戲筆試的人太少,因此可提供的筆試題目都不全,只是聽說特別的難。還有好多是數學方面的智力題。例如:

  1、英雄升級,從0級升到1級,機率100%。

  從1級升到2級,有1/3的可能成功;1/3的可能停留原級;1/3的可能下降到0級;

  從2級升到3級,有1/9的可能成功;4/9的可能停留原級;4/9的可能下降到1級。

  每次升級要花費一個寶石,不管成功還是停留還是降級。

  求英雄從0級升到3級平均花費的寶石數目。

往年百度校園招聘筆試題2

  筆試的題目:

  一、簡答題

  1、簡述iso的7層設計

  2、如何在多個進行間進行資料共享(至少寫出3種)

  3、簡述TCP與UDP的區別

  二、演算法題

  1、有一個數據A = [a_1,a_2,a_3、、、、、a_n],n的大小不定,請設計算法將A中的所有資料組合進行輸出

  2、有一個數組,裡面的元素相鄰之間相差絕對值1,如{4,5,6,5,4,5,6,7,8,7,8,9},先給定已資料A請輸出該資料在陣列中的位置J?

  3、二叉樹的面積等於二叉樹的長乘以二叉樹的寬,二叉樹的寬等於最長節點間的距離,二叉樹的長等於根節點到子節點的最長長度,請設計算法計算二叉樹的面積?

  三、演算法設計題

  百度地圖中存在需要標註的很多點,並且這些點都需要帶描述,現將描述假設為矩形,並且可以位於點的左邊或右邊,但點不能移動,如果兩個點間的描述發生覆蓋,則

  需要將其中的一個點進行刪除

  1、在一個區域內,請設計算法將有效的點進行輸出(儘可能多的點)?

  2、如果區域足夠大,點足夠多,演算法會出現效能的瓶頸,請設計詳細的演算法來說明並解決問題?

往年百度校園招聘筆試題3

  一、簡答題

  1、OSI的七層模型。(10分)

  OSI的七層模型如下圖所示:

  2、請列舉下不同程序之間共享資料的方式(至少舉出三種)。(10分)

  1、檔案對映(Memory-Mapped Files)能使程序把檔案內容當作程序地址間一塊記憶體那樣來對待

  2、共享記憶體(Shared Memory)實際就是檔案對映的一種特殊情況

  3、命名管道(Named Pipe)是伺服器程序和一個或多個客戶程序之間通訊的單向或雙向管道

  4、郵件槽(Mailslots)提供程序間單向通訊能力,任何程序都能建立郵件槽成為郵件槽伺服器

  5、剪貼簿(Clipped Board)為不同應用程式之間共享不同格式資料提供了一條捷徑

  6、動態連線庫(DLL)中的全域性資料可以被呼叫DLL的所有程序共享

  3、請描述下TCP和UDP的差別,並且各列舉出一個上層協議。(10分)

  TCP---傳輸控制協議,提供的是面向連線、可靠的位元組流服務。當客戶和伺服器彼此交換資料前,必須先在雙方之間建立一個TCP連線,之後才能傳輸資料。TCP提供超時重發,丟棄重複資料,檢驗資料,流量控制等功能,保證資料能從一端傳到另一端。

  UDP---使用者資料報協議,是一個簡單的面向資料報的運輸層協議。UDP不提供可靠性,它只是把應用程式傳給IP層的資料報傳送出去,但是並不能保證它們能到達目的地。由於UDP在傳輸資料報前不用在客戶和伺服器之間建立一個連線,且沒有超時重發等機制,故而傳輸速度很快。

  經常使用“ping”命令的原理就是向對方主機發送UDP資料包,ftp等就是使用到的TCP協議

  二、演算法與程式設計

  1、給出一個數據A={a_0,a_1,a_2…a_n}(其中n可變),打印出該數值元素的所有組合。(15分)

  因為題目要求n可變,所以不可能是n層for迴圈的方式,可以採用遞迴的方式來實現,每次取一個元素,在剩下元素的陣列中遞迴,要注意遞迴結束的條件。

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

  最簡單的方式是迴圈遍歷每一個元素之後比較,找到t在A中的位置,此種方法效率最低;

  改進:因為相鄰元素差的絕對值都是1,那麼任意兩個元素相距的位置至少是兩元素差的絕對值個,假設要找的元素是t,t和a(0)的差為y1=abs(t-a[0]),那麼t和a[0]的距離至少是y1,再求一次差值y2=abs(t-a[y1]),t和a[y1+y2]的距離至少是y2,繼續向後查詢,直到相等為止,此種方法效率較前一種高

  3、有一顆二叉樹,定義樹的高度為從根到葉子節點的最長距離,樹的寬度為每層節點的最大值,樹的面積定義為高度和寬度的乘積。寫一個函式計算一個二叉樹的面積。(15分)

  廣度遍歷求樹的寬度,深度遍歷求樹的高度,之後計算面積