C 最近面試題中遇到的一些問題

2021-07-14 13:33:45 字數 1721 閱讀 3646

最近找工作面試,遇到一些理解不清的問題 記錄分享一下:

1、wm_copydata 用sendmessage 還是postmessage ?

該訊息只能由sendmessage()傳送,而不能使用postmessage()。因為系統必須管理用以傳遞資料的緩衝區的生命期,如果使用了postmessage(),資料緩衝區會在接收方(執行緒)有機會處理該資料之前,就被系統清除和**。

如果傳入的接收視窗控制代碼無效或者當接收方程序意外終止時,sendmessage()會立即返回,傳送方不會陷入乙個無窮等待的狀態中。

2.虛函式表

虛函式(

virtual function

)是通過一張虛函式表(

virtual table

)來實現的。簡稱為

v-table

。在這個表中,主是要乙個類的虛函式的位址表,這張表解決了繼承、覆蓋的問題,保證其容真實反應實際的函式。

父類虛函式 被子類重寫以後,  虛函式表中記錄的 就是子類的方法 故會呼叫子類方法。沒被子類重寫的虛函式,仍指向父類的方法。

3.乙個執行緒不停的向另乙個執行緒傳送大量資料 怎麼實現資料不丟失。

這裡主要講的就是生產者消費者模型,pv操作,訊號量同步的關係。

4.臨界區在用的時候要注意什麼?和互斥有什麼區別。

防止死鎖   區別就是 使用者物件和核心物件  程序內呼叫 臨界區速度快 對共享資源的序列訪問  程序間同步需要核心物件 對資源獨佔訪問。

5.static的作用

作用1 是 隱藏   加了static的變數和函式 只對當前檔案可見。

作用2 儲存在靜態資料區的變數會在程式剛開始執行時就完成初始化,也是唯一的一次初始化。

作用3 預設初始化為

0。其實全域性變數也具備這一屬性,因為全域性變數也儲存在靜態資料區。在靜態資料區,記憶體中所有的位元組預設值都是

0x00

,某些時候這一特點可以減少程式設計師的工作量。

6.const是c語言的一種關鍵字,起受保護,防止以外的變動的作用!可以修飾變數,引數,返回值,甚至函式體。const可以提高程式的健壯性,你只管用到你想用的任何地方。

(一)const修飾引數。const只能修飾輸入引數。

1、如果輸入引數是指標型的,用const修飾可以防止指標被意外修改。

2、如果引數採用值傳遞的方式,無需const,因為函式自動產生臨時變數複製該引數。

3、非內部資料型別的引數,需要臨時物件複製引數,而臨時物件的構造,析構,複製較為費時,因此建議採用前加const的引用方式傳遞非內部資料型別。而內部資料型別無需引用傳遞。

(二)const修飾函式返回值。

1、函式返回const指標,表示該指標不能被改動,只能把該指標賦給const修飾的同型別指標變數。

2、函式返回值為值傳遞,函式會把返回值賦給外部臨時變數,用const無意義!不管是內部還是非內部資料型別。

3、函式採用引用方式返回的場合不多,只出現在類的賦值函式中,目的是為了實現鏈式表達。

(三)const+成員函式。任何不修改資料成員的函式都應該宣告為const型別,如果const成員函式修改了資料成員或者呼叫了其他函式修改資料成員,編譯器都將報錯!

(四)const 修飾變數,表示該變數不能被修改。

1、const char *p 表示 指向的內容不能改變

2、char * const p,就是將p宣告為常指標,它的位址不能改變,是固定的,但是它的內容可以改變。

3、這種const指標是前兩種的結合,使得指向的內容和位址都不能發生變化.

最近寫cpp遇到的一些問題

cmp中需要使用弱排序,對於單個元素排序 不能是a b bool cmp int a,int b 二維比較 bool cmp const vector int a,const vector int b 若想通過gprof看到程式各部分的效能,則在編譯命令中不能使用gcc優化 o2,o3 gcc優化會...

記錄最近的一些遇到的前端面試題

html部分 1.問 doctype是什麼。答 檢視w3school的詳細解釋 sgml 2.問 有哪些行內元素 有哪些塊級元素。margin屬性是否對行內元素有所作用。答 塊級元素常用的有 等 行內元素 等。行內元素左右margin可用,上下margin會讓整行移動。3.問 html5中input...

一些C 面試題

1.介紹一下stl,詳細說明stl如何實現vector。2.如果用vc開發程式,常見這麼幾個錯誤,c2001,c2005,c2011,這些錯誤的原因是什麼。3.繼承和委派有什麼分別,在決定使用繼承或者委派的時候需要考慮什麼。4.指標和引用有什麼分別 如果傳引用比傳指標安全,為什麼?如果我使用常量指標...