- 相關(guān)推薦
VC面試問(wèn)題
1. 函數(shù)調(diào)用的幾種形式:
cdecl:c declare(C調(diào)用約定)的縮寫,是C和C++程序的缺省調(diào)用方式,規(guī)則是,按從右至左的順序壓參數(shù)入棧,由調(diào)用者把參數(shù)彈出棧,對(duì)于傳送參數(shù)的內(nèi)存棧是由調(diào)用者來(lái)維護(hù)的,正因?yàn)槿绱,只有這種調(diào)用方式可實(shí)現(xiàn)個(gè)數(shù)不定的入口參數(shù)(可變參數(shù))。
stdcall:是pascal程序的缺省調(diào)用方式,規(guī)則是,按從右至左的順序壓參數(shù)入棧,被調(diào)用的函數(shù)在返回前清理傳送參數(shù)的內(nèi)存棧。
上兩者的主要區(qū)別是前者由調(diào)用者清理?xiàng)#笳哂杀徽{(diào)用的函清理?xiàng)。?dāng)然函數(shù)名的修飾部分也是不同的。
fastcall:采用寄存器傳遞參數(shù),特點(diǎn)就是快了。
2.C++中用模板類的好處:
(1)可用來(lái)創(chuàng)建動(dòng)態(tài)增長(zhǎng)和減小的數(shù)據(jù)結(jié)構(gòu)
(2)它是類型無(wú)關(guān)的,因此具有很高的可復(fù)用性。
(3)它在編譯時(shí)而不是運(yùn)行時(shí)檢查數(shù)據(jù)類型,保證了類型安全
(4)它是平臺(tái)無(wú)關(guān)的,可移植性
(5)可用于基本數(shù)據(jù)類型
3.SendMessage和postMessage,GetMessage和peekMessage有什么區(qū)別?
postMessage和SendMessage的區(qū)別主要是在于是否等待其他程序處理消息,postMessage只是把消息放入隊(duì)列,不管其他程序是否處理都返回,然后繼續(xù)執(zhí)行,而SendMessage必須等待其他程序處理消息后才返回,繼續(xù)執(zhí)行。這兩個(gè)函數(shù)的返回值也不同,postMessage的返回值表示postMessage函數(shù)執(zhí)行是否正確,而SendMessage的返回值表示其他程序處理消息后的返回值。
peekMessage和GetMessage主要有以下區(qū)別:
1.GetMessage將等到有合適的消息時(shí)才返回,而peekMessage只是撇下一個(gè)消息隊(duì)列。
2. GetMessage會(huì)將消息從隊(duì)列中刪除,而peekMessage可以設(shè)置最后一個(gè)參數(shù)wRemoveMsg來(lái)決定是否將消息保留在隊(duì)列中。
創(chuàng)建線程的方式有三種,MFC的AfxBeginThread,win32ApI的CreateThread和C RunTime的_beginthreadex.其中AfxBeginThread創(chuàng)建線程有創(chuàng)建工作者線程和UI線程之分。
4.OnInitDialog,InitInstance,OnCreate在建立對(duì)話框中運(yùn)行的先后順序。
答:InitInstance,OnCreate,OnInitDialog.運(yùn)行順序從先到后。
5.談?wù)凜和C++的區(qū)別,你是如何理解面向?qū)ο笏枷氲?
C和C++最大的區(qū)別是他們解決問(wèn)題的思想是不一樣的,C是一個(gè)結(jié)構(gòu)化語(yǔ)言,重點(diǎn)在于算法和數(shù)據(jù)結(jié)構(gòu),對(duì)于C++考慮的是如何構(gòu)造一個(gè)對(duì)象模型,使這個(gè)模型能配合對(duì)應(yīng)的問(wèn)題,通過(guò)獲取對(duì)象的狀態(tài)信息得到輸出或?qū)崿F(xiàn)過(guò)程控制。
面向?qū)ο笫侵溉藗冋J(rèn)識(shí)客觀世界的思維方式,采用基于對(duì)象的概念去建立模型
6。Heap與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)行
7.Windows下的內(nèi)存是如何管理的?
內(nèi)存分配方式有三種:
1.從靜態(tài)存儲(chǔ)區(qū)域分配。內(nèi)存在程序編譯的時(shí)候就已經(jīng)分配好,這塊內(nèi)存在程序的整個(gè)運(yùn)行期間都存在。例如全局變量,static變量。
2.在棧上創(chuàng)建。在執(zhí)行函數(shù)時(shí),函數(shù)內(nèi)局部變量的存儲(chǔ)單元都可以在棧上創(chuàng)建,函數(shù)執(zhí)行結(jié)束時(shí)這些存儲(chǔ)單元自動(dòng)被釋放。棧內(nèi)存分配運(yùn)算內(nèi)置于處理器的指令集中,效率很高,但是分配的內(nèi)存容量有限。
3.從堆上分配,亦稱動(dòng)態(tài)內(nèi)存分配。程序在運(yùn)行的時(shí)候用malloc或new申請(qǐng)任意多少的內(nèi)存,程序員自己負(fù)責(zé)在何時(shí)用free或釋放內(nèi)存。動(dòng)態(tài)內(nèi)存的生存期由我們決定,使用非常靈活,但問(wèn)題也最多。
【VC面試問(wèn)題】相關(guān)文章:
華為面試的問(wèn)題07-11
面試25問(wèn)題07-12
面試的衣著問(wèn)題07-11
《面試》閱讀問(wèn)題07-11
面試中的問(wèn)題07-11
面試后的問(wèn)題07-11
面試問(wèn)題??07-11
面試準(zhǔn)備問(wèn)題07-11
常用的面試問(wèn)題07-11