百度2013校園招聘筆試題 個人答案分析

2021-07-04 19:36:25 字數 3879 閱讀 9016

說明一下,程式設計題都是自己一點拙見,不免有很多 不到之處,錯誤的地方還請指出,一定認真修改。謝謝! 

三個基本要素:封裝、繼承、多型。

五個基本原則:

(1)單一職責原則:就乙個類而言,應該僅有乙個引起它變化的原因。

(2)開放封閉原則:軟體實體對外擴充套件開放,對修改封閉。

(3)黎克特制替換原則:子類的例項能夠替換父類的例項。

(4)介面分離原則:採用多個專門的介面比使用單一的總介面要好。乙個類對另乙個類的

依賴性建立在最小的介面上。

(5)依賴倒置原則:依賴抽象不要依賴具體實現。、 (1

)塊式管理。把主存分為一大塊、一大塊的,當所需的程式片段不在主存時就分配一塊主存空間,把程式片段載入到主存,就算所需要的程式片段只有幾個位元組也只能把這塊分配給它。優點:易於管理;缺點:浪費空間。 (2

)頁式管理。把主存分為一頁一頁的,每一頁的空間要比一塊一塊的空間小很多,顯然這種方式的空間利用率要比塊式管理高出很多。 (3

)段式管理。把主存分為一段一段的,每一段的空間又要比一頁一頁的空間小很多,這種方法在空間利用率上比頁式管理高出很多,但也有另外乙個缺點,乙個程式片段可能會被分為幾十個段,這樣很多時間就會浪費在計算每一段的實體地址上。(

i/o操作) (4

)段頁式管理。結合了段式管理和頁式管理的優點。把主存分為若干頁,每一頁又分為若干段。

1.公司組織一次羽毛球比賽,採用淘汰機制,假設公司有

1001

個人,如果要評出「公司羽毛球第一高手」的稱號,至少需要進行多少場比賽?請簡述設計過程,並寫出**模擬比賽過程。 /*

* 分析: 我們可以分輪來比賽,每一輪都有2個人去比賽,如果總數(person)是奇數,

* *       則有乙個輪空,否則全部參與比賽,淘汰一半(person/2),剩餘[person/2)+remain],

* *       這裡,remain=person%2.,淘汰的人數亦即比賽的場數,加起來就構成了比賽場

* *       數。

*/public

static

voidmain(string args) 

system.

out.println(

"共進行:"

+ result + 

"場比賽");

}2.一百個燈泡排成一排,第一輪將所有燈泡開啟;第二輪每隔乙個燈泡關掉乙個。即排在偶

數的燈泡被關掉,第三輪每隔兩個燈泡,將開著的燈泡關掉,關掉的燈泡開啟。依次類推,第100

輪結束的時候,還有幾盞燈泡亮著。 //

. //真神奇啊! //

分析:

所有的檯燈,只有摁下的次數是

奇數,那麼它一定是開啟的,而對於檯燈x

,如果其前面有基數個

x的約數,例如:

4=1*2*4

9=1*3*9

16=1*2*4*8*16

而6=1*2*3*6 //

偶數因此,1~100

內,查詢

x的約數個數為

奇數的數x

即為開著的檯燈。

public

static

voidmain(string args)  }

} private

static

booleanhasoddoddnumer(

intdata)  }

if

result = 

true; }

returnresult; }

3.假定有

20個有序陣列,每個陣列有

500個數字,數字型別32位

uint

數值,現在需要取出

這10000

個數字中最大的

500個,怎麼做?

額,這個我看了別人給的方案,發現自己想錯了,僅貼出別人的演算法:

從20個陣列中各取乙個數,並記錄每個數的**陣列,建立乙個含20個元素的大根堆。

時間複雜度:500*log2(20)

手機上通常採用九鍵鍵盤輸入。即:1-9

個數字分別對應一定的英文本母(如:2對應

abc, 

3對應def,

...)

,因此,使用者可以方便的輸入中文內容。比如,使用者輸入「

926」,可以對應

「wxyz

」,「abc"

和」mno

「的一系列組合」

wan」,「

yan"

、」zao

「等,這些對應「萬」,「嚴」,「早」

等漢字的中文拼音。

要求我們把這樣的輸入方式應用在我們的手機聯絡人查詢功能上。有乙個聯絡人列表

userlist,記錄了(姓名,手機號)這樣的組合,通過輸入的數字字串

numstr

,按照下面

的規則把對應的聯絡人查詢出來,返回乙個reaultlist。

規則:

1.手機號能連續部分匹配輸入的數字字串

numstr

。如輸入

numstr=926

,則手機號為

13926811111會被查出來;

2.聯絡人姓名中的漢字轉化成拼音後能夠連續匹配輸入數字字串

numstr

對應的英文本母

組合,如:輸入numstr=926

,則聯絡人「王二」、「萬事通」會被查詢出來。因為「王二」的「王」的

拼音「wang

」中含有「

wan」,和「

926」能匹配。 

輸入:聯絡人列表userlist

;漢字拼音射射表

dict

,數字拼音字串

numstr。

輸出:符合規則的聯絡人列表resultlist。/*

對於這種題,我不知道考察的是什麼,其實我們應該可以自由假設自己的條件吧,然後根據自己的步驟來做出判斷,下面是我的乙個思路,這個真不知道怎麼樣,還請高手們  不要笑話。

*/  設p

hone

phonelist<

username, phoneno

>

儲存了所有聯絡人的資訊;

首先,我們獲取「926

」對應的所有拼音可能組成乙個列表:

listinputnamelist=new arraylist();

然後,把使用者輸入的字串的所有可能add

到inputnamelist

。例如,9,2

,6就有3*3*3

種可能都add到

inputnamelist裡面。

根據需求,使用者名稱和手機號關鍵字都可能存在滿足條件的情況,所以我們在一次遍歷phonelist

的情況下分別判斷: (假設

resultlist

已經初始化,這裡不再做例項化)

for(p

hone

aphone:phonelist ) //

我們根據姓獲取姓的拼音a

dict

,然後遍歷 //

這個表,同樣用字串擷取的辦法來判別。

string adict=aphone.get

username

().getdict(); 

for(string indexname :inputnamelist) }

}這樣,這個

resultlist

就找到了。

百度2015校園招聘筆試題

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

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

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

百度2013校園招聘筆試題 含整理的答案

一 簡答題 30 1 資料庫以及執行緒發生死鎖的原理及必要條件,如何避免死鎖 答 產生死鎖的原因主要是 1 因為系統資源不足。2 程序執行推進的順序不合適。3 資源分配不當等。產生死鎖的四個必要條件 1 互斥條件 乙個資源每次只能被乙個程序使用。2 請求與保持條件 乙個程序因請求資源而阻塞時,對已獲...