華為軟件測試工程師筆試題及部分答案_第1頁
華為軟件測試工程師筆試題及部分答案_第2頁
華為軟件測試工程師筆試題及部分答案_第3頁
華為軟件測試工程師筆試題及部分答案_第4頁
華為軟件測試工程師筆試題及部分答案_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、1:請你分別劃OSI的七層網(wǎng)絡(luò)結(jié)構(gòu)圖,和TCP/IP的五層結(jié)構(gòu)圖? OSI的七層網(wǎng)絡(luò)結(jié)構(gòu)圖,和TCP/IP的五層結(jié)構(gòu)圖 OSIOSI是Open System Interconnect的縮寫,意為開放式系統(tǒng)互聯(lián)。在OSI出現(xiàn)之前,計算機網(wǎng)絡(luò)中存在眾多的體系結(jié)構(gòu),其中以IBM公司的SNA(系統(tǒng)網(wǎng)絡(luò)體系結(jié)構(gòu))和DEC公司的DNA(Digital Network Architecture)數(shù)字網(wǎng)絡(luò)體系結(jié)構(gòu)最為著名。為了解決不同體系結(jié)構(gòu)的網(wǎng)絡(luò)的互聯(lián)問題,國際標(biāo)準(zhǔn)化組織ISO(注意不要與OSI搞混)于1981年制定了開放系統(tǒng)互連參考模型(Open System Interconnection Refere

2、nce Model,OSI/RM)。這個模型把網(wǎng)絡(luò)通信的工作分為7層,它們由低到高分別是物理層(Physical Layer),數(shù)據(jù)鏈路層(Data Link Layer),網(wǎng)絡(luò)層(Network Layer),傳輸層(Transport Layer),會話層(Session Layer),表示層(Presen tation Layer)和應(yīng)用層(Application Layer)。第一層到第三層屬于OSI參考模型的低三層,負(fù)責(zé)創(chuàng)建網(wǎng)絡(luò)通信連接的鏈路;第四層到第七層為OSI參考模型的高四層,具體負(fù)責(zé)端到端的數(shù)據(jù)通信。每層完成一定的功能,每層都直接為其上層提供服務(wù),并且所有層次都互相支持,而網(wǎng)

3、絡(luò)通信則可以自上而下(在發(fā)送端)或者自下而上(在接收端)雙向進(jìn)行。當(dāng)然并不是每一通信都需要經(jīng)過OSI的全部七層,有的甚至只需要雙方對應(yīng)的某一層即可。物理接口之間的轉(zhuǎn)接,以及中繼器與中繼器之間的連接就只需在物理層中進(jìn)行即可;而路由器與路由器之間的連接則只需經(jīng)過網(wǎng)絡(luò)層以下的三層即可??偟膩碚f,雙方的通信是在對等層次上進(jìn)行的,不能在不對稱層次上進(jìn)行通信。OSI參考模型的各個層次的劃分遵循下列原則:1、同一層中的各網(wǎng)絡(luò)節(jié)點都有相同的層次結(jié)構(gòu),具有同樣的功能。2、同一節(jié)點內(nèi)相鄰層之間通過接口(可以是邏輯接口)進(jìn)行通信。3、七層結(jié)構(gòu)中的每一層使用下一層提供的服務(wù),并且向其上層提供服務(wù)。4、不同節(jié)點的同等層

4、按照協(xié)議實現(xiàn)對等層之間的通信。第一層:物理層(PhysicalLayer),規(guī)定通信設(shè)備的機械的、電氣的、功能的和過程的特性,用以建立、維護(hù)和拆除物理鏈路連接。具體地講,機械特性規(guī)定了網(wǎng)絡(luò)連接時所需接插件的規(guī)格尺寸、引腳數(shù)量和排列情況等;電氣特性規(guī)定了在物理連接上傳輸bit流時線路上信號電平的大小、阻抗匹配、傳輸速率距離限制等;功能特性是指對各個信號先分配確切的信號含義,即定義了DTE和DCE之間各個線路的功能;規(guī)程特性定義了利用信號線進(jìn)行bit流傳輸?shù)囊唤M操作規(guī)程,是指在物理連接的建立、維護(hù)、交換信息是,DTE和DCE雙放在各電路上的動作系列。在這一層,數(shù)據(jù)的單位稱為比特(bit)。屬于物理

5、層定義的典型規(guī)范代表包括:EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45等。第二層:數(shù)據(jù)鏈路層(DataLinkLayer):在物理層提供比特流服務(wù)的基礎(chǔ)上,建立相鄰結(jié)點之間的數(shù)據(jù)鏈路,通過差錯控制提供數(shù)據(jù)幀(Frame)在信道上無差錯的傳輸,并進(jìn)行各電路上的動作系列。數(shù)據(jù)鏈路層在不可靠的物理介質(zhì)上提供可靠的傳輸。該層的作用包括:物理地址尋址、數(shù)據(jù)的成幀、流量控制、數(shù)據(jù)的檢錯、重發(fā)等。在這一層,數(shù)據(jù)的單位稱為幀(frame)。數(shù)據(jù)鏈路層協(xié)議的代表包括:SDLC、HDLC、PPP、STP、幀中繼等。 第三層是網(wǎng)絡(luò)層在計算機網(wǎng)絡(luò)中進(jìn)行通信的兩個計算機之間可能會經(jīng)過

6、很多個數(shù)據(jù)鏈路,也可能還要經(jīng)過很多通信子網(wǎng)。網(wǎng)絡(luò)層的任務(wù)就是選擇合適的網(wǎng)間路由和交換結(jié)點, 確保數(shù)據(jù)及時傳送。網(wǎng)絡(luò)層將數(shù)據(jù)鏈路層提供的幀組成數(shù)據(jù)包,包中封裝有網(wǎng)絡(luò)層包頭,其中含有邏輯地址信息- -源站點和目的站點地址的網(wǎng)絡(luò)地址。 如果你在談?wù)撘粋€IP地址,那么你是在處理第3層的問題,這是“數(shù)據(jù)包”問題,而不是第2層的“幀”。IP是第3層問題的一部分,此外還有一些路由協(xié)議和地址解析協(xié)議(ARP)。有關(guān)路由的一切事情都在第3層處理。地址解析和路由是3層的重要目的。網(wǎng)絡(luò)層還可以實現(xiàn)擁塞控制、網(wǎng)際互連等功能。在這一層,數(shù)據(jù)的單位稱為數(shù)據(jù)包(packet)。網(wǎng)絡(luò)層協(xié)議的代表包括:IP、IPX、RIP、O

7、SPF等。第四層是處理信息的傳輸層。第4層的數(shù)據(jù)單元也稱作數(shù)據(jù)包(packets)。但是,當(dāng)你談?wù)揟CP等具體的協(xié)議時又有特殊的叫法,TCP的數(shù)據(jù)單元稱為段(segments)而UDP協(xié)議的數(shù)據(jù)單元稱為“數(shù)據(jù)報(datagrams)”。這個層負(fù)責(zé)獲取全部信息,因此,它必須跟蹤數(shù)據(jù)單元碎片、亂序到達(dá)的數(shù)據(jù)包和其它在傳輸過程中可能發(fā)生的危險。第4層為上層提供端到端(最終用戶到最終用戶)的透明的、可靠的數(shù)據(jù)傳輸服務(wù)。所為透明的傳輸是指在通信過程中傳輸層對上層屏蔽了通信傳輸系統(tǒng)的具體細(xì)節(jié)。 傳輸層協(xié)議的代表包括:TCP、UDP、SPX等。第五層是會話層這一層也可以稱為會晤層或?qū)υ拰?,在會話層及以上的?/p>

8、層次中,數(shù)據(jù)傳送的單位不再另外命名,統(tǒng)稱為報文。會話層不參與具體的傳輸,它提供包括訪問驗證和會話管理在內(nèi)的建立和維護(hù)應(yīng)用之間通信的機制。如服務(wù)器驗證用戶登錄便是由會話層完成的。 第六層是表示層這一層主要解決擁護(hù)信息的語法表示問題。它將欲交換的數(shù)據(jù)從適合于某一用戶的抽象語法,轉(zhuǎn)換為適合于OSI系統(tǒng)內(nèi)部使用的傳送語法。即提供格式化的表示和轉(zhuǎn)換數(shù)據(jù)服務(wù)。數(shù)據(jù)的壓縮和解壓縮, 加密和解密等工作都由表示層負(fù)責(zé)。第七層應(yīng)用層,應(yīng)用層為操作系統(tǒng)或網(wǎng)絡(luò)應(yīng)用程序提供訪問網(wǎng)絡(luò)服務(wù)的接口。應(yīng)用層協(xié)議的代表包括:Telnet、FTP、HTTP、SNMP等。 通過 OSI 層,信息可以從一臺計算機的軟件應(yīng)用程序傳輸?shù)搅?/p>

9、一臺的應(yīng)用程序上。例如,計算機 A 上的應(yīng)用程序要將信息發(fā)送到計算機 B 的應(yīng)用程序,則計算機 A 中的應(yīng)用程序需要將信息先發(fā)送到其應(yīng)用層(第七層),然后此層將信息發(fā)送到表示層(第六層),表示層將數(shù)據(jù)轉(zhuǎn)送到會話層(第五層),如此繼續(xù),直至物理層(第一層)。在物理層,數(shù)據(jù)被放置在物理網(wǎng)絡(luò)媒介中并被發(fā)送至計算機 B 。計算機 B 的物理層接收來自物理媒介的數(shù)據(jù),然后將信息向上發(fā)送至數(shù)據(jù)鏈路層(第二層),數(shù)據(jù)鏈路層再轉(zhuǎn)送給網(wǎng)絡(luò)層,依次繼續(xù)直到信息到達(dá)計算機 B 的應(yīng)用層。最后,計算機 B 的應(yīng)用層再將信息傳送給應(yīng)用程序接收端,從而完成通信過程。下面圖示說明了這一過程。OSI 的七層運用各種各樣的控制

10、信息來和其他計算機系統(tǒng)的對應(yīng)層進(jìn)行通信。這些控制信息包含特殊的請求和說明,它們在對應(yīng)的 OSI 層間進(jìn)行交換。每一層數(shù)據(jù)的頭和尾是兩個攜帶控制信息的基本形式。對于從上一層傳送下來的數(shù)據(jù),附加在前面的控制信息稱為頭,附加在后面的控制信息稱為尾。然而,在對來自上一層數(shù)據(jù)增加協(xié)議頭和協(xié)議尾,對一個 OSI 層來說并不是必需的。 當(dāng)數(shù)據(jù)在各層間傳送時,每一層都可以在數(shù)據(jù)上增加頭和尾,而這些數(shù)據(jù)已經(jīng)包含了上一層增加的頭和尾。協(xié)議頭包含了有關(guān)層與層間的通信信息。頭、尾以及數(shù)據(jù)是相關(guān)聯(lián)的概念,它們?nèi)Q于分析信息單元的協(xié)議層。例如,傳輸層頭包含了只有傳輸層可以看到的信息,傳輸層下面的其他層只將此頭作為數(shù)據(jù)的一

11、部分傳遞。對于網(wǎng)絡(luò)層,一個信息單元由第三層的頭和數(shù)據(jù)組成。對于數(shù)據(jù)鏈路層,經(jīng)網(wǎng)絡(luò)層向下傳遞的所有信息即第三層頭和數(shù)據(jù)都被看作是數(shù)據(jù)。換句話說,在給定的某一 OSI 層,信息單元的數(shù)據(jù)部分包含來自于所有上層的頭和尾以及數(shù)據(jù),這稱之為封裝。 例如,如果計算機 A 要將應(yīng)用程序中的某數(shù)據(jù)發(fā)送至計算機 B ,數(shù)據(jù)首先傳送至應(yīng)用層。 計算機 A 的應(yīng)用層通過在數(shù)據(jù)上添加協(xié)議頭來和計算機 B 的應(yīng)用層通信。所形成的信息單元包含協(xié)議頭、數(shù)據(jù)、可能還有協(xié)議尾,被發(fā)送至表示層,表示層再添加為計算機 B 的表示層所理解的控制信息的協(xié)議頭。信息單元的大小隨著每一層協(xié)議頭和協(xié)議尾的添加而增加,這些協(xié)議頭和協(xié)議尾包含了

12、計算機 B 的對應(yīng)層要使用的控制信息。在物理層,整個信息單元通過網(wǎng)絡(luò)介質(zhì)傳輸。計算機 B 中的物理層收到信息單元并將其傳送至數(shù)據(jù)鏈路層;然后 B 中的數(shù)據(jù)鏈路層讀取計算機 A 的數(shù)據(jù)鏈路層添加的協(xié)議頭中的控制信息;然后去除協(xié)議頭和協(xié)議尾,剩余部分被傳送至網(wǎng)絡(luò)層。每一層執(zhí)行相同的動作:從對應(yīng)層讀取協(xié)議頭和協(xié)議尾,并去除,再將剩余信息發(fā)送至上一層。應(yīng)用層執(zhí)行完這些動作后,數(shù)據(jù)就被傳送至計算機 B 中的應(yīng)用程序,這些數(shù)據(jù)和計算機 A 的應(yīng)用程序所發(fā)送的完全相同 。一個 OSI 層與另一層之間的通信是利用第二層提供的服務(wù)完成的。相鄰層提供的服務(wù)幫助一 OSI 層與另一計算機系統(tǒng)的對應(yīng)層進(jìn)行通信。一個

13、OSI 模型的特定層通常是與另外三個 OSI 層聯(lián)系:與之直接相鄰的上一層和下一層,還有目標(biāo)聯(lián)網(wǎng)計算機系統(tǒng)的對應(yīng)層。例如,計算機 A 的數(shù)據(jù)鏈路層應(yīng)與其網(wǎng)絡(luò)層,物理層以及計算機 B 的數(shù)據(jù)鏈路層進(jìn)行通信2:請你詳細(xì)的解釋一下IP協(xié)議的定義,在哪個層上面,主要有什么作用? TCP與UDP呢? 3:請問交換機和路由器分別的實現(xiàn)原理是什么?分別在哪個層次上面實現(xiàn)的? 4:請問C+的類和C里面的struct有什么區(qū)別? 5:請講一講析構(gòu)函數(shù)和虛函數(shù)的用法和作用? 6:全局變量和局部變量有什么區(qū)別?實怎么實現(xiàn)的?操作系統(tǒng)和編譯器是怎么知道的? 7:一些寄存器的題目,主要是尋址和內(nèi)存管理等一些知識。 8:

14、8086是多少尉的系統(tǒng)?在數(shù)據(jù)總線上是怎么實現(xiàn)的?軟件測試的各階段!面試就是跟你聊聊工作,看經(jīng)驗了 筆試,看看數(shù)據(jù)結(jié)構(gòu),二叉樹,排序,什么的可能會考多線程 交換的基礎(chǔ)協(xié)議1.軟件測試對應(yīng)開發(fā)流程各階段應(yīng)該怎么樣劃分?單元測試,集成測試,系統(tǒng)測試各對應(yīng)與開發(fā)流程的那幾個文檔?2.壓力測試和性能測試的區(qū)別?switch(n)中的n不能是以下那種類型 A char B int C unsigned D double華為全套面試題華為全套面試題(基礎(chǔ)版) (一)慧通:1。什么是預(yù)編譯,何時需要預(yù)編譯:答案:、總是使用不經(jīng)常改動的大型代碼體。 、程序由多個模塊組成,所有模塊都使用一組標(biāo)準(zhǔn)的包含文件和相同

15、的編譯選項。在這種情況下,可以將所有包含文件預(yù)編譯為一個預(yù)編譯頭。2。 char * const p char const * p const char *p上述三個有什么區(qū)別?答案:char * const p; /常量指針,p的值不可以修改char const * p;/指向常量的指針,指向的常量值不可以改const char *p; /和char const *p 3。char str1 = "abc"char str2 = "abc"const char str3 = "abc"const char str4 = "

16、abc"const char *str5 = "abc"const char *str6 = "abc"char *str7 = "abc"char *str8 = "abc"cout << ( str1 = str2 ) << endl;cout << ( str3 = str4 ) << endl;cout << ( str5 = str6 ) << endl;cout << ( str7 = str8 ) <&

17、lt; endl;結(jié)果是:0 0 1 1str1,str2,str3,str4是數(shù)組變量,它們有各自的內(nèi)存空間;而str5,str6,str7,str8是指針,它們指向相同的常量區(qū)域。4。 以下代碼中的兩個sizeof用法有問題嗎?C易void UpperCase( char str ) / 將 str 中的小寫字母轉(zhuǎn)換成大寫字母 for( size_t i=0; i<sizeof(str)/sizeof(str0); +i ) if( 'a'<=stri && stri<='z' ) stri -= ('a'-

18、'A' );char str = "aBcDe"cout << "str字符長度為: " << sizeof(str)/sizeof(str0) << endl;UpperCase( str );cout << str << endl;答案:函數(shù)內(nèi)的sizeof有問題。根據(jù)語法,sizeof如用于數(shù)組,只能測出靜態(tài)數(shù)組的大小,無法檢測動態(tài)分配的或外部數(shù)組大小。函數(shù)外的str是一個靜態(tài)定義的數(shù)組,因此其大小為6,因為還有'0',函數(shù)內(nèi)的str實際只是一個指向字符串的

19、指針,沒有任何額外的與數(shù)組相關(guān)的信息,因此sizeof作用于上只將其當(dāng)指針看,一個指針為4個字節(jié),因此返回4。 5。一個32位的機器,該機器的指針是多少位答案:指針是多少位只要看地址總線的位數(shù)就行了。80386以后的機子都是32的數(shù)據(jù)總線。所以指針的位數(shù)就是4個字節(jié)了。 6。main() int a5=1,2,3,4,5; int *ptr=(int *)(&a+1); printf("%d,%d",*(a+1),*(ptr-1);答案:2。5*(a+1)就是a1,*(ptr-1)就是a4,執(zhí)行結(jié)果是2,5&a+1不是首地址+1,系統(tǒng)會認(rèn)為加一個a數(shù)組的偏移

20、,是偏移了一個數(shù)組的大?。ū纠?個int)int *ptr=(int *)(&a+1); 則ptr實際是&(a5),也就是a+5原因如下:&a是數(shù)組指針,其類型為 int (*)5;而指針加1要根據(jù)指針類型加上一定的值,不同類型的指針+1之后增加的大小不同a是長度為5的int數(shù)組指針,所以要加 5*sizeof(int)所以ptr實際是a5但是prt與(&a+1)類型是不一樣的(這點很重要)所以prt-1只會減去sizeof(int*)a,&a的地址是一樣的,但意思不一樣,a是數(shù)組首地址,也就是a0的地址,&a是對象(數(shù)組)首地址,a+1是數(shù)組

21、下一元素的地址,即a1,&a+1是下一個對象的地址,即a5.7。請問以下代碼有什么問題:int main()char a;char *str=&a;strcpy(str,"hello");printf(str);return 0;答案:沒有為str分配內(nèi)存空間,將會發(fā)生異常問題出在將一個字符串復(fù)制進(jìn)一個字符變量指針?biāo)傅刂?。雖然可以正確輸出結(jié)果,但因為越界進(jìn)行內(nèi)在讀寫而導(dǎo)致程序崩潰。 8。char* s="AAA"printf("%s",s);s0='B'printf("%s",s)

22、;有什么錯?答案:"AAA"是字符串常量。s是指針,指向這個字符串常量,所以聲明s的時候就有問題。cosnt char* s="AAA"然后又因為是常量,所以對是s0的賦值操作是不合法的。9。寫一個“標(biāo)準(zhǔn)”宏,這個宏輸入兩個參數(shù)并返回較小的一個。答案:.#define Min(X, Y) (X)>(Y)?(Y):(X) /結(jié)尾沒有; 10。嵌入式系統(tǒng)中經(jīng)常要用到無限循環(huán),你怎么用C編寫死循環(huán)。答案:while(1)或者for(;) 11。關(guān)鍵字static的作用是什么?答案:定義靜態(tài)變量 12。關(guān)鍵字const有什么含意?答案:表示常量不可以修改的

23、變量。 13。關(guān)鍵字volatile有什么含意?并舉出三個不同的例子?答案:提示編譯器對象的值可能在編譯器未監(jiān)測到的情況下改變。14。int (*s10)(int) 表示的是什么???答案:int (*s10)(int) 函數(shù)指針數(shù)組,每個指針指向一個int func(int param)的函數(shù)。15。有以下表達(dá)式:int a=248; b=4;int const c=21;const int *d=&a;int *const e=&b;int const *f const =&a;請問下列表達(dá)式哪些會被編譯器禁止?為什么?答案:*c=32;d=&b;*d=43;

24、e=34;e=&a;f=0x321f;*c 這是個什么東東,禁止*d 說了是const, 禁止e = &a 說了是const 禁止const *f const =&a; 禁止16交換兩個變量的值,不使用第三個變量。即a=3,b=5,交換之后a=5,b=3;答案:有兩種解法, 一種用算術(shù)算法, 一種用(異或)a = a + b;b = a - b;a = a - b; ora = ab;/ 只能對int,char.b = ab;a = ab;ora = b = a;17.c和c+中的struct有什么不同?答案:c和c+中struct的主要區(qū)別是c中的struct不可以含

25、有成員函數(shù),而c+中的struct可以。c+中struct和class的主要區(qū)別在于默認(rèn)的存取權(quán)限不同,struct默認(rèn)為public,而class默認(rèn)為private18.#include <stdio.h> #include <stdlib.h> void getmemory(char *p) p=(char *) malloc(100); strcpy(p,"hello world"); int main( ) char *str=NULL; getmemory(str); printf("%s/n",str); free(

26、str); return 0; 答案:程序崩潰,getmemory中的malloc 不能返回動態(tài)內(nèi)存, free()對str操作很危險19.char szstr10; strcpy(szstr,"0123456789"); 產(chǎn)生什么結(jié)果?為什么?答案: 長度不一樣,會造成非法的OS20.列舉幾種進(jìn)程的同步機制,并比較其優(yōu)缺點。答案: 原子操作 信號量機制 自旋鎖 管程,會合,分布式系統(tǒng) 21.進(jìn)程之間通信的途徑答案:共享存儲系統(tǒng)消息傳遞系統(tǒng)管道:以文件系統(tǒng)為基礎(chǔ)22.進(jìn)程死鎖的原因答案:資源競爭及進(jìn)程推進(jìn)順序非法23.死鎖的4個必要條件答案:互斥、請求保持、不可剝奪、環(huán)路

27、24.死鎖的處理答案:鴕鳥策略、預(yù)防策略、避免策略、檢測與解除死鎖 25. 操作系統(tǒng)中進(jìn)程調(diào)度策略有哪幾種?答案:FCFS(先來先服務(wù)),優(yōu)先級,時間片輪轉(zhuǎn),多級反饋 26.類的靜態(tài)成員和非靜態(tài)成員有何區(qū)別?答案:類的靜態(tài)成員每個類只有一個,非靜態(tài)成員每個對象一個 27.純虛函數(shù)如何定義?使用時應(yīng)注意什么?答案:virtual void f()=0;是接口,子類必須要實現(xiàn) 28.數(shù)組和鏈表的區(qū)別答案:數(shù)組:數(shù)據(jù)順序存儲,固定大小連表:數(shù)據(jù)可以隨機存儲,大小可動態(tài)改變 29.ISO的七層模型是什么?tcp/udp是屬于哪一層?tcp/udp有何優(yōu)缺點?答案:應(yīng)用層表示層會話層運輸層網(wǎng)絡(luò)層物理鏈路

28、層物理層tcp /udp屬于運輸層TCP 服務(wù)提供了數(shù)據(jù)流傳輸、可靠性、有效流控制、全雙工操作和多路復(fù)用技術(shù)等。與 TCP 不同, UDP 并不提供對 IP 協(xié)議的可靠機制、流控制以及錯誤恢復(fù)功能等。由于 UDP 比較簡單, UDP 頭包含很少的字節(jié),比 TCP 負(fù)載消耗少。tcp: 提供穩(wěn)定的傳輸服務(wù),有流量控制,缺點是包頭大,冗余性不好udp: 不提供穩(wěn)定的服務(wù),包頭小,開銷小 30:(void *)ptr 和 (*(void*)ptr的結(jié)果是否相同?其中ptr為同一個指針答案:.(void *)ptr 和 (*(void*)ptr值是相同的31:int main() int x=3; p

29、rintf("%d",x); return 1; 問函數(shù)既然不會被其它函數(shù)調(diào)用,為什么要返回1?答案:mian中,c標(biāo)準(zhǔn)認(rèn)為0表示成功,非0表示錯誤。具體的值是某中具體出錯信息32,要對絕對地址0x100000賦值,我們可以用(unsigned int*)0x100000 = 1234;那么要是想讓程序跳轉(zhuǎn)到絕對地址是0x100000去執(zhí)行,應(yīng)該怎么做?答案:*(void (*)( )0x100000 ) ( );首先要將0x100000強制轉(zhuǎn)換成函數(shù)指針,即:(void (*)()0x100000然后再調(diào)用它:*(void (*)()0x100000)();用typede

30、f可以看得更直觀些:typedef void(*)() voidFuncPtr;*(voidFuncPtr)0x100000)();33,已知一個數(shù)組table,用一個宏定義,求出數(shù)據(jù)的元素個數(shù)答案:#define NTBL#define NTBL (sizeof(table)/sizeof(table0) 34。線程與進(jìn)程的區(qū)別和聯(lián)系? 線程是否具有相同的堆棧? dll是否有獨立的堆棧?答案:進(jìn)程是死的,只是一些資源的集合,真正的程序執(zhí)行都是線程來完成的,程序啟動的時候操作系統(tǒng)就幫你創(chuàng)建了一個主線程。每個線程有自己的堆棧。DLL中有沒有獨立的堆棧,這個問題不好回答,或者說這個問題本身是否有問

31、題。因為DLL中的代碼是被某些線程所執(zhí)行,只有線程擁有堆棧,如果DLL中的代碼是EXE中的線程所調(diào)用,那么這個時候是不是說這個DLL沒有自己獨立的堆棧?如果DLL中的代碼是由DLL自己創(chuàng)建的線程所執(zhí)行,那么是不是說DLL有獨立的堆棧?以上講的是堆棧,如果對于堆來說,每個DLL有自己的堆,所以如果是從DLL中動態(tài)分配的內(nèi)存,最好是從DLL中刪除,如果你從DLL中分配內(nèi)存,然后在EXE中,或者另外一個DLL中刪除,很有可能導(dǎo)致程序崩潰35。unsigned short A = 10;printf("A = %un", A);char c=128; printf("c=

32、%dn",c);輸出多少?并分析過程答案:第一題,A 0xfffffff5,int值 為11,但輸出的是uint。所以輸出4294967285第二題,c0x10,輸出的是int,最高位為1,是負(fù)數(shù),所以它的值就是0x00的補碼就是128,所以輸出128。這兩道題都是在考察二進(jìn)制向int或uint轉(zhuǎn)換時的最高位處理。 (二)1. -1,2,7,28,126請問28和126中間那個數(shù)是什么?為什么?答案:第一題的答案應(yīng)該是43-1=63規(guī)律是n3-1(當(dāng)n為偶數(shù)0,2,4) n3+1(當(dāng)n為奇數(shù)1,3,5)2.用兩個棧實現(xiàn)一個隊列的功能?要求給出算法和思路!答案:設(shè)2個棧為A,B, 一開

33、始均為空.入隊:將新元素push入棧A;出隊:(1)判斷棧B是否為空;(2)如果不為空,則將棧A中所有元素依次pop出并push到棧B;(3)將棧B的棧頂元素pop出;這樣實現(xiàn)的隊列入隊和出隊的平攤復(fù)雜度都還是O(1), 比上面的幾種方法要好。 3.在c語言庫函數(shù)中將一個字符轉(zhuǎn)換成整型的函數(shù)是atol()嗎,這個函數(shù)的原型是什么?答案:函數(shù)名: atol 功 能: 把字符串轉(zhuǎn)換成長整型數(shù) 用 法: long atol(const char *nptr); 程序例: #include <stdlib.h> #include <stdio.h> int main(void)

34、 long l; char *str = "98765432" l = atol(lstr); printf("string = %s integer = %ldn", str, l); return(0); 4。對于一個頻繁使用的短小函數(shù),在C語言中應(yīng)用什么實現(xiàn),在C+中應(yīng)用什么實現(xiàn)?答案:c用宏定義,c+用inline5。直接鏈接兩個信令點的一組鏈路稱作什么?答案:PPP點到點連接 7。軟件測試都有那些種類?答案:黑盒:針對系統(tǒng)功能的測試 白合:測試函數(shù)功能,各函數(shù)接口8。確定模塊的功能和模塊的接口是在軟件設(shè)計的那個隊段完成的?答案:概要設(shè)計階段 9

35、。enum string x1, x2, x3=10, x4, x5, x; 問x;答案:取值在0。1。10。11。12中的一個 10。unsigned char *p1; unsigned long *p2; p1=(unsigned char *)0x801000; p2=(unsigned long *)0x810000; 請問p1+5= ; p2+5= ;答案:801005; 810014。不要忘記了這個是16進(jìn)制的數(shù)字,p2要加20變?yōu)?6進(jìn)制就是14選擇題: 1.Ethternet鏈接到Internet用到以下那個協(xié)議? A.HDLC;B.ARP;C.UDP;D.TCP;E.ID

36、2.屬于網(wǎng)絡(luò)層協(xié)議的是: A.TCP;B.IP;C.ICMP;D.X.25 3.Windows消息調(diào)度機制是: A.指令隊列;B.指令堆棧;C.消息隊列;D.消息堆棧;答案:b,a,c四.找錯題: 1.請問下面程序有什么錯誤? int a602501000,i,j,k; for(k=0;k<=1000;k+) for(j=0;j<250;j+) for(i=0;i<60;i+) aijk=0;答案:把循環(huán)語句內(nèi)外換一下2。以下是求一個數(shù)的平方的程序,請找出錯誤: #define SQUARE(a) (a)*(a) int a=5; int b; b=SQUARE(a+);答案

37、:這個沒有問題,s(a),就是(a)×(a)唯一要注意的就是計算后a7了3。typedef unsigned char BYTE int examply_fun(BYTE gt_len; BYTE *gt_code) BYTE *gt_buf; gt_buf=(BYTE *)MALLOC(Max_GT_Length); . if(gt_len>Max_GT_Length) return GT_Length_ERROR; . 答案:要釋放內(nèi)存 問答題:1.IP Phone的原理是什么?答案:IPV62.TCP/IP通信建立的過程怎樣,端口有什么作用?答案:三次握手,確定是哪個應(yīng)用

38、程序使用該協(xié)議 (三)1、局部變量能否和全局變量重名?答案:能,局部會屏蔽全局。要用全局變量,需要使用":"局部變量可以與全局變量同名,在函數(shù)內(nèi)引用這個變量時,會用到同名的局部變量,而不會用到全局變量。對于有些編譯器而言,在同一個函數(shù)內(nèi)可以定義多個同名的局部變量,比如在兩個循環(huán)體內(nèi)都定義一個同名的局部變量,而那個局部變量的作用域就在那個循環(huán)體內(nèi)2、如何引用一個已經(jīng)定義過的全局變量?答案:extern可以用引用頭文件的方式,也可以用extern關(guān)鍵字,如果用引用頭文件方式來引用某個在頭文件中聲明的全局變理,假定你將那個變寫錯了,那么在編譯期間會報錯,如果你用extern方式引

39、用時,假定你犯了同樣的錯誤,那么在編譯期間不會報錯,而在連接期間報錯3、全局變量可不可以定義在可被多個.C文件包含的頭文件中?為什么?答案:可以,在不同的C文件中以static形式來聲明同名全局變量??梢栽诓煌腃文件中聲明同名的全局變量,前提是其中只能有一個C文件中對此變量賦初值,此時連接不會出錯4、語句for( ;1 ;)有什么問題?它是什么意思?答案:和while(1)相同。5、dowhile和whiledo有什么區(qū)別?答案:前一個循環(huán)一遍再判斷,后一個判斷以后再循環(huán)。6、請寫出下列代碼的輸出內(nèi)容include<stdio.h>main()int a,b,c,d;a=10;b

40、=a+;c=+a;d=10*a+;printf("b,c,d:%d,%d,%d",b,c,d);return 0; 答案:10,12,120 a=10; b=a+;/a=11 b=10 c=+a;/a=12 c=12 d=10*a+;/a=13 d=120高級題1、static全局變量與普通的全局變量有什么區(qū)別?static局部變量和普通局部變量有什么區(qū)別?static函數(shù)與普通函數(shù)有什么區(qū)別?答案:全局變量(外部變量)的說明之前再冠以static 就構(gòu)成了靜態(tài)的全局變量。全局變量本身就是靜態(tài)存儲方式, 靜態(tài)全局變量當(dāng)然也是靜態(tài)存儲方式。 這兩者在存儲方式上并無不同。這兩者

41、的區(qū)別雖在于非靜態(tài)全局變量的作用域是整個源程序, 當(dāng)一個源程序由多個源文件組成時,非靜態(tài)的全局變量在各個源文件中都是有效的。 而靜態(tài)全局變量則限制了其作用域, 即只在定義該變量的源文件內(nèi)有效, 在同一源程序的其它源文件中不能使用它。由于靜態(tài)全局變量的作用域局限于一個源文件內(nèi),只能為該源文件內(nèi)的函數(shù)公用, 因此可以避免在其它源文件中引起錯誤。從以上分析可以看出, 把局部變量改變?yōu)殪o態(tài)變量后是改變了它的存儲方式即改變了它的生存期。把全局變量改變?yōu)殪o態(tài)變量后是改變了它的作用域, 限制了它的使用范圍。static函數(shù)與普通函數(shù)作用域不同。僅在本文件。只在當(dāng)前源文件中使用的函數(shù)應(yīng)該說明為內(nèi)部函數(shù)(sta

42、tic),內(nèi)部函數(shù)應(yīng)該在當(dāng)前源文件中說明和定義。對于可在當(dāng)前源文件以外使用的函數(shù),應(yīng)該在一個頭文件中說明,要使用這些函數(shù)的源文件要包含這個頭文件static全局變量與普通的全局變量有什么區(qū)別:static全局變量只初使化一次,防止在其他文件單元中被引用;static局部變量和普通局部變量有什么區(qū)別:static局部變量只被初始化一次,下一次依據(jù)上一次結(jié)果值;static函數(shù)與普通函數(shù)有什么區(qū)別:static函數(shù)在內(nèi)存中只有一份,普通函數(shù)在每個被調(diào)用中維持一份拷貝2、程序的局部變量存在于()中,全局變量存在于()中,動態(tài)申請數(shù)據(jù)存在于( )中。答案:棧;靜態(tài)區(qū);堆3、設(shè)有以下說明和定義:type

43、def union long i; int k5; char c; DATE;struct data int cat; DATE cow; double dog; too;DATE max;則語句 printf("%d",sizeof(too)+sizeof(max);的執(zhí)行結(jié)果是:_答案:DATE是一個union, 變量公用空間. 里面最大的變量類型是int5, 占用20個字節(jié). 所以它的大小是20data是一個struct, 每個變量分開占用空間. 依次為int4 + DATE20 + double8 = 32.所以結(jié)果是 20 + 32 = 52.當(dāng)然.在某些16位編

44、輯器下, int可能是2字節(jié),那么結(jié)果是 int2 + DATE10 + double8 = 204、隊列和棧有什么區(qū)別?答案:隊列先進(jìn)先出,棧后進(jìn)先出÷5、這道題目出錯了,這里就不寫上了。6、已知一個單向鏈表的頭,請寫出刪除其某一個結(jié)點的算法,要求,先找到此結(jié)點,然后刪除。答案:slnodetype *Delete(slnodetype *Head,int key)中if(Head->number=key)Head=Pointer->next;free(Pointer);break;Back = Pointer; Pointer=Pointer->next;if(

45、Pointer->number=key) Back->next=Pointer->next;free(Pointer);break;void delete(Node* p) if(Head = Node) while(p)7、請找出下面代碼中的所以錯誤說明:以下代碼是把一個字符串倒序,如“abcd”倒序后變?yōu)椤癲cba”1、include"string.h"2、main()3、4、 char*src="hello,world"5、 char* dest=NULL;6、 int len=strlen(src);7、 dest=(char*

46、)malloc(len);8、 char* d=dest;9、 char* s=srclen;10、 while(len-!=0) 11、 d+=s-;12、 printf("%s",dest);13、 return 0;14、 答案:還要加上include <stdio.h>int main()char* src = "hello,world"int len = strlen(src);char* dest = (char*)malloc(len+1)*sizeof(char); /要為0分配一個空間char* d = dest;char*

47、 s = &srclen-1; /指向最后一個字符while( len- != 0 )*d+=*s-;*d = 0; /尾部要加0printf("%sn",dest);free(dest);/ 使用完,應(yīng)當(dāng)釋放空間,以免造成內(nèi)存匯泄露return 0; 華為筆試題(3)2006-09-29 19:41一、判斷題(對的寫T,錯的寫F并說明原因,每小題4分,共20分)1、有數(shù)組定義int a22=1,2,3;則a01的值為0。( 正確 )2、int (*ptr) (),則ptr是一維數(shù)組的名字。( 錯誤 int (*ptr) ();定義一個指向函數(shù)的指針變量 )3、指針

48、在任何情況下都可進(jìn)行>,<,>=,<=,=運算。( 錯誤 )4、switch(c) 語句中c可以是int ,long,char ,float ,unsigned int 類型。( 錯,不能用實形 )二、填空題(共30分)1、在windows下,寫出運行結(jié)果,每空2分,共10分。char str = Hello;char *p=str;int n=10;sizeof(str)=( )sizeof(p)=( )sizeof(n)=( )void func(char str100) sizeof(str)=( ) 答案:6,4,4,4, 具體解釋請參看我的空間里的“C/C+程

49、序員應(yīng)聘試題剖析”2、void getmemory(char *p, int num) *p=(char *) malloc(num);void test(void) char *str=NULL; getmemory(&str,100); strcpy(str,hello); printf(str);運行test函數(shù)有什么結(jié)果?( )10分 答案:輸出hello,但是發(fā)生內(nèi)存泄漏。3、設(shè)int arr=6,7,8,9,10; int *ptr=arr; *(ptr+)+=123; printf(%d,%d,*ptr,*(+ptr);( ) 10分答案:8,8。這道題目的意義不大,因為

50、在不同的編譯器里printf的參數(shù)的方向是不一樣的,在vc6.0下是從有到左,這里先*(+ptr) 后*pt,于是結(jié)果為8,8二、編程題(第一小題20,第二小題30分)1、 不使用庫函數(shù),編寫函數(shù)int strcmp(char *source, char *dest)相等返回0,不等返回-1; 答案:一、int strcmp(char *source, char *dest) assert(source!=NULL)&&(dest!=NULL); int i,j; for(i=0; sourcei=desti; i+) if(sourcei='0' &&

51、amp; desti='0') return 0; else return -1; 答案:二、int strcmp(char *source, char *dest) while ( (*source != '0') && (*source = *dest) source+;dest+; return ( (*source) - (*dest) ) ? -1 : 0;2、 寫一函數(shù)int fun(char *p)判斷一字符串是否為回文,是返回1,不是返回0,出錯返回-1答案:一、int fun(char *p) if(p=NULL) return -1; else int length = 0; int i = 0; int judge = 1; length = strlen(p); for(i=0; i<length/2; i+) if(pi!=plength-1-i) judge = 0; break; if(judge = 0) return 0; e

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論