騰訊日常實習(勞務實習)

2020.6.29 14:30-15:20(50分鐘)

編程題

  1. 一個樹從根節點到葉節點表示一個數,比如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;
    }
    
  2. 一個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++虛函數

  1. vector和map的底層實現
  2. 稍微介紹一下紅黑樹
  3. vector和map的迭代器在什麼時候失效
  4. 虛函數表有關的機制
  5. 析構函數爲什麼要是虛函數
  6. 構造函數爲什麼不能是虛函數
  7. 智能指針,把知道的都說一下

操作系統

  1. 進程和線程的區別

  2. 進程切換和線程切換(進程切換不知道)

  3. 進程內存空間的分佈

  4. 說一下編譯、鏈接之類的(鏈接說的不好)

  5. 說下硬鏈接和軟鏈接的區別吧(說的不好)

  6. 你有用過什麼調試工具嗎?例如用來檢查有沒有內存泄漏

    我:我沒有過,這方面還沒有實踐過。。

計算機網絡

  1. TCP和UDP的區別

  2. 說下三次握手

  3. 要是接收方沒收到SYN怎麼辦:超時重傳

  4. TIME_WAIT知道嗎,說一下

  5. 你說你看了select/poll/epoll,說一下吧

  6. epoll怎麼實現那種回調的呢:不知道

  7. 假如服務端還沒有綁定端號和IP,這個時候SYN來了,怎麼辦

    我:返回一個錯誤,告知客戶端這邊服務器還未啓動

    面:返回的這個錯誤,是什麼形式,是http的狀態碼嗎?

    我:應該是狀態碼

  8. 假如是服務器主動放棄了SYN,會是什麼情況

    我:可能是連接太多,把端口號佔滿了?

    面:啊?

    我:(重複一遍)

    面:好吧

  9. 你有什麼想問我的

結束

我:大概多久能收到通知

面:我們會討論一下,之後說不定還有面試,有消息會第一時間通知你的

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