H5遊戲開發面試經驗

參加了今日頭條的H5遊戲開發面試 主要是如下問題html

一、egret有幾種屏幕適配方案git

  Egret 目前支持的模式有:showAllnoScalenoBorderexactFitfixedWidthfixedHeightfixedNarrowfixedWidegithub

  詳細講參考 http://bbs.egret.com/thread-31286-1-1.htmlweb

二、常見的egret配置文件有哪些面試

  ①項目配置文件 egretProperties.json算法

  項目配置文件包含了項目編譯運行所須要的重要配製參數或選項:
  1.模塊配置modules:項目所須要的各個模塊
  2.原生打包設定native:適用於原生打包
  3.版本號egret_version:運行時的引擎版本,及最後打包是的引擎版本
  4.項目運行容器環境:整體分爲(Html5環境和Runtime/Native環境)
    通常都會在launcher目錄
    Html5環境:須要egret_require.js和egret_loader.js作配合
    【index.html】:調試啓動頁面
    【release.html】:發佈環境啓動頁面
    Runtime/Native環境:脫離HTML5環境,須要native_loader.js和native_require.js和runtime_loader.js作配合數據庫

  ②資源加載配置文件 default.res.jsonjson

  資源加載配置文件位於項目目錄的resource文件夾內,Egret項目在建立時已經包含該文件api

  配置文件中的」resource」咱們能夠視爲資源庫,當前遊戲使用到的資源均可以放到這裏瀏覽器

  ③主題配置文件 default.thm.json

  爲指定的組件配置默認皮膚,全局指定一次便可,以後直接實例化組件,再也不須要顯式設置組件的skinName屬性

  一般咱們但願更新版本的時候避免被瀏覽器緩存,如今能夠經過設置 EXML 版本號的方式來實現。

  ④清單文件 manifest.json 代碼清單

三、如何在egret中引用外部庫,外部庫是否參與打包

  外部庫是複製到lib下參與打包的

  1,首先在整個項目的外面創建一個第三方擴展庫的文件夾,而後將下載好的微信api的擴展庫粘貼到裏面;

  2,在項目的egretProperties.json文件中配置,modules字段是用來配置擴展模塊和第三方庫的

  

  前提是,下載的微信api的庫文件內的後綴爲json的文件裏面的 name屬性的值和該json文件的名稱相同,如,都是weixinapi 則egretproperties.json屬性文件中如上圖所示的配置,,而後 從新編譯項目 egret build -e,編譯的同時則會看見項目左側的libs庫目錄下多了weixinapi的文件夾,即大功告成:

  

四、控件位置擺放與錨點

  每一個顯示對象都包含一個錨點,錨點默認位於顯示對象的左上角。

  當設置一個顯示對象的座標位置時,會以錨點爲參照改變顯示對象的繪圖位置。同時,錨點相對於顯示對象的位置也是能夠改變的。

  可經過anchorOffsetXanchorOffsetY屬性訪問修改錨點的位置。

五、打包圖集的深刻理解,爲何性能好

  使用TextureMerger打包圖集,TexMerger把小圖合成大圖後,生成png+json,用ResDepot加載後,會自動切成小圖躺在資源庫裏任你在exml裏調用

  使用紋理集的好處不少,咱們經過將大量的圖片拼合爲一張圖片從而減小網絡請求,原先加載數次的圖片資源如今加載一次便可。 同時,在引擎渲染的時候也會較少IO讀取,從而提升性能。

六、九宮格的理解,哪裏會縮放,哪裏不縮放

  

  

  上圖中,用四條虛線將圓角矩形分割爲9個區域,其中四個區域(圖中區域編號1,3,7,9)包含了圓角矩形的四個圓角。拉伸圖像時,1,3,7,9區域不拉伸,2,8區域僅橫向拉伸,4,6區域僅縱向拉伸,5區域橫向縱向都拉伸。

  設置九宮格的屬性是 Bitmap 類中的 scale9Grid 屬性。

七、http的知識

  參看圖集http、三次握手

八、TCP和UDP的認識、websocket屬於tcp仍是udp

  TCP和UDP協議屬於傳輸層協議

  面向鏈接的TCP就是在正式通訊前必需要與對方創建起鏈接

  面向非鏈接的UDP協議就是在正式通訊前沒必要與對方先創建鏈接,無論對方狀態就直接發送

 
  詳細的理解和使用參看 https://blog.csdn.net/li_ning_/article/details/52117463

九、get和post的區別

  get參數經過url傳遞,post放在request body中。

  get請求在url中傳遞的參數是有長度限制的,而post沒有。

  get比post更不安全,由於參數直接暴露在url中,因此不能用來傳遞敏感信息。

  get請求只能進行url編碼,而post支持多種編碼方式

  get請求會瀏覽器主動cache,而post支持多種編碼方式。

  get請求參數會被完整保留在瀏覽歷史記錄裏,而post中的參數不會被保留。


  GET和POST本質上就是TCP連接,並沒有差異。可是因爲HTTP的規定和瀏覽器/服務器的限制,致使他們在應用過程當中體現出一些不一樣。
  GET產生一個TCP數據包;POST產生兩個TCP數據包。

十、A*尋路算法的理解

  參看http://www.sohu.com/a/191037466_478315

  弗洛伊德算法

  https://www.baidu.com/link?url=iar951HM2pVjKNTM8e8DOKfe8Aro0jHgcrOnKMJWQAiplf-yyUEC8ynHlk-T_E3Jb5L3xcU_tlv-1sqyhmEMIyacYohZ9GZzJA1iE_O7jmm&wd=&eqid=844e1cfd00002589000000035b8e3e18

十一、簡單算法

  

1     
     // 冒泡排序
     for(int i=0;i<arr.length-1;i++){//外層循環控制排序趟數 2       for(int j=0;j<arr.length-1-i;j++){//內層循環控制每一趟排序多少次 3         if(arr[j]>arr[j+1]){ 4           int temp=arr[j]; 5           arr[j]=arr[j+1]; 6           arr[j+1]=temp; 7         } 8       } 9     }

 

十二、經常使用數據庫

  數據庫資料參見 https://blog.csdn.net/github_39336148/article/details/80469708

1三、lua的知識  元表metatable和協程

  元表

  在 Lua table 中咱們能夠訪問對應的key來獲得value值,可是卻沒法對兩個 table 進行操做。

  所以 Lua 提供了元表(Metatable),容許咱們改變table的行爲,每一個行爲關聯了對應的元方法。

  例如,使用元表咱們能夠定義Lua如何計算兩個table的相加操做a+b。

  如何在遊戲中實際應用????

  詳細介紹參見

  http://www.runoob.com/lua/lua-metatables.html

  http://www.javashuo.com/article/p-pqksdupb-bt.html

  協程

1四、websocket的原理

1五、egret經常使用的資源文件類型

  ts文件 代碼文件

  json文件 配置文件

  png文件 圖片資源

  exml文件  皮膚文件

1六、tween動畫緩動類的理解

1七、OpenGL WebGL瞭解

1八、微信、facebook平臺接入問題

  一、拿到平臺提供密鑰和appid

  二、準備平臺須要的接口 如支付回調接口

  一、配置第三方庫sdk 如微信

  二、參照文檔使用第三方庫提供的接口

1九、js和ts的區別

20、哈希表的實現

2一、lua C++ JS TypeScript的學習

2二、對渲染優化的理解

相關文章
相關標籤/搜索