華為面試題
(作者未知) 2009/4/30
Q1:請(qǐng)你分別劃劃OSI的七層網(wǎng)絡(luò)結(jié)構(gòu)圖,和TCP/IP的五層結(jié)構(gòu)圖?
A1:OSI/ISO根據(jù)整個(gè)計(jì)算機(jī)網(wǎng)絡(luò)功能將網(wǎng)絡(luò)分為物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會(huì)話(huà)層、表示層、應(yīng)用層七層。也稱(chēng)"七層模型"
TCP/IP"四層模型" 網(wǎng)絡(luò)接口層,IP層(網(wǎng)絡(luò)層) tcp/udp層(傳輸層),應(yīng)用層,(如果說(shuō)五層,那么另外一層應(yīng)該是"物理層")
Q2:請(qǐng)你詳細(xì)的解釋一下IP協(xié)議的定義,在哪個(gè)層上面,主要有什么作用? TCP與UDP呢?
2 IP協(xié)議是網(wǎng)絡(luò)層的協(xié)議,它實(shí)現(xiàn)了Internet中自動(dòng)路由的功能,即尋徑的功能,TCP協(xié)議是一個(gè)傳輸層的協(xié)議它向下屏蔽了IP協(xié)議不可靠傳輸?shù)奶匦,向上提供一個(gè)可靠的點(diǎn)到點(diǎn)的傳輸,UDP提供的是一種無(wú)連接的服務(wù),主要考慮到很多應(yīng)用不需要可靠的連接,但需要快速的傳輸
Q3:請(qǐng)問(wèn)交換機(jī)和路由器分別的實(shí)現(xiàn)原理是什么?分別在哪個(gè)層次上面實(shí)現(xiàn)的?
交換機(jī)用在局域網(wǎng)中,交換機(jī)通過(guò)紀(jì)錄局域網(wǎng)內(nèi)各節(jié)點(diǎn)機(jī)器的MAC地址就可以實(shí)現(xiàn)傳遞報(bào)文,無(wú)需看報(bào)文中的IP地質(zhì)。路由器識(shí)別不同網(wǎng)絡(luò)的方法是通過(guò)識(shí)別不同網(wǎng)絡(luò)的網(wǎng)絡(luò)ID號(hào)(IP地址的高端部分)進(jìn)行的,所以為了保證路由成功,每個(gè)網(wǎng)絡(luò)都必須有一個(gè)
唯一的網(wǎng)絡(luò)編號(hào)。路由器通過(guò)察看報(bào)文中IP地址,來(lái)決定路徑,向那個(gè)子網(wǎng)(下一跳)路由,也就是說(shuō)交換機(jī)工作在數(shù)據(jù)鏈路層看MAC地址,路由器工作在網(wǎng)際層看IP地質(zhì)
但是由于現(xiàn)在網(wǎng)絡(luò)設(shè)備的發(fā)展,很多設(shè)備既有交換機(jī)的功能有由路由器的功能(交換試路由器)使得兩者界限越來(lái)越模糊。
(交換機(jī)與路由器的區(qū)別:
交換機(jī)一般用于LAN-WAN的連接,交換機(jī)歸于網(wǎng)橋,是數(shù)據(jù)鏈路層的設(shè)備,有些交換機(jī)也可實(shí)現(xiàn)第三層的交換。路由器用于WAN-WAN之間的連接,可以解決異性網(wǎng)絡(luò)之間轉(zhuǎn)發(fā)分組,作用于網(wǎng)絡(luò)層。他們只是從一條線路上接受輸入分組,然后向另一條線路轉(zhuǎn)發(fā)。這兩條線路可能分屬于不同的網(wǎng)絡(luò),并采用不同協(xié)議。相比較而言,路由器的功能較交換機(jī)要強(qiáng)大,但速度相對(duì)也慢,價(jià)格昂貴,第三層交換機(jī)既有交換機(jī)線速轉(zhuǎn)發(fā)報(bào)文能力,又有路由器良好的控制功能,因此得以廣播應(yīng)用。)
Q4:請(qǐng)問(wèn)C++的類(lèi)和C里面的struct有什么區(qū)別?
A4:C++的類(lèi)具有數(shù)據(jù)封裝,其包含屬性訪問(wèn)級(jí)別可以為Private,public 和protect,還具有實(shí)現(xiàn)類(lèi)接口功能和輔助功能的操作函數(shù),而struct屬性訪問(wèn)只有public,沒(méi)有數(shù)據(jù)封裝功能,也就沒(méi)有實(shí)現(xiàn)信息隱藏著一面向?qū)ο蟮乃枷氲臋C(jī)制,struct本身不含有操作函數(shù),只有數(shù)據(jù)
Q5:請(qǐng)講一講析構(gòu)函數(shù)和虛函數(shù)的用法和作用?
A5:析構(gòu)函數(shù)是在類(lèi)對(duì)象死亡時(shí)由系統(tǒng)自動(dòng)調(diào)用,其作用是用來(lái)釋放對(duì)象的指針數(shù)據(jù)成員所指的動(dòng)態(tài)空間,如果在構(gòu)造函數(shù)中你申請(qǐng)了動(dòng)態(tài)空間,那么為了避免引起程序錯(cuò)誤,你必須在西溝函數(shù)中釋放這部分內(nèi)存空間
如果基類(lèi)的函數(shù)用 virtual修飾,成為虛函數(shù),則其派生類(lèi)相應(yīng)的重載函數(shù)仍能繼承該虛函數(shù)的性質(zhì),虛函數(shù)進(jìn)行動(dòng)態(tài)聯(lián)編,也即具有多態(tài)性,也就是派生類(lèi)可以改變基類(lèi)同名函數(shù)的行為,在面向?qū)ο笫澜缰校嗵亲顝?qiáng)大的機(jī)制,須函數(shù)就是這一機(jī)制的c++的實(shí)現(xiàn)方式
Q6:全局變量和局部變量有什么區(qū)別?實(shí)怎么實(shí)現(xiàn)的?操作系統(tǒng)和編譯器是怎么知道的?
全局變量是整個(gè)程序都可訪問(wèn)的變量,誰(shuí)都可以訪問(wèn),生存期在整個(gè)程序從運(yùn)行到結(jié)束(在程序結(jié)束時(shí)所占內(nèi)存釋放),而局部變量存在于模塊(子程序,函數(shù))中,只有所在模塊可以訪問(wèn),其他模塊不可直接訪問(wèn),模塊結(jié)束(函數(shù)調(diào)用完畢),局部變量消失,所占據(jù)的內(nèi)存釋放。
操作系統(tǒng)和編譯器是怎么知道的?
操作系統(tǒng)和編譯器,可能是通過(guò)內(nèi)存分配的位置來(lái)知道的,全局變量分配在全局?jǐn)?shù)據(jù)段并且在程序開(kāi)始運(yùn)行的時(shí)候被加載. 局部變量則分配在堆棧里面
Q7:一些寄存器的題目,主要是尋址和內(nèi)存管理等一些知識(shí)。
Q8:8086是多少位的系統(tǒng)?在數(shù)據(jù)總線上是怎么實(shí)現(xiàn)的?
A8:是16位,數(shù)據(jù)總線實(shí)現(xiàn)?
華為的筆試題(2004-7-24 from smth)
1. 找錯(cuò)
Void test1()
{
char string[10];
char *str1 =”0123456789”;
strcpy(string, *str1);
}
Vo(未完,下一頁(yè))
|