一、簡(jiǎn)答題
1. 動(dòng)態(tài)鏈接庫和靜態(tài)鏈接庫的優(yōu)缺點(diǎn)
2. 輪詢?nèi)蝿?wù)調(diào)度和可搶占式調(diào)度有什么區(qū)別?
3. 列出數(shù)據(jù)庫中常用的鎖及其應(yīng)用場(chǎng)景
二、算法設(shè)計(jì)題
1. 給定N是一個(gè)正整數(shù),求比N大的最小“不重復(fù)數(shù)”,這里的不重復(fù)是指沒有兩個(gè)相等的相鄰位,如1102中的11是相等的兩個(gè)相鄰位故不是不重復(fù)數(shù),而12301是不重復(fù)數(shù)。
2. 設(shè)N是一個(gè)大整數(shù),求長(zhǎng)度為N的字符串的最長(zhǎng)回文子串。
3. 坐標(biāo)軸上從左到右依次的點(diǎn)為a[0]、a[1]、a[2]……a[n-1],設(shè)一根木棒的長(zhǎng)度為L(zhǎng),求L最多能覆蓋坐標(biāo)軸的幾個(gè)點(diǎn)?
三、系統(tǒng)設(shè)計(jì)題
1. 在現(xiàn)代系統(tǒng)的設(shè)計(jì)過程中,為了減輕請(qǐng)求的壓力,通常采用緩存技術(shù),為了進(jìn)一步提升緩存的命中率,同常采用分布是緩存方案。調(diào)度模塊針對(duì)不同內(nèi)容的用戶請(qǐng)求分配給不同的緩存服務(wù)器向用戶提供服務(wù)。請(qǐng)給出一個(gè)分布式緩存方案,滿足如下要求:
1) 單臺(tái)緩存服務(wù)器故障,整個(gè)分布式緩存集群,可以繼續(xù)提供服務(wù)。
2)通過一定得分配策略,可以保證充分利用每個(gè)緩存服務(wù)的存儲(chǔ)空間,及負(fù)載均衡。當(dāng)部分服務(wù)器故障或系統(tǒng)擴(kuò)容時(shí),改分配策略可以保證較小的緩存文件重分配開銷。
3)當(dāng)不同緩存服務(wù)器的存儲(chǔ)空間存在差異時(shí),分配策略可以滿足比例分配。
下面給出我自己的一些解答,不保證100%正確,歡迎批評(píng)指正。
一、簡(jiǎn)答題1. 動(dòng)態(tài)鏈接庫和靜態(tài)鏈接庫的優(yōu)缺點(diǎn)
解答:(1)動(dòng)態(tài)鏈接庫(Dynamic Linked Library):Windows為應(yīng)用程序提供了豐富的函數(shù)調(diào)用,這些函數(shù)調(diào)用都包含在動(dòng)態(tài)鏈接庫中。其中有3個(gè)最重要的DLL,Kernel32.dll、User32.dll和GDI32.dll。有兩種使用方式:一種是靜態(tài)加載,即在應(yīng)用程序啟動(dòng)時(shí)被加載;一種是動(dòng)態(tài)加載,即是該動(dòng)態(tài)鏈接庫在被使用時(shí)才被應(yīng)用程序加載。優(yōu)點(diǎn)如下:
a. 共享:多個(gè)應(yīng)用程序可以使用同一個(gè)動(dòng)態(tài)庫,啟動(dòng)多個(gè)應(yīng)用程序的時(shí)候,只需要將動(dòng)態(tài)庫加載到內(nèi)存一次即可;
b. 開發(fā)模塊好:要求設(shè)計(jì)者對(duì)功能劃分的比較好。
缺點(diǎn)是不能解決引用計(jì)數(shù)等問題。
(2)靜態(tài)庫(Static Library):函數(shù)和數(shù)據(jù)被編譯進(jìn)一個(gè)二進(jìn)制文件(通常擴(kuò)展名為.LIB)。在使用靜態(tài)庫的情況下,在編譯鏈接可執(zhí)行文件時(shí),鏈接器從庫中復(fù)制這些函數(shù)和數(shù)據(jù)并把它們和應(yīng)用程序的其它模塊組合起來創(chuàng)建最終的可執(zhí)行文件(.EXE文件)。靜態(tài)鏈接庫作為代碼的一部分,在編譯時(shí)被鏈接。優(yōu)缺點(diǎn)如下:
代碼的裝載速度快,執(zhí)行速度也比較快,因?yàn)榫幾g時(shí)它只會(huì)把你需要的那部分鏈接進(jìn)去,應(yīng)用程序相對(duì)比較大。但是如果多個(gè)應(yīng)用程序使用的話,會(huì)被裝載多次,浪費(fèi)內(nèi)存。
2. 輪詢?nèi)蝿?wù)調(diào)度和可搶占式調(diào)度有什么區(qū)別?