參加了今日頭條的H5遊戲開發面試 主要是如下問題html
一、egret有幾種屏幕適配方案git
Egret 目前支持的模式有:showAll
, noScale
, noBorder
, exactFit
, fixedWidth
, fixedHeight
, fixedNarrow
, fixedWide
。github
詳細講參考 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的文件夾,即大功告成:
四、控件位置擺放與錨點
每一個顯示對象都包含一個錨點,錨點默認位於顯示對象的左上角。
當設置一個顯示對象的座標位置時,會以錨點爲參照改變顯示對象的繪圖位置。同時,錨點相對於顯示對象的位置也是能夠改變的。
可經過anchorOffsetX
和 anchorOffsetY
屬性訪問修改錨點的位置。
五、打包圖集的深刻理解,爲何性能好
使用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協議就是在正式通訊前沒必要與對方先創建鏈接,無論對方狀態就直接發送
九、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
弗洛伊德算法
十一、簡單算法
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二、對渲染優化的理解