2020.6.29 14:30-15:20(50分鐘)
編程題
-
一個樹從根節點到葉節點表示一個數,比如1->2->3表示123。把所有的數加起來。很簡單
int ans; void dfs(Tree* root, int a){ if(!root) { ans += a; return; } dfs(root->left, a*10+root->value); dfs(root->right, a*10+root->value); return; } int main() { dfs(root, 0); cout << ans; return 0; }
-
一個N+1大小的數組,裏面有1~N,外加一個重複的數,找出這個重複的數,時間複雜度O(n),空間複雜度O(1)。也比較簡單
int main(){ vector<int> v; for(int i = 1; i < 10; i ++) v.push_back(i); v.push_back(5); int i; for(i = 0; i < v.size(); i ++){ if(v[i] != i){ if(v[v[i]] == v[i]) break; swap(v[v[i]], v[i]); //cout << v[i] << ' '; i --; } } cout << v[i] << endl; for(int i: v) cout << i << ' '; return 0; }
STL和C++虛函數
- vector和map的底層實現
- 稍微介紹一下紅黑樹
- vector和map的迭代器在什麼時候失效
- 虛函數表有關的機制
- 析構函數爲什麼要是虛函數
- 構造函數爲什麼不能是虛函數
- 智能指針,把知道的都說一下
操作系統
-
進程和線程的區別
-
進程切換和線程切換(進程切換不知道)
-
進程內存空間的分佈
-
說一下編譯、鏈接之類的(鏈接說的不好)
-
說下硬鏈接和軟鏈接的區別吧(說的不好)
-
你有用過什麼調試工具嗎?例如用來檢查有沒有內存泄漏
我:我沒有過,這方面還沒有實踐過。。
計算機網絡
-
TCP和UDP的區別
-
說下三次握手
-
要是接收方沒收到SYN怎麼辦:超時重傳
-
TIME_WAIT知道嗎,說一下
-
你說你看了select/poll/epoll,說一下吧
-
epoll怎麼實現那種回調的呢:不知道
-
假如服務端還沒有綁定端號和IP,這個時候SYN來了,怎麼辦
我:返回一個錯誤,告知客戶端這邊服務器還未啓動
面:返回的這個錯誤,是什麼形式,是http的狀態碼嗎?
我:應該是狀態碼
-
假如是服務器主動放棄了SYN,會是什麼情況
我:可能是連接太多,把端口號佔滿了?
面:啊?
我:(重複一遍)
面:好吧
-
你有什麼想問我的
結束
我:大概多久能收到通知
面:我們會討論一下,之後說不定還有面試,有消息會第一時間通知你的