極品C 面試題

2021-08-26 11:27:57 字數 2134 閱讀 7542

1,「常量」與「唯讀變數」的區別

常量是編譯器放在記憶體中的唯讀區域,「唯讀變數」在記憶體中開闢乙個區域存放它的值,編譯器限定不允許修改。

2,const與 define的區別

const:限定乙個「變數」不允許被改變。可以提高程式安全性、可靠性。const編譯時進行安全型別檢查。「意味著唯讀」 錯誤:「意味著常量」

define 用來定義「常量」,編譯結束後就消失了,不開闢記憶體空間。define 沒有型別檢查,只是單純的替換,所以不夠安全。

例子:const int n=5; int a[n]; 是不對的,原因是:陣列長度必須要定義成常量。而const 修飾的是乙個變數。但是 const int *ptr; ptr++ 是正確的,而const int ptr; ptr++ 是錯誤的。原因是:第乙個限定*ptr不可以變,第二個才是限定ptr不可以變。

3,分配記憶體時為什麼記憶體不會重疊(位址分配是相對還是絕對的)?

不太懂4,postmessage和sendmessage作用以及區別?

postmessage:該函式將乙個訊息放入(寄送)到與指定視窗建立的執行緒相聯絡訊息佇列裡,不等待執行緒處理訊息就返回,是非同步訊息模式。訊息佇列裡的訊息通過呼叫getmessage和peekmessage取得.

sendmessage:該函式將指定的訊息傳送到乙個或多個視窗。此函式為指定的視窗呼叫視窗程式,直到視窗程式處理完訊息再返回。而函式postmessage不同,將乙個訊息寄送到乙個執行緒的訊息佇列後立即返回。

簡單講:postmessage 傳送到視窗建立的訊息佇列就返回,而sendmessage等待處理完返回。

5,程序間的通訊方式,執行緒的同步方法?

程序間通訊方式: 訊號,訊號量,訊息佇列,共享記憶體。

執行緒同步方法:1)臨界區,多執行緒序列化訪問公共資源或**。

2)互斥量,為協調多個物件對同一資源的單獨訪問

3)訊號量,控制乙個具有數量限制的資源訪問設計

4)時間,通知執行緒有一些時間已經發生,從而啟動後繼任務的開始

6,socket程式設計的實現步驟。

服務端:建立套接字(ip/port)

設定套接字為監聽狀態

請求到來後,建立連線

響應請求,傳送答覆

關閉套接字

接收端:建立套接字

向服務端傳送請求

處理服務端返回資訊

關閉套接字

7,windows的訊息處理機制(處理過程)(這個問題頻率最高了,別漏了訊息迴圈,訊息佇列)

訊息系統由 訊息佇列、訊息迴圈、視窗過程組成

處理過程為:時間出發後傳送訊息到 《訊息佇列》 《訊息迴圈》到訊息佇列中取出訊息交給對應的視窗處理。

8,a[3] = "abc" 合法嗎?使用它有什麼隱患?

在標準c中這是合法的,但是它的生存環境非常狹小;它定義乙個大小為3的陣列,初始化請問char

為"abc",注意,它沒有通常的字串終止符'\0',因此這個陣列只是看起來像c語言中的字串,實質上卻不是,因此所有對字串進行處理的函式,比如

strcpy、printf等,都不能夠被使用在這個假字串上。

極品C 面試題

1,常量 與 唯讀變數 的區別 常量是編譯器放在記憶體中的唯讀區域,唯讀變數 在記憶體中開闢乙個區域存放它的值,編譯器限定不允許修改。2,const與 define的區別 const 限定乙個 變數 不允許被改變。可以提高程式安全性 可靠性。const編譯時進行安全型別檢查。意味著唯讀 錯誤 意味著...

C 面試題之i 面試題

i 面試題1.cpp 中國台灣某著名防毒軟體公司2005年10月面試題 int i 3,j 4 i?i j printf d d n i,j a.3 3 b.4 4 c.3 4 d.4 3 答案b i 面試題2.cpp 中國某著名計算機金融軟公司2005年面試題 int x 1,j 2 int k ...

C 面試題之sizeof面試題

sizeof面試題1.cpp what is the output of the following code?美國某著名計算機軟硬體公司面試題 include include include using namespace std structa structb int main 解析 ss1是乙...