cocos2d-x面試題總結

Cocos2d-x遊戲開發面試題總結c++

C++部分:面試

1.c與c++有什麼不用之處?數組

       C和c++最主要的區別在於它們解決問題的思想方法不同,c解決問題的方法,主要是經過一個過程,對輸入進行運算處理獲得輸出,而對於c++,解決問題的思想主要是構造一個對象模型,讓這個模型可以契合與之對應的問題域.這樣就能夠經過獲取對象的狀態信息獲得輸出.總的來講就是c++在c的基礎上拓展了面向對象的內容,如類/虛函數/繼承/模板等等.安全

2.c++有什麼特色?數據結構

              A.c++是c語言的超集。它即保持了c語言的簡潔、高效、和接近彙編語言等特色,又克服了c語言的缺點,其編譯系統能檢查更多的語法錯誤,所以c++比c語言更安全。函數

              B.c++保持了與c語言的兼容。絕大多數c語言程序能夠不經修改直接再c++環境中運行,用c語言編寫的衆多庫函數能夠用於c++程序中。工具

              C.支持面向對象程序設計的特徵。C++即支持面向對象的程序設計,又支持面向對象的程序設計命令行

              D.c++程序在可重用性、可擴展性、可維護性和可靠性等方面都較c語言獲得了提升,使其更適合開發大中型的系統軟件和應用程序。設計

              E.c++設計成靜態類型、和c一樣高效且可移植的多用途程序設計語言。指針

              F.c++設計成儘量與c兼容,藉此提供一個從c到c++的平滑過渡。

3.你怎麼理解c++的函數模板?

所謂函數模板,實際上就是創建一個通用的函數,其函數類型和形參類型不具體指定,用一個虛擬的類型來表明,這個通用的函數就稱爲模板函數,凡是函數體相同的函數均可以用這個模板來代替,沒必要定義多個函數,只需再模板中定義一次便可,在調用函數時系統會根據實參的類型來取代模板中的虛擬類型,從而實現了不一樣函數的功能。

 

 

 

4.你如何理解c++的指針?

       本質上講指針也是一種變量,普通的變量包含的是實際的數據,而指針變量包含的是內存中的一塊地址,這塊地址指向某個變量或者函數,指針就是地址,指針就是一個指示器,它告訴程序在內存的那一塊區域能夠找到數據。

       指針的內容主要包括4部分:指針的類型、指針指向的類型、指針的值、指針自己所佔有的內存區,例如:Int* p;p就表示一個指針,指針的類型是int*,指針指向的類型是int,指針的值是指指針所指向的內存區域的地址,就是指針自己存儲的數值。指針自己所佔有的內存區是指針自己佔內存的大小,在32位的平臺裏,指針自己佔據了4個字節的長度。

5.在什麼狀況下會用獲得指針?

       A.當你須要獲取地址時,必須使用指針。

       B.當在傳遞參數時,多數要使用指針

       C.使用new關鍵字建立的內存必須使用一個指針指向操做

       D.在使用鏈表時,須要使用指針。

6.使用指針有什麼好處?

       A.指針能夠申請不連續的數據存儲空間,而數組是連續的,若是數組空間沒有所有佔用,就會形成浪費,可是指針就不會這樣,由於它是用多少就申請多少。

       B.使用指針還能夠建立數據結構,如鏈表、二叉樹,來進行一些快速查找、快速刪除的操做。

7.什麼是面向對象?

       對同類的事物抽象出相同的部分,造成類。類中的大多數數據只能用本類的方法進行處理,類經過一個簡單的外部接口與外界發生關係,對象與對象之間經過消息進行通訊。

8.引用和指針的區別?

       A.指針是一個變量,只不過這個變量存儲的是一個地址,指向內存中的一個存儲單元;而引用跟原來的變量實質上是一個東西,只不過是原變量的一個別名而已,

       B.能夠有const指針,可是沒有const引用。

       C.指針能夠有多級,可是引用智能有一級。

       D.指針的值能夠爲空,可是引用的值不能爲空,而且引用在定義的時候必須初始化。

 

       E.指針的值在進行了初始化後還能夠改變,使其指向其餘的存儲單元,而引用在初始化後就不會改變了。

       F.聲明一個引用,不是新定義一個變量,他只表示該引用名是目標變量名的一個別名,它自己不是一種數據類型,所以引用自己不佔存儲空間,系統也不給引用分配存儲單元。因此,當sizeof(引用)的時候,實際上求得是所指向的變量的大小,而sizeof(指針)的時候,求的則是指針自己的大小。

       G.指針和引用的自增(++)運算意義不同

 

Cocos2d-x部分:

  1. 內存管理採用什麼機制?

 

  1. Cocos2d-x怎麼實現跨平臺?

 

  1. Cocos2d-x3.0版本有什麼特性?
    1. 把以前版本中使用的不少OC模式改成了c++模式。
    2. 去掉全部CC前綴,由於已經有了cocos2d這個命名空間了。另外再也不使用匈牙利命名法
    3. 增長了模板容器cocos2d::vector<>和cocos2d::map<>。其實就是把標準庫中的容器再封裝了一下。另外還廢棄了CCObject對象。Cocos2d-x也再也不使用這個基類對象
    4. 使用命令行的方式建立新的工程,而且這個工具是跨平臺的。也就是說,能夠再不一樣的平臺下使用相同的命令行方式來建立工程。
    5. 再也不使用SpriteBatchNode來提升渲染效率了。Sprite能自動處理批量渲染工做。
    6. 原來的三種lable如今3合1了,直接用Label就行,新的Label支持描邊。陰影、熒光等特效。
    7. 移除了一些與平臺相關性的代碼,因此更易於維護和擴展
    8. Node的變形直接採用了4*4的矩陣而不是之前的2*3的矩陣。所以能夠設計2.5D的遊戲。
    9. 一體化的事件分發器:能夠處理全部事件:好比:用戶事件。Touch事件。鍵盤事件、加速器事件等,舊的事件分配器被廢棄。

10. 添加了一些新的UI空間。如:bullet、layout、pageView、ScrollView、Silder。

11. 雖然3.0有不少新的接口。但老的接口任可使用。只是會註明已廢棄。

 

12. Release和autorelease有什麼區別?

 

13. C++新特性:

相關文章
相關標籤/搜索