1. 程式人生 > 實用技巧 >網易遊戲面試總結

網易遊戲面試總結

先是電話面試

自我介紹

問了專案上網路傳輸序列化是如何做到的。

伺服器崩潰常見問題定位

非同步IO有沒有了解(ICOP/EPOLL)

xxxx有沒有用到過


接著是現場二面,二面掛了

二面同樣是自我介紹

問專案,伺服器架構這些老生常談

接著出了兩道題

問題1:

給定一個數組,刪除偶數項,要求空間複雜度儘可能小
void delete(int *a, int n) {}
補充函式體

  

 1 問題2:
 2 
 3 #include <iostream>
 4 
 5 using namespace std;
 6 
 7 class Base
 8 {
 9 public
: 10 Base() {}; 11 ~Base() {}; 12 13 virtual void print(int m = 100) { 14 std::cout << a + 1 << std::endl; 15 } 16 public: 17 int a = 0; 18 }; 19 20 class Derived : public Base 21 { 22 public: 23 Derived() {}; 24 ~Derived() {}; 25 26 virtual void
print(int n = 101) { 27 std::cout << b + 2 << std::endl; 28 } 29 30 public: 31 int b = 1; 32 }; 33 34 35 36 37 int main() 38 { 39 Base* base = new Derived[10]; 40 base[7].print(); 41 /*Base* base = new Derived(); 42 base->print();*/ 43 return 0; 44 }

根據以上程式碼:
輸出什麼值?
最終在這裡翻車,這道題考得很深入。

 1 問題1是典型的原地演算法
 2 思路就是使用快慢指標,從後往前拷貝,一邊迴圈即可完成
 3 大致虛擬碼
 4 
 5 for(int i=0; i<n; i++) {
 6     if(是偶數) {
 7         nSlow++;
 8         a[nSlow] = a[i];
 9     }
10 }
11 
12 問題2建議先思考,然後在編譯器裡執行一下看看
13 考察點比較多
14 虛擬函式表
15 虛擬函式預設引數
16 基類指向子類陣列問題
17 
18 
19 這段程式碼執行會崩潰
20 因為基類佔用8個位元組,派生類12個位元組
21 基類往後偏移7個物件,7×8=56 並不是一個有效的物件
22 base[3]可以正常訪問,因為3×8=24=12×2
23 
24 然後解決輸出的問題
25 派生類實現了基類的虛擬函式,此時基類的函式就被隱藏
26 因此是呼叫 derived.print()
27 然後預設引數不會被派生類修改,還是用的建立物件的預設引數
28 也就是m=100
問題解答

最終也是無緣網易,難受呀。