笔试训练第三次知识点汇总
選擇:
1.靜態(tài)鏈表
定義:用 數(shù)組?描述的鏈表,即稱為?靜態(tài)鏈表。
就是用一個二維數(shù)組存儲線形,數(shù)組第1列用于存放數(shù)據(jù)元素本身,第2列存放該數(shù)據(jù)元素在線形表中的位序。
所以 靜態(tài)鏈表中指針表示?數(shù)組下標(biāo)
2.進程、線程
進程:指在系統(tǒng)中能獨立運行并作為資源分配的基本單位,它是由一組機器指令、數(shù)據(jù)和堆棧等組成的,是一個能獨立運行的活動實體。
? ??注意,進程一般有三個狀態(tài):就緒狀態(tài)、執(zhí)行狀態(tài)和等待狀態(tài)【或稱阻塞狀態(tài)】;進程只能由父進程建立,系統(tǒng)中所有的進程形成一種進程樹的層次體系;掛起命令可由進程自己和其他進程發(fā)出,但是解除掛起命令只能由其他進程發(fā)出。
線程:線程是進程中的一個實體,作為系統(tǒng)調(diào)度和分派的基本單位
線程是進程的一部分
使用線程用利于提高程序執(zhí)行效率
線程切換開銷比進程切換開銷低
線程間共享全局變量
?
(附加:)進程可以開多少線程?2048(實際值比這個小)
默認(rèn)情況下,一個線程的棧要預(yù)留1M的內(nèi)存空間,而一個進程中可用的內(nèi)存空間只有2G,所以理論上一個進程中最多可以開2048個線程,但是內(nèi)存當(dāng)然不可能完全拿來作線程的棧,所以實際數(shù)目要比這個值要小(1G = 1024M)
?
3.TCP的服務(wù)特點:?
1.可靠的面向連接的協(xié)議?
2.基于字節(jié)流??TCP協(xié)議將應(yīng)用層的字節(jié)流分成多個字節(jié)段,然后將其傳送到互聯(lián)層。
3.可將原主機的字節(jié)無差錯傳送到目的主機
4.具有流量的控制功能
4.進棧出棧操作,先進后出,(做題時入棧之后的數(shù)值只能按順序出來,其余沒有入棧的暫時不入棧)
?
5.數(shù)組和指針的區(qū)別:
5.1.數(shù)組是開辟一塊連續(xù)的內(nèi)存空間,數(shù)組本身的標(biāo)示符代表整個數(shù)組,可以用sizeof取得真實的大小;指針則是只分配一個指針大小的內(nèi)存,并把它的值指向某個有效的內(nèi)存空間。
?
52.數(shù)組或是在靜態(tài)存儲區(qū)被創(chuàng)建(全局?jǐn)?shù)組),或是在棧上被創(chuàng)建。數(shù)組名對應(yīng)著,注意不是指向,一塊內(nèi)存,其地址與容量在生命期內(nèi)保持不變(當(dāng)然,使用了realloc()的不算),只有數(shù)組的內(nèi)容可以改變。
指針可以隨時指向任意類型的內(nèi)存塊,它的特征是“可變”,所以我們常用指針來操作動態(tài)內(nèi)存。
?
5.3.當(dāng)數(shù)組作為函數(shù)的參數(shù)進行傳遞時,數(shù)組就自動退化為同類型的指針。
典型的情況是
?
void func(intA[])
{
//sizeof(A)得到的是4bytes
}
int main()
{
inta[10];//sizeof(a)得到的結(jié)果是40bytes
funct(a);
}
?
6.const
const修飾的數(shù)據(jù)類型是指常類型,常類型的變量或?qū)ο蟮闹凳遣荒鼙桓碌摹?/span>
Const與define的區(qū)別如下:
(1)編譯器處理的方式不同。
? define是在預(yù)處理階段展開;
? const是在編譯運行階段展開,在編譯的時候確定其值;
(2)類型和安全檢查不同。
? define沒有類型,不進行類型檢查,也不進行安全檢查,這樣在進行替換的時候有可能發(fā)生意想不到的錯誤;
? const常量有具體的類型,在編譯階段會進行類型檢查;
(3)存儲方式不同。
? define只是進行展開,有多少地方使用,就替換多少次,它定義的宏常量在內(nèi)存中有若干個備份;
? const定義的只讀變量在程序運行過程中只有一份備份,所以const可以節(jié)省空間,避免不必要的內(nèi)存分配,同時提高效率。
(4)效率不同。
編譯器通常不為普通const常量分配存儲空間,而是將它們保存在符號表中,這使得它成為一個編譯期間的常量,沒有了存儲與讀內(nèi)存的操作,使得它的效率也很高,提高了程序的健壯性。
?
(注:)Gcc的編譯流程分為了四個步驟:
1.預(yù)處理,生成預(yù)編譯文件(.i文件):對源代碼文件中的文件包含(include)、預(yù)編譯語句(如宏定義define等)進行分析
何時需要預(yù)編譯:
1.1總是使用不經(jīng)常改動的大型代碼體。
1.2程序由多個模塊組成,所有模塊都使用一組標(biāo)準(zhǔn)的包含文件和相同的編譯選項。在這種情況下,可以將所有包含文件預(yù)編譯為一個“預(yù)編譯頭”
?
??? ??? Gcc –E hello.c –o hello.i
??? 2.編譯,生成匯編代碼(.s文件):
??? ??? Gcc –S hello.i –o hello.s
??? 3.匯編,生成目標(biāo)文件(.o文件):
??? ??? Gcc –c hello.s –o hello.o
??? 4.鏈接,生成可執(zhí)行文件:
??? ??? Gcc hello.o –o hello
?
7.C++ 調(diào)用c編譯的程序,為何要加extern c?
?
?
程序閱讀:
1.
void main()
{
int a[5] = {1,2,3,4,5};
int *ptr = (int *)(&a + 1);
printf(“%d %d\n”, *(a + 1), *(ptr - 1));
}
?
輸出的結(jié)果為2,5.由于a是數(shù)組的地址,如果是a + 1,那么步長就是數(shù)組一個元素的長度;但是如果是&a + 1,那么步長就是一個數(shù)組的長度,此題就是20個字節(jié)長度,那么在最后ptr - 1的結(jié)果就是數(shù)組a的最后一個元素5.
?
對于二維數(shù)組a[3][4],哪個不能表示a[1][1]?
*(a[1] + 1); 2.*(&a[1][1]); 3.(*(a + 1)[1]); 4.*(a + 5)
本題選擇4號,因為最后一個的步長是一行,即它代表了數(shù)組a[5][0];
其實主要就是看步長,如果是&a + 5那就是二維數(shù)組為一個單位,后移5個二維數(shù)組的長度。
第一個就是以列為一個單位去移動,正好得到a[1][1]。
?
?
?
(1)OSI七層模型
OSI中的層 功能 TCP/IP協(xié)議族?
應(yīng)用層 文件傳輸,電子郵件,文件服務(wù),虛擬終端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet?
表示層 數(shù)據(jù)格式化,代碼轉(zhuǎn)換,數(shù)據(jù)加密 沒有協(xié)議?
會話層 解除或建立與別的接點的聯(lián)系 沒有協(xié)議?
傳輸層 提供端對端的接口 TCP,UDP?
網(wǎng)絡(luò)層 為數(shù)據(jù)包選擇路由 IP,ICMP,RIP,OSPF,BGP,IGMP?
數(shù)據(jù)鏈路層 傳輸有地址的幀以及錯誤檢測功能 SLIP,CSLIP,PPP,ARP,RARP,MTU?
物理層 以二進制數(shù)據(jù)形式在物理媒體上傳輸數(shù)據(jù) ISO2110,IEEE802,IEEE802.2
?
(2)TCP/IP五層模型的協(xié)議
應(yīng)用層?
傳輸層?
網(wǎng)絡(luò)層?
數(shù)據(jù)鏈路層?
物理層?
?
?
TCP是主機對主機層的傳輸控制協(xié)議,提供可靠的連接服務(wù),采用三次握手確認(rèn)建立一個連接:
位碼即tcp標(biāo)志位,有6種表示:
SYN(synchronous建立連接)
ACK(acknowledgement 表示響應(yīng)、確認(rèn))
PSH(push表示有DATA數(shù)據(jù)傳輸)
FIN(finish關(guān)閉連接)
RST(reset表示連接重置)
URG(urgent緊急指針字段值有效)
?
三次握手:
?
第一次握手:客戶端發(fā)送syn包(syn=x)到服務(wù)器,并進入SYN_SEND狀態(tài),等待服務(wù)器確認(rèn);
第二次握手:服務(wù)器收到syn包,必須確認(rèn)客戶的SYN(ack=x+1),同時自己也發(fā)送一個SYN包(syn=y),即SYN+ACK包,此時服務(wù)器進入SYN_RECV狀態(tài);
第三次握手:客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=y+1),此包發(fā)送完畢,客戶端和服務(wù)器進入ESTABLISHED狀態(tài),完成三次握手。
? ? ? 握手過程中傳送的包里不包含數(shù)據(jù),三次握手完畢后,客戶端與服務(wù)器才正式開始傳送數(shù)據(jù)。理想狀態(tài)下,TCP連接一旦建立,在通信雙方中的任何一方主動關(guān)閉連接之前,TCP?連接都將被一直保持下去。
? ? ? 確認(rèn)號:其數(shù)值等于發(fā)送方的發(fā)送序號+1(即接收方期望接收的下一個序列號)。
四次揮手:
與建立連接的“三次握手”類似,斷開一個TCP連接則需要“四次揮手”。
第一次揮手:主動關(guān)閉方發(fā)送一個FIN,用來關(guān)閉主動方到被動關(guān)閉方的數(shù)據(jù)傳送,也就是主動關(guān)閉方告訴被動關(guān)閉方:我已經(jīng)不會再給你發(fā)數(shù)據(jù)了(當(dāng)然,在fin包之前發(fā)送出去的數(shù)據(jù),如果沒有收到對應(yīng)的ack確認(rèn)報文,主動關(guān)閉方依然會重發(fā)這些數(shù)據(jù)),但是,此時主動關(guān)閉方還可以接受數(shù)據(jù)。
第二次揮手:被動關(guān)閉方收到FIN包后,發(fā)送一個ACK給對方,確認(rèn)序號為收到序號+1(與SYN相同,一個FIN占用一個序號)。
第三次揮手:被動關(guān)閉方發(fā)送一個FIN,用來關(guān)閉被動關(guān)閉方到主動關(guān)閉方的數(shù)據(jù)傳送,也就是告訴主動關(guān)閉方,我的數(shù)據(jù)也發(fā)送完了,不會再給你發(fā)數(shù)據(jù)了。
第四次揮手:主動關(guān)閉方收到FIN后,發(fā)送一個ACK給被動關(guān)閉方,確認(rèn)序號為收到序號+1,至此,完成四次揮手。
?
TCP的四次揮手過程(簡言之):主動關(guān)閉方向被動關(guān)閉方發(fā)送不會再給你發(fā)數(shù)據(jù)了的信息;被動關(guān)閉方對收到的主動關(guān)閉方的報文段進行確認(rèn);被動關(guān)閉方向主動關(guān)閉方發(fā)送我也不會再給你發(fā)數(shù)據(jù)了的信息;主動關(guān)閉方再次對被動關(guān)閉方的確認(rèn)進行確認(rèn)。
七層 有哪些重要協(xié)議
?
BIOS是一組固化到計算機內(nèi)主板上一個ROM芯片上的程序,它保存著計算機最重要的基本輸入輸出的程序、開機后自檢程序和系統(tǒng)自啟動程序,它可從CMOS中讀寫系統(tǒng)設(shè)置的具體信息。?其主要功能是為計算機提供最底層的、最直接的硬件設(shè)置和控制。此外,BIOS還向作業(yè)系統(tǒng)提供一些系統(tǒng)參數(shù)。
?
?
?
總結(jié)
以上是生活随笔為你收集整理的笔试训练第三次知识点汇总的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 笔试训练第二次知识点汇总
- 下一篇: 南京工程学院 Dsp复习