版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C語(yǔ)言面試題大匯總之華為面試題silver6 | 01 二月, 2007 15:571、局部變量能否和全局變量重名? 答:能,局部會(huì)屏蔽全局。要用全局變量,需要使用: 局部變量可以與全局變量同名,在函數(shù)內(nèi)引用這個(gè)變量時(shí),會(huì)用到同名的局部變量,而不會(huì)用到全局變量。對(duì)于有些編譯器而言,在同一個(gè)函數(shù)內(nèi)可以定義多個(gè)同名的局部變量,比如在兩個(gè)循環(huán)體內(nèi)都定義一個(gè)同名的局部變量,而那個(gè)局部變量的作用域就在那個(gè)循環(huán)體內(nèi)。 2、如何引用一個(gè)已經(jīng)定義過(guò)的全局變量? 答:extern 可以用引用頭文件的方式,也可以用extern關(guān)鍵字,如果用引用頭文件方式來(lái)引用某個(gè)在頭文件中聲明的全局變理,假定你將那個(gè)變寫錯(cuò)了,那
2、么在編譯期間會(huì)報(bào)錯(cuò),如果你用extern方式引用時(shí),假定你犯了同樣的錯(cuò)誤,那么在編譯期間不會(huì)報(bào)錯(cuò),而在連接期間報(bào)錯(cuò)。 3、全局變量可不可以定義在可被多個(gè).C文件包含的頭文件中?為什么? 答:可以,在不同的C文件中以static形式來(lái)聲明同名全局變量。 可以在不同的C文件中聲明同名的全局變量,前提是其中只能有一個(gè)C文件中對(duì)此變量賦初值,此時(shí)連接不會(huì)出錯(cuò) 4、語(yǔ)句for( ;1 ;)有什么問(wèn)題?它是什么意思? 答:和while(1)相同。 5、dowhile和whiledo有什么區(qū)別? 答:前一個(gè)循環(huán)一遍再判斷,后一個(gè)判斷以后再循環(huán) 6、請(qǐng)寫出下列代碼的輸出內(nèi)容 #include main() i
3、nt 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,120 7、static全局變量與普通的全局變量有什么區(qū)別?static局部變量和普通局部變量有什么區(qū)別?static函數(shù)與普通函數(shù)有什么區(qū)別? 全局變量(外部變量)的說(shuō)明之前再冠以static 就構(gòu)成了靜態(tài)的全局變量。全局變量本身就是靜態(tài)存儲(chǔ)方式, 靜態(tài)全局變量當(dāng)然也是靜態(tài)存儲(chǔ)方式。 這兩者在存儲(chǔ)方式上并無(wú)不同。這兩者的區(qū)別雖在于非靜態(tài)全局變量的作用域是整個(gè)源程序, 當(dāng)一個(gè)源程序由多個(gè)源文件組成時(shí),非靜態(tài)的全局變量在各個(gè)源
4、文件中都是有效的。 而靜態(tài)全局變量則限制了其作用域, 即只在定義該變量的源文件內(nèi)有效, 在同一源程序的其它源文件中不能使用它。由于靜態(tài)全局變量的作用域局限于一個(gè)源文件內(nèi),只能為該源文件內(nèi)的函數(shù)公用, 因此可以避免在其它源文件中引起錯(cuò)誤。 從以上分析可以看出, 把局部變量改變?yōu)殪o態(tài)變量后是改變了它的存儲(chǔ)方式即改變了它的生存期。把全局變量改變?yōu)殪o態(tài)變量后是改變了它的作用域, 限制了它的使用范圍。 static函數(shù)與普通函數(shù)作用域不同。僅在本文件。只在當(dāng)前源文件中使用的函數(shù)應(yīng)該說(shuō)明為內(nèi)部函數(shù)(static),內(nèi)部函數(shù)應(yīng)該在當(dāng)前源文件中說(shuō)明和定義。對(duì)于可在當(dāng)前源文件以外使用的函數(shù),應(yīng)該在一個(gè)頭文件中說(shuō)
5、明,要使用這些函數(shù)的源文件要包含這個(gè)頭文件 static全局變量與普通的全局變量有什么區(qū)別:static全局變量只初使化一次,防止在其他文件單元中被引用; static局部變量和普通局部變量有什么區(qū)別:static局部變量只被初始化一次,下一次依據(jù)上一次結(jié)果值; static函數(shù)與普通函數(shù)有什么區(qū)別:static函數(shù)在內(nèi)存中只有一份,普通函數(shù)在每個(gè)被調(diào)用中維持一份拷貝 8、程序的局部變量存在于(堆棧)中,全局變量存在于(靜態(tài)區(qū) )中,動(dòng)態(tài)申請(qǐng)數(shù)據(jù)存在于( 堆)中。 9、設(shè)有以下說(shuō)明和定義: typedef unionlong i; int k5; char c; DATE; struct da
6、ta int cat; DATE cow; double dog; too; DATE max; 則語(yǔ)句 printf(%d,sizeof(struct date)+sizeof(max);的執(zhí)行結(jié)果是:_52_ 答:DATE是一個(gè)union, 變量公用空間. 里面最大的變量類型是int5, 占用20個(gè)字節(jié). 所以它的大小是20 data是一個(gè)struct, 每個(gè)變量分開(kāi)占用空間. 依次為int4 + DATE20 + double8 = 32. 所以結(jié)果是 20 + 32 = 52. 當(dāng)然.在某些16位編輯器下, int可能是2字節(jié),那么結(jié)果是 int2 + DATE10 + double8
7、 = 20 10、隊(duì)列和棧有什么區(qū)別? 隊(duì)列先進(jìn)先出,棧后進(jìn)先出 11、寫出下列代碼的輸出內(nèi)容 #include int inc(int a) return(+a); int multi(int*a,int*b,int*c) return(*c=*a*b); typedef int(FUNC1)(int in); typedef int(FUNC2) (int*,int*,int*); void show(FUNC2 fun,int arg1, int*arg2) INCp=&inc; int temp =p(arg1); fun(&temp,&arg1, arg2); printf(%dn,
8、*arg2); main() int a; show(multi,10,&a); return 0; 答:110 12、請(qǐng)找出下面代碼中的所以錯(cuò)誤 說(shuō)明:以下代碼是把一個(gè)字符串倒序,如“abcd”倒序后變?yōu)椤癲cba” #includestring.h main() char*src=hello,world; char* dest=NULL; int len=strlen(src); dest=(char*)malloc(len); char* d=dest; char* s=srclen; while(len-!=0) d+=s-; printf(%s,dest); return 0; 答:
9、 方法1: int main() char* src = hello,world; int len = strlen(src); char* dest = (char*)malloc(len+1);/要為分配一個(gè)空間 char* d = dest; char* s = &srclen-1;/指向最后一個(gè)字符 while( len- != 0 ) *d+=*s-; *d = 0;/尾部要加 printf(%sn,dest); free(dest);/ 使用完,應(yīng)當(dāng)釋放空間,以免造成內(nèi)存匯泄露 return 0; 方法2: #include #include main()char str=hell
10、o,world;int len=strlen(str);char t;for(int i=0; i)%256請(qǐng)問(wèn)hash(16),hash(256)的值分別是:A.1.16;B.8.32;C.4.16;D.1.32找錯(cuò)題: 25.請(qǐng)問(wèn)下面程序有什么錯(cuò)誤? int a602501000,i,j,k; for(k=0;kMax_GT_Length) return GT_Length_ERROR; . 問(wèn)答題: 29.IP Phone的原理是什么? IPV6 30.TCP/IP通信建立的過(guò)程怎樣,端口有什么作用? 三次握手,確定是哪個(gè)應(yīng)用程序使用該協(xié)議 31.1號(hào)信令和7號(hào)信令有什么區(qū)別,我國(guó)某前廣
11、泛使用的是那一種? 32.列舉5種以上的電話新業(yè)務(wù)四.找錯(cuò)題:1.請(qǐng)問(wèn)下面程序有什么錯(cuò)誤?int a602501000,i,j,k;for(k=0;k=1000;k+)for(j=0;j250;j+)for(i=0;i60;i+)aijk=0;把循環(huán)語(yǔ)句內(nèi)外換一下2.#define Max_CB 500void LmiQueryCSmd(Struct MSgCB * pmsg)unsigned char ucCmdNum;.for(ucCmdNum=0;ucCmdNumMax_GT_Length)-return GT_Length_ERROR; .五.問(wèn)答題:1.IP Phone的原理是什么?
12、IPV62.TCP/IP通信建立的過(guò)程怎樣,端口有什么作用?三次握手,確定是哪個(gè)應(yīng)用程序使用該協(xié)議3. 1號(hào)信令和7號(hào)信令有什么區(qū)別,我國(guó)某前廣泛使用的是那一種?4.列舉5種以上的電話新業(yè)務(wù)?微軟亞洲技術(shù)中心的面試題!1進(jìn)程和線程的差別。線程是指進(jìn)程內(nèi)的一個(gè)執(zhí)行單元,也是進(jìn)程內(nèi)的可調(diào)度實(shí)體.與進(jìn)程的區(qū)別:(1)調(diào)度:線程作為調(diào)度和分配的基本單位,進(jìn)程作為擁有資源的基本單位(2)并發(fā)性:不僅進(jìn)程之間可以并發(fā)執(zhí)行,同一個(gè)進(jìn)程的多個(gè)線程之間也可并發(fā)執(zhí)行(3)擁有資源:進(jìn)程是擁有資源的一個(gè)獨(dú)立單位,線程不擁有系統(tǒng)資源,但可以訪問(wèn)隸屬于進(jìn)程的資源.(4)系統(tǒng)開(kāi)銷:在創(chuàng)建或撤消進(jìn)程時(shí),由于系統(tǒng)都要為之分配
13、和回收資源,導(dǎo)致系統(tǒng)的開(kāi)銷明顯大于創(chuàng)建或撤消線程時(shí)的開(kāi)銷。2.測(cè)試方法人工測(cè)試:個(gè)人復(fù)查、抽查和會(huì)審機(jī)器測(cè)試:黑盒測(cè)試和白盒測(cè)試2Heap與stack的差別。Heap是堆,stack是棧。Stack的空間由操作系統(tǒng)自動(dòng)分配/釋放,Heap上的空間手動(dòng)分配/釋放。Stack空間有限,Heap是很大的自由存儲(chǔ)區(qū)C中的malloc函數(shù)分配的內(nèi)存空間即在堆上,C+中對(duì)應(yīng)的是new操作符。程序在編譯期對(duì)變量和函數(shù)分配內(nèi)存都在棧上進(jìn)行,且程序運(yùn)行過(guò)程中函數(shù)調(diào)用時(shí)參數(shù)的傳遞也在棧上進(jìn)行3Windows下的內(nèi)存是如何管理的?4介紹.Net和.Net的安全性。5客戶端如何訪問(wèn).Net組件實(shí)現(xiàn)Web Servic
14、e?6C/C+編譯器中虛表是如何完成的?7談?wù)凜OM的線程模型。然后討論進(jìn)程內(nèi)/外組件的差別。8談?wù)処A32下的分頁(yè)機(jī)制小頁(yè)(4K)兩級(jí)分頁(yè)模式,大頁(yè)(4M)一級(jí)9給兩個(gè)變量,如何找出一個(gè)帶環(huán)單鏈表中是什么地方出現(xiàn)環(huán)的?一個(gè)遞增一,一個(gè)遞增二,他們指向同一個(gè)接點(diǎn)時(shí)就是環(huán)出現(xiàn)的地方10在IA32中一共有多少種辦法從用戶態(tài)跳到內(nèi)核態(tài)?通過(guò)調(diào)用門,從ring3到ring0,中斷從ring3到ring0,進(jìn)入vm86等等11如果只想讓程序有一個(gè)實(shí)例運(yùn)行,不能運(yùn)行兩個(gè)。像winamp一樣,只能開(kāi)一個(gè)窗口,怎樣實(shí)現(xiàn)?用內(nèi)存映射或全局原子(互斥變量)、查找窗口句柄.FindWindow,互斥,寫標(biāo)志到文件或
15、注冊(cè)表,共享內(nèi)存。.12如何截取鍵盤的響應(yīng),讓所有的a變成b?鍵盤鉤子SetWindowsHookEx13Apartment在COM中有什么用?為什么要引入?14存儲(chǔ)過(guò)程是什么?有什么用?有什么優(yōu)點(diǎn)?我的理解就是一堆sql的集合,可以建立非常復(fù)雜的查詢,編譯運(yùn)行,所以運(yùn)行一次后,以后再運(yùn)行速度比單獨(dú)執(zhí)行SQL快很多15Template有什么特點(diǎn)?什么時(shí)候用?16談?wù)刉indows DNA結(jié)構(gòu)的特點(diǎn)和優(yōu)點(diǎn)。17.網(wǎng)絡(luò)編程中設(shè)計(jì)并發(fā)服務(wù)器,使用多進(jìn)程 與 多線程 ,請(qǐng)問(wèn)有什么區(qū)別?1,進(jìn)程:子進(jìn)程是父進(jìn)程的復(fù)制品。子進(jìn)程獲得父進(jìn)程數(shù)據(jù)空間、堆和棧的復(fù)制品。2,線程:相對(duì)與進(jìn)程而言,線程是一個(gè)更加接
16、近與執(zhí)行體的概念,它可以與同進(jìn)程的其他線程共享數(shù)據(jù),但擁有自己的??臻g,擁有獨(dú)立的執(zhí)行序列。兩者都可以提高程序的并發(fā)度,提高程序運(yùn)行效率和響應(yīng)時(shí)間。線程和進(jìn)程在使用上各有優(yōu)缺點(diǎn):線程執(zhí)行開(kāi)銷小,但不利于資源管理和保護(hù);而進(jìn)程正相反。同時(shí),線程適合于在SMP機(jī)器上運(yùn)行,而進(jìn)程則可以跨機(jī)器遷移。思科1.用宏定義寫出swap(x,y)#define swap(x, y)x = x + y;y = x - y;x = x - y;2.數(shù)組aN,存放了1至N-1個(gè)數(shù),其中某個(gè)數(shù)重復(fù)一次。寫一個(gè)函數(shù),找出被重復(fù)的數(shù)字.時(shí)間復(fù)雜度必須為o(N)函數(shù)原型:int do_dup(int a,int N)3一語(yǔ)句
17、實(shí)現(xiàn)x是否為2的若干次冪的判斷int i = 512;cout boolalpha (i & (i - 1) ? false : true) endl;4.unsigned int intvert(unsigned int x,int p,int n)實(shí)現(xiàn)對(duì)x的進(jìn)行轉(zhuǎn)換,p為起始轉(zhuǎn)化位,n為需要轉(zhuǎn)換的長(zhǎng)度,假設(shè)起始點(diǎn)在右邊.如x=0b0001 0001,p=4,n=3轉(zhuǎn)換后x=0b0110 0001unsigned int intvert(unsigned int x,int p,int n)unsigned int _t = 0;unsigned int _a = 1;for(int i =
18、 0; i n; +i)_t |= _a;_a = _a 1;_t = _t p;x = _t;return x;慧通:1.什么是預(yù)編譯,何時(shí)需要預(yù)編譯:、總是使用不經(jīng)常改動(dòng)的大型代碼體。、程序由多個(gè)模塊組成,所有模塊都使用一組標(biāo)準(zhǔn)的包含文件和相同的編譯選項(xiàng)。在這種情況下,可以將所有包含文件預(yù)編譯為一個(gè)預(yù)編譯頭。2.上述三個(gè)有什么區(qū)別?char * const p;char const * pconst char *p解答:char * const p; /常量指針,p的值不可以修改char const * p;/指向常量的指針,指向的常量值不可以改const char *p;/和char c
19、onst *p3.解釋下列輸出結(jié)果char str1 = abc;char str2 = abc;const char str3 = abc;const char str4 = 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 ) endl;結(jié)果是:0 0 1 1解答:str1,str2
20、,str3,str4是數(shù)組變量,它們有各自的內(nèi)存空間;而str5,str6,str7,str8是指針,它們指向相同的常量區(qū)域。4.以下代碼中的兩個(gè)sizeof用法有問(wèn)題嗎?C易void UpperCase( char str ) /將str中的小寫字母轉(zhuǎn)換成大寫字母for( size_t i=0; isizeof(str)/sizeof(str0); +i )if( a=stri & stri=z )stri -= (a-A );char str = aBcDe;cout str字符長(zhǎng)度為: sizeof(str)/sizeof(str0) endl;UpperCase( str );cout
21、 str (Y)?(Y):(X)/結(jié)尾沒(méi)有;2、嵌入式系統(tǒng)中經(jīng)常要用到無(wú)限循環(huán),你怎么用C編寫死循環(huán)。while(1)或者for(;)3、關(guān)鍵字static的作用是什么?定義靜態(tài)變量4、關(guān)鍵字const有什么含意?表示常量不可以修改的變量。5、關(guān)鍵字volatile有什么含意?并舉出三個(gè)不同的例子?提示編譯器對(duì)象的值可能在編譯器未監(jiān)測(cè)到的情況下改變。6. int (*s10)(int)表示的是什么啊int (*s10)(int)函數(shù)指針數(shù)組,每個(gè)指針指向一個(gè)int func(int param)的函數(shù)。1.有以下表達(dá)式:int a=248; b=4;int const c=21;const i
22、nt *d=&a;int *const e=&b;int const *f const =&a;請(qǐng)問(wèn)下列表達(dá)式哪些會(huì)被編譯器禁止?為什么?*c=32;d=&b;*d=43;e=34;e=&a;f=0x321f;*c這是個(gè)什么東東,禁止*d說(shuō)了是const, 禁止e = &a說(shuō)了是const禁止const *f const =&a;禁止2.交換兩個(gè)變量的值,不使用第三個(gè)變量。即a=3,b=5,交換之后a=5,b=3;有兩種解法,一種用算術(shù)算法,一種用(異或)a = a + b;b = a - b;a = a - b;ora = ab;/只能對(duì)int,char.b = ab;a = ab;ora
23、= b = a;3.c和c+中的struct有什么不同?c和c+中struct的主要區(qū)別是c中的struct不可以含有成員函數(shù),而c+中的struct可以。c+中struct和class的主要區(qū)別在于默認(rèn)的存取權(quán)限不同,struct默認(rèn)為public,而class默認(rèn)為private4.#include #include 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);re
24、turn 0;程序崩潰,getmemory中的malloc不能返回動(dòng)態(tài)內(nèi)存,free()對(duì)str操作很危險(xiǎn)5.char szstr10;strcpy(szstr,);產(chǎn)生什么結(jié)果?為什么?長(zhǎng)度不一樣,會(huì)造成非法的OS6.列舉幾種進(jìn)程的同步機(jī)制,并比較其優(yōu)缺點(diǎn)。原子操作信號(hào)量機(jī)制自旋鎖管程,會(huì)合,分布式系統(tǒng)7.進(jìn)程之間通信的途徑共享存儲(chǔ)系統(tǒng)消息傳遞系統(tǒng)管道:以文件系統(tǒng)為基礎(chǔ)8.一般分類: 評(píng)論 (41) : 靜態(tài)鏈接網(wǎng)址 : 引用 (0)面試經(jīng)典試題silver6 | 02 一月, 2007 11:41面試經(jīng)典試題Author:Vince即使你是個(gè)編程高手,你在面試前也應(yīng)該要看看這套題,她也許會(huì)
25、給你帶來(lái)好運(yùn),否則你有可能后悔當(dāng)初為什么沒(méi)有看而跳樓自殺,這樣我會(huì)很內(nèi)疚的。這套題看似簡(jiǎn)單,但你未必能得高分,即使你看不懂也要把她背下來(lái)!歡迎轉(zhuǎn)載此文,轉(zhuǎn)載時(shí)請(qǐng)注明文章來(lái)源:文斯測(cè)試技術(shù)研究中心/vincetest1編程基礎(chǔ)1.1 基本概念1. const的理解:const char*, char const*, char*const的區(qū)別問(wèn)題幾乎是C+面試中每次都會(huì)有的題目。事實(shí)上這個(gè)概念誰(shuí)都有只是三種聲明方式非常相似很容易記混。Bjarne在他的The C+ Programming Language里面給出過(guò)一個(gè)助記的方法:把一個(gè)聲明從右向左讀。cha
26、r * const cp; ( *讀成 pointer to )cp is a const pointer to charconst char * p;p is a pointer to const char;char const * p;同上因?yàn)镃+里面沒(méi)有const*的運(yùn)算符,所以const只能屬于前面的類型2. c指針int *pn;-指針數(shù)組,每個(gè)元素均為指向整型數(shù)據(jù)的指針。int (*)pn;-p為指向一維數(shù)組的指針,這個(gè)一維數(shù)組有n個(gè)整型數(shù)據(jù)。int *p();-函數(shù)帶回指針,指針指向返回的值。int (*)p();-p為指向函數(shù)的指針。3. 數(shù)組越界問(wèn)題下面這個(gè)程序執(zhí)行后會(huì)有什么
27、錯(cuò)誤或者效果:#define MAX 255int main()unsigned char AMAX,i;for (i=0;i=MAX;i+)Ai=i;解答:MAX=255,數(shù)組A的下標(biāo)范圍為:0.MAX-1,這是其一,其二當(dāng)i循環(huán)到255時(shí),循環(huán)內(nèi)執(zhí)行: A255=255;這句本身沒(méi)有問(wèn)題,但是返回for (i=0;i=MAX;i+)語(yǔ)句時(shí),由于unsigned char的取值范圍在(0.255),i+以后i又為0了.無(wú)限循環(huán)下去.注:char類型為一個(gè)字節(jié),取值范圍是-128,127,unsigned char 0 ,2554. C+:memset ,memcpy和strcpy的根本區(qū)別?
28、#include memory.hmemset用來(lái)對(duì)一段內(nèi)存空間全部設(shè)置為某個(gè)字符,一般用在對(duì)定義的字符串進(jìn)行初始化為 或;例:char a100;memset(a, , sizeof(a);memcpy用來(lái)做內(nèi)存拷貝,你可以拿它拷貝任何數(shù)據(jù)類型的對(duì)象,可以指定拷貝的數(shù)據(jù)長(zhǎng)度;例:char a100,b50; memcpy(b, a, sizeof(b);注意如用sizeof(a),會(huì)造成b的內(nèi)存地址溢出。strcpy就只能拷貝字符串了,它遇到就結(jié)束拷貝;例:char a100,b50;strcpy(a,b);如用strcpy(b,a),要注意a中的字符串長(zhǎng)度(第一個(gè)之前)是否超過(guò)50位,如超
29、過(guò),則會(huì)造成b的內(nèi)存地址溢出。strcpy原型:extern char *strcpy(char *dest,char *src);用法:#include功能:把src所指由NULL結(jié)束的字符串復(fù)制到dest所指的數(shù)組中。說(shuō)明:src和dest所指內(nèi)存區(qū)域不可以重疊且dest必須有足夠的空間來(lái)容納src的字符串。返回指向dest的指針。memcpy原型:extern void *memcpy(void *dest, void *src, unsigned int count);用法:#include功能:由src所指內(nèi)存區(qū)域復(fù)制count個(gè)字節(jié)到dest所指內(nèi)存區(qū)域。說(shuō)明:src和dest所指
30、內(nèi)存區(qū)域不能重疊,函數(shù)返回指向dest的指針。Memset原型:extern void *memset(void *buffer, char c, int count);用法:#include功能:把buffer所指內(nèi)存區(qū)域的前count個(gè)字節(jié)設(shè)置成字符c。說(shuō)明:返回指向buffer的指針。5. ASSERT()是干什么用的ASSERT()是一個(gè)調(diào)試程序時(shí)經(jīng)常使用的宏,在程序運(yùn)行時(shí)它計(jì)算括號(hào)內(nèi)的表達(dá)式,如果表達(dá)式為FALSE (0),程序?qū)?bào)告錯(cuò)誤,并終止執(zhí)行。如果表達(dá)式不為0,則繼續(xù)執(zhí)行后面的語(yǔ)句。這個(gè)宏通常原來(lái)判斷程序中是否出現(xiàn)了明顯非法的數(shù)據(jù),如果出現(xiàn)了終止程序以免導(dǎo)致嚴(yán)重后果,同時(shí)也便
31、于查找錯(cuò)誤。例如,變量n在程序中不應(yīng)該為0,如果為0可能導(dǎo)致錯(cuò)誤,你可以這樣寫程序:.ASSERT( n != 0);k = 10/ n;.ASSERT只有在Debug版本中才有效,如果編譯為Release版本則被忽略。assert()的功能類似,它是ANSI C標(biāo)準(zhǔn)中規(guī)定的函數(shù),它與ASSERT的一個(gè)重要區(qū)別是可以用在Release版本中。6. system(pause);系統(tǒng)的暫停程序,按任意鍵繼續(xù),屏幕會(huì)打印,按任意鍵繼續(xù)。省去了使用getchar();7. 請(qǐng)問(wèn)C+的類和C里面的struct有什么區(qū)別?c+中的類具有成員保護(hù)功能,并且具有繼承,多態(tài)這類oo特點(diǎn),而c里的struct沒(méi)有
32、8. 請(qǐng)講一講析構(gòu)函數(shù)和虛函數(shù)的用法和作用?析構(gòu)函數(shù)也是特殊的類成員函數(shù),它沒(méi)有返回類型,沒(méi)有參數(shù),不能隨意調(diào)用,也沒(méi)有重載。知識(shí)在類對(duì)象生命期結(jié)束的時(shí)候,由系統(tǒng)自動(dòng)調(diào)用釋放在構(gòu)造函數(shù)中分配的資源。這種在運(yùn)行時(shí),能依據(jù)其類型確認(rèn)調(diào)用那個(gè)函數(shù)的能力稱為多態(tài)性,或稱遲后聯(lián)編。另:析構(gòu)函數(shù)一般在對(duì)象撤消前做收尾工作,比如回收內(nèi)存等工作,虛擬函數(shù)的功能是使子類可以用同名的函數(shù)對(duì)父類函數(shù)進(jìn)行重載,并且在調(diào)用時(shí)自動(dòng)調(diào)用子類重載函數(shù),如果是純虛函數(shù),則純粹是為了在子類重載時(shí)有個(gè)統(tǒng)一的命名而已。9. 全局變量和局部變量有什么區(qū)別?實(shí)怎么實(shí)現(xiàn)的?操作系統(tǒng)和編譯器是怎么知道的?全局變量的生命周期是整個(gè)程序運(yùn)行的時(shí)
33、間,而局部變量的生命周期則是局部函數(shù)或過(guò)程調(diào)用的時(shí)間段。其實(shí)現(xiàn)是由編譯器在編譯時(shí)采用不同內(nèi)存分配方法。全局變量在main函數(shù)調(diào)用后,就開(kāi)始分配,如果是靜態(tài)變量則是在main函數(shù)前就已經(jīng)初始化了。而局部變量則是在用戶棧中動(dòng)態(tài)分配的(還是建議看編譯原理中的活動(dòng)記錄這一塊)10. 8086是多少尉的系統(tǒng)?在數(shù)據(jù)總線上是怎么實(shí)現(xiàn)的?8086系統(tǒng)是16位系統(tǒng),其數(shù)據(jù)總線是20位。1.2 程序設(shè)計(jì)1. 編寫用C語(yǔ)言實(shí)現(xiàn)的求n階階乘問(wèn)題的遞歸算法:long int fact(int n)int x;long int y;if(nhigh) return -1;mid=(low+high)/2;if(x=am
34、id) return mid;if(xamid) return(BSearch(a,x,low,mid-1);else return(BSearch(a,x,mid+1,high);2) 非遞歸方法實(shí)現(xiàn):int BSearch(elemtype a,keytype key,int n)int low,high,mid;low=0;high=n-1;while(low=high)mid=(low+high)/2;if(amid.key=key) return mid;else if(amid.key2解:int f(int n)int i,s,s1,s2;s1=1;/*s1用于保存f(n-1)的
35、值*/s2=1;/*s2用于保存f(n-2)的值*/s=1;for(i=3;i=n;i+)s=s1+s2;s2=s1;s1=s;return(s);4. 交換兩個(gè)數(shù),不用第三塊兒內(nèi)存:int a = ;int b = ;a = a + b;b = a - b;a = a - b;5. 冒泡排序:void BubbleSort(elemtype x,int n)int i,j;elemtype temp;for(i=1;in;i+)for(j=0;jxj+1.key)temp=xj;xj=xj+1;xj+1=temp;6. c語(yǔ)言文件讀寫#include stdio.hmain()FILE *f
36、p;char ch,filename10;scanf(%s,filename);if(fp=fopen(filename,w)=NULL)printf(cannt open filen);exit(0);ch=getchar();while(ch!=#)fputc(ch,fp);putchar(ch);ch=getchar();fclose(fp);7. winsocket編程#include #include void main()WORDwVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD(1,1);e
37、rr = WSAStartup(wVersionRequested,&wsaData);if( err != 0)return;if(LOBYTE( wsaData.wVersion ) != 1|HIBYTE( wsaData.wVersion) != 1)WSACleanup();return;SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);addrSrv.sin_family=AF_INET;addrSrv.sin
38、_port=htons(6000);bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR);listen(sockSrv,5);SOCKADDR_IN addrClient;int len=sizeof(SOCKADDR);while(1)SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);char sendBuf100;sprint(sendBuf,Welcome %s to,inet_ntoa(addrClient.sin_addr);se
39、nd(sockConn,sendBuf,strlen(sendBuf)+1,0);char recvBuf100;recv(sockConn,recvBuf);printf(%sn,recvBuf);closesocket(sockConn);WSACleanup();注:這是Server端;File-New-Win32 Console Application,工程名:TcpSrv;然后,F(xiàn)ile-New-C+ Source File,文件名:TcpSrv;在該工程的Setting的Link的Object/library modules項(xiàng)要加入ws2_32.lib#include #inclu
40、de void main()WORDwVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD(1,1);err = WSAStartup(wVersionRequested,&wsaData);if( err != 0)return;if(LOBYTE( wsaData.wVersion ) != 1|HIBYTE( wsaData.wVersion) != 1)WSACleanup();return;SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);SOCKADD
41、R_IN addrSrv;addrSrv.sin_addr.S_un.S_addr=inet_addr();addrSrv.sin_family=AF_INET;addrSrv.sin_porthtons(6000);connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR);char recvBuf100;recv(sockClient,recvBuf,100,0);printf(%sn,recvBuf);send(sockClient,This is zhangsan,strlen(This is zhangsan)+1
42、,0);closesocket(sockClient);WSACleanup();注:這是Client端;File-New-Win32 Console Application,工程名:TcpClient;然后,F(xiàn)ile-New-C+ Source File,文件名:TcpClient;同理,在該工程的Setting的Link的Object/library modules項(xiàng)要加入ws2_32.lib8. 類的知識(shí)C#include class humanpublic:human() human_num+;static int human_num;human()human_num-;print()
43、;void print()couthuman num is: human_numendl;protected:private:;int human:human_num = 0;human f1(human x)x.print();return x;int main(int argc, char* argv)human h1;h1.print();human h2 = f1(h1);h2.print();return 0;輸出:110012分析:human h1; /調(diào)用構(gòu)造函數(shù),-hum_num = 1;h1.print(); /輸出:human is 1human h2 = f1(h1);
44、/再調(diào)用f1(h1)的過(guò)程中,由于函數(shù)參數(shù)是按值傳遞對(duì)象,調(diào)用默認(rèn)的復(fù)制構(gòu)造函數(shù), 一般分類 : 評(píng)論 (9) : 靜態(tài)鏈接網(wǎng)址 : 引用 (0)C/C+ 程序設(shè)計(jì)員應(yīng)聘常見(jiàn)面試試題深入剖析silver6 | 25 九月, 2006 09:07本文的寫作目的并不在于提供C/C+程序員求職面試指導(dǎo),而旨在從技術(shù)上分析面試題的內(nèi)涵。文中的大多數(shù)面試題來(lái)自各大論壇,部分試題解答也參考了網(wǎng)友的意見(jiàn)。許多面試題看似簡(jiǎn)單,卻需要深厚的基本功才能給出完美的解答。企業(yè)要求面試者寫一個(gè)最簡(jiǎn)單的strcpy函數(shù)都可看出面試者在技術(shù)上究竟達(dá)到了怎樣的程度,我們能真正寫好一個(gè)strcpy函數(shù)嗎?我們都覺(jué)得自己能,可是我們寫出的strcpy很可能只能拿到10分中的2分。讀者可從本文看到strcpy 函數(shù)從2分到10分解答的例子,看看自己屬于什么樣的層次。此外,還有一些面試題考查面試者敏捷的思維能力。分析這些面試題,本身包含很強(qiáng)的趣味性;而作為一名研發(fā)人員,通過(guò)對(duì)這些面試題
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026中國(guó)科學(xué)院科技戰(zhàn)略咨詢研究科技發(fā)展戰(zhàn)略研究所特別研究助理(博士后)招聘1人考試參考題庫(kù)及答案解析
- 2026內(nèi)蒙古赤峰市寧城縣八里罕中學(xué)招聘公益性崗位人員1人筆試備考題庫(kù)及答案解析
- 2026廣西河池市羅城仫佬族自治縣農(nóng)業(yè)農(nóng)村局招聘就業(yè)見(jiàn)習(xí)人員3人考試參考試題及答案解析
- 醫(yī)用生物化學(xué)檢測(cè)與分析儀器:精準(zhǔn)診斷的核心支撐體系全面解析
- 2026年金華市青少年宮公開(kāi)招聘外聘(兼職)教師33人筆試備考試題及答案解析
- 2026重慶某國(guó)有企業(yè)員工招聘2人考試參考題庫(kù)及答案解析
- 2026年甘肅蘭州永登縣婦幼保健院招聘筆試備考題庫(kù)及答案解析
- 2026南昌市南鋼學(xué)校教育集團(tuán)勞務(wù)派遣教師招聘考試備考題庫(kù)及答案解析
- 2026湖南懷化市溆浦縣社會(huì)保險(xiǎn)服務(wù)中心公益性崗位招聘2人考試備考試題及答案解析
- 大連市西崗區(qū)2026年教育系統(tǒng)自主招聘應(yīng)屆畢業(yè)生備考題庫(kù)有答案詳解
- 2026年數(shù)據(jù)管理局考試題庫(kù)及實(shí)戰(zhàn)解答
- 2024年集美大學(xué)馬克思主義基本原理概論期末考試筆試真題匯編
- 2025年上海師范大學(xué)馬克思主義基本原理概論期末考試筆試真題匯編
- 2026國(guó)家電投秋招面試題及答案
- 智啟萬(wàn)物:全球AI應(yīng)用平臺(tái)市場(chǎng)全景圖與趨勢(shì)洞察報(bào)告
- 2025年高職植物保護(hù)(植物檢疫技術(shù))試題及答案
- 數(shù)字化背景下幼兒園教育評(píng)價(jià)反饋策略與實(shí)施路徑研究教學(xué)研究課題報(bào)告
- 2026年中國(guó)科學(xué)院心理研究所國(guó)民心理健康評(píng)估發(fā)展中心招聘?jìng)淇碱}庫(kù)及答案詳解(新)
- 全身麻醉后惡心嘔吐的預(yù)防與護(hù)理
- 文物建筑勘查設(shè)計(jì)取費(fèi)標(biāo)準(zhǔn)(2020年版)
- 混凝土供應(yīng)質(zhì)量保障方案
評(píng)論
0/150
提交評(píng)論