一、簡(jiǎn)答題
1、OSI的七層模型。(10分)
OSI的七層模型如下圖所示:
2、請(qǐng)列舉下不同進(jìn)程之間共享數(shù)據(jù)的方式(至少舉出三種)。(10分)
1、文件映射(Memory-Mapped Files)能使進(jìn)程把文件內(nèi)容當(dāng)作進(jìn)程地址間一塊內(nèi)存那樣來(lái)對(duì)待
2、共享內(nèi)存(Shared Memory)實(shí)際就是文件映射的一種特殊情況
3、命名管道(Named Pipe)是服務(wù)器進(jìn)程和一個(gè)或多個(gè)客戶(hù)進(jìn)程之間通信的單向或雙向管道
4、郵件槽(Mailslots)提供進(jìn)程間單向通信能力,任何進(jìn)程都能建立郵件槽成為郵件槽服務(wù)器
5、剪貼板(Clipped Board)為不同應(yīng)用程序之間共享不同格式數(shù)據(jù)提供了一條捷徑
6、動(dòng)態(tài)連接庫(kù)(DLL)中的全局?jǐn)?shù)據(jù)可以被調(diào)用DLL的所有進(jìn)程共享
3、請(qǐng)描述下TCP和UDP的差別,并且各列舉出一個(gè)上層協(xié)議。(10分)
TCP---傳輸控制協(xié)議,提供的是面向連接、可靠的字節(jié)流服務(wù)。當(dāng)客戶(hù)和服務(wù)器彼此交換數(shù)據(jù)前,必須先在雙方之間建立一個(gè)TCP連接,之后才能傳輸數(shù)據(jù)。TCP提供超時(shí)重發(fā),丟棄重復(fù)數(shù)據(jù),檢驗(yàn)數(shù)據(jù),流量控制等功能,保證數(shù)據(jù)能從一端傳到另一端。
UDP---用戶(hù)數(shù)據(jù)報(bào)協(xié)議,是一個(gè)簡(jiǎn)單的面向數(shù)據(jù)報(bào)的運(yùn)輸層協(xié)議。UDP不提供可靠性,它只是把應(yīng)用程序傳給IP層的數(shù)據(jù)報(bào)發(fā)送出去,但是并不能保證它們能到達(dá)目的地。由于UDP在傳輸數(shù)據(jù)報(bào)前不用在客戶(hù)和服務(wù)器之間建立一個(gè)連接,且沒(méi)有超時(shí)重發(fā)等機(jī)制,故而傳輸速度很快。
經(jīng)常使用“ping”命令的原理就是向?qū)Ψ街鳈C(jī)發(fā)送UDP數(shù)據(jù)包,ftp等就是使用到的TCP協(xié)議
二、算法與程序設(shè)計(jì)
1、給出一個(gè)數(shù)據(jù)A={a_0,a_1,a_2…a_n}(其中n可變),打印出該數(shù)值元素的所有組合。(15分)
因?yàn)轭}目要求n可變,所以不可能是n層for循環(huán)的方式,可以采用遞歸的方式來(lái)實(shí)現(xiàn),每次取一個(gè)元素,在剩下元素的數(shù)組中遞歸,要注意遞歸結(jié)束的條件。
2、有這樣一個(gè)數(shù)組A,大小為n,相鄰元素差的絕對(duì)值都是1,如A={4,5,6,5,6,7,8,9,10,9},現(xiàn)在給定數(shù)組A和目標(biāo)整數(shù)t,請(qǐng)找到t在A中的位置。(15分)
最簡(jiǎn)單的方式是循環(huán)遍歷每一個(gè)元素之后比較,找到t在A中的位置,此種方法效率最低;
改進(jìn):因?yàn)橄噜徳夭畹慕^對(duì)值都是1,那么任意兩個(gè)元素相距的位置至少是兩元素差的絕對(duì)值個(gè),假設(shè)要找的元素是t,t和a(0)的差為y1=abs(t-a[0]),那么t和a[0]的距離至少是y1,再求一次差值y2=abs(t-a[y1]),t和a[y1+y2]的距離至少是y2,繼續(xù)向后查找,直到相等為止,此種方法效率較前一種高
3、有一顆二叉樹(shù),定義樹(shù)的高度為從根到葉子節(jié)點(diǎn)的最長(zhǎng)距離,樹(shù)的寬度為每層節(jié)點(diǎn)的最大值,樹(shù)的面積定義為高度和寬度的乘積。寫(xiě)一個(gè)函數(shù)計(jì)算一個(gè)二叉樹(shù)的面積。(15分)
廣度遍歷求樹(shù)的寬度,深度遍歷求樹(shù)的高度,之后計(jì)算面積
三、系統(tǒng)設(shè)計(jì)題(25分)