腾讯日常实习(劳务实习)

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. 你有什么想问我的

结束

我:大概多久能收到通知

面:我们会讨论一下,之后说不定还有面试,有消息会第一时间通知你的

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