


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、1. static 有什么用途?(請至少說明兩種)1) 在函數(shù)體,一個被聲明為靜態(tài)的變量在這一函數(shù)被調(diào)用過程中維持其值不 變。2) 在模塊內(nèi)(但在函數(shù)體外),一個被聲明為靜態(tài)的變量可以被模塊內(nèi)所用函數(shù)訪問,但不能被模塊外其它函數(shù)訪問。它是一個本地的全局變量。3) 在模塊內(nèi),一個被聲明為靜態(tài)的函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用。那就是,這個函數(shù)被限制在聲明它的模塊的本地范圍內(nèi)使用2. 引用與指針有什么區(qū)別?1) 引用必須被初始化,指針不必。2) 引用初始化以后不能被改變,指針可以改變所指的對象。3) 不存在指向空值的引用,但是存在指向空值的指針。3. 描述實時系統(tǒng)的基本特性 在特定時間內(nèi)完成特定
2、的任務(wù),實時性與可靠性。4. 全局變量和局部變量在內(nèi)存中是否有區(qū)別?如果有,是什么區(qū)別? 全局變量儲存在靜態(tài)數(shù)據(jù)庫,局部變量在堆棧。5. 什么是平衡二叉樹? 左右子樹都是平衡二叉樹且左右子樹的深度差值的絕對值不大于 lo6. 堆棧溢出一般是由什么原因?qū)е碌模?沒有回收垃圾資源。7. 什么函數(shù)不能聲明為虛函數(shù)?constructor 函數(shù)不能聲明為虛函數(shù)。8. 冒泡排序算法的時間復(fù)雜度是什么? 時間復(fù)雜度是 0( 2) 。9. 寫出 float x 與“零值”比較的 if 語句。if (x>0. 000001&& X<-0. 000001 )10. Internet
3、采用哪種網(wǎng)絡(luò)協(xié)議?該協(xié)議的主要層次結(jié)構(gòu)?Tcp/ip 協(xié)議 主要層次結(jié)構(gòu)為:應(yīng)用層 /傳輸層 /網(wǎng)絡(luò)層 /數(shù)據(jù)鏈路層 /物理層。11. Internet 物理地址和 IP 地址轉(zhuǎn)換采用什么協(xié)議?ARP ( Address Resolution Protocol) (地址解析協(xié)議)12. IP 地址的編碼分為哪倆部分?上之IP 地址由兩部分組成,網(wǎng)絡(luò)號和主機號。不過是要和“子網(wǎng)掩碼”按位與 后才能區(qū)分哪些是網(wǎng)絡(luò)位哪些是主機位13. 用戶輸入M,N值,從1至N開始順序循環(huán)數(shù)數(shù),每數(shù)到M輸出該數(shù)值,直至全部輸出。寫出C程序。循環(huán)鏈表,用取余操作做14. 不能做switch ()的參數(shù)類型是:swit
4、ch的參數(shù)不能為實型。1?寫出判斷ABCD四個表達(dá)式的是否正確,若正確,寫出經(jīng)過表達(dá)式中a的值(3分)int a = 4;(A)a += (a+) ; (B) a += (+a) ; (C) (a+) += a; (D) (+a) += (a+); a = ?答:C錯誤,左側(cè)不是一個有效變量,不能賦值,可改為 (+a) += a;改后答案依次為9,10, 10, 112. 某32位系統(tǒng)下,C+程序,請計算sizeof的值(5分).char str = '' "char *p = str ;int n = 10;請計算sizeof (str ) = ?(1)sizeof
5、 ( p ) = ? (2)sizeof ( n ) = ? (3)void Foo ( char str100) 請計算sizeof( str ) = ?(4)void *p = malloc( 100 );請計算sizeof ( p ) = ?(5)答(1) 17444 (5) 43. 回答下面的問題.(4分)(1) .頭文件中的ifndef/define/endif干什么用?預(yù)處理答:防止頭文件被重復(fù)引用(2) . # i nclude 和 # i nclude "f訂 ename, h" 有什么區(qū)別?答:前者用來包含開發(fā)環(huán)境提供的庫頭文件,后者用來包含自己編寫的頭文
6、件。.在C+程序中調(diào)用被C編譯器編譯后的函數(shù),為什么要加extern “C 聲明?答:函數(shù)和變量被C+編譯后在符號庫中的名字與C語言的不同,被extern修飾的變量和函數(shù)是按照C語言方式編譯和連接的。由于編譯后的名字不同,C+程序不 能直接調(diào)用C函數(shù)。C+提供了一個C連接交換指定符號extern “C來解決這個問題。.switch ()中不允許的數(shù)據(jù)類型是?答:實型4. 回答下面的問題 (6 分 )(1) ? Void GetMemory(char *p, int num) *p = (char *)malloc(num); void Test (void) char *str = NULL;
7、GetMemory(&str, 100); strcpy(str, hello ); printf(str);請問運行 Test 函數(shù)會有什么樣的結(jié)果? 答:輸岀 “ hello ”(2) . void Test (void)char *str = (char *) malloc(100); strcpy (str, "hello");free (str); if (str != NULL) strcpy (str, "world"); printf(str); 請問運行 Test 函數(shù)會有什么樣的結(jié)果? 答: 輸岀 “ world ”(3) .
8、 char *GetMemory(void) char p = "hello world"return p;void Test(void) char *str = NULL; str 二 GetMemory (); printf(str);請問運行 Test 函數(shù)會有什么樣的結(jié)果? 答:無效的指針,輸出不確定5. 編寫 strcat 函數(shù) (6 分 )其中已知 strcat函數(shù)的原型是char *strcat (char *strDest, const char AstrSrc);strDest 是目的字符串, strSrc 是源字符串。(1)不調(diào)用C+/C的字符串庫函數(shù),
9、請編寫函數(shù)Strcat答:VC源碼:char * dst, const char * srcchar * _cdecl strcat char * cp = dst; while ( *cp ) cp+; /* find end of dst */ while ( *cp+ = *src+ ) ; /* Copy src to end of dst */ return ( dst ) ; /* return dst */( 2) strcat 能把 strSrc 的內(nèi)容連接到 strDest, 為什么還要 char* 類型的返 回值? 答:方便賦值給其他變量6. MFC中CString是類型安
10、全類么?答:不是,其它數(shù)據(jù)類型轉(zhuǎn)換到 CString 可以使用 CString 的成員函數(shù) Format 來轉(zhuǎn)換7. C+中為什么用模板類。答: (1)可用來創(chuàng)建動態(tài)增長和減小的數(shù)據(jù)結(jié)構(gòu)(2)它是類型無關(guān)的,因此具有很高的可復(fù)用性。(3)它在編譯時而不是運行時檢查數(shù)據(jù)類型,保證了類型安全(4)它是平臺無關(guān)的,可移植性(5)可用于基本數(shù)據(jù)類型& CSingleLock 是干什么的。答:同步多個線程對一個數(shù)據(jù)類的同時訪問9. NEWTEXTMETRI是什么。答:物理字體結(jié)構(gòu),用來設(shè)置字體的高寬大小10. 程序什么時候應(yīng)該使用線程,什么時候單線程效率高。答:1. 耗時的操作使用線程,提高應(yīng)用
11、程序響應(yīng)2. 并行操作時使用線程,如 C/S 架構(gòu)的服務(wù)器端并發(fā)線程響應(yīng)用戶的請求。3. 多CPU系統(tǒng)中,使用線程提高 CPU利用率4. 改善程序結(jié)構(gòu)。一個既長又復(fù)雜的進(jìn)程可以考慮分為多個線程,成為幾個獨立或半獨立的運行部分,這樣的程序會利于理解和修改。 其他情況都使用單線程。11. Windows 是內(nèi)核級線程么。答:見下一題12. Linux 有內(nèi)核級線程么。答:線程通常被定義為一個進(jìn)程中代碼的不同執(zhí)行路線。從實現(xiàn)方式上劃分,線程有兩種類型:“用戶級線程”和“內(nèi)核級線程”。用戶線程指不需要內(nèi)核支持而在用戶程序中實現(xiàn)的線程,其不依賴于操作系統(tǒng)核心,應(yīng)用進(jìn)程利用線程庫提供創(chuàng)建、同步、調(diào)度和管理
12、線程的函數(shù)來控制用戶線程。這種線程甚至在象DOS 這樣的操作系統(tǒng)中 也可實現(xiàn), 但線程的調(diào)度需要用戶程序完成,這有些類似Windows 3. x 的協(xié)作式多任務(wù)。 另外一種則需要內(nèi)核的參與,由內(nèi)核完成線程的調(diào)度。其依賴于操作系統(tǒng)核心,由內(nèi)核的內(nèi)部需求進(jìn)行創(chuàng)建和撤銷,這兩種模型各有其好處和缺點。用戶線程不需要額外的內(nèi)核開支, 并且用戶態(tài)線程的實現(xiàn)方式可以被定制或修改以適應(yīng)特殊應(yīng)用的要求,但是當(dāng)一個線程因 I/O 而處于等待狀態(tài)時,整個進(jìn)程就會被調(diào)度程序切換為等待狀態(tài),其他線程得不到運行的機會;而內(nèi)核線程則沒有各個限制,有利于發(fā)揮多處理器的并發(fā)優(yōu)勢,但卻占用了更多的系統(tǒng)開支。Windows NT
13、和 OS/2 支持內(nèi)核線程。 Linux 支持內(nèi)核級的多線程13. C+中什么數(shù)據(jù)分配在?;蚨阎校琋ew分配數(shù)據(jù)是在近堆還是遠(yuǎn)堆中?答:棧:存放局部變量,函數(shù)調(diào)用參數(shù),函數(shù)返回值,函數(shù)返回地址。由系統(tǒng)管理堆:程序運行時動態(tài)申請,new和malloc申請的內(nèi)存就在堆上14. 使用線程是如何防止出現(xiàn)大的波峰。答:意思是如何防止同時產(chǎn)生大量的線程,方法是使用線程池,線程池具有可以同時提高調(diào)度效率和限制資源使用的好處,線程池中的線程達(dá)到最大數(shù)時,其他線程就會排隊等候。15 函數(shù)模板與類模板有什么區(qū)別?答:函數(shù)模板的實例化是由編譯程序在處理函數(shù)調(diào)用時自動完成的,而類模板的實例化必須由程序員在程序中顯式地
14、指定。16 般數(shù)據(jù)庫若出現(xiàn)日志滿了,會出現(xiàn)什么情況,是否還能使用?答:只能執(zhí)行查詢等讀操作,不能執(zhí)行更改,備份等寫操作,原因是任何寫操作都要記錄日志。也就是說基本上處于不能使用的狀態(tài)。17 SQL Server 是否支持行級鎖,有什么好處?答:支持,設(shè)立封鎖機制主要是為了對并發(fā)操作進(jìn)行控制,對干擾進(jìn)行封鎖,保證數(shù)據(jù)的一致性和準(zhǔn)確性,行級封鎖確保在用戶取得被更新的行到該行進(jìn)行更新這段時間內(nèi)不被其它用戶所修改。因而行級鎖即可保證數(shù)據(jù)的一致性又能提高數(shù)據(jù)操作的迸發(fā)性。18 如果數(shù)據(jù)庫滿了會出現(xiàn)什么情況,是否還能使用? 答:見 1619 關(guān)于內(nèi)存對齊的問題以及 sizof () 的輸出 答:編譯器自動
15、對齊的原因:為了提高程序的性能,數(shù)據(jù)結(jié)構(gòu)(尤其是棧 )應(yīng)該 盡可能地在自然邊界上對齊。原因在于,為了訪問未對齊的內(nèi)存,處理器需要作兩次內(nèi) 存訪 問; 然而,對齊的內(nèi)存訪問僅需要一次訪問。20 int i=10, j=10, k=3; k*=i+j; k最后的值是?答: 60,此題考察優(yōu)先級,實際寫成: k*=(i+j); ,賦值運算符優(yōu)先級最低21. 對數(shù)據(jù)庫的一張表進(jìn)行操作,同時要對另一張表進(jìn)行操作,如何實現(xiàn)? 答:將操作多個表的操作放入到事務(wù)中進(jìn)行處理22. TCP/IP 建立連接的過程 ? (3-way shake)答:在TCP/IP協(xié)議中,TCP協(xié)議提供可靠的連接服務(wù),采用三次握手建立
16、一個連接。第一次握手:建立連接時,客戶端發(fā)送syn包(syn=j)到服務(wù)器,并進(jìn)入 SYN_SEND狀態(tài),等待服務(wù)器確認(rèn);第二次握手:服務(wù)器收到 syn 包,必須確認(rèn)客戶的 SYN (ack=j+l), 同時自己也 發(fā)送_個SYN包(syn=k),即SYN+ACK包,此時服務(wù)器進(jìn)入 SYN_RECV狀態(tài);第 三 次 握 手 : 客 戶 端 收到 服 務(wù)器 的 SYN + ACK 包 , 向 服 務(wù) 器 發(fā) 送 確認(rèn) 包 ACK(ack=k+l),此包發(fā)送完畢,客戶端和服務(wù)器進(jìn)入ESTABLISHED犬態(tài),完成三次握手。23. ICMP是什么協(xié)議,處于哪一層?答: Internet 控制報文協(xié)議
17、,處于網(wǎng)絡(luò)層 (IP 層)24. 觸發(fā)器怎么工作的?答:觸發(fā)器主要是通過事件進(jìn)行觸發(fā)而被執(zhí)行的,當(dāng)對某一表進(jìn)行諸如UPDATE.INSERT、DELETE這些操作時,數(shù)據(jù)庫就會自動執(zhí)行觸發(fā)器所定義的SQL語句,從而 確保對數(shù)據(jù)的處理必須符合由這些SQL語句所定義的規(guī)則。25. winsock 建立連接的主要實現(xiàn)步驟?答:服務(wù)器端: socker () 建立套接字,綁定 (bind) 并監(jiān)聽 (listen), 用 accept () 等待客戶端連接??蛻舳耍?socker () 建立套接字,連接 (connect) 服務(wù)器,連接上后使用 send() 和 recv ( ), 在套接字上寫讀數(shù)據(jù)
18、,直至數(shù)據(jù)交換完畢, closesocket () 關(guān)閉套接字。服務(wù)器端: accept () 發(fā)現(xiàn)有客戶端連接,建立一個新的套接字,自身重新開始 等待連 接。該新產(chǎn)生的套接字使用 send () 和 recv () 寫讀數(shù)據(jù),直至數(shù)據(jù)交換完畢,closesocket () 關(guān)閉套接字26. 動態(tài)連接庫的兩種方式?答:調(diào)用一個 DLL 中的函數(shù)有兩種方法:1. 載入時動態(tài)鏈接 (load-time dynamic linking), 模塊非常明確調(diào)用某個導(dǎo) 出函數(shù), 使得他們就像本地函數(shù)一樣。這需要鏈接時鏈接那些函數(shù)所在 DLL 的導(dǎo)入庫, 導(dǎo)入庫 向系統(tǒng)提供了載入 DLL 時所需的信息及 D
19、LL 函數(shù)定位。2. 運行時動態(tài)鏈接 (run-time dynamic linking), 運行時可以通過 LoadLibrary 或 Loa dLibraryEx 函數(shù)載入 DLL。DLL載入后,模塊可以通過調(diào)用GetProcAddress 獲 取DLL函數(shù)的出口地址,然后就可以通過返回的函數(shù)指針調(diào)用DLL函數(shù)了。如此即可避免導(dǎo)入庫文件了27. IP 組播有那些好處?答: Internet 上產(chǎn)生的許多新的應(yīng)用,特別是高帶寬的多媒體應(yīng)用,帶來了帶寬的急劇消耗和網(wǎng)絡(luò)擁擠問題。組播是一種允許一個或多個發(fā)送者 ( 組播源)發(fā)送單一的 數(shù)據(jù)包 到多個接收者 ( 一次的,同時的 )的網(wǎng)絡(luò)技術(shù)。組播可
20、以大大的節(jié)省網(wǎng)絡(luò)帶寬,因為無論有多少個目標(biāo)地址,在整個網(wǎng)絡(luò)的任何一條鏈路上只傳送單一的數(shù)據(jù)包。所以說組播技術(shù)的核心就是針對如何節(jié)約網(wǎng)絡(luò)資源的前提下保證服務(wù)質(zhì)量。1 什么是預(yù)編譯,何時需要預(yù)編譯: 答: 1) 總是使用不經(jīng)常改動的大型代碼體。2) 程序由多個模塊組成,所有模塊都使用一組標(biāo)準(zhǔn)的包含文件和相同的編譯選項。在這種情況下,可以將所有包含文件預(yù)編譯為一個預(yù)編譯頭。char const * pconst char *p 上/ 常量指針, p 的值不可以修改/ 指向常量的指針,指向的常量值不可以改const char *p3 char strl =abc ;char strc2har=abc
21、; st r3 cons tchar= abc ; stcons tcons t charr4 = abc ;cons t char*str5 = abc;char *cshtra7r*str6 二 abcJcout cout=abc ;*str8 cout cout<=abc ; strl<< endl<<= str2 )<< ;<str3 =endl<<< ;<<str4 ) str5<< ;<= str6 )endl結(jié)果是:s0tr70 1=1/ 和char const *p2 char *
22、const p 述三個有什么區(qū)別? 答: char * const p;char const * p相同strl, str2, str3, str4是數(shù)組變量,它們有各自的內(nèi)存空間;而 str5, str6,str7, str8 是指針,它們指向相同的常量區(qū)域4 以下代碼中的兩個 sizeof 用法有問題嗎?void Uppercase ( char str ) / for ( size_t +i )if ( 'a' <=s tr && str將 str 中的小寫字母轉(zhuǎn)換成大寫字母i 二 0; i sizeof(str)/sizeof (str0);
23、9; z' )str - 二 ('a ,-'A');char str = aBcDe;cout < < str 字符長度為: sizeof (str)/sizeof (str 0) < < 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 實際只是一個 指向字
24、符串的指針, 沒有任何額外的與數(shù)組相關(guān)的信息,因此 sizeof 作用于上 只將其當(dāng)指針看,一個指針 為 4 個字節(jié),因此返回 4 。5 一個 32 位的機器,該機器的指針是多少位80386 以后的機子都是 32 的數(shù)答案:指針是多少位只要看地址總線的位數(shù)就行了據(jù)總線。所以指針的位數(shù)就是 4 個字節(jié)了6 main () int a5 = l, 2, 3, 4, 5;int *ptr=(int *)(&a+1);printf("%d, %d", *(a+1), *(ptr-1);答案: 2o 5 *(a+l) 就是 al, * (ptr-1) 就是 a4, 執(zhí)行結(jié)果是
25、 2, 5 &a+l 不是首 地址+1,系統(tǒng)會認(rèn)為加一個 a 數(shù)組的偏移,是偏移了一個數(shù)組的大小 (本 例是 5 個 int) int *ptr= (int *) (&a+l); 則 ptr 實際是 &(a ), 也就是 a+5 原 因如下: &a 是數(shù)組指 針,其類型為 int (*)5; 而指針加 1 要根據(jù)指針類型 加上一定的值,不同類型的指針 +1 之后增加的大小不同 a 是長度為 5 的 int 數(shù) 組指針,所以要加 5*sizeof (int) 所以 ptr實際是a5但是prt與(&a+l)類型是不一樣的(這點很重要)所以prt-1只會減去
26、sizeof (int*) a, &a的地址是 一樣的,但意思不一樣, a 是數(shù)組首地址,也就是 a0的地址,&a是對象(數(shù)組)首地址,a+1是數(shù)組下一元素的地址,即al,&a+l是下一個對象的地址, 即 a 5.7 請問以下代碼有什么問題:int main () char a; / 此處僅聲明一個字符類型的變量,未初始化,故未分配內(nèi)存空間char *str 我 a; / 因字符變量未分配內(nèi)存空間,故此時 str 亦沒有內(nèi)存空 間 strcpy (str, "hello") ;/ 因 str 沒有內(nèi)存空間,故不能進(jìn)行字符串拷貝printf(str);
27、return 0;答案:沒有為 str 分配內(nèi)存空間,將會發(fā)生異常問題出在將一個字符串復(fù)制 進(jìn)一 個字符變量指針?biāo)傅刂贰km然可以正確輸出結(jié)果,但因為越界進(jìn)行內(nèi)在讀寫而導(dǎo)致程序崩潰。8 char* s="AAA" /“AAA” 是字符串常量故不能s 不能指向之printf("%s",s);s0='B'printf("%s",s);有什么錯?答案: AAA是字符串常量。S是指針,指向這個字符串常量,所以聲明S的 時候就有問題。 cosnt char* s="AAA" 然后又因為是常量,所以對是 s 0
28、 的 賦值操作是不 合法的。9 寫一個“標(biāo)準(zhǔn)”宏,這個宏輸入兩個參數(shù)并返回較小的一個。答案: ftdefine Min(X, Y) (X)(Y)?(Y) : (X)/ 結(jié)尾沒有 ' ;'注:注意宏份兩種:無參宏和有參宏。本例即為有參宏,注意其與函數(shù)的區(qū)別。10嵌入式系統(tǒng)中經(jīng)常要用到無限循環(huán),你怎么用C編寫死循環(huán)。答案: while (1) 或者 for (;)11 關(guān)鍵字 static 的作用是什么? 答案:定義靜態(tài)變量12 關(guān)鍵字 const 有什么含意? 答案:表示常量不可以修改的變量13 關(guān)鍵字 volatile 有什么含意?并舉出三個不同的例子?答案:提示編譯器對象的值
29、可能在編譯器未監(jiān)測到的情況下改變14 int (*s10) (int) 表示的是什么啊?答案 :int (*s10j) (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; e=34; e=&a; f=0x32If:答案: *c 禁止*d 說了是 c
30、onst, 禁止e = &a 說了是 const 禁止 const *f const =&a; 禁止一種而 c+struct16 交換兩個變量的值,不使用第三個變量。即 a=3, b=5, 交換之后 a=5,b=3; 答案:有兩種解法,一種用算術(shù)算法, a = a + b; b = a - b; a = a - b; or 用 "( 異或 )a = a"b; b = a"b; a = a"b;17. c和C+中的struct有什么不同?答案:c和C+中struct的主要區(qū)別是c中的struct不可以含有成員函數(shù), 中的struct可以。c
31、+中struct和class的主要區(qū)別在于默認(rèn)的存取權(quán)限不同,默認(rèn)為 public, 而 class 默認(rèn)為 private18 Ai nclude vstdio. h>"n clude <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(str);return 0;答案:程序崩潰
32、, getmemory 中的 malloc 不能返回動態(tài)內(nèi)存, free () 對 str 操 作很危險19 char szstr10;strcpy(szstr, "0123456789");產(chǎn)生什么結(jié)果?為什么?答案: 長度不一樣,會造成非法的 0S20 列舉幾種進(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)路24. 死鎖的處理答案
33、:鴕鳥策略、預(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) 2&數(shù)組和鏈表的區(qū)別答案:數(shù)組:數(shù)據(jù)順序存儲,固定大小連表:數(shù)據(jù)可以隨機存儲,大小可動態(tài)改變29. ISO 的七層模型是什么? tcp/udp 是屬于哪一層? tcp/udp 有何優(yōu)缺點? 答案:應(yīng) 用層表示層會話層運輸層網(wǎng)絡(luò)層物理
34、鏈路層物理層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:printf(
35、"%d",x);return 1; 問函數(shù)既然不會被其它函數(shù)調(diào)用,為什么要返回 1?答案: main 中, 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 (*) 0
36、)0x100000)(); 用 typedef 可以 看得更直觀些: typedef void(*)() voidFuncPtr; * (voidFuncPtr)0x100000)();33 已知一個數(shù)組 table, 用一個宏定義,求出數(shù)據(jù)的元素個數(shù)答案:Adefi ne NTBL (sizeof (table) /sizeof (table 0)34 線程與進(jìn)程的區(qū)別和聯(lián)系?線程是否具有相同的堆棧? dll 是否有獨立的堆 棧?“答案:進(jìn)程是死的,只是一些資源的集合,真正的程序執(zhí)行都是線程來完成的,程序啟動的時候操作系統(tǒng)就幫你創(chuàng)建了一個主線程。每個線程有自己的堆棧。DLL 中有沒有獨立的堆
37、棧,這個問題不好回答,或者說這個問題本身是否有問題。因為 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
38、("A = %un", A) ;/ 按位取反char c=128; printf ("c=%dn", c):輸出多少?并分析過程答案:第一題, ? A =0xfffffff5, int值為一 11, 但輸出的是 uinto 所以 輸出4294967285 第二題, c = 0xl0, 輸出的是 int, 最高位為 1, 是負(fù)數(shù),所以 它的值就是 0x00 的補碼就是 128, 所以輸出一 128。這兩道題都是在考察二進(jìn)制 向 int 或 uint 轉(zhuǎn)換時的 最高位處理。(二)1. -1,2, 7, 28,126請問 28和 126中間那個數(shù)是什么?為什么
39、?答案:第一題的答案應(yīng)該是 4'3-1=63 規(guī)律是 n'3-K 當(dāng) n 為偶數(shù) 0, 2, 4)n'3+l ( 當(dāng) n為奇數(shù) 1, 3, 5)2. 用兩個棧實現(xiàn)一個隊列的功能?要求給出算法和思路!答案:設(shè)2個棧為A,B,開始均為空.入隊:將新元素push入棧代出隊: 判斷棧B 是否為空;如果不為空,則將棧 A中所有元素依次pop出并push到棧B; (3)將棧B 的棧頂元素 pop 出;這樣實現(xiàn)的隊列入隊和出隊的平攤復(fù)雜 度都還是 0(1) 。3. 在 c 語言庫函數(shù)中將一個字符轉(zhuǎn)換成整型的函數(shù)是 atol() 嗎,這個函數(shù)的原 么?答案:函數(shù)名: atol 功能:把
40、字符串轉(zhuǎn)換成長整型數(shù)用 法: long atol (const char *nptr);程序例:Ai nclude vstdlib. h>"n elude <stdio. h>int main(void)long 1;char *str = "98765432"1 = atol(lstr);printf ("'string = %s integer = %ldn", str, 1): return (0);4對于一個頻繁使用的短小函數(shù),在C語言中應(yīng)用什么實現(xiàn),在C+中應(yīng)用什么實答案:c用宏定義,C+用inline5 直
41、接鏈接兩個信令點的一組鏈路稱作什么?/ 網(wǎng)絡(luò)知識要加強 !答案:PPP點到點連接6 軟件測試都有那些種類?答案:黑盒:針對系統(tǒng)功能的測試白盒:測試函數(shù)執(zhí)行路徑7 確定模塊的功能和模塊的接口是在軟件設(shè)計的那個隊段完成的? 答案:概要設(shè)計階段8 enum stringxl, x2,x3=10,x4,x5, x; 問 x 的的取值答案:取值在0。lo 10o IE 12 中的一個10 unsigned char *pl; unsigned long *p2;pl=(unsigned char *)0x801000;p2=(unsigned long *)0x810000;請問 pl+5=;p2+5=
42、;答案: 801005;810014o 不要忘記了這個是 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. IDA. TCP:B. IP;C. ICMP:D. X. 25型是什現(xiàn)?2. 屬于網(wǎng)絡(luò)層協(xié)議的是:B C3. Windows 消息調(diào)度機制是:CA.指令隊列;B.指令堆棧;C.消息隊列;D.消息堆棧;三?找錯題:1. 請問下面程序有什么錯誤?int a60 250 1000, i, j,k;for(k=0;k <=1000;
43、k+)for(j=0;j <250;j+)for(i=0;i <60;i+)aj k=0;答案:把循環(huán)語句內(nèi)外換一下2 以下是求一個數(shù)的平方的程序 , 請找出錯誤:Adefine SQUARE (a)(a)* (a)/ 注意 對 a 加括號int a=5:int b;b=SQUARE(a+);答案:這個沒有問題,s (a+ + ),就是(a+ + ) X (a+ + )唯一要注意 的就是計算后a = 7 To3 typedef unsigned char BYTEint examplyfun(BYTE gtlen; BYTE *gt_code)BYTE *gt_buf;gt_buf
44、=(BYTE *)MALLOC(Max_GT_Length);if(gtlen > MaxGTLength)return GTLength ERROR:答案:要釋放內(nèi)存問答題。1. IP Phone 的原理是什么?答案: IPV62. TCP/IP 通信建立的過程怎樣,端口有什么作用?答案:三次握手,確定是哪個應(yīng)用程序使用該協(xié)議(三)1、局部變量能否和全局變量重名?答案:能,局部會屏蔽全局。要用全局變量,需要使用 ": " ,局部變量可以 與 全局變量同名,在函數(shù)內(nèi)引用這個變量時,會用到同名的局部變量,而不會用到全局變量。對于有些編譯器而言,在同一個函數(shù)內(nèi)可以定義多個
45、同名的局部變量,比如在兩個循環(huán)體內(nèi)都定義一個同名的局部變量,而那個局部變量的作用域就在那個循環(huán)體2、如何引用一個已經(jīng)定義過的全局變量?答案:可以用引用頭文件的方式,也可以用 extern 關(guān)鍵字。如果用引用頭文 件方 式來引用某個在頭文件中聲明的全局變理,假定你將那個變量寫錯了,那么 在編譯期 間會報錯;如果你用 extern 方式引用時,假定你犯了同樣的錯誤,那 么在編譯期間不 會報錯,而在連接期間報錯。3、全局變量可不可以定義在可被多個 .C 文件包含的頭文件中?為什么?答案:可以,在不同的 C 文件中以 static 形式來聲明同名全局變量??梢栽?不同 的 C 文件中聲明同名的全局變量
46、,前提是其中只能有一個C 文件中對此變量 賦初值,此時連接不會出錯。4、語句 for( ; 1 ; ) 有什么問題?它是什么意思?答案:和 wh 訂 e(l) 相同。5、 do . wh 訂 e 和 wh 訂 e. . do 有什么區(qū)別 ?答案:前一個循環(huán)一遍再判斷,后一個判斷以后再循環(huán)。6、 請寫出下列代碼的輸出內(nèi)容#include <stdio. h>main () int a, b, c, d;a=10;b=a+; c=+a;d=10*a+;printf("b, c, d: %d, %d, %d", b, c, d);return 0;答案: 10, 12
47、, 120a=10;高級題1、static 全局變量與普通的全局變量有什么區(qū)別? static 局部變量和普通局部 變量 有什么區(qū)別? static 函數(shù)與普通函數(shù)有什么區(qū)別?答案:全局變量 ( 外部變量 )的說明之前再冠以 static 就構(gòu)成了靜態(tài)的全局 變量。 全局變量本身就是靜態(tài)存儲方式,靜態(tài)全局變量當(dāng)然也是靜態(tài)存儲方式。 這兩者在存 儲方式上并無不同。這兩者的區(qū)別雖在于非靜態(tài)全局變量的作用域是整個源程序,當(dāng)一個源程序由多個源文件組成時,非靜態(tài)的全局變量在各個源文 件中都是有效的,而 靜態(tài)全局變量則限制了其作用域,即只在定義該變量的源 文件內(nèi)有效,在同一源程序 的其它源文件中不能使用它
48、。由于靜態(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ù) (static), 內(nèi)部函數(shù)應(yīng) 該在當(dāng)前源文件中說明和定義。對于可在當(dāng)前源文件以外使 用的函數(shù),應(yīng)該在一 個頭文件中說明,要使用這些函數(shù)的源文件要包含這個頭文件。總之, static 全局變量與普通的全局變量有什么區(qū)別
49、: 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ū);堆/ C/C+ 程序編譯后的內(nèi)存分為五部分:堆區(qū)、棧區(qū)、全局區(qū)( 靜態(tài)區(qū) )、常量 區(qū)和代碼區(qū)。3、設(shè)有以下說明和定義:typedef union long i: int k5;
50、 char c: DATE;struct data int cat; DATE cow; double dog; too;DATE max;則語句 printf ("%d", sizeof (too)+sizeof (max); 的執(zhí)行結(jié)果是: (sizeof () 函數(shù)的用法 )答案:DATE是一個union,變量公用空間.里面最大的變量類型是int 5,占用20個字節(jié),所以它的大小是 20, data 是一個 struct, 每個變量分開占用 空間 . 依次為 int4 + DATE20 + double8 = 32. 所以結(jié)果是 20 + 32 = 52 當(dāng) 然,在某
51、些 16 位編輯器下, int 可能是 2 字節(jié),那么結(jié)果是 int2 + DATE 10 + double8 = 204、隊列和棧有什么區(qū)別?棧后進(jìn)先出答 案 : 隊 列 先 進(jìn) 先 出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
52、(Pointer->number=key) Back->next 二 Pointer - next; free (Pointer); break; void delete(Node* p)if (Head = Node)while(p) 7 、請找出下面代碼中的所有錯誤,說明:以下代碼是把一個字符串倒序,如abed”倒序后變?yōu)?“ deba”1、#include string. h 2、main()3、4、char*src 二 hello, world"5、char* dest=NULL;6、int len 二 strlen(src);7、dest 二 (char*)ma
53、lloc(len);8、char* d=dest;9、char* s=srclen;10> wh 訂 e (len 一 !=0)11>d+=s 一;12、printf ( s , dest);13、return 0;14、 答案:還要加上 # include <stdio. h> int main ()char* dest (char*)malloc(len+1)*sizeof( / 要為 0 分 =char* sre = "hello, wcohrlad"r;)i)n;t len = strlen(src);配一個空間 char* d = dest
54、;char* s = &srclenl ;/ 指向最后一個字符wh 訂 e( len- != 0 )*d+=*s ;*d 二 0; / 尾部要加 0 printf ( srT,dest);free(dest) ;/ 使用完,應(yīng)當(dāng)釋放空間,以免造成內(nèi)存匯泄露return 0; 華為筆試題一、判斷題(對的寫T,錯的寫F并說明原因,每小題4分,共20分)1、有數(shù)組定義int a=1,2,3;則a0 1的值為0。(正確)2、int (*ptr) (),貝V ptr 是一維數(shù)組的名字。(錯誤 int (*ptr)();定義一個指向函數(shù)的指針變量)3、指針在任何情況下都可進(jìn)行,<,>=
55、, <=,=運算。(錯誤)4、switch(c) 語句中 c 可以是 int , long, char , float , unsigned int類 型(錯,不能用實形)二、填空題(共30分)1、在windows下,寫出運行結(jié)果,char str = " Hellochar *p=str;intn 二 10; sizeof(st r) = ( sizeof)sizeof (p)=()(n)=()void fun c(char str100) sizeof(str)=()答案:6, 4, 4, 4,具體解釋請參看我的空間里的“ C/C+程序員應(yīng)聘 試題剖析”2、void get
56、memory(char *p, int n um) *p=(char *) malloc (n um);void test(void) char *str=NULL; getmemory(&str,100); strcpy (str, " hello "); printf(str);運行test函數(shù)有什么結(jié)果?答案:輸出hello,但是發(fā)生內(nèi)存泄漏。3、設(shè) int arr = 6, 7, 8, 9, 10:int *ptr=arr;*(pt 葉+)+=123;printf( " %d, %d " , *ptr, * (+ptr);答案:8, 8o這道題目的意義不大,因為在不同的編譯器
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 國慶熟食活動方案
- 國際檔案日社區(qū)活動方案
- 品茶書法活動方案
- 團建晚會活動策劃方案
- 團委衛(wèi)生打掃活動方案
- 四年級美術(shù)備課活動方案
- 國慶櫥柜活動方案
- 團購活動炸串活動方案
- 團組織公司活動方案
- 回收塑料活動方案
- 日語水平考試試題及答案
- 廣東省東莞市2025屆九年級下學(xué)期中考二模物理試卷(含答案)
- 安徽省2023~2024學(xué)年新高一數(shù)學(xué)自主招生考試試題含答案
- 冠心病患者非心臟手術(shù)麻醉管理專家共識
- 高中生安全教育
- 嘉興市重點中學(xué)2025年初三沖刺押題(最后一卷)英語試題試卷含答案
- 嬰幼兒護理的重要知識點試題及答案
- 智能化綜合農(nóng)貿(mào)市場建設(shè)方案與可行性分析
- 餐飲門店打樣管理制度
- 人防車位使用權(quán)轉(zhuǎn)讓協(xié)議一次性終
- 中醫(yī)養(yǎng)生茶飲文化分享
評論
0/150
提交評論