計(jì)算機(jī)專業(yè)復(fù)試面試經(jīng)典問題(含答案)_第1頁
計(jì)算機(jī)專業(yè)復(fù)試面試經(jīng)典問題(含答案)_第2頁
計(jì)算機(jī)專業(yè)復(fù)試面試經(jīng)典問題(含答案)_第3頁
計(jì)算機(jī)專業(yè)復(fù)試面試經(jīng)典問題(含答案)_第4頁
計(jì)算機(jī)專業(yè)復(fù)試面試經(jīng)典問題(含答案)_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1 . 用預(yù)處理指令#define 聲明一個(gè)常數(shù),用以表明 1 年中有多少秒(忽略閏年問題)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL2 .嵌入式系統(tǒng)中經(jīng)常要用到無限循環(huán),你怎么樣用訴寫死循環(huán)呢?while(1) 或者for(;)3 .用變量a給出下面的定義a) 一個(gè)整型數(shù)( An integer )b) 一個(gè)指向整型數(shù)的指針( A pointer to an integer )c) 一個(gè)指向指針的的指針,它指向的指針是指向一個(gè)整型數(shù)( A pointer to a pointer to an intege) rd) 一個(gè)有 10個(gè)整型數(shù)的數(shù)

2、組( An array of 10 integers )e) 一個(gè)有10個(gè)指針的數(shù)組,該指針是指向一個(gè)整型數(shù)的。(An array of 10 pointers to integers)f) 一個(gè)指向有10個(gè)整型數(shù)數(shù)組的指針( A pointer to an array of 10 integers)g) 一個(gè)指向函數(shù)的指針,該函數(shù)有一個(gè)整型參數(shù)并返回一個(gè)整型數(shù)( A pointer to a function that takes an integer as an argument and returns an integer )h) 一個(gè)有10個(gè)指針的數(shù)組,該指針指向一個(gè)函數(shù),該函數(shù)有一個(gè)

3、整型參數(shù)并返回一個(gè)整型數(shù)(An array of tenpointers to functions that take an integer argument and return an integer)答案是:a) int a; / An integerb) int *a; / A pointer to an integerc) int *a; / A pointer to a pointer to an integerd) int a10; / An array of 10 integerse) int *a10; / An array of 10 pointers to integers

4、f) int (*a)10; / A pointer to an array of 10 integersg) int (*a)(int); / A pointer to a function a that takes an integer argument and returns an integerh) int (*a10)(int); / An array of 10 pointers to functions that take an integer argument and return aninteger4. 關(guān)鍵字 static 的作用是什么?這個(gè)簡單的問題很少有人能回答完全。在

5、C語言中,關(guān)鍵字static有三個(gè)明顯的作用:1)在函數(shù)體,一個(gè)被聲明為靜態(tài)的變量在這一函數(shù)被調(diào)用過程中維持其值不變。2) 在模塊內(nèi) (但在函數(shù)體外) , 一個(gè)被聲明為靜態(tài)的變量可以被模塊內(nèi)所用函數(shù)訪問, 但不能被模塊外其它函數(shù)訪問。它是一個(gè)本地的全局變量。3) 在模塊內(nèi),一個(gè)被聲明為靜態(tài)的函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用。那就是,這個(gè)函數(shù)被限制在聲明它的模塊的本地范圍內(nèi)使用。大多數(shù)應(yīng)試者能正確回答第一部分,一部分能正確回答第二部分,同是很少的人能懂得第三部分。這是一個(gè)應(yīng)試者的嚴(yán)重的缺點(diǎn),因?yàn)樗@然不懂得本地化數(shù)據(jù)和代碼范圍的好處和重要性。5. 關(guān)鍵字 const 有什么含意? 表示常量 不

6、可以修改的變量。const int a;int const a;const int *a;int * const a;int const * a const;前兩個(gè)的作用是一樣,a是一個(gè)常整型數(shù)。第三個(gè)意味著a是一個(gè)指向常整型數(shù)的指針(也就是,整型數(shù)是不可修改的,但指針可以)。第四個(gè)意思a是一個(gè)指向整型數(shù)的常指針(也就是說,指針指向的整型數(shù)是可以修改的,但指針是不可修改的)。最后一個(gè)意味著a是一個(gè)指向常整型數(shù)的常指針(也就是說,指針指向的整型數(shù)是不可修改的,同時(shí)指針也是不可修改的)。如果應(yīng)試者能正確回答這些問題,那么他就給我留下了一個(gè)好印象。順帶提一句,也許你可能會(huì)問,即使不用關(guān)鍵字const

7、 ,也還是能很容易寫出功能正確的程序,那么我為什么還要如此看重關(guān)鍵字const 呢?我也如下的幾下理由:1) 關(guān)鍵字 const 的作用是為給讀你代碼的人傳達(dá)非常有用的信息,實(shí)際上,聲明一個(gè)參數(shù)為常量是為了告訴了用戶這個(gè)參數(shù)的應(yīng)用目的。如果你曾花很多時(shí)間清理其它人留下的垃圾,你就會(huì)很快學(xué)會(huì)感謝這點(diǎn)多余的信息。(當(dāng)然,懂得用 const 的程序員很少會(huì)留下的垃圾讓別人來清理的。)2) 通過給優(yōu)化器一些附加的信息,使用關(guān)鍵字const 也許能產(chǎn)生更緊湊的代碼。3) 合理地使用關(guān)鍵字const 可以使編譯器很自然地保護(hù)那些不希望被改變的參數(shù),防止其被無意的代碼修改。簡而言之,這樣可以減少bug的出現(xiàn)

8、。6. 程序什么時(shí)候應(yīng)該使用線程,什么時(shí)候單線程效率高。答: 1 耗時(shí)的操作使用線程,提高應(yīng)用程序響應(yīng)。2 .并行操作時(shí)使用線程,如C/S架構(gòu)的服務(wù)器端并發(fā)線程響應(yīng)用戶的請求。3 .多CPU(統(tǒng)中,使用線程提高CPUJ用率4改善程序結(jié)構(gòu)。一個(gè)既長又復(fù)雜的進(jìn)程可以考慮分為多個(gè)線程,成為幾個(gè)獨(dú)立或半獨(dú)立的運(yùn)行部分,這樣的程序會(huì)利于理解和修改。其他情況都使用單線程。7. 一般數(shù)據(jù)庫若出現(xiàn)日志滿了,會(huì)出現(xiàn)什么情況,是否還能使用?答:只能執(zhí)行查詢等讀操作,不能執(zhí)行更改,備份等寫操作,原因是任何寫操作都要記錄日志。也就是說基本上處于不能使用的狀態(tài)。1.1 CMP是什么協(xié)議,處于哪一層?答:Internet

9、控制報(bào)文協(xié)議,處于網(wǎng)絡(luò)層(IP層)(ping命令基于這個(gè)協(xié)議)9. winsock 建立連接的主要實(shí)現(xiàn)步驟 ?答:服務(wù)器端: socket() 建立套接字,綁定( bind )并監(jiān)聽( listen ),用 accept ()等待客戶端連接??蛻舳耍簊ocket。建立套接字,連接(connect )服務(wù)器,連接上后使用 send()和recv (),在套接字上寫讀數(shù)據(jù),直至數(shù)據(jù)交換完畢, closesocket() 關(guān)閉套接字。服務(wù)器端: accept () 發(fā)現(xiàn)有客戶端連接, 建立一個(gè)新的套接字, 自身重新開始等待連接。 該新產(chǎn)生的套接字使用 send()和recv ()寫讀數(shù)據(jù),直至數(shù)據(jù)交

10、換完畢,closesocket()關(guān)閉套接字。10. IP 組播有那些好處?答: Internet 上產(chǎn)生的許多新的應(yīng)用,特別是高帶寬的多媒體應(yīng)用,帶來了帶寬的急劇消耗和網(wǎng)絡(luò)擁擠問題。組播是一種允許一個(gè)或多個(gè)發(fā)送者(組播源)發(fā)送單一的數(shù)據(jù)包到多個(gè)接收者(一次的,同時(shí)的)的網(wǎng)絡(luò)技術(shù)。組播可以大大的節(jié)省網(wǎng)絡(luò)帶寬,因?yàn)闊o論有多少個(gè)目標(biāo)地址,在整個(gè)網(wǎng)絡(luò)的任何一條鏈路上只傳送單一的數(shù)據(jù)包。所以說組播技術(shù)的核心就是針對如何節(jié)約網(wǎng)絡(luò)資源的前提下保證服務(wù)質(zhì)量。11. 引用與指針有什么區(qū)別?1) 引用必須被初始化,指針不必。 2) 引用初始化以后不能被改變,指針可以改變所指的對象。3) 不存在指向空值的引用,但

11、是存在指向空值的指針。12. TCP/IP 建立連接的過程?(3-way shake)答:在TCP/IP協(xié)議中,TCF議提供可靠的連接服務(wù),采用三次握手建立一個(gè)連接。第一次握手:建立連接時(shí),客戶端發(fā)送syn包(syn可)到服務(wù)器,并進(jìn)入SYN_SEND態(tài),等待服務(wù)器確認(rèn);第二次握手:服務(wù)器收到syn包,必須確認(rèn)客戶的 SYN(ack=j+1 ),同時(shí)自己也發(fā)送一個(gè)SY電(syn=k),即SYN+ACK包,此時(shí)服務(wù)器進(jìn)入 SYN_RECV態(tài);第三次握手:客戶端收到服務(wù)器的SYW AC危,向服務(wù)器發(fā)送確認(rèn)包 ACK(ack=k+1),此包發(fā)送完畢,客戶端和服務(wù)器進(jìn)入ESTABLISHED態(tài),完成三

12、次握手。13、局部變量能否和全局變量重名?答:能,局部會(huì)屏蔽全局。要用全局變量,需要使用 :局部變量可以與全局變量同名,在函數(shù)內(nèi)引用這個(gè)變量時(shí),會(huì)用到同名的局部變量,而不會(huì)用到全局變量。對于有些編譯器而言,在同一個(gè)函數(shù)內(nèi)可以定義多個(gè)同名的局部變量,比如在兩個(gè)循環(huán)體內(nèi)都定義一個(gè)同名的局部變量,而那個(gè)局部變量的作用域就在那個(gè)循環(huán)體內(nèi)。14、如何引用一個(gè)已經(jīng)定義過的全局變量?答: extern可以用引用頭文件的方式,也可以用 extern 關(guān)鍵字,如果用引用頭文件方式來引用某個(gè)在頭文件中聲明的全局變理,假定你將那個(gè)變寫錯(cuò)了,那么在編譯期間會(huì)報(bào)錯(cuò),如果你用 extern 方式引用時(shí),假定你犯了同樣的錯(cuò)

13、誤,那么在編譯期間不會(huì)報(bào)錯(cuò),而在連接期間報(bào)錯(cuò)。15. 描述實(shí)時(shí)系統(tǒng)的基本特性 在特定時(shí)間內(nèi)完成特定的任務(wù),實(shí)時(shí)性與可靠性。16. 全局變量和局部變量在內(nèi)存中是否有區(qū)別?如果有,是什么區(qū)別?全局變量儲(chǔ)存在靜態(tài)數(shù)據(jù)庫,局部變量在堆棧。17. 什么是平衡二叉樹? 左右子樹都是平衡二叉樹且左右子樹的深度差值的絕對值不大于 1。18. 堆棧溢出一般是由什么原因?qū)е碌模?沒有回收垃圾資源。19. 什么函數(shù)不能聲明為虛函數(shù)? constructor 函數(shù)不能聲明為虛函數(shù)。20. 冒泡排序算法的時(shí)間復(fù)雜度是什么?時(shí)間復(fù)雜度是O(n2) 。21.寫出 float x 與“零值”比較的 if 語句。 if(x-0

14、.000001)22.Internet 采用哪種網(wǎng)絡(luò)協(xié)議?該協(xié)議的主要層次結(jié)構(gòu)?Tcp/ip 協(xié)議主要層次結(jié)構(gòu)為:應(yīng)用層/傳輸層/網(wǎng)絡(luò)層/數(shù)據(jù)鏈路層/物理層。23.Internet 物理地址和IP地址轉(zhuǎn)換采用什么協(xié)議?ARP (Address Resolution Protocol)(地址解析憤H)1.1 IP地址的編碼分為哪倆部分?IP地址由兩部分組成,網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)。不過是要和“子網(wǎng)掩碼”按位與上之后才能區(qū)分哪些是網(wǎng)絡(luò)位哪些是主機(jī)位。25 .用戶輸入M,N值,從1至M始順序循環(huán)數(shù)數(shù),每數(shù)到M輸出該數(shù)值,直至全部輸出。寫出C程序。循環(huán)鏈表,用取余操作做26 .不能做switch()的參數(shù)類型

15、是:switch的參數(shù)不能為實(shí)型。27 .請寫出下列代碼的輸出內(nèi)容# include 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, 12028.寫出下列代碼的輸出內(nèi)容 # includeint 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*,in

16、t*);void show(FUNC2 fun,int argl, int*arg2)INCp=&inc;int temp =p(arg1);fun(&temp,&arg1, arg2);printf(%dn,*arg2);main()int a;show(multi,10,&a);return 0;*1 .對于一個(gè)頻繁使用的短小函數(shù),在C語言中應(yīng)用什么實(shí)現(xiàn),在C+中應(yīng)用什么實(shí)現(xiàn)?答:c用宏定義,C+用inline2 .直接鏈接兩個(gè)信令點(diǎn)的一組鏈路稱作什么?答:PPPK到點(diǎn)連接3 .軟件測試都有那些種類 ?黑盒:針對系統(tǒng)功能的測試白盒:測試函數(shù)功能,各函數(shù)接口4 .確定模塊的功能和模塊的接口是

17、在軟件設(shè)計(jì)的那個(gè)階段完成的?概要設(shè)計(jì)階段三.選擇題:1 .Ethternet 鏈接到 Internet 用到以下那個(gè)協(xié)議? A.HDLC;B.ARP;C.UDP;D.TCP;E.ID2 .屬于網(wǎng)絡(luò)層協(xié)議的是:A.TCP;B.IP;C.ICMP;D.X.253 .Windows消息調(diào)度機(jī)制是:A.指令隊(duì)列;B.指令堆棧;C.消息隊(duì)列;D.消息堆棧;4 .unsigned short hash(unsigned short key)return (key)%256請問 hash(16),hash(256)的值分別是:A.1.16;B.8.32;C.4.16;D.1.32四.找錯(cuò)題:1 .請問下面程

18、序有什么錯(cuò)誤?int a602501000,i,j,k;for(k=0;k=1000;k+)for(j=0;j250;j+)for(i=0;i60;i+)ai皿止0;把循環(huán)語句內(nèi)外換一下2 .#define Max_CB 500void LmiQueryCSmd(Struct MSgCB * pmsg)unsigned char ucCmdNum;for(ucCmdNum=0;ucCmdNumMax_GT_Length)return GT_Length_ERROR;五 . 問答題 :1.IP Phone 的原理是什么 ?IPV62.TCP/IP 通信建立的過程怎樣,端口有什么作用? 三次握手,

19、確定是哪個(gè)應(yīng)用程序使用該協(xié)議3.1 號(hào)信令和 7號(hào)信令有什么區(qū)別,我國某前廣泛使用的是那一種?4. 列舉5種以上的電話新業(yè)務(wù)?*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)資源,但可以訪問隸屬于進(jìn)程的資源(4)系統(tǒng)開銷:在創(chuàng)建或撤消進(jìn)程時(shí),由于系統(tǒng)都要為之分配和回收資源,導(dǎo)致系統(tǒng)的開銷明顯大于創(chuàng)建或撤消線程時(shí)的開銷。2 . Hea由stack的差

20、別。Hea龍堆,stack 是棧。 Stack的空間由操作系統(tǒng)自動(dòng)分配 /釋放,Heap上的空間手動(dòng)分配 /釋放。Stack空間有限, Heap很大的自由存儲(chǔ)區(qū)。C中的 malloc函數(shù)分配的內(nèi)存空間即在堆上,C+中對應(yīng)的是 new操作符。程序在編譯期對變量和函數(shù)分配內(nèi)存都在棧上進(jìn)行,且程序運(yùn)行過程中函數(shù)調(diào)用時(shí)參數(shù)的傳遞也在棧上進(jìn)行。3 .如果只想讓程序有一個(gè)實(shí)例運(yùn)行,不能運(yùn)行兩個(gè)。像 winam廠樣,只能開一個(gè)窗口,怎樣實(shí)現(xiàn)?用內(nèi)存映射或全局原子(互斥變量)、查找窗口句柄- FindWindow ,互斥,寫標(biāo)志到文件或注冊表,共享內(nèi)存。4 .存儲(chǔ)過程是什么?有什么用?有什么優(yōu)點(diǎn)?就是一堆sq

21、l的集合,可以建立非常復(fù)雜的查詢,編譯運(yùn)行,所以運(yùn)行一次后,以后再運(yùn)行速度比單獨(dú)執(zhí)行SQ快很多5 .網(wǎng)絡(luò)編程中設(shè)計(jì)并發(fā)服務(wù)器,使用多進(jìn)程與多線程,請問有什么區(qū)別?1,進(jìn)程:子進(jìn)程是父進(jìn)程的復(fù)制品。子進(jìn)程獲得父進(jìn)程數(shù)據(jù)空間、堆和棧的復(fù)制品。2,線程:相對與進(jìn)程而言,線程是一個(gè)更加接近于執(zhí)行體的概念,它可以與同進(jìn)程的其他線程共享數(shù)據(jù),但擁有自己的??臻g,擁有獨(dú)立的執(zhí)行序列。兩者都可以提高程序的并發(fā)度,提高程序運(yùn)行效率和響應(yīng)時(shí)間。線程和進(jìn)程在使用上各有優(yōu)缺點(diǎn):線程執(zhí)行開銷小,但不利于資源管理和保護(hù);而進(jìn)程正相反。同時(shí),線程適合于在SMPL器上運(yùn)行,而進(jìn)程則可以跨機(jī)器遷移。6 . Windows下的內(nèi)

22、存是如何管理的?7 .用一個(gè)語句實(shí)現(xiàn)x是否為2的若干次哥的判斷:int i = 512;cout boolalpha (i & (i - 1) ? false : true) endl;8 .下面三個(gè)有什么區(qū)別?char * const p;char const * p ; const char *p答:char * const p; /常量指針,p的值不可以修改char const * p ; 指向常量的指針,指向的常量值不可以改const char *p ; / 和 char const *p 樣9 . 一個(gè)32位的機(jī)器,該機(jī)器的指針是多少位指針是多少位只要看地址總線的位數(shù)就行了。 803

23、86以后的機(jī)子都是32 的數(shù)據(jù)總線。所以指針的位數(shù)就是10 . 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)會(huì)認(rèn)為加一個(gè)a數(shù)組的偏移,是偏移了一個(gè)數(shù)組的大小(本例是5個(gè)int )int *ptr=(int *)(&a+1);則 ptr 實(shí)際是 &(a5), 也就是 a+5原因如下:&a是數(shù)組指針,其類型為int (*)5;而指針加 1 要根據(jù)指針類型加上一定的值,不同類

24、型的指針 +1之后增加的大小不同a是長度為5的int數(shù)組指針,所以要加5*sizeof(int)所以 ptr 實(shí)際是 a5但是ptr與(&a+1)類型是不一樣的(這點(diǎn)很重要)所以 prt-1 只會(huì)減去 sizeof(int*)a,&a的地址是一樣的,但意思不一樣,a是數(shù)組首地址,也就是 a0的地址,&a是對象(數(shù)組)首地址,一元素的地址,即 a1,&a+1 是下一個(gè)對象的地址,即 a5 。11 . 交換兩個(gè)變量的值,不使用第三個(gè)變量。即 a=3,b=5, 交換之后 a=5,b=3;a = a + b;b = a - b;a = a - b; /第一種方法a = aAb;b = aAb;a = aAb; /第二種.aA=bA=aA=b; /第三種,后兩種只能用于字符和整型12 . c和c+中的struct有什么不同?c和C+中struct的主要區(qū)別是 c中的struct 不可以含有成員函數(shù),而 C+中的struct 可以。C+中struct區(qū)別在于默認(rèn)的存取權(quán)限不同, struct 默認(rèn)為 public ,而 class 默認(rèn)為 private13 .

溫馨提示

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

評(píng)論

0/150

提交評(píng)論