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