2013 9 28 天津 百度軟體研發筆試題

2021-06-18 13:53:52 字數 4106 閱讀 6562

希望大家對一些有疑問的題,多提提自己的看法,謝謝!

二者是都是共享**的方式,也可稱為程式模組化的方式;

靜態庫的結構比較簡單,其實就是把原來的目標**放在一起,鏈結程式根據每乙份目標**的符號表查詢相應的符號(函式和變數的名字),找到的話就把該函式裡面需要定位的進行定位,然後將整塊函式**放進可執行檔案裡,若是找不到需要的函式就報錯退出。

優點:

1:效能上有一定的提高。比如,exe模組呼叫動態鏈結庫的匯出函式時,需要先載入動態鏈結庫,有一定的效能損失;

2:靜態鏈結可以避免執行程式的系統缺少動態庫而無法執行的情況。比如,vs2008編譯的mfc動態鏈結的應用程式,會需要mfc90u.dll這個動態庫檔案。如果目標系統缺少這個動態庫的話,程式就會載入失敗。

缺點:

1:鏈結後產生的可執行檔案包含了所有需要呼叫的函式的**,因此占用磁碟空間較大。

2:如果有多個(呼叫相同庫函式的)程序在記憶體中同時執行,記憶體中就存有多份相同的庫函式**,因此占用記憶體空間較多。

動態鏈結的意思就是在程式裝載記憶體的時候才真正的把庫函式**鏈結進行確定它們的位址。

優點:

1、有利於程式共享

2、多個程式使用dll的單一對映,節約記憶體空間

3、通過程式拆分,有利於程式公升級

4、可以節約大量硬碟空間

缺點:1:效能上應該不如靜態鏈結

2:程式如果缺少動態庫將無法執行

2:輪詢任務排程與搶占式任務排程的區別?

輪詢排程演算法的原理是每一次把來自使用者的請求輪流分配給內部中的伺服器,從1開始,直到n(內部伺服器個數),然後重新開始迴圈。

搶占式任務排程允許排程程式根據某種原則去暫停某個正在執行的程序,將已分配給該程序的處理機重新分配給另一程序。搶占方式的優點是,可以防止乙個長程序長時間占用處理機,能為大多數程序提供更公平的服務,特別是能滿足對響應時間有著較嚴格要求的實時任務的需求。

3:請列出資料庫中常用的鎖,分別給出應用場景?

排它鎖(寫鎖):若事務t對資料物件a加上x鎖,則只允許t讀取和修改a,其他任何事務都不能再對a加任何型別的鎖,直到t釋放a上的鎖。保證其他事務在t釋放a上的鎖之前不能在讀取和修改a。

共享鎖(讀鎖):若事務t對資料物件a加上s鎖,則事務t可以讀a但不能修改a,其他事務只能再對a加上鎖,而不能加x鎖,直到t釋放a上的鎖。保證其他事務可以讀a,但在t釋放a上的鎖s之前不能對a做任何操作。

活鎖:如果事務t1封鎖了資料r,事務t2又請求封鎖r,於是t2等待。t3也請求封鎖r,當t1釋放了r上的封鎖之後系統首先批准了t3的請求,t2仍等待。然後t4又請求封鎖r,當t3釋放了r上的鎖之後系統又批准了t4的請求……t2有可能永遠等待,這就是活鎖。

死鎖:如果事務t1封鎖了資料r1,t2封鎖了資料r2,然後t1又請求封鎖r2,因t2已封鎖了r2,於是t1等待t2釋放r2上的鎖。接著t2又申請封鎖r1,t2也只能等待t1釋放r1上的鎖。這樣就出現了t1在等待t2,而t2又在等待t1的局面,t1和t2兩個事務將永遠不能結束。這就是死鎖。

幾種意向鎖

意向共享鎖(is鎖):如果對乙個資料物件加is鎖,表示它的後裔結點擬加s鎖。例如,事務t1要對r1中某個元組加s鎖,則要先對關係r1和資料庫加is鎖。

意向排它鎖(ix鎖):如果對乙個資料物件加ix鎖,表示它的後裔結點擬加x鎖。例如,事務t1要對r1中某個元組加x鎖,則要先對關係r1和資料庫加ix鎖。

共享意向排它鎖(six鎖):如果對乙個資料物件加six鎖,表示對它加s鎖,再加ix鎖,即six=s+ix。例如,對某個表加six鎖,則表示該事務要讀取整個表(所以要對該錶加s鎖),同時會更新個別元組(所以要對該錶加ix鎖)。

1:n為正整數,求比這個數大且最小的不重複數,重複數為相鄰兩位數字相同,如1101為重複數,1231為不重複數。

方法一:暴力解法

#include "stdafx.h"

#include using namespace std;

bool isnorepeatnum(int key)

key /= 10;

} return flag;

}int findnextnotrepeatnum(int inputnum)

int _tmain(int argc, _tchar* argv)

; for ( int i = 0; i < 5; i++ )

int* pprocessedbitnum= new int[ndigitcount]; //記錄當前以出

int p = 1, q = 10;

nnewnum = nnum;

nprocesscount = 0;

while ( nprocesscount < ndigitcount-1 )

else

}return nnewnum;

}

2:長度為n(n很大)的字串,求這個字串裡的最長回文子串。

解析:

3:數軸上從左到右有n個點a[0],a[1],…a[n-1],給定一根長度為l的繩子,求該繩子能覆蓋幾個點。

方法一:利用列舉法,將任意兩點區間長度與l相比,更新最大長度

#include "stdafx.h"

#include using namespace std;

int maxcovercount(int* arr, int len, int l)

} }return maxcover;

}int _tmain(int argc, _tchar* argv)

; int len = 100;

cout << maxcovercount(a,9,len) 《方法二:時間複雜度為o(n)-----參考我一戰友insistgogo的解法

分析:可設定兩個游標ns和ne,根據兩端點的距離d與l的長度進行比較

(1)如果l>=d,ne向後移動一位,增大當前區間

(2)如果l

**:

#include "stdafx.h"

#include using namespace std;

int maxcovercount(int* arr, int len, int l)

else //長度大於l將區間縮小

while (arr[nend]-arr[nstart] > l);

} }//將最後一區間和當前最大區間進行判斷

maxcover = (maxcover>ncurcount)? maxcover : ncurcount;

return maxcover;

}int _tmain(int argc, _tchar* argv)

; int len = 105;

cout << maxcovercount(a,9,len) 《現代系統的設計過程中,為了減輕請求的壓力,通常採用快取技術,即分布式快取或客戶端的排程模組,將針對不同內容的使用者請求分配給不同的快取伺服器進行處理,請設計該伺服器滿足:

1) 單台快取伺服器故障,整個分布式快取集群,可以繼續提供服務。

2)通過一定得分配策略,可以保證充分利用每個快取服務的儲存空間,及負載均衡。當部分伺服器故障或系統擴容時,改分配策略可以保證較小的快取檔案重分配開銷。

3)當不同快取伺服器的儲存空間存在差異時,分配策略可以滿足比例分配。

解析:不懂這塊的系統設計題屬於哪部分知識,應該如何準備,望大牛,指點指點。

百度2014校招 深圳軟體研發崗

一 簡答題 1.動態鏈結庫和靜態鏈結庫分別有什麼優缺點?2.輪詢任務排程與搶占式任務排程的區別?3.請列出資料庫中常用的鎖,分別給出其應用場景?二 演算法與程式設計題 1.給定任意乙個正整數,求比這個數大且最小的 不重複數 不重複的含義是相鄰兩位不相同,例如1101是重複數,1031是不重複數?2....

2013百度研發筆試

一 簡答題 1.動態鏈結庫和靜態鏈結庫的優缺點 2.輪詢任務排程和可搶占式排程有什麼區別?3.列出資料庫中常用的鎖及其應用場景 二 演算法設計題 1.給定n是乙個正整數,求比n大的最小 不重複數 這裡的不重複是指沒有兩個相等的相鄰位,如1102中的11是相等的兩個相鄰位故不是不重複數,而12301是...

百度2023年校園招聘 軟體研發筆試題

昨天的筆試。今晚才抽出空來一下寫。下面內容基本是回憶的,正確性不敢保證。一 簡答題 30分 1.簡述資料庫及執行緒死鎖產生的必要條件,並簡述如何避免死鎖。2.簡述c 物件導向思想的3大要素和5大設計原則。3.簡述windows記憶體管理的幾種方式,及其優缺點。二 程式設計和演算法題 40分 1.某公...