金科文化面試

        現在程序員都這麼不值錢了麼。招一個有遊戲經驗,而且相同框架的程序猿,都不高出30%(也可能是我太菜了)。生活太難,不加薪,股市也不賺,程序員該何去何從。

     言歸正傳。在面試的時候,主程的確很吊,對我單方面碾壓。碰到了幾個問題。簡單記錄。

 

1.你們服務器redis是用來做什麼的。

       排行榜之類的,具體不是我做的,我不太清楚(面試官應該是想問我關於redis的東西,奈何我沒用過)。

2.你們服務器全局郵件是怎麼實現的(給每個註冊的玩家發一封郵件)。

       1*1.1 (level-1)+(level%5), (level-1)+(level%5)代表次方。

3.現在要你做一個在線活動,你怎麼做。

       我之前的做法是每個agent會開一個定時器來計時,面試官要求不用定時器,則可以在登陸的時候記錄時間,讓客戶端自己倒計時,時間夠了則向服務端請求,服務端通過判斷請求時間與登陸時間的間隔來判斷是否可以領取,這樣則不用定時器。

4.現在有一個劍士,從1級升到2級需要100的經驗,2級升到3級需要之前升級經驗的110%,之後都這樣,然後每5級再加10%的經驗(比如3級到4級要100經驗,則4級到5級需要100*110%*110%),寫一條公式,傳入等級,返回需要的經驗。

       我沒有寫出公式(果然學好數據即可,別的根本不用學),而是用循環寫了一個函數,面試的時候怕他等太久了,這道題難點在於每五級的處理。最後面試官說你用循環也可以,但是效率會慢一點,可以分兩位維度考慮,一般每級的經驗另外算,每五級的經驗另外算。

5.map是怎麼實現的。

        我沒能回答,因爲真沒了解過,回來後查詢到得到結果,http://blog.csdn.net/a29562268/article/details/54604572 linux map結構,採用linux紅黑樹做數據的儲存結構,紅黑樹綁定適配器達到數據旋轉遞增或者插入的保存效果(還沒看,以後再看,雖然不知道以後會不會看)。

6.lua的table有哪些特性。

         table的負值是淺拷貝,table中還有一些機制,比如垃圾回收,原表,通過原表還能夠實現類與對象的操作。

7.說說你對lua原表的理解。

         原表其實是lua表的方法表,設置原表後,就相當於關聯了這個方法表,當在表中查找查找key查找不到時,會查找原表(就是對應的原方法),如果原表中原方法對應的值是值,則返回值,如果是方法則返回方法,如果是表則返回這張表對應的key。

7.vector 和 list的區別。

         vector的內存是連續的,對於存取,查找的相關操作效率很高,但是因爲是連續的內存,在中間進行插入和刪除的時候,會涉及到內存的拷貝、在內存不夠的時候,也會重新申請一個當前2倍大小的內存,並進行內存的拷貝,這些都會影響vector的效率。

         list是用雙向鏈表實現的,因爲空間是非連續的,查找,存取效率沒有vector高,但是能夠很好的支持任意地方的插入和刪除

8.還問了我們框架上的一些問題,例如我們的多個服務器是怎麼通信的、消息怎麼轉發、玩家是怎麼登陸的、當多條消息同時要求修改玩家財富的時候怎麼辦。

 

       面試的之後的體驗就是,還是得重視自己的基礎,我已經一年沒用C++了,如果做服務器開發C++還是很重要的,另外要對自己現在使用的框架各個方面都要非常熟悉,再熟悉一些主流的數據庫。面試最後是通過了,但是並沒有能加多少薪水,最後放棄。

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