說明一下,程式設計題都是自己一點拙見,不免有很多 不到之處,錯誤的地方還請指出,一定認真修改。謝謝!
三個基本要素:封裝、繼承、多型。
五個基本原則:
(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 請求與保持條件 乙個程序因請求資源而阻塞時,對已獲...