網易遊戲面試總結
阿新 • • 發佈:2020-11-04
先是電話面試:
自我介紹
問了專案上網路傳輸序列化是如何做到的。
伺服器崩潰常見問題定位
非同步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 voidprint(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問題解答
最終也是無緣網易,難受呀。