【面試】極品C++面試題

來源:互聯網
上載者:User

 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等,都不能夠被使用在這個假字串上。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.