国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

計算機復試專業(yè)課面試問題錦集

這篇具有很好參考價值的文章主要介紹了計算機復試專業(yè)課面試問題錦集。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

本文說明:本文以簡答題為主,大家可以對照復習,內(nèi)容均來自網(wǎng)絡,部分自己進行了詳解,請大家自行找對應章節(jié)進行學習,并指出文章內(nèi)容錯誤,謝謝!

一、數(shù)據(jù)結構

1、數(shù)組和鏈表的區(qū)別。

從邏輯結構上來看,數(shù)組必須實現(xiàn)定于固定的長度,不能適應數(shù)據(jù)動態(tài)增減的情況,即數(shù)組的大小一旦定義就不能改變。當數(shù)據(jù)增加是,可能超過原先定義的元素的個數(shù);當數(shù)據(jù)減少時,造成內(nèi)存浪費;鏈表動態(tài)進行存儲分配,可以適應數(shù)據(jù)動態(tài)地增減的情況,且可以方便地插入、刪除數(shù)據(jù)項。
從內(nèi)存存儲的角度看;數(shù)組從棧中分配空間(用new則在堆上創(chuàng)建),對程序員方便快速,但是自由度??;鏈表從堆中分配空間,自由度大但是申請管理比較麻煩。
從訪問方式類看,數(shù)組在內(nèi)存中是連續(xù)的存儲,因此可以利用下標索引進行訪問;鏈表是鏈式存儲結構,在訪問元素時候只能夠通過線性方式由前到后順序的訪問,所以訪問效率比數(shù)組要低。

2、簡述快速排序過程

1)選擇一個基準元素,通常選擇第一個元素或者最后一個元素,
2)通過一趟排序?qū)⒋判虻挠涗浄指畛瑟毩⒌膬刹糠郑渲幸徊糠钟涗浀脑刂稻然鶞试刂敌?。另一部分記錄的元素值比基準值大?br> 3)此時基準元素在其排好序后的正確位置
4)然后分別對這兩部分記錄用同樣的方法繼續(xù)進行排序,直到整個序列有序。

3、快速排序的改進

只對長度大于k的子序列遞歸調(diào)用快速排序,讓原序列基本有序,然后再對整個基本有序序列用插入排序算法排序。實踐證明,改進后的算法時間復雜度有所降低,且當k取值為 8 左右時,改進算法的性能最佳。

選擇基準元的方式

對于分治算法,當每次劃分時,算法若都能分成兩個等長的子序列時,那么分治算法效率會達到最大。也就是說,基準的選擇是很重要的。選擇基準的方式?jīng)Q定了兩個分割后兩個子序列的長度,進而對整個算法的效率產(chǎn)生決定性影響。最理想的方法是,選擇的基準恰好能把待排序序列分成兩個等長的子序列。

方法1 固定基準元

如果輸入序列是隨機的,處理時間是可以接受的。如果數(shù)組已經(jīng)有序時,此時的分割就是一個非常不好的分割。

方法2 隨機基準元

這是一種相對安全的策略。由于基準元的位置是隨機的,那么產(chǎn)生的分割也不會總是會出現(xiàn)劣質(zhì)的分割。在整個數(shù)組數(shù)字全相等時,仍然是最壞情況,時間復雜度是O(n^2)。實際上,隨機化快速排序得到理論最壞情況的可能性僅為1/(2^n)。所以隨機化快速排序可以對于絕大多數(shù)輸入數(shù)據(jù)達到O(nlogn)的期望時間復雜度。

方法3 三數(shù)取中

引入的原因:雖然隨機選取基準時,減少出現(xiàn)不好分割的幾率,但是還是最壞情況下還是O(n^2),要緩解這種情況,就引入了三數(shù)取中選取基準。

分析:最佳的劃分是將待排序的序列分成等長的子序列,最佳的狀態(tài)我們可以使用序列的中間的值,也就是第N/2個數(shù)。可是,這很難算出來,并且會明顯減慢快速排序的速度。這樣的中值的估計可以通過隨機選取三個元素并用它們的中值作為基準元而得到。事實上,隨機性并沒有多大的幫助,因此一般的做法是使用左端、右端和中心位置上的三個元素的中值作為基準元。

4、各類排序算法對比

這里可以參照數(shù)據(jù)結構篇章中的排序習題去溫習,加強記憶

時間復雜度來說:

(1)平方階(O(n2))排序   各類簡單排序:直接插入、直接選擇和冒泡排序;

(2)線性對數(shù)階(O(nlog2n))排序   快速排序、堆排序和歸并排序;

(3)O(n1+§))排序,§是介于0和1之間的常數(shù)。

希爾排序 (4)線性階(O(n))排序   基數(shù)排序,此外還有桶、箱排序。

說明:

當原表有序或基本有序時,直接插入排序和冒泡排序?qū)⒋蟠鬁p少比較次數(shù)和移動記錄的次數(shù),時間復雜度可降至O(n);

而快速排序則相反,當原表基本有序時,將蛻化為冒泡排序,時間復雜度提高為O(n2);

原表是否有序,對簡單選擇排序、堆排序、歸并排序和基數(shù)排序的時間復雜度影響不大。

穩(wěn)定性:

排序算法的穩(wěn)定性:若待排序的序列中,存在多個具有相同關鍵字的記錄,經(jīng)過排序,這些記錄的相對次序保持不變,則稱該算法是穩(wěn)定的;若經(jīng)排序后,記錄的相對次序發(fā)生了改變,則稱該算法是不穩(wěn)定的。

穩(wěn)定的排序算法:冒泡排序、插入排序、歸并排序和基數(shù)排序

不是穩(wěn)定的排序算法:選擇排序、快速排序、希爾排序、堆排序

選擇排序算法準則:

一般而言,需要考慮的因素有以下四點:

設待排序元素的個數(shù)為n.

1)當n較大,則應采用時間復雜度為O(nlog2n)的排序方法:快速排序、堆排序或歸并排序序。

2)當n較大,內(nèi)存空間允許,且要求穩(wěn)定性:歸并排序

3)當n較小,可采用直接插入或直接選擇排序。

直接插入排序:當元素分布有序,直接插入排序?qū)⒋蟠鬁p少比較次數(shù)和移動記錄的次數(shù)。

直接選擇排序 :元素分布有序,如果不要求穩(wěn)定性,選擇直接選擇排序

5)一般不使用或不直接使用傳統(tǒng)的冒泡排序。

6)基數(shù)排序 它是一種穩(wěn)定的排序算法,但有一定的局限性:   1、關鍵字可分解。   2、記錄的關鍵字位數(shù)較少,如果密集更好   3、如果是數(shù)字時,最好是無符號的

5、冒泡排序算法的改進

1.設置一標志性變量pos,用于記錄每趟排序中最后一次進行交換的位置。由于pos位置之后的記錄均已交換到位,故在進行下一趟排序時只要掃描到pos位置即可。

2.傳統(tǒng)冒泡排序中每一趟排序操作只能找到一個最大值或最小值,我們考慮利用在每趟排序中進行正向和反向兩遍冒泡的方法一次可以得到兩個最終值(最大者和最小者) , 從而使排序趟數(shù)幾乎減少了一半。

6、鄰接矩陣與鄰接表

鄰接矩陣表示法:在一個一維數(shù)組中存儲所有的點,在一個二維數(shù)組中存儲頂點之間的邊的權值

鄰接表表示法:圖中頂點用一個一維數(shù)組存儲,圖中每個頂點vi的所有鄰接點構成單鏈表

對比

1)在鄰接矩陣表示中,無向圖的鄰接矩陣是對稱的。矩陣中第 i 行或 第 i 列有效元素個數(shù)之和就是頂點的度。

在有向圖中 第 i 行有效元素個數(shù)之和是頂點的出度,第 i 列有效元素個數(shù)之和是頂點的入度。

2)在鄰接表的表示中,無向圖的同一條邊在鄰接表中存儲的兩次。如果想要知道頂點的度,只需要求出所對應鏈表的結點個數(shù)即可。

有向圖中每條邊在鄰接表中只出現(xiàn)一次,求頂點的出度只需要遍歷所對應鏈表即可。求入度則需要遍歷其他頂點的鏈表。

3)鄰接矩陣與鄰接表優(yōu)缺點:

鄰接矩陣的優(yōu)點是可以快速判斷兩個頂點之間是否存在邊,可以快速添加邊或者刪除邊。而其缺點是如果頂點之間的邊比較少,會比較浪費空間。因為是一個 n?n 的矩陣。

而鄰接表的優(yōu)點是節(jié)省空間,只存儲實際存在的邊。其缺點是關注頂點的度時,就可能需要遍歷一個鏈表。

7. 用循環(huán)比遞歸效率高嗎?

遞歸和循環(huán)兩者完全可以互換。不能完全決定性地說循環(huán)地效率比遞歸的效率高。

2.1遞歸算法:

優(yōu)點:代碼簡潔、清晰,并且容易驗證正確性。

缺點:它的運行需要較多次數(shù)的函數(shù)調(diào)用,如果調(diào)用層數(shù)比較深,需要增加額外的堆棧處理(還有可能出現(xiàn)堆棧溢出的情況),比如參數(shù)傳遞需要壓棧等操作,會對執(zhí)行效率有一定影響。但是,對于某些問題,如果不使用遞歸,那將是極端難看的代碼。在編譯器優(yōu)化后,對于多次調(diào)用的函數(shù)處理會有非常好的效率優(yōu)化,效率未必低于循環(huán)。

2.2循環(huán)算法:

優(yōu)點:速度快,結構簡單。

缺點:并不能解決所有的問題。有的問題適合使用遞歸而不是循環(huán)。如果使用循環(huán)并不困難的話,最好使用循環(huán)。

8、解決哈希沖突的方法

哈希表(Hash table,也叫散列表),是根據(jù)關鍵碼值(Key value)而直接進行訪問的數(shù)據(jù)結構。

1) 線性探測法

2) 平方探測法

3) 偽隨機序列法

4) 拉鏈法

9、KMP算法

在一個字符串中查找是否包含目標的匹配字符串。其主要思想是每趟比較過程讓子串先后滑動一個合適的位置。當發(fā)生不匹配的情況時,不是右移一位,而是移動(當前匹配的長度– 當前匹配子串的部分匹配值)位。

10、B樹

根據(jù)B類樹的特點,構造一個多階的B類樹,然后在盡量多的在結點上存儲相關的信息,保證層數(shù)盡量的少,以便后面我們可以更快的找到信息,磁盤的I/O操作也少一些,而且B類樹是平衡樹,每個結點到葉子結點的高度都是相同,這也保證了每個查詢是穩(wěn)定的。

B樹和B+樹的區(qū)別,以一個m階樹為例。

  1. 關鍵字的數(shù)量不同;B+樹中分支結點有m個關鍵字,其葉子結點也有m個,其關鍵字只是起到了一個索引的作用,但是B樹雖然也有m個子結點,但是其只擁有m-1個關鍵字。
  2. 存儲的位置不同;B+樹中的數(shù)據(jù)都存儲在葉子結點上,也就是其所有葉子結點的數(shù)據(jù)組合起來就是完整的數(shù)據(jù),但是B樹的數(shù)據(jù)存儲在每一個結點中,并不僅僅存儲在葉子結點上。
  3. 分支結點的構造不同;B+樹的分支結點僅僅存儲著關鍵字信息和兒子的指針(這里的指針指的是磁盤塊的偏移量),也就是說內(nèi)部結點僅僅包含著索引信息。
  4. 查詢不同;B樹在找到具體的數(shù)值以后,則結束,而B+樹則需要通過索引找到葉子結點中的數(shù)據(jù)才結束,也就是說B+樹的搜索過程中走了一條從根結點到葉子結點的路徑。

二、組成原理

1、四門計算機專業(yè)課之間的關系

數(shù)據(jù)結構研究的是數(shù)據(jù)和操作這些數(shù)據(jù)的算法,屬于軟件層面。

組成原理研究的是如何實現(xiàn)計算機體系結構中的屬性,屬于硬件層面。

操作系統(tǒng)是軟件和硬件的交界面,是計算機最底層的軟件。

計算機網(wǎng)絡研究的是計算機與計算機之間是怎么進行互聯(lián)的。

2、組成原理和體系結構的區(qū)別

計算機體系結構:指那些能夠被程序員看到的計算機的屬性。

計算機組成原理:指如何實現(xiàn)計算機體系結構所體現(xiàn)出來的屬性。

以乘法指令為例,計算機是否有乘法指令,屬于體系結構的問題。乘法指令是采用專用的乘法器,還是使用加法器和移位器構成,屬于計算機組成的問題。

3、馮諾依曼機的特點

指令和數(shù)據(jù)以同等的地位存儲,可按照地址訪問

指令和數(shù)據(jù)都以二進制表示

存儲程序思想:將指令以二進制代碼的形式事先存入存儲器中

以運算器為核心(現(xiàn)代計算機中以存儲器為中心)

4、計算機的層次結構【高匯操傳微】

高級語言機器:執(zhí)行高級語言

匯編語言機器:執(zhí)行匯編語言

操作系統(tǒng)機器:向上提供廣義指令

傳統(tǒng)機器:執(zhí)行機器語言指令

微程序機器:執(zhí)行微指令

5、翻譯程序

匯編程序:匯編程序翻譯成機器語言

編譯程序:高級語言翻譯成機器語言(一次性翻譯,生成可執(zhí)行代碼)

解釋程序:高級語言翻譯成機器語言(一句一句翻譯)

6、計算機性能指標

主頻:1s內(nèi)有多少個時鐘周期

IPS:1s內(nèi)執(zhí)行多少條指令

CPI:1條指令消耗多少之中周期

FLOPS:1s內(nèi)執(zhí)行多少次浮點運算(最能反映計算機的計算速度)

7、糾錯與檢錯編碼

1.奇偶校驗碼

奇校驗:整個校驗碼的1的個數(shù)為奇數(shù)

偶校驗:整個校驗碼的1的個數(shù)為偶數(shù)

檢測出奇數(shù)位錯誤,沒有糾錯能力

2.循環(huán)冗余校驗碼CRC

利用多項式生成校驗碼

檢測出奇數(shù)位錯誤和雙比特錯誤,選擇合適的生成多項式才有糾錯能力

3.海明校驗碼

本質(zhì)是分組偶校驗,多個校驗位可以反應出錯位置

海明碼有1位糾錯能力,2位檢錯能力

8、原碼反碼補碼移碼

補碼:可以將減法操作變成等價的加法操作

反碼:只是原碼轉換為補碼的一個中間過程

移碼:移碼=真值+偏置值,可以直觀地比較出數(shù)據(jù)之間的大小

范圍:

原碼和反碼的真值0有兩種形式

補碼和移碼的真值0只要一種形式

補碼和移碼相差一個符號位

轉換

正數(shù)的原反補碼相同

[x]補-->全部取反+1-->[-x]補

9、定點數(shù)的運算

移位運算

算數(shù)移位:不帶符號位的移位,相當于乘2或者除2

邏輯移位:全部移動

循環(huán)移位:移出的位不丟棄

加減運算

原碼加減:符號單獨判斷

補碼加減:符號帶著算[A-B]補=[A]補+[-B]補

乘法運算

原碼一位乘法

補碼一位乘法:booth算法

除法運算

原碼除法:恢復余數(shù)法

補碼除法:加減交替法

10、溢出判斷

一位符號位:正+正=負;負+負=正時溢出

雙符號位:01上溢;10:下溢

符號位進位+最好數(shù)值位進位:01上溢;10:下溢

11、邊界對齊

以空間換時間的思路,起始地址要能夠被自身長度整除

采用邊界對齊后,訪問一個字只需要一次訪存

12、存儲方式

大端方式:高字節(jié)存儲在低地址(順著存)

小端方式:高字節(jié)存儲在高地址(逆著存)

13、浮點數(shù)加減運算

對階:小階向大階看齊

尾數(shù)加減

規(guī)格化

左規(guī):尾數(shù)的最高位為非有效位時進行左規(guī)

右規(guī):尾數(shù)溢出時右規(guī)

舍入:在右規(guī)和對階的過程中都有可能存在舍入的問題

溢出判斷:

階碼上溢:拋出異常

階碼下溢:按機器0處理

14、IEEE 754 標準

階碼用移碼表示,尾數(shù)用原碼表示,隱藏最高位的1

15、并行進位加法器

通過進位產(chǎn)生函數(shù)和進位傳遞函數(shù),讓加法器的多個進位同時產(chǎn)生

16、介紹一下計算機的多級存儲系統(tǒng)

主存-緩存:用來緩解速度壓力,完全由硬件實現(xiàn),緩存是主存的副本

主存-輔存:用來緩解容量壓力,有操作系統(tǒng)和硬件配合實現(xiàn),主存是緩存的副本

17、半導體存儲器

半導體存儲器包括RAM和ROM,其中RAM又分為SRAM和DRAM

是否易失:取決于斷電之后還有存儲的效果

是否破壞:取決于讀出之后是否還能繼續(xù)存儲

SRAM:存儲原理是雙穩(wěn)態(tài)觸發(fā)器,因此是易失性的,非破壞性性讀出

DRAM:存儲原理是柵極電容,因此是易失性的,破壞性讀出

ROM:存儲原理是熔絲,因此是非易失性的,破壞性讀出

其中包括EPROM,PROM等

18、SRAM VS DRAM

DRAM只需要兩個電容結構簡單,集成度高,行列地址分兩次傳送,因此存儲成本低,發(fā)熱量低,但是運行速度比較慢,常用主存

SRAM需要雙穩(wěn)態(tài)觸發(fā)器結構復雜,集成度低,行列地址一次性傳送,因此存儲成本高,發(fā)熱量高,但是運行速度比較快,常用cache

另外雖然兩者都是易失性的,但是由于電容中存儲的電量即使不斷電也維持不了太久,因此對DRAM要刷新,刷新方式包括集中刷新,分散刷新,異步刷新。

19、雙端口RAM與多模塊存儲器

雙端口與多模塊存儲器都是用來增加存儲器讀寫帶寬的

雙端口RAM

就是通過一個busy信號對同一個RAM 進行讀寫控制

多模塊存儲器

分為單體多字存儲器

在單體多字存儲器中,一次性可以讀出多個字,因此會要求指令和數(shù)據(jù)連續(xù)存放,并且當只需要對單個字進行讀寫操作時,會產(chǎn)生不必要的讀寫時間

多體并行存儲器

多體并行存儲器指的是多個存儲器有自己的讀寫控制,可以并行運行,他包括高位交叉編址,和低位交叉編址

低位交叉編址是多個存儲器輪流啟動,采用流水線的方式進行讀取,能有效提高存儲器的帶寬

高位交叉編址實際上相當于擴充了存儲器的容量,各個存儲器之間會有忙閑不均的情況,對增強存儲器的帶寬沒有實際作用

20、Cache與主存映射的原理

將主存和cache劃分為等大的塊,將主存中常用的數(shù)據(jù)存放在cache中,兩者通過地址形成映射關系。映射方式包括全相聯(lián)映射,直接相連映射,和組相聯(lián)映射。

全相聯(lián)映射:主存中的塊可以存放在任意一個cache塊中,地址劃分為標記和塊內(nèi)地址

直接相聯(lián)映射:主存中的塊只能被映射到唯一一塊cache中,地址劃分為標記,行號,塊內(nèi)地址

組相聯(lián)映射:主存張總的塊只能被映射到某一組cache塊中,但是在組內(nèi)可以隨意放置,地址劃分為標記,組號,和塊內(nèi)地址

21、指令尋址方式

順序?qū)ぶ罚篜C+1

跳躍尋址方式:修改當前PC值,目標地址=(pc)+指令字長+k*OFFSET

22、數(shù)據(jù)尋址方式(10種)

隱含尋址:有一個操作數(shù)隱含在ACC中

立即尋址:地址字段為操作數(shù)的補碼,執(zhí)行階段不訪存

直接尋址:地址字段操作數(shù)的地址,執(zhí)行階段1次訪問

間接尋址:地址字段為操作數(shù)的地址的地址,執(zhí)行階段多次訪存(可能1次間址也可能多次間址)

寄存器尋址:地址字段為寄存器號,寄存器中是操作數(shù),執(zhí)行階段不訪存

寄存器間接尋址:地址字段為寄存器號,寄存器中是操作數(shù)地址,執(zhí)行階段不訪存,可以擴大尋址范圍

相對尋址:地址碼字段為相對地址,有效地址=pc+(指令長度/1B)+A

基址尋址:有效地址=基址尋址器+地址碼字段

變棧尋址:有效地址=變址尋址器+地址碼字段

堆棧尋址:讀寫地址由堆棧寄存器給出

23、變址尋址 VS 基址尋址

變址尋址:變址寄存器內(nèi)容用戶可以改變,面向程序員,適合處理數(shù)組,編制循環(huán)程序

基址尋址:基址寄存器內(nèi)容用戶不能改變,面向操作系統(tǒng),適合處理程序浮動,利于多道程序設計

24、CISC VS RISC

RISC是精簡指令集,CISC是復雜指令集

在CISC中,指令系統(tǒng)非常龐大,指令數(shù)目很多,指令字長不固定,訪存指令不加限制,各個指令的執(zhí)行時間也相差很大,使用頻率也相差很大,有較少的寄存器,一般適用于微程序控制,可以通過一定的方式實現(xiàn)流水線

在RISC中,指令系統(tǒng)比較簡單,指令數(shù)目比較少,指令字長固定,并規(guī)定只有LOAD和STORE指令可以訪存,各個指令的執(zhí)行時間相差不大,使用頻率也相差不大,有很多的寄存器,一般適用于組合邏輯電路控制,必須實現(xiàn)流水線控制方式

25、CPU的結構和功能

功能:【只做中間數(shù)】

指令控制

操作控制

中斷處理

時間控制

數(shù)據(jù)加工

結構:

cpu由運算器和控制器構成。運算器中有累加器ACC,乘商寄存器MQ,算數(shù)邏輯單元ALU,以及暫存寄存器X??刂破髦杏蠧U和指令寄存器IR以及PC。

MAR,MDR在邏輯上屬于主存,但實際上是放在CPU中的控制器中的

26、指令周期 VS 機器周期 VS 節(jié)拍

指令周期:從主存取出一條指令并執(zhí)行的全部時間

機器周期:一般把總線事務訪問一次主存的時間定為機器周期

指令周期中有若干機器周期,機器周期中有若干節(jié)拍

27、機器字長 VS 存儲字長 VS 指令字長

機器字長:計算機能直接處理的二進制數(shù)據(jù)位數(shù),為內(nèi)部寄存器字長等長

指令字長:一條指令的二進制位數(shù)

存儲字長:一個存儲單元所能存儲的二進制的位數(shù)

三者都必須是字節(jié)的整數(shù)倍,彼此之間沒有直接的制約關系

28、一條指令的執(zhí)行過程

取指周期--FE--fetch:訪問主存取指令分析指令

間址周期--IND--indirect:訪問主存取操作數(shù)的有效地址

執(zhí)行周期--EX--execute:訪問主存取操作數(shù)

中斷周期--INT-interrupt:訪問主存保存程序斷點

29、主存儲器 VS 控制存儲器

主存儲器在cpu內(nèi)部,ram實現(xiàn),存放數(shù)據(jù)和程序

控制存儲器在cpu內(nèi)部,rom實現(xiàn),存放微程序

30、微程序 VS 程序

程序是指令的集合,對程序員不透明

微程序是微指令的集合,對程序員透明

一條指令對應一個微程序,一個微程序由多個微指令構成,一條微指令對應多個微命令

31、微程序控制器的基本結構

指令送到指令寄存器后,取出操作碼op送入微地址形成部件,產(chǎn)生初始微地址和后繼微地址.

CMAR是微地址寄存器,接收微地址,為在CM中去讀微指令做準備

CM中存儲了各個指令對應的微程序

CMDR用于存儲從CM中取出的微指令,操作碼字段送到CPU內(nèi)部,下地址字段送到順序邏輯。

32、硬布線控制器 VS 微程序控制器

1.硬布線控制器是用組合邏輯電路來實現(xiàn)控制器中的CU,微程序控制器是用存儲程序的思想來實現(xiàn)CU

2.硬布線的執(zhí)行速度塊,微程序控制器執(zhí)行速度慢

3.硬布線繁瑣,不規(guī)整,微程序控制器較規(guī)整

4.硬布線應用于RISC,微程序控制器應用于CISC

5.硬布線不易擴充,微程序控制器易于擴充

33、影響指令流水線的因素

結構沖突:多條指令在同一時刻爭用統(tǒng)一資源(比如取址與取數(shù)據(jù)爭用內(nèi)存)

數(shù)據(jù)沖突:按序發(fā)射,按序輸出的流水線中,只可能有RAW(寫后讀沖突)

控制沖突:遇到轉移指令,或者其他改變PC的指令(指令流水線處理的必須是連續(xù)的任務)

34、流水線改進

超標量流水線:每個時鐘周期并發(fā)多條獨立的指令,配置多個功能部件

超流水線:一個時鐘周期內(nèi)在分段,允許一個部件在一個時鐘周期內(nèi)多次使用

超長指令字:多個操作碼字段,多個部件并行執(zhí)行

35、增強總線效能的辦法

猝發(fā)傳輸:讀寫一組連續(xù)的字時,只需要給出首地址即可

總線復用:信號線在不同的時間傳輸不同的信息

36、系統(tǒng)總線結構

單總線:

cpu和外設之間可以之間進行信息交換,無需中間設備干預;cpu與外設之間速度不匹配

三總線:

主存總線+io總線+DMA總線

DMA總線在內(nèi)存和高速外設之間傳輸數(shù)據(jù),系統(tǒng)吞吐量提高,但是系統(tǒng)工作效率低

雙總線:

主存總線+io總線

將低速設備從單總線上分離出來,但是增加通道等硬件設備

37、總線仲裁

解決多個主設備同時競爭總線控制權的問題

集中仲裁方式:將所有的總線請求集中起來,利用特定的算法進行總裁

分步仲裁方式:不需要總仲裁器,每個潛在的主模塊都有自己的仲裁號和仲裁器

38、總線定時

總線雙方在交換數(shù)據(jù)過程中需要時間上的配合,這一控制叫做總線定時

同步定時方式:使用同一的時鐘

異步定時方式:雙方通過握手信號來實現(xiàn)控制

39、輸入輸出設備

磁盤冗余陣列RAID

將多個磁盤組成一個獨立的邏輯盤,數(shù)據(jù)在多個物理盤分割交叉存儲,并行訪問??梢允沟脭?shù)據(jù)存儲更加安全,更加可靠

RAID0:類似低位交叉編址,沒有容錯能力

RAID1:鏡像存儲,粗暴地存儲兩份數(shù)據(jù)

RAID2:采用糾錯的海明碼磁盤陣列

等級越高,可靠度越高

三、操作系統(tǒng)

1.操作系統(tǒng)的組成

1、驅(qū)動程序是最底層的、直接控制和監(jiān)視各類硬件的部分,它們的職責是隱藏硬件的具體細節(jié),并向其他部分提供一個抽象的、通用的接口。

2、內(nèi)核是操作系統(tǒng)之最內(nèi)核部分,通常運行在最高特權級,負責提供基礎性、結構性的功能。

3、支承庫是一系列特殊的程序庫,它們職責在于把系統(tǒng)所提供的基本服務包裝成應用程序所能夠使用的編程接口(API),是最靠近應用程序的部分。例如,GNU C運行期庫就屬于此類,它把各種操作系統(tǒng)的內(nèi)部編程接口包裝成ANSI C和POSIX編程接口的形式。

4、外圍是指操作系統(tǒng)中除以上三類以外的所有其他部分,通常是用于提供特定高級服務的部件。例如,在微內(nèi)核結構中,大部分系統(tǒng)服務,以及UNIX/Linux中各種守護進程都通常被劃歸此列。

2.操作系統(tǒng)中的緩存

緩存(cache),原始意義是指訪問速度比一般隨機存取存儲器(RAM)快的一種高速存儲器,可以進行高速數(shù)據(jù)交換的存儲器,它先于內(nèi)存與CPU交換數(shù)據(jù)。

3.進程和線程

定義:進程是具有一定獨立功能的程序關于某個數(shù)據(jù)集合上的一次運行活動,進程是系統(tǒng)進行資源分配和調(diào)度的一個獨立單位。線程是進程的一個實體,是CPU調(diào)度和分派的基本單位,它是比進程更小的能獨立運行的基本單位.線程自己基本上不擁有系統(tǒng)資源,只擁有一點在運行中必不可少的資源(如程序計數(shù)器,一組寄存器和棧),但是它可與同屬一個進程的其他的線程共享進程所擁有的全部資源.

(1)進程是對運行時程序的封裝,是系統(tǒng)進行資源調(diào)度和分配的基本單位,實現(xiàn)操作系統(tǒng)的并發(fā)。

(2)線程是進程的子任務,是CPU調(diào)度和分派的基本單位,用于保證程序的實時性,實現(xiàn)進程內(nèi)部的并發(fā)。

(3)一個程序至少有一個進程,一個進程至少有一個線程,線程依賴進程的存在。

(4)進程執(zhí)行過程中擁有獨立的內(nèi)存單元,而多個線程共享進程的內(nèi)存。

4.進程間的通信的幾種方式??

管道(pipe)及命名管道(named pipe): 管道可用于具有親緣關系的父子進程間的通信,有名管道除了具有管道所具有的功能外,它還允許無親緣關系進程間的通信;

信號(signal): 信號是一種比較復雜的通信方式,用于通知接收進程某個事件已經(jīng)發(fā)生;

消息隊列: 消息隊列是消息的鏈接表,它克服了上兩種通信方式中信號量有限的缺點,具有寫權限得進程可以按照一定得規(guī)則向消息隊列中添加新信息;對消息隊列有讀權限得進程則可以從消息隊列中讀取信息;

共享內(nèi)存: 可以說這是最有用的進程間通信方式。它使得多個進程可以訪問同一塊內(nèi)存空間,不同進程可以及時看到對方進程中對共享內(nèi)存中數(shù)據(jù)得更新。這種方式需要依靠某種同步操作,如互斥鎖和信號量等;

信號量: 主要作為進程之間及同一種進程的不同線程之間得同步和互斥手段;

套接字: 這是一種更為一般得進程間通信機制,它可用于網(wǎng)絡中不同機器之間的進程間通信,應用非常廣泛。

幾種方式的比較:

管道:速度慢、容量有限

消息隊列:容量收到系統(tǒng)限制,且要注意第一次讀的時候,要考慮上一次沒有讀完數(shù)據(jù)的問題。

信號量:不能傳遞復雜信息,只能用來同步。

共享內(nèi)存:能夠很容易控制容量,速度快,但要保持同步,比如一個進程在寫的時候,另一個進程要注意讀寫的問題,相當于線程中的線程安全。

5.線程間通信

(1)同步

多個線程通過synchronized通訊,類似于共享內(nèi)存

(2)while輪詢

線程A不斷改變條件,線程B不斷查看條件是否滿足需求(比方說=5),從而實現(xiàn)通訊。

效率不高,因為B一直在查看,沒做別的

(3)wait/notify

進入阻塞,而不是像輪詢一樣一直占用CPU資源

(4)管道通信

通過管道,將一個線程的消息發(fā)送個另一個線程

6.什么是死鎖?死鎖產(chǎn)生的條件?

1). 死鎖的概念

  在兩個或者多個并發(fā)進程中,如果每個進程持有某種資源而又等待其它進程釋放它或它們現(xiàn)在保持著的資源,在未改變這種狀態(tài)之前都不能向前推進,稱這一組進程產(chǎn)生了死鎖。通俗的講,就是兩個或多個進程無限期的阻塞、相互等待的一種狀態(tài)。

2). 死鎖產(chǎn)生的四個必要條件

互斥:至少有一個資源必須屬于非共享模式,即一次只能被一個進程使用;若其他申請使用該資源,那么申請進程必須等到該資源被釋放為止;

占有并等待:一個進程必須占有至少一個資源,并等待另一個資源,而該資源為其他進程所占有;

非搶占:進程不能被搶占,即資源只能被進程在完成任務后自愿釋放

循環(huán)等待:若干進程之間形成一種頭尾相接的環(huán)形等待資源關系

3). 死鎖的處理基本策略和常用方法

  解決死鎖的基本方法主要有 預防死鎖、避免死鎖、檢測死鎖、解除死鎖 、鴕鳥策略 等。

  (1). 死鎖預防 

  死鎖預防的基本思想是 只要確保死鎖發(fā)生的四個必要條件中至少有一個不成立,就能預防死鎖的發(fā)生,具體方法包括:

打破互斥條件:允許進程同時訪問某些資源。但是,有些資源是不能被多個進程所共享的,這是由資源本身屬性所決定的,因此,這種辦法通常并無實用價值。

打破占有并等待條件:可以實行資源預先分配策略(進程在運行前一次性向系統(tǒng)申請它所需要的全部資源,若所需全部資源得不到滿足,則不分配任何資源,此進程暫不運行;只有當系統(tǒng)能滿足當前進程所需的全部資源時,才一次性將所申請資源全部分配給該線程)或者只允許進程在沒有占用資源時才可以申請資源(一個進程可申請一些資源并使用它們,但是在當前進程申請更多資源之前,它必須全部釋放當前所占有的資源)。但是這種策略也存在一些缺點:在很多情況下,無法預知一個進程執(zhí)行前所需的全部資源,因為進程是動態(tài)執(zhí)行的,不可預知的;同時,會降低資源利用率,導致降低了進程的并發(fā)性。

打破非搶占條件:允許進程強行從占有者哪里奪取某些資源。也就是說,但一個進程占有了一部分資源,在其申請新的資源且得不到滿足時,它必須釋放所有占有的資源以便讓其它線程使用。這種預防死鎖的方式實現(xiàn)起來困難,會降低系統(tǒng)性能。

打破循環(huán)等待條件:實行資源有序分配策略。對所有資源排序編號,所有進程對資源的請求必須嚴格按資源序號遞增的順序提出,即只有占用了小號資源才能申請大號資源,這樣就不回產(chǎn)生環(huán)路,預防死鎖的發(fā)生。

  (2). 死鎖避免的基本思想

  死鎖避免的基本思想是動態(tài)地檢測資源分配狀態(tài),以確保循環(huán)等待條件不成立,從而確保系統(tǒng)處于安全狀態(tài)。所謂安全狀態(tài)是指:如果系統(tǒng)能按某個順序為每個進程分配資源(不超過其最大值),那么系統(tǒng)狀態(tài)是安全的,換句話說就是,如果存在一個安全序列,那么系統(tǒng)處于安全狀態(tài)。資源分配圖算法和銀行家算法是兩種經(jīng)典的死鎖避免的算法,其可以確保系統(tǒng)始終處于安全狀態(tài)。其中,資源分配圖算法應用場景為每種資源類型只有一個實例(申請邊,分配邊,需求邊,不形成環(huán)才允許分配),而銀行家算法應用于每種資源類型可以有多個實例的場景。

  (3). 死鎖解除

  死鎖解除的常用兩種方法為進程終止和資源搶占。所謂進程終止是指簡單地終止一個或多個進程以打破循環(huán)等待,包括兩種方式:終止所有死鎖進程和一次只終止一個進程直到取消死鎖循環(huán)為止;所謂資源搶占是指從一個或多個死鎖進程那里搶占一個或多個資源,此時必須考慮三個問題:

  (I). 選擇一個犧牲品

  (II). 回滾:回滾到安全狀態(tài)

  (III). 饑餓(在代價因素中加上回滾次數(shù),回滾的越多則越不可能繼續(xù)被作為犧牲品,避免一個進程總是被回滾)

7.進程有哪幾種狀態(tài)?

就緒狀態(tài):進程已獲得除處理機以外的所需資源,等待分配處理機資源;

運行狀態(tài):占用處理機資源運行,處于此狀態(tài)的進程數(shù)小于等于CPU數(shù);

阻塞狀態(tài): 進程等待某種條件,在條件滿足之前無法執(zhí)行;

8.線程有幾種狀態(tài)?

1. 新建(NEW):新創(chuàng)建了一個線程對象。

2. 可運行(RUNNABLE):線程對象創(chuàng)建后,其他線程(比如main線程)調(diào)用了該對象的start()方法。該狀態(tài)的線程位于可運行線程池中,等待被線程調(diào)度選中,獲取cpu 的使用權 。

3. 運行(RUNNING):可運行狀態(tài)(runnable)的線程獲得了cpu 時間片(timeslice) ,執(zhí)行程序代碼。

4. 阻塞(BLOCKED):阻塞狀態(tài)是指線程因為某種原因放棄了cpu 使用權,也即讓出了cpu timeslice,暫時停止運行。直到線程進入可運行(runnable)狀態(tài),才有機會再次獲得cpu timeslice 轉到運行(running)狀態(tài)。阻塞的情況分三種:

(一). 等待阻塞:運行(running)的線程執(zhí)行o.wait()方法,JVM會把該線程放入等待隊列(waitting queue)中。

(二). 同步阻塞:運行(running)的線程在獲取對象的同步鎖時,若該同步鎖被別的線程占用,則JVM會把該線程放入鎖池(lock pool)中。

(三). 其他阻塞:運行(running)的線程執(zhí)行Thread.sleep(long ms)或t.join()方法,或者發(fā)出了I/O請求時,JVM會把該線程置為阻塞狀態(tài)。當sleep()狀態(tài)超時、join()等待線程終止或者超時、或者I/O處理完畢時,線程重新轉入可運行(runnable)狀態(tài)。

5. 死亡(DEAD):線程run()、main() 方法執(zhí)行結束,或者因異常退出了run()方法,則該線程結束生命周期。死亡的線程不可再次復生。

在給定的時間點上,一個線程只能處于一種狀態(tài)。

9.分頁和分段有什么區(qū)別(內(nèi)存管理)?

  段式存儲管理是一種符合用戶視角的內(nèi)存分配管理方案。在段式存儲管理中,將程序的地址空間劃分為若干段(segment),如代碼段,數(shù)據(jù)段,堆棧段;這樣每個進程有一個二維地址空間,相互獨立,互不干擾。段式管理的優(yōu)點是:沒有內(nèi)碎片(因為段大小可變,改變段大小來消除內(nèi)碎片)。但段換入換出時,會產(chǎn)生外碎片(比如4k的段換5k的段,會產(chǎn)生1k的外碎片)

  頁式存儲管理方案是一種用戶視角內(nèi)存與物理內(nèi)存相分離的內(nèi)存分配管理方案。在頁式存儲管理中,將程序的邏輯地址劃分為固定大小的頁(page),而物理內(nèi)存劃分為同樣大小的幀,程序加載時,可以將任意一頁放入內(nèi)存中任意一個幀,這些幀不必連續(xù),從而實現(xiàn)了離散分離。頁式存儲管理的優(yōu)點是:沒有外碎片(因為頁的大小固定),但會產(chǎn)生內(nèi)碎片(一個頁可能填充不滿)。

兩者的不同點:

目的不同:分頁是由于系統(tǒng)管理的需要而不是用戶的需要,它是信息的物理單位;分段的目的是為了能更好地滿足用戶的需要,它是信息的邏輯單位,它含有一組其意義相對完整的信息;

大小不同:頁的大小固定且由系統(tǒng)決定,而段的長度卻不固定,由其所完成的功能決定;

地址空間不同: 段向用戶提供二維地址空間;頁向用戶提供的是一維地址空間;

信息共享:段是信息的邏輯單位,便于存儲保護和信息的共享,頁的保護和共享受到限制;

內(nèi)存碎片:頁式存儲管理的優(yōu)點是沒有外碎片(因為頁的大小固定),但會產(chǎn)生內(nèi)碎片(一個頁可能填充不滿);而段式管理的優(yōu)點是沒有內(nèi)碎片(因為段大小可變,改變段大小來消除內(nèi)碎片)。但段換入換出時,會產(chǎn)生外碎片(比如4k的段換5k的段,會產(chǎn)生1k的外碎片)。

10.操作系統(tǒng)中進程調(diào)度策略有哪幾種?

FCFS(先來先服務,隊列實現(xiàn),非搶占的):先請求CPU的進程先分配到CPU

SJF(最短作業(yè)優(yōu)先調(diào)度算法):平均等待時間最短,但難以知道下一個CPU區(qū)間長度

優(yōu)先級調(diào)度算法(可以是搶占的,也可以是非搶占的):優(yōu)先級越高越先分配到CPU,相同優(yōu)先級先到先服務,存在的主要問題是:低優(yōu)先級進程無窮等待CPU,會導致無窮阻塞或饑餓;解決方案:老化

時間片輪轉調(diào)度算法(可搶占的):隊列中沒有進程被分配超過一個時間片的CPU時間,除非它是唯一可運行的進程。如果進程的CPU區(qū)間超過了一個時間片,那么該進程就被搶占并放回就緒隊列。

多級隊列調(diào)度算法:將就緒隊列分成多個獨立的隊列,每個隊列都有自己的調(diào)度算法,隊列之間采用固定優(yōu)先級搶占調(diào)度。其中,一個進程根據(jù)自身屬性被永久地分配到一個隊列中。

多級反饋隊列調(diào)度算法:與多級隊列調(diào)度算法相比,其允許進程在隊列之間移動:若進程使用過多CPU時間,那么它會被轉移到更低的優(yōu)先級隊列;在較低優(yōu)先級隊列等待時間過長的進程會被轉移到更高優(yōu)先級隊列,以防止饑餓發(fā)生。

11.進程同步與互斥

互斥:指某一個資源同時只允許一個訪問者對其進行訪問,具有唯一性和排它性。但互斥無法限制訪問者對資源的訪問順序,即訪問是無序的

同步:是指在互斥的基礎上(大多數(shù)情況下),通過其它機制實現(xiàn)訪問者對資源的有序訪問。大多數(shù)情況下,同步已經(jīng)實現(xiàn)了互斥,特別是所有寫入資源的情況必定是互斥的。少數(shù)情況是指可以允許多個訪問者同時訪問資源。

同步:體現(xiàn)的是一種協(xié)作性?;コ猓后w現(xiàn)的是排它性。

12.進程同步有哪幾種機制:

1.信號量機制

一個信號量只能置一次初值,以后只能對之進行p操作或v操作。 由此也可以看到,信號量機制必須有公共內(nèi)存,不能用于分布式操作系統(tǒng),這是它最大的弱點。

2.自旋鎖

旋鎖是為了保護共享資源提出的一種鎖機制。 調(diào)用者申請的資源如果被占用,即自旋鎖被已經(jīng)被別的執(zhí)行單元保持,則調(diào)用者一直循環(huán)在那里看是否該自旋鎖的保持著已經(jīng)釋放了鎖,自旋鎖是一種比較低級的保護數(shù)據(jù)結構和代碼片段的原始方式,可能會引起以下兩個問題;

(1)死鎖

(2)過多地占用CPU資源

3.管程

信號量機制功能強大,但使用時對信號量的操作分散,而且難以控制,讀寫和維護都很困難。因此后來又提出了一種集中式同步進程——管程。其基本思想是將共享變量和對它們的操作集中在一個模塊中,操作系統(tǒng)或并發(fā)程序就由這樣的模塊構成。這樣模塊之間聯(lián)系清晰,便于維護和修改,易于保證正確性。

4.會合

進程直接進行相互作用

5.分布式系統(tǒng)

由于在分布式操作系統(tǒng)中沒有公共內(nèi)存,因此參數(shù)全為值參,而且不可為指針。

13.線程同步的方式

互斥量 Synchronized/Lock:采用互斥對象機制,只有擁有互斥對象的線程才有訪問公共資源的權限。因為互斥對象只有一個,所以可以保證公共資源不會被多個線程同時訪問

信號量 Semphare:它允許同一時刻多個線程訪問同一資源,但是需要控制同一時刻訪問此資源的最大線程數(shù)量

事件(信號),Wait/Notify:通過通知操作的方式來保持多線程同步,還可以方便的實現(xiàn)多線程優(yōu)先級的比較操作

14.什么是虛擬內(nèi)存?

1).內(nèi)存的發(fā)展歷程

  沒有內(nèi)存抽象(單進程,除去操作系統(tǒng)所用的內(nèi)存之外,全部給用戶程序使用) —> 有內(nèi)存抽象(多進程,進程獨立的地址空間,交換技術(內(nèi)存大小不可能容納下所有并發(fā)執(zhí)行的進程)

)—> 連續(xù)內(nèi)存分配(固定大小分區(qū)(多道程序的程度受限),可變分區(qū)(首次適應,最佳適應,最差適應),碎片) —> 不連續(xù)內(nèi)存分配(分段,分頁,段頁式,虛擬內(nèi)存)

2).虛擬內(nèi)存

  虛擬內(nèi)存允許執(zhí)行進程不必完全在內(nèi)存中。虛擬內(nèi)存的基本思想是:每個進程擁有獨立的地址空間,這個空間被分為大小相等的多個塊,稱為頁(Page),每個頁都是一段連續(xù)的地址。這些頁被映射到物理內(nèi)存,但并不是所有的頁都必須在內(nèi)存中才能運行程序。當程序引用到一部分在物理內(nèi)存中的地址空間時,由硬件立刻進行必要的映射;當程序引用到一部分不在物理內(nèi)存中的地址空間時,由操作系統(tǒng)負責將缺失的部分裝入物理內(nèi)存并重新執(zhí)行失敗的命令。這樣,對于進程而言,邏輯上似乎有很大的內(nèi)存空間,實際上其中一部分對應物理內(nèi)存上的一塊(稱為幀,通常頁和幀大小相等),還有一些沒加載在內(nèi)存中的對應在硬盤上,如圖5所示。

注意,請求分頁系統(tǒng)、請求分段系統(tǒng)和請求段頁式系統(tǒng)都是針對虛擬內(nèi)存的,通過請求實現(xiàn)內(nèi)存與外存的信息置換。

計算機復試專業(yè)問題,計算機復試面試專業(yè)問答題,面試,數(shù)據(jù)結構,排序算法,windows,linux

?

  由圖可以看出,虛擬內(nèi)存實際上可以比物理內(nèi)存大。當訪問虛擬內(nèi)存時,會訪問MMU(內(nèi)存管理單元)去匹配對應的物理地址(比如圖5的0,1,2)。如果虛擬內(nèi)存的頁并不存在于物理內(nèi)存中(如圖5的3,4),會產(chǎn)生缺頁中斷,從磁盤中取得缺的頁放入內(nèi)存,如果內(nèi)存已滿,還會根據(jù)某種算法將磁盤中的頁換出。

3). 頁面置換算法

FIFO先進先出算法:在操作系統(tǒng)中經(jīng)常被用到,比如作業(yè)調(diào)度(主要實現(xiàn)簡單,很容易想到);

LRU(Least recently use)最近最少使用算法:根據(jù)使用時間到現(xiàn)在的長短來判斷;

LFU(Least frequently use)最少使用次數(shù)算法:根據(jù)使用次數(shù)來判斷;

OPT(Optimal replacement)最優(yōu)置換算法:理論的最優(yōu),理論;就是要保證置換出去的是不再被使用的頁,或者是在實際內(nèi)存中最晚使用的算法。

4). 虛擬內(nèi)存的應用與優(yōu)點

  虛擬內(nèi)存很適合在多道程序設計系統(tǒng)中使用,許多程序的片段同時保存在內(nèi)存中。當一個程序等待它的一部分讀入內(nèi)存時,可以把CPU交給另一個進程使用。虛擬內(nèi)存的使用可以帶來以下好處:

在內(nèi)存中可以保留多個進程,系統(tǒng)并發(fā)度提高

解除了用戶與內(nèi)存之間的緊密約束,進程可以比內(nèi)存的全部空間還大

15.顛簸

  顛簸本質(zhì)上是指頻繁的頁調(diào)度行為,具體來講,進程發(fā)生缺頁中斷,這時,必須置換某一頁。然而,其他所有的頁都在使用,它置換一個頁,但又立刻再次需要這個頁。因此,會不斷產(chǎn)生缺頁中斷,導致整個系統(tǒng)的效率急劇下降,這種現(xiàn)象稱為顛簸(抖動)。

  內(nèi)存顛簸的解決策略包括:

如果是因為頁面替換策略失誤,可以修改替換算法來解決這個問題;

如果是因為運行的程序太多,造成程序無法同時將所有頻繁訪問的頁面調(diào)入內(nèi)存,則要降低多道程序的數(shù)量;

否則,還剩下兩個辦法:終止該進程或增加物理內(nèi)存容量。

16.局部性原理

(1). 時間上的局部性:最近被訪問的頁在不久的將來還會被訪問;

(2). 空間上的局部性:內(nèi)存中被訪問的頁周圍的頁也很可能被訪問。

17.中斷和輪詢

中斷指在計算機執(zhí)行期間,系統(tǒng)內(nèi)發(fā)生任何非尋常的或非預期的急需處理事件,使得CPU暫時中斷當前正在執(zhí)行的程序而轉去執(zhí)行相應的事件處理程序,待處理完畢后又返回原來被中斷處繼續(xù)執(zhí)行或調(diào)度新的進程執(zhí)行的過程

輪詢指定時對各種設備輪流詢問一遍有無處理要求

18.臨界區(qū)和沖突解決

臨界資源的定義:

一次僅允許一個進程使用的資源

臨界區(qū)的定義:

每個進程中訪問臨界資源的那段程序

解決沖突:

如果有若干進程要求進入空閑的臨界區(qū),一次僅允許一個進程進入,任何時候,處于臨界區(qū)內(nèi)的進程不可多于一個。進入臨界區(qū)的進程要在有限時間內(nèi)退出,以便其它進程能及時進入自己的臨界區(qū)。如果進程不能進入自己的臨界區(qū),則應讓出CPU,避免進程出現(xiàn)“忙等”現(xiàn)象。

19.緩沖區(qū)溢出

緩沖區(qū)溢出的定義:指當計算機向緩沖區(qū)內(nèi)填充數(shù)據(jù)時超過了緩沖區(qū)本身的容量,溢出的數(shù)據(jù)覆蓋在合法數(shù)據(jù)上

緩沖區(qū)溢出的危害:程序崩潰導致拒絕服務、跳轉并且執(zhí)行一段惡意代碼

緩沖區(qū)溢出的原因:程序中沒有仔細檢查用戶輸入的參數(shù)

20.什么是操作系統(tǒng)?它有哪些功能和特征?

答:操作系統(tǒng)(Operating System,簡稱OS)是管理和控制計算機硬件與軟件資源的計算機程序,是直接運行在“裸機”上的最基本的系統(tǒng)軟件,任何其他軟件都必須在操作系統(tǒng)的支持下才能運行。

(1)操作系統(tǒng)應是計算機系統(tǒng)資源的管理者:①處理機管理②存儲器管理③設備管理④文件管理

(2)操作系統(tǒng)是用戶與計算機硬件系統(tǒng)之間的接口,同時也是計算機硬件和其他軟件的接口:①命令接口②程序接口

總的來說操作系統(tǒng)的功能,包括管理計算機系統(tǒng)的硬件、軟件及數(shù)據(jù)資源,控制程序運行,改善人機界面,為其它應用軟件提供支持,讓計算機系統(tǒng)所有資源最大限度地發(fā)揮作用,提供各種形式的用戶界面,使用戶有一個好的工作環(huán)境,為其它軟件的開發(fā)提供必要的服務和相應的接口等。實際上,用戶是不用接觸操作系統(tǒng)的,操作系統(tǒng)管理著計算機硬件資源,同時按照應用程序的資源請求,分配資源,如劃分CPU時間,內(nèi)存空間的開辟,調(diào)用打印機等。

操作系統(tǒng)的特征:①并發(fā):兩個或者多個事件在同一時間間隔內(nèi)發(fā)生。

②共享:系統(tǒng)中的資源可供內(nèi)存中多個并發(fā)執(zhí)行的進程共同使用。

③虛擬:把一個物理上的實體變?yōu)槿舾蓚€邏輯上的對應物。

? ?異步

四、計算機網(wǎng)絡

1、Http和Https的區(qū)別

  Http協(xié)議運行在TCP之上,明文傳輸,客戶端與服務器端都無法驗證對方的身份;Https是身披SSL(Secure Socket Layer)外殼的Http,運行于SSL上,SSL運行于TCP之上,是添加了加密和認證機制的HTTP。二者之間存在如下不同:

端口不同:Http與Http使用不同的連接方式,用的端口也不一樣,前者是80,后者是443;

資源消耗:和HTTP通信相比,Https通信會由于加減密處理消耗更多的CPU和內(nèi)存資源;

開銷:Https通信需要證書,而證書一般需要向認證機構購買;

Https的加密機制是一種共享密鑰加密和公開密鑰加密并用的混合加密機制。

2、對稱加密與非對稱加密

  對稱密鑰加密是指加密和解密使用同一個密鑰的方式,這種方式存在的最大問題就是密鑰發(fā)送問題,即如何安全地將密鑰發(fā)給對方;而非對稱加密是指使用一對非對稱密鑰,即公鑰和私鑰,公鑰可以隨意發(fā)布,但私鑰只有自己知道。發(fā)送密文的一方使用對方的公鑰進行加密處理,對方接收到加密信息后,使用自己的私鑰進行解密。

  由于非對稱加密的方式不需要發(fā)送用來解密的私鑰,所以可以保證安全性;但是和對稱加密比起來,它非常的慢,所以我們還是要用對稱加密來傳送消息,但對稱加密所使用的密鑰我們可以通過非對稱加密的方式發(fā)送出去。

3、三次握手與四次揮手

 (1). 三次握手(我要和你建立鏈接,你真的要和我建立鏈接么,我真的要和你建立鏈接,成功):

第一次握手:Client將標志位SYN置為1,隨機產(chǎn)生一個值seq=J,并將該數(shù)據(jù)包發(fā)送給Server,Client進入SYN_SENT狀態(tài),等待Server確認。

第二次握手:Server收到數(shù)據(jù)包后由標志位SYN=1知道Client請求建立連接,Server將標志位SYN和ACK都置為1,ack=J+1,隨機產(chǎn)生一個值seq=K,并將該數(shù)據(jù)包發(fā)送給Client以確認連接請求,Server進入SYN_RCVD狀態(tài)。

第三次握手:Client收到確認后,檢查ack是否為J+1,ACK是否為1,如果正確則將標志位ACK置為1,ack=K+1,并將該數(shù)據(jù)包發(fā)送給Server,Server檢查ack是否為K+1,ACK是否為1,如果正確則連接建立成功,Client和Server進入ESTABLISHED狀態(tài),完成三次握手,隨后Client與Server之間可以開始傳輸數(shù)據(jù)了?!         ?/p>

 (2). 四次揮手(我要和你斷開鏈接;好的,斷吧。我也要和你斷開鏈接;好的,斷吧):

第一次揮手:Client發(fā)送一個FIN,用來關閉Client到Server的數(shù)據(jù)傳送,Client進入FIN_WAIT_1狀態(tài)。

第二次揮手:Server收到FIN后,發(fā)送一個ACK給Client,確認序號為收到序號+1(與SYN相同,一個FIN占用一個序號),Server進入CLOSE_WAIT狀態(tài)。此時TCP鏈接處于半關閉狀態(tài),即客戶端已經(jīng)沒有要發(fā)送的數(shù)據(jù)了,但服務端若發(fā)送數(shù)據(jù),則客戶端仍要接收。

第三次揮手:Server發(fā)送一個FIN,用來關閉Server到Client的數(shù)據(jù)傳送,Server進入LAST_ACK狀態(tài)。

第四次揮手:Client收到FIN后,Client進入TIME_WAIT狀態(tài),接著發(fā)送一個ACK給Server,確認序號為收到序號+1,Server進入CLOSED狀態(tài),完成四次揮手?!           ?/p>

4、為什么TCP鏈接需要三次握手,兩次不可以么,為什么?

  為了防止 已失效的鏈接請求報文突然又傳送到了服務端,因而產(chǎn)生錯誤。

  客戶端發(fā)出的連接請求報文并未丟失,而是在某個網(wǎng)絡節(jié)點長時間滯留了,以致延誤到鏈接釋放以后的某個時間才到達Server。這是,Server誤以為這是Client發(fā)出的一個新的鏈接請求,于是就向客戶端發(fā)送確認數(shù)據(jù)包,同意建立鏈接。若不采用“三次握手”,那么只要Server發(fā)出確認數(shù)據(jù)包,新的鏈接就建立了。由于client此時并未發(fā)出建立鏈接的請求,所以其不會理睬Server的確認,也不與Server通信;而這時Server一直在等待Client的請求,這樣Server就白白浪費了一定的資源。若采用“三次握手”,在這種情況下,由于Server端沒有收到來自客戶端的確認,則就會知道Client并沒有要求建立請求,就不會建立鏈接。

5、TCP協(xié)議如何來保證傳輸?shù)目煽啃?/h4>

  TCP提供一種面向連接的、可靠的字節(jié)流服務。其中,面向連接意味著兩個使用TCP的應用(通常是一個客戶和一個服務器)在彼此交換數(shù)據(jù)之前必須先建立一個TCP連接。在一個TCP連接中,僅有兩方進行彼此通信;而字節(jié)流服務意味著兩個應用程序通過TCP鏈接交換8bit字節(jié)構成的字節(jié)流,TCP不在字節(jié)流中插入記錄標識符。

  對于可靠性,TCP通過以下方式進行保證:

數(shù)據(jù)包校驗:目的是檢測數(shù)據(jù)在傳輸過程中的任何變化,若校驗出包有錯,則丟棄報文段并且不給出響應,這時TCP發(fā)送數(shù)據(jù)端超時后會重發(fā)數(shù)據(jù);

對失序數(shù)據(jù)包重排序:既然TCP報文段作為IP數(shù)據(jù)報來傳輸,而IP數(shù)據(jù)報的到達可能會失序,因此TCP報文段的到達也可能會失序。TCP將對失序數(shù)據(jù)進行重新排序,然后才交給應用層;

丟棄重復數(shù)據(jù):對于重復數(shù)據(jù),能夠丟棄重復數(shù)據(jù);

應答機制:當TCP收到發(fā)自TCP連接另一端的數(shù)據(jù),它將發(fā)送一個確認。這個確認不是立即發(fā)送,通常將推遲幾分之一秒;

超時重發(fā):當TCP發(fā)出一個段后,它啟動一個定時器,等待目的端確認收到這個報文段。如果不能及時收到一個確認,將重發(fā)這個報文段;

流量控制:TCP連接的每一方都有固定大小的緩沖空間。TCP的接收端只允許另一端發(fā)送接收端緩沖區(qū)所能接納的數(shù)據(jù),這可以防止較快主機致使較慢主機的緩沖區(qū)溢出,這就是流量控制。TCP使用的流量控制協(xié)議是可變大小的滑動窗口協(xié)議。

6、客戶端不斷進行請求鏈接會怎樣?DDos(Distributed Denial of Service)攻擊?

  服務器端會為每個請求創(chuàng)建一個鏈接,并向其發(fā)送確認報文,然后等待客戶端進行確認

1)、DDos 攻擊

客戶端向服務端發(fā)送請求鏈接數(shù)據(jù)包

服務端向客戶端發(fā)送確認數(shù)據(jù)包

客戶端不向服務端發(fā)送確認數(shù)據(jù)包,服務器一直等待來自客戶端的確認

2)、DDos 預防 ( 沒有徹底根治的辦法,除非不使用TCP )

限制同時打開SYN半鏈接的數(shù)目

縮短SYN半鏈接的Time out 時間

關閉不必要的服務

7、Get與POST的區(qū)別

  GET與POST是我們常用的兩種HTTP Method,二者之間的區(qū)別主要包括如下五個方面:

(1). 從功能上講,GET一般用來從服務器上獲取資源,POST一般用來更新服務器上的資源;

(2). 從REST服務角度上說,GET是冪等的,即讀取同一個資源,總是得到相同的數(shù)據(jù),而POST不是冪等的,因為每次請求對資源的改變并不是相同的;進一步地,GET不會改變服務器上的資源,而POST會對服務器資源進行改變;

(3). 從請求參數(shù)形式上看,GET請求的數(shù)據(jù)會附在URL之后,即將請求數(shù)據(jù)放置在HTTP報文的 請求頭 中,以?分割URL和傳輸數(shù)據(jù),參數(shù)之間以&相連。特別地,如果數(shù)據(jù)是英文字母/數(shù)字,原樣發(fā)送;否則,會將其編碼為 application/x-www-form-urlencoded MIME 字符串(如果是空格,轉換為+,如果是中文/其他字符,則直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX為該符號以16進制表示的ASCII);而POST請求會把提交的數(shù)據(jù)則放置在是HTTP請求報文的 請求體 中。

(4). 就安全性而言,POST的安全性要比GET的安全性高,因為GET請求提交的數(shù)據(jù)將明文出現(xiàn)在URL上,而且POST請求參數(shù)則被包裝到請求體中,相對更安全。

(5). 從請求的大小看,GET請求的長度受限于瀏覽器或服務器對URL長度的限制,允許發(fā)送的數(shù)據(jù)量比較小,而POST請求則是沒有大小限制的。

8、TCP與UDP的區(qū)別

  TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)協(xié)議屬于傳輸層協(xié)議,它們之間的區(qū)別包括:

TCP是面向連接的,UDP是無連接的;

TCP是可靠的,UDP是不可靠的;

TCP只支持點對點通信,UDP支持一對一、一對多、多對一、多對多的通信模式;

TCP是面向字節(jié)流的,UDP是面向報文的;

TCP有擁塞控制機制;UDP沒有擁塞控制,適合媒體通信;

TCP首部開銷(20個字節(jié))比UDP的首部開銷(8個字節(jié))要大;

9、TCP的擁塞處理

  計算機網(wǎng)絡中的帶寬、交換結點中的緩存及處理機等都是網(wǎng)絡的資源。在某段時間,若對網(wǎng)絡中某一資源的需求超過了該資源所能提供的可用部分,網(wǎng)絡的性能就會變壞,這種情況就叫做擁塞。擁塞控制就是 防止過多的數(shù)據(jù)注入網(wǎng)絡中,這樣可以使網(wǎng)絡中的路由器或鏈路不致過載。注意,擁塞控制和流量控制不同,前者是一個全局性的過程,而后者指點對點通信量的控制。擁塞控制的方法主要有以下四種:

1). 慢啟動:不要一開始就發(fā)送大量的數(shù)據(jù),先探測一下網(wǎng)絡的擁塞程度,也就是說由小到大逐漸增加擁塞窗口的大小;

2). 擁塞避免:擁塞避免算法讓擁塞窗口緩慢增長,即每經(jīng)過一個往返時間RTT就把發(fā)送方的擁塞窗口cwnd加1,而不是加倍,這樣擁塞窗口按線性規(guī)律緩慢增長?!         ?/p>

3). 快重傳:快重傳要求接收方在收到一個 失序的報文段 后就立即發(fā)出 重復確認(為的是使發(fā)送方及早知道有報文段沒有到達對方)而不要等到自己發(fā)送數(shù)據(jù)時捎帶確認。快重傳算法規(guī)定,發(fā)送方只要一連收到三個重復確認就應當立即重傳對方尚未收到的報文段,而不必繼續(xù)等待設置的重傳計時器時間到期?!        ?/p>

4). 快恢復:快重傳配合使用的還有快恢復算法,當發(fā)送方連續(xù)收到三個重復確認時,就執(zhí)行“乘法減小”算法,把ssthresh門限減半,但是接下去并不執(zhí)行慢開始算法:因為如果網(wǎng)絡出現(xiàn)擁塞的話就不會收到好幾個重復的確認,所以發(fā)送方現(xiàn)在認為網(wǎng)絡可能沒有出現(xiàn)擁塞。所以此時不執(zhí)行慢開始算法,而是將cwnd設置為ssthresh的大小,然后執(zhí)行擁塞避免算法?!        ?/p>

10、從輸入網(wǎng)址到獲得頁面的過程

  (1). 瀏覽器查詢 DNS,獲取域名對應的IP地址:具體過程包括瀏覽器搜索自身的DNS緩存、搜索操作系統(tǒng)的DNS緩存、讀取本地的Host文件和向本地DNS服務器進行查詢等。對于向本地DNS服務器進行查詢,如果要查詢的域名包含在本地配置區(qū)域資源中,則返回解析結果給客戶機,完成域名解析(此解析具有權威性);如果要查詢的域名不由本地DNS服務器區(qū)域解析,但該服務器已緩存了此網(wǎng)址映射關系,則調(diào)用這個IP地址映射,完成域名解析(此解析不具有權威性)。如果本地域名服務器并未緩存該網(wǎng)址映射關系,那么將根據(jù)其設置發(fā)起遞歸查詢或者迭代查詢;

  (2). 瀏覽器獲得域名對應的IP地址以后,瀏覽器向服務器請求建立鏈接,發(fā)起三次握手;

  (3). TCP/IP鏈接建立起來后,瀏覽器向服務器發(fā)送HTTP請求;

  (4). 服務器接收到這個請求,并根據(jù)路徑參數(shù)映射到特定的請求處理器進行處理,并將處理結果及相應的視圖返回給瀏覽器;

  (5). 瀏覽器解析并渲染視圖,若遇到對js文件、css文件及圖片等靜態(tài)資源的引用,則重復上述步驟并向服務器請求這些資源;

  (6). 瀏覽器根據(jù)其請求到的資源、數(shù)據(jù)渲染頁面,最終向用戶呈現(xiàn)一個完整的頁面。

11、Session、Cookie 與 Application

  Cookie和Session都是客戶端與服務器之間保持狀態(tài)的解決方案,具體來說,cookie機制采用的是在客戶端保持狀態(tài)的方案,而session機制采用的是在服務器端保持狀態(tài)的方案。

(1). Cookie及其相關API

  Cookie實際上是一小段的文本信息??蛻舳苏埱蠓掌鳎绻掌餍枰涗浽撚脩魻顟B(tài),就使用response向客戶端瀏覽器頒發(fā)一個Cookie,而客戶端瀏覽器會把Cookie保存起來。當瀏覽器再請求該網(wǎng)站時,瀏覽器把請求的網(wǎng)址連同該Cookie一同提交給服務器,服務器檢查該Cookie,以此來辨認用戶狀態(tài)。服務器還可以根據(jù)需要修改Cookie的內(nèi)容?!                     ?/p>

(2). Session及其相關API

  同樣地,會話狀態(tài)也可以保存在服務器端。客戶端請求服務器,如果服務器記錄該用戶狀態(tài),就獲取Session來保存狀態(tài),這時,如果服務器已經(jīng)為此客戶端創(chuàng)建過session,服務器就按照sessionid把這個session檢索出來使用;如果客戶端請求不包含sessionid,則為此客戶端創(chuàng)建一個session并且生成一個與此session相關聯(lián)的sessionid,并將這個sessionid在本次響應中返回給客戶端保存。保存這個sessionid的方式可以采用 cookie機制 ,這樣在交互過程中瀏覽器可以自動的按照規(guī)則把這個標識發(fā)揮給服務器;若瀏覽器禁用Cookie的話,可以通過 URL重寫機制 將sessionid傳回服務器?!         ?/p>

(3). Session 與 Cookie 的對比

實現(xiàn)機制:Session的實現(xiàn)常常依賴于Cookie機制,通過Cookie機制回傳SessionID;

大小限制:Cookie有大小限制并且瀏覽器對每個站點也有cookie的個數(shù)限制,Session沒有大小限制,理論上只與服務器的內(nèi)存大小有關;

安全性:Cookie存在安全隱患,通過攔截或本地文件找得到cookie后可以進行攻擊,而Session由于保存在服務器端,相對更加安全;

服務器資源消耗:Session是保存在服務器端上會存在一段時間才會消失,如果session過多會增加服務器的壓力。

Application(ServletContext):與一個Web應用程序相對應,為應用程序提供了一個全局的狀態(tài),所有客戶都可以使用該狀態(tài)。

(4). Application

  Application(Java Web中的ServletContext):與一個Web應用程序相對應,為應用程序提供了一個全局的狀態(tài),所有客戶都可以使用該狀態(tài)。

12、SQL 注入

  SQL注入就是通過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執(zhí)行惡意的SQL命令。

1). SQL注入攻擊的總體思路

  (1). 尋找到SQL注入的位置

  (2). 判斷服務器類型和后臺數(shù)據(jù)庫類型

  (3). 針對不通的服務器和數(shù)據(jù)庫特點進行SQL注入攻擊

2). SQL注入攻擊實例

  比如,在一個登錄界面,要求輸入用戶名和密碼,可以這樣輸入實現(xiàn)免帳號登錄:

3). 應對方法

(1). 參數(shù)綁定

  使用預編譯手段,綁定參數(shù)是最好的防SQL注入的方法。目前許多的ORM框架及JDBC等都實現(xiàn)了SQL預編譯和參數(shù)綁定功能,攻擊者的惡意SQL會被當做SQL的參數(shù)而不是SQL命令被執(zhí)行。在mybatis的mapper文件中,對于傳遞的參數(shù)我們一般是使用#和$來獲取參數(shù)值。當使用#時,變量是占位符,就是一般我們使用javajdbc的PrepareStatement時的占位符,所有可以防止sql注入;當使用$時,變量就是直接追加在sql中,一般會有sql注入問題。

(2). 使用正則表達式過濾傳入的參數(shù)

13、 XSS 攻擊

  XSS是一種經(jīng)常出現(xiàn)在web應用中的計算機安全漏洞,與SQL注入一起成為web中最主流的攻擊方式。XSS是指惡意攻擊者利用網(wǎng)站沒有對用戶提交數(shù)據(jù)進行轉義處理或者過濾不足的缺點,進而添加一些腳本代碼嵌入到web頁面中去,使別的用戶訪問都會執(zhí)行相應的嵌入代碼,從而盜取用戶資料、利用用戶身份進行某種動作或者對訪問者進行病毒侵害的一種攻擊方式。

1). XSS攻擊的危害

盜取各類用戶帳號,如機器登錄帳號、用戶網(wǎng)銀帳號、各類管理員帳號

控制企業(yè)數(shù)據(jù),包括讀取、篡改、添加、刪除企業(yè)敏感數(shù)據(jù)的能力

盜竊企業(yè)重要的具有商業(yè)價值的資料

非法轉賬

強制發(fā)送電子郵件

網(wǎng)站掛馬

控制受害者機器向其它網(wǎng)站發(fā)起攻擊

2). 原因解析

  主要原因:過于信任客戶端提交的數(shù)據(jù)!

  解決辦法:不信任任何客戶端提交的數(shù)據(jù),只要是客戶端提交的數(shù)據(jù)就應該先進行相應的過濾處理然后方可進行下一步的操作。

  進一步分析細節(jié):客戶端提交的數(shù)據(jù)本來就是應用所需要的,但是惡意攻擊者利用網(wǎng)站對客戶端提交數(shù)據(jù)的信任,在數(shù)據(jù)中插入一些符號以及javascript代碼,那么這些數(shù)據(jù)將會成為應用代碼中的一部分了,那么攻擊者就可以肆無忌憚地展開攻擊啦,因此我們絕不可以信任任何客戶端提交的數(shù)據(jù)!??!

3). XSS 攻擊分類

(1). 反射性XSS攻擊 (非持久性XSS攻擊)

  漏洞產(chǎn)生的原因是攻擊者注入的數(shù)據(jù)反映在響應中。一個典型的非持久性XSS攻擊包含一個帶XSS攻擊向量的鏈接(即每次攻擊需要用戶的點擊),例如,正常發(fā)送消息:

http://www.test.com/message.php?send=Hello,World!

接收者將會接收信息并顯示Hello,World;但是,非正常發(fā)送消息:

http://www.test.com/message.php?send=<script>alert(‘foolish!’)</script>!

接收者接收消息顯示的時候?qū)棾鼍娲翱冢?/p>

(2). 持久性XSS攻擊 (留言板場景)

  XSS攻擊向量(一般指XSS攻擊代碼)存儲在網(wǎng)站數(shù)據(jù)庫,當一個頁面被用戶打開的時候執(zhí)行。也就是說,每當用戶使用瀏覽器打開指定頁面時,腳本便執(zhí)行。與非持久性XSS攻擊相比,持久性XSS攻擊危害性更大。從名字就可以了解到,持久性XSS攻擊就是將攻擊代碼存入數(shù)據(jù)庫中,然后客戶端打開時就執(zhí)行這些攻擊代碼。

例如,留言板表單中的表單域:

<input type=“text” name=“content” value=“這里是用戶填寫的數(shù)據(jù)”>

正常操作流程是:用戶是提交相應留言信息 —— 將數(shù)據(jù)存儲到數(shù)據(jù)庫 —— 其他用戶訪問留言板,應用去數(shù)據(jù)并顯示;而非正常操作流程是攻擊者在value填寫:

<script>alert(‘foolish!’);</script> <!--或者html其他標簽(破壞樣式。。。)、一段攻擊型代碼-->

并將數(shù)據(jù)提交、存儲到數(shù)據(jù)庫中;當其他用戶取出數(shù)據(jù)顯示的時候,將會執(zhí)行這些攻擊性代碼。

4). 修復漏洞方針

  漏洞產(chǎn)生的根本原因是 太相信用戶提交的數(shù)據(jù),對用戶所提交的數(shù)據(jù)過濾不足所導致的,因此解決方案也應該從這個方面入手,具體方案包括:

將重要的cookie標記為http only, 這樣的話Javascript 中的document.cookie語句就不能

獲取到cookie了(如果在cookie中設置了HttpOnly屬性,那么通過js腳本將無法讀取到cookie信息,這樣能有效的防止XSS攻擊);

表單數(shù)據(jù)規(guī)定值的類型,例如:年齡應為只能為int、name只能為字母數(shù)字組合。。。。

對數(shù)據(jù)進行Html Encode 處理

過濾或移除特殊的Html標簽,例如: <script>, <iframe> , < for <, > for>, " for

過濾JavaScript 事件的標簽,例如 “οnclick=”, “onfocus” 等等。

  需要注意的是,在有些應用中是允許html標簽出現(xiàn)的,甚至是javascript代碼出現(xiàn)。因此,我們在過濾數(shù)據(jù)的時候需要仔細分析哪些數(shù)據(jù)是有特殊要求(例如輸出需要html代碼、javascript代碼拼接、或者此表單直接允許使用等等),然后區(qū)別處理!

14、OSI網(wǎng)絡體系結構與TCP/IP協(xié)議模型

  我們對OSI七層模型的各層進行簡要的介紹:         

1). 物理層

  參考模型的最低層,也是OSI模型的第一層,實現(xiàn)了相鄰計算機節(jié)點之間比特流的透明傳送,并盡可能地屏蔽掉具體傳輸介質(zhì)和物理設備的差異,使其上層(數(shù)據(jù)鏈路層)不必關心網(wǎng)絡的具體傳輸介質(zhì)。

2). 數(shù)據(jù)鏈路層(data link layer)

  接收來自物理層的位流形式的數(shù)據(jù),并封裝成幀,傳送到上一層;同樣,也將來自上層的數(shù)據(jù)幀,拆裝為位流形式的數(shù)據(jù)轉發(fā)到物理層。這一層在物理層提供的比特流的基礎上,通過差錯控制、流量控制方法,使有差錯的物理線路變?yōu)闊o差錯的數(shù)據(jù)鏈路,即提供可靠的通過物理介質(zhì)傳輸數(shù)據(jù)的方法。

3). 網(wǎng)絡層

  將網(wǎng)絡地址翻譯成對應的物理地址,并通過路由選擇算法為分組通過通信子網(wǎng)選擇最適當?shù)穆窂??!        ?/p>

4). 傳輸層(transport layer)

  在源端與目的端之間提供可靠的透明數(shù)據(jù)傳輸,使上層服務用戶不必關系通信子網(wǎng)的實現(xiàn)細節(jié)。在協(xié)議棧中,傳輸層位于網(wǎng)絡層之上,傳輸層協(xié)議為不同主機上運行的進程提供邏輯通信,而網(wǎng)絡層協(xié)議為不同主機提供邏輯通信。實際上,網(wǎng)絡層可以看作是傳輸層的一部分,其為傳輸層提供服務。但對于終端系統(tǒng)而言,網(wǎng)絡層對它們而言是透明的,它們知道傳輸層的存在,也就是說,在邏輯上它們認為是傳輸層為它們提供了端對端的通信,這也是分層思想的妙處。

5). 會話層(Session Layer)

  會話層是OSI模型的第五層,是用戶應用程序和網(wǎng)絡之間的接口,負責在網(wǎng)絡中的兩節(jié)點之間建立、維持和終止通信。

6). 表示層(Presentation Layer):數(shù)據(jù)的編碼,壓縮和解壓縮,數(shù)據(jù)的加密和解密

  表示層是OSI模型的第六層,它對來自應用層的命令和數(shù)據(jù)進行解釋,以確保一個系統(tǒng)的應用層所發(fā)送的信息可以被另一個系統(tǒng)的應用層讀取。

7). 應用層(Application layer):為用戶的應用進程提供網(wǎng)絡通信服務

15、TCP和UDP分別對應的常見應用層協(xié)議

1). TCP對應的應用層協(xié)議

FTP:定義了文件傳輸協(xié)議,使用21端口。常說某某計算機開了FTP服務便是啟動了文件傳輸服務。下載文件,上傳主頁,都要用到FTP服務。

Telnet:它是一種用于遠程登陸的端口,用戶可以以自己的身份遠程連接到計算機上,通過這種端口可以提供一種基于DOS模式下的通信服務。如以前的BBS是-純字符界面的,支持BBS的服務器將23端口打開,對外提供服務。

SMTP:定義了簡單郵件傳送協(xié)議,現(xiàn)在很多郵件服務器都用的是這個協(xié)議,用于發(fā)送郵件。如常見的免費郵件服務中用的就是這個郵件服務端口,所以在電子郵件設置-中常看到有這么SMTP端口設置這個欄,服務器開放的是25號端口。

POP3:它是和SMTP對應,POP3用于接收郵件。通常情況下,POP3協(xié)議所用的是110端口。也是說,只要你有相應的使用POP3協(xié)議的程序(例如Fo-xmail或Outlook),就可以不以Web方式登陸進郵箱界面,直接用郵件程序就可以收到郵件(如是163郵箱就沒有必要先進入網(wǎng)易網(wǎng)站,再進入自己的郵-箱來收信)。

HTTP:從Web服務器傳輸超文本到本地瀏覽器的傳送協(xié)議。

2). UDP對應的應用層協(xié)議

DNS:用于域名解析服務,將域名地址轉換為IP地址。DNS用的是53號端口。

SNMP:簡單網(wǎng)絡管理協(xié)議,使用161號端口,是用來管理網(wǎng)絡設備的。由于網(wǎng)絡設備很多,無連接的服務就體現(xiàn)出其優(yōu)勢。

TFTP(Trival File Transfer Protocal):簡單文件傳輸協(xié)議,該協(xié)議在熟知端口69上使用UDP服務?!        ?/p>

16、網(wǎng)絡層的ARP協(xié)議工作原理

  網(wǎng)絡層的ARP協(xié)議完成了IP地址與物理地址的映射。首先,每臺主機都會在自己的ARP緩沖區(qū)中建立一個ARP列表,以表示IP地址和MAC地址的對應關系。當源主機需要將一個數(shù)據(jù)包要發(fā)送到目的主機時,會首先檢查自己ARP列表中是否存在該IP地址對應的MAC地址:如果有,就直接將數(shù)據(jù)包發(fā)送到這個MAC地址;如果沒有,就向本地網(wǎng)段發(fā)起一個ARP請求的廣播包,查詢此目的主機對應的MAC地址。此ARP請求數(shù)據(jù)包里包括源主機的IP地址、硬件地址、以及目的主機的IP地址。網(wǎng)絡中所有的主機收到這個ARP請求后,會檢查數(shù)據(jù)包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此數(shù)據(jù)包;如果相同,該主機首先將發(fā)送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已經(jīng)存在該IP的信息,則將其覆蓋,然后給源主機發(fā)送一個ARP響應數(shù)據(jù)包,告訴對方自己是它需要查找的MAC地址;源主機收到這個ARP響應數(shù)據(jù)包后,將得到的目的主機的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息開始數(shù)據(jù)的傳輸。如果源主機一直沒有收到ARP響應數(shù)據(jù)包,表示ARP查詢失敗。

17、IP地址的分類

  IP地址是指互聯(lián)網(wǎng)協(xié)議地址,是IP協(xié)議提供的一種統(tǒng)一的地址格式,它為互聯(lián)網(wǎng)上的每一個網(wǎng)絡和每一臺主機分配一個邏輯地址,以此來屏蔽物理地址的差異。IP地址編址方案將IP地址空間劃分為A、B、C、D、E五類,其中A、B、C是基本類,D、E類作為多播和保留使用,為特殊地址。

  每個IP地址包括兩個標識碼(ID),即網(wǎng)絡ID和主機ID。同一個物理網(wǎng)絡上的所有主機都使用同一個網(wǎng)絡ID,網(wǎng)絡上的一個主機(包括網(wǎng)絡上工作站,服務器和路由器等)有一個主機ID與其對應。A~E類地址的特點如下:

A類地址:以0開頭,第一個字節(jié)范圍:0~127;

B類地址:以10開頭,第一個字節(jié)范圍:128~191;

C類地址:以110開頭,第一個字節(jié)范圍:192~223;

D類地址:以1110開頭,第一個字節(jié)范圍為224~239;

E類地址:以1111開頭,保留地址

1). A類地址:1字節(jié)的網(wǎng)絡地址 + 3字節(jié)主機地址,網(wǎng)絡地址的最高位必須是“0”

  一個A類IP地址是指, 在IP地址的四段號碼中,第一段號碼為網(wǎng)絡號碼,剩下的三段號碼為本地計算機的號碼。如果用二進制表示IP地址的話,A類IP地址就由1字節(jié)的網(wǎng)絡地址和3字節(jié)主機地址組成,網(wǎng)絡地址的最高位必須是“0”。A類IP地址中網(wǎng)絡的標識長度為8位,主機標識的長度為24位,A類網(wǎng)絡地址數(shù)量較少,有126個網(wǎng)絡,每個網(wǎng)絡可以容納主機數(shù)達1600多萬臺。

  A類IP地址的地址范圍1.0.0.0到127.255.255.255(二進制表示為:00000001 00000000 00000000 00000000 - 01111110 11111111 11111111 11111111),最后一個是廣播地址。A類IP地址的子網(wǎng)掩碼為255.0.0.0,每個網(wǎng)絡支持的最大主機數(shù)為256的3次方-2=16777214臺。

2). B類地址: 2字節(jié)的網(wǎng)絡地址 + 2字節(jié)主機地址,網(wǎng)絡地址的最高位必須是“10”

  一個B類IP地址是指,在IP地址的四段號碼中,前兩段號碼為網(wǎng)絡號碼。如果用二進制表示IP地址的話,B類IP地址就由2字節(jié)的網(wǎng)絡地址和2字節(jié)主機地址組成,網(wǎng)絡地址的最高位必須是“10”。B類IP地址中網(wǎng)絡的標識長度為16位,主機標識的長度為16位,B類網(wǎng)絡地址適用于中等規(guī)模的網(wǎng)絡,有16384個網(wǎng)絡,每個網(wǎng)絡所能容納的計算機數(shù)為6萬多臺。

  B類IP地址地址范圍128.0.0.0-191.255.255.255(二進制表示為:10000000 00000000 00000000 00000000—-10111111 11111111 11111111 11111111),最后一個是廣播地址。B類IP地址的子網(wǎng)掩碼為255.255.0.0,每個網(wǎng)絡支持的最大主機數(shù)為256的2次方-2=65534臺。

3). C類地址: 3字節(jié)的網(wǎng)絡地址 + 1字節(jié)主機地址,網(wǎng)絡地址的最高位必須是“110”

  一個C類IP地址是指,在IP地址的四段號碼中,前三段號碼為網(wǎng)絡號碼,剩下的一段號碼為本地計算機的號碼。如果用二進制表示IP地址的話,C類IP地址就由3字節(jié)的網(wǎng)絡地址和1字節(jié)主機地址組成,網(wǎng)絡地址的最高位必須是“110”。C類IP地址中網(wǎng)絡的標識長度為24位,主機標識的長度為8位,C類網(wǎng)絡地址數(shù)量較多,有209萬余個網(wǎng)絡。適用于小規(guī)模的局域網(wǎng)絡,每個網(wǎng)絡最多只能包含254臺計算機。

  C類IP地址范圍192.0.0.0-223.255.255.255(二進制表示為: 11000000 00000000 00000000 00000000 - 11011111 11111111 11111111 11111111)。C類IP地址的子網(wǎng)掩碼為255.255.255.0,每個網(wǎng)絡支持的最大主機數(shù)為256-2=254臺。

4). D類地址:多播地址,用于1對多通信,最高位必須是“1110”

  D類IP地址在歷史上被叫做多播地址(multicast address),即組播地址。在以太網(wǎng)中,多播地址命名了一組應該在這個網(wǎng)絡中應用接收到一個分組的站點。多播地址的最高位必須是“1110”,范圍從224.0.0.0到239.255.255.255。

5). E類地址:為保留地址,最高位必須是“1111”

18、IP地址與物理地址

  物理地址是數(shù)據(jù)鏈路層和物理層使用的地址,IP地址是網(wǎng)絡層和以上各層使用的地址,是一種邏輯地址,其中ARP協(xié)議用于IP地址與物理地址的對應。

19、 常見狀態(tài)碼及原因短語

  HTTP請求結構: 請求方式 + 請求URI + 協(xié)議及其版本

  HTTP響應結構: 狀態(tài)碼 + 原因短語 + 協(xié)議及其版本

1×× : 請求處理中,請求已被接受,正在處理

2×× : 請求成功,請求被成功處理

200 OK

3×× : 重定向,要完成請求必須進行進一步處理

301 : 永久性轉移

302 :暫時性轉移

304 : 已緩存

4×× : 客戶端錯誤,請求不合法

400:Bad Request,請求有語法問題

403:拒絕請求

404:客戶端所訪問的頁面不存在

5×× : 服務器端錯誤,服務器不能處理合法請求

500 :服務器內(nèi)部錯誤

503 : 服務不可用,稍等文章來源地址http://www.zghlxwxcb.cn/news/detail-843335.html

到了這里,關于計算機復試專業(yè)課面試問題錦集的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 計算機專業(yè)考研復試上機算法學習

    計算機專業(yè)考研復試上機算法學習

    這篇博客是博主在準備可能到來的線下上機復試基于王道機試指南的學習,將各道習題鏈接和代碼記錄下來,這篇博客權且當個記錄。 ps:如果想咨詢?nèi)A南理工大學計算機考研復試的可以CSDN上私聊我,其他學校的我可以嘗試?可以交個朋友 1.1 vector動態(tài)數(shù)組 vector是C加加語言中

    2023年04月09日
    瀏覽(25)
  • 【23真題】郵電之首!擴招15倍!專業(yè)課難度驟降!

    【23真題】郵電之首!擴招15倍!專業(yè)課難度驟降!

    今天分享的是23年北京郵電大學804的信號與系統(tǒng)試題及解析。 本套試卷難度分析:北郵804在22年只招生6人,23年擬招生87人,擴招近15倍!22年北京郵電大學804考研真題,我也發(fā)布過,若有需要,戳這里自?。”咎自囶}難度中等,相比22年804的題目,難度低了很多!但是題量偏大

    2024年02月07日
    瀏覽(31)
  • 這所C9無歧視!專業(yè)課簡單,平均130分!

    這所C9無歧視!專業(yè)課簡單,平均130分!

    哈爾濱工業(yè)大學(Harbin Institute of Technology,簡稱哈工大),是隸屬于工業(yè)和信息化部的全國重點大學,位于哈爾濱市,九校聯(lián)盟 “C9” 之一,位列國家 “雙一流”、 “985工程”、“211工程” 重點建設高校。 哈爾濱工業(yè)大學共3個校區(qū),每個校區(qū)初試考803信號與系統(tǒng)和數(shù)字邏

    2024年02月11日
    瀏覽(27)
  • <網(wǎng)絡安全>《35 網(wǎng)絡攻防專業(yè)課<第一課 - 網(wǎng)絡攻防準備>》

    <網(wǎng)絡安全>《35 網(wǎng)絡攻防專業(yè)課<第一課 - 網(wǎng)絡攻防準備>》

    認識黑客 認識端口 常見術語與命令 網(wǎng)絡攻擊流程 VMWare虛擬環(huán)境靶機搭建 白帽黑客 是指有能力破壞電腦安全但不具惡意目的黑客。 灰帽黑客 是指對于倫理和法律態(tài)度不明的黑客。 黑帽黑客 經(jīng)常用于區(qū)別于一般(正面的)理性黑客,一個犯罪和黑客的合成詞。 黑客:Hack

    2024年02月19日
    瀏覽(26)
  • 專業(yè)課130總分420+復旦大學957信號與系統(tǒng)考研經(jīng)驗電子信息通信

    專業(yè)課130總分420+復旦大學957信號與系統(tǒng)考研經(jīng)驗電子信息通信

    專業(yè)課: 啰嗦一句,專業(yè)課推薦信息通信Jenny老師的專業(yè)課(不熟悉Jenny老師的同學可以去b站看看老師分享的視頻@信息通信考研Jenny),957信號與系統(tǒng)2022年入學考試出過大綱后,這兩年一直沒有更新,真題難度也比2022有提高,而且在c9和985里面復旦這兩年難度不算高,就造成

    2024年01月24日
    瀏覽(35)
  • MR混合現(xiàn)實情景實訓教學系統(tǒng)在軍事專業(yè)課堂上的應用

    MR混合現(xiàn)實在軍事專業(yè)課堂中的應用 1. 模擬實戰(zhàn)環(huán)境:通過MR系統(tǒng),教師可以模擬各種實戰(zhàn)環(huán)境,讓學生在實際操作中學習和掌握軍事技能。例如,在戰(zhàn)術訓練中,學生可以在模擬的敵方陣地環(huán)境中進行實戰(zhàn)演練,提高應對復雜戰(zhàn)場的能力。 2. 情景式教學:MR系統(tǒng)可以根據(jù)教

    2024年02月20日
    瀏覽(29)
  • Double 4 VR智能情景互動教學系統(tǒng)在酒店專業(yè)課堂上的教學應用

    隨著科技的不斷發(fā)展,VR技術已經(jīng)逐漸滲透到各個領域,特別是在教育領域中, Double 4 VR智能情景互動教學系統(tǒng) 得到了廣泛的應用。 一、增強學生的實踐操作能力 酒店專業(yè)是一門實踐性很強的學科,學生需要掌握各種服務技能和操作流程。傳統(tǒng)的教學方法往往只能通過理論

    2024年04月11日
    瀏覽(24)
  • 專業(yè)課140總分410+大連理工大學852信號與系統(tǒng)考研經(jīng)驗電子信息與通信

    專業(yè)課140總分410+大連理工大學852信號與系統(tǒng)考研經(jīng)驗電子信息與通信

    ●政治: 真心建議大家至少暑假或者9月再開始政治,我去年4月份就開始陸陸續(xù)續(xù)看課程,結果到后面都忘得差不多了。 如果再來一次,我會這樣來安排政治:暑假兩個月結合《精講精練》或者《考點清單》聽完(腿姐)強化課,做好筆記,配套完成《肖1000題》。放棄腿姐

    2024年02月02日
    瀏覽(30)
  • 專業(yè)課145+合肥工業(yè)大學833信號分析與處理考研經(jīng)驗合工大電子信息通信

    專業(yè)課145+合肥工業(yè)大學833信號分析與處理考研經(jīng)驗合工大電子信息通信

    今年專業(yè)課145+也是考研科目中最滿意的一門,其他基本相對平平,所以這里我總結一下自己的專業(yè)課合肥工業(yè)大學833信號分析與處理的復習經(jīng)驗。 我所用的教材是鄭君里的《信號與系統(tǒng)》(第三版)和高西全、丁玉美的《數(shù)字信號處理》(第四版),另外自己還看了祖師爺

    2024年01月18日
    瀏覽(25)
  • 計算機復試面試基礎知識(八股文)(數(shù)據(jù)庫、數(shù)據(jù)結構、操作系統(tǒng)、計網(wǎng)、機組等)

    數(shù)據(jù)庫緒論 1、簡述三層模式、兩級映射,分別有什么作用? 模式(邏輯模式):是數(shù)據(jù)庫中全體數(shù)據(jù)的邏輯結構和特征的描述,是數(shù)據(jù)庫系統(tǒng)模式結構的中間層,即不涉及數(shù)據(jù)的物理存儲細節(jié),也與具體應用程序開發(fā)工具語言無關。 外模式(用戶模式):是用戶能看見和使

    2023年04月09日
    瀏覽(73)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包