華爲筆試題(5道)

1、寫出newmallocdeletefree的區別
從面向對象來說,new/deletemalloc/free的區別是:malloc/free只是單純的進行內存空間的分配和釋放,而使用new /delete時,不僅分配了內存空間,若new/delete的是一個類,還會調用類(經測試,基本類型好像不會進行默認初始化)的構造函數或析構函 數。

簡單來說,兩者的區別主要有:
1. mallocfreeC++/C語言的標準庫函數,new/deleteC++的運算符,與”+“”-“”*“”/“有一樣的地位。
2. new/delete是可以重載的,而重載之後,就成爲了函數。
3. malloc在申請內存的時候,必須要提供申請的長度,而且返回的指針是void*型,必須要強轉成需要的類型。
4. new/delete在類中被重載的時候,可以自定義申請過程,比如記錄所申請內存的總長度,以及跟蹤每個對象的指針。
5. new/delete,其實內部也調用了malloc/free

兩者的共同點有:

· 1. 都必須配對使用,防止內存泄露。

· 2. 都可用於申請動態內存和釋放內存,都是在堆中分配內存。

· 3. freedelete可以釋放NULL指針。

2、寫兩個繼承類,解釋虛表指針和虛表的作用

· 每一個類都有虛表。

· 虛表可以繼承,如果子類沒有重寫虛函數,那麼子類虛表中仍然會有該函數的地址,只不過這個地址指向的是基類的虛函數實現。如果基類有3個虛函數, 那麼基類的虛表中就有三項(虛函數地址),派生類也會有虛表,至少有三項,如果重寫了相應的虛函數,那麼虛表中的地址就會改變,指向自身的虛函數實現。如 果派生類有自己的虛函數,那麼虛表中就會添加該項。

· 派生類的虛表中虛函數地址的排列順序和基類的虛表中虛函數地址排列順序相同。

3、寫出static的用法和作用

static C++中很常用的修飾符,它被用來控制變量的存儲方式和可見性。函數內部定義的變量,在程序執行到它的定義處時,編譯器爲它在

棧上分配空間,大家知道,函數在棧上分配的空間在此函數執行結束時會釋放掉,這樣就產生了一個問題: 如果想將函數中此變量的值保存至

下一次調用時,如何實現? 最容易想到的方法是定義一個全局的變量,但定義爲一個全局變量有許多缺點,最明顯的缺點是破壞了此變量的

訪問範圍(使得在此函數中定義的變量,不僅僅受此函數控制)。 需要一個數據對象爲整個類而非某個對象服務,同時又力求不破壞類的封裝

,即要求此成員隱藏在類的內部,對外不可見。
4、寫出計算機的存儲器層次,及原因

以處理器爲中心,計算機系統的存儲依次爲寄存器、高速緩存、主存儲器、磁盤緩存、磁盤和可移動存儲介質等7個層次。距離處理器越近的存儲工作速度越 高,容量越小。其中,寄存器、高速緩存、主存儲器爲操作系統存儲管理的管轄範圍,磁盤和可移動存儲介質屬於操作系統設備管理的管轄範圍。
5、寫出對windows中的句柄的理解

所謂句柄實際上是一個數據,是一個Long (整長型)的數據。

句柄是WONDOWS用來標識被應用程序所建立或使用的對象的唯一整數,WINDOWS使用各種各樣的句柄標識諸如應用程序實例,窗口,控制,位圖,GDI對象等等。WINDOWS句柄有點象C語言中的文件句柄。

 由“名企筆試題庫”收集整理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章