首页 > 字节跳动一面(感觉凉凉)
头像
牛客216035132号
编辑于 2020-07-27 16:49
+ 关注

字节跳动一面(感觉凉凉)

1.     自我介绍;

2.     进程地址空间;

3.     了解多态吗?虚函数底层?虚函数表是每个对象有一份还是每个对象有一份?虚函数表存放在哪个位置?

4.     了解编译原理吗?文本到可执行文件过程?

5.     讲一下静态链接和动态链接;既然动态链接内存中有一份,那多个程序都使用这个动态链接库,可以修改里面东西吗?

6.     了解网络吗?用过TCPUDP吗?TCPUDP区别;

7.     讲一下TCP通信socket,客户端和服务端都做了什么;

8.     服务端和客户端什么时候建立三次握手;

9. Listen有什么用?

10. TCP怎么确保可靠的;

11.  拥塞控制了解吗?讲一下;

12. Http了解吗?有哪些请求方法(忘了具体啥意思),回答(getposthead),能再详细具体讲下吗?

13. Https了解吗?

14.  数据库学过吧?知道哪些数据库?

15.  写一个sql吧,两个表,有一个字段相同,怎么找到交集; join

16.  数据结构了解一下吧?vector讲一下;

17. STL用过吧,有哪些,底层实现;

18.  二叉树有哪些遍历方法?

19.  二叉平衡树和二叉树区别?

20.  (二叉平衡树了解不多)那你讲一下红黑树,为什么用红黑树不用二叉平衡树;

21. B树和B+树,那和二叉平衡树区别;

22.  两个编程题:
寻找重复数
 //空间复杂度O(n)
    // int findDuplicate(vector<int>& nums) {
    //     unordered_set<int> temp;
    //     for(int val : nums){
    //         if(temp.insert(val).second == false){
    //             return val;
    //         }
    //     }
    //     return -1;
    // }
    //思路1:用快慢指针判断:创建两个指针slow和fast同时指向头节点,
    //      然后slow每次向后遍历一个节点,fast每次向后遍历两个节点,如果单链表没有环的话那么slow
    //      将永远追不上fast,而如果单链表有环的话slow就会追上fast。第一次相遇之后,把指针slow拉回到链表的起点,
    //      然后把fast的速度改为每次走一步即和slow速度相同,fast把第一次相遇点作为起点,
    //      那么当slow和fast再次相遇的点就是圈的起点 https://blog.csdn.net/weixin_39789689/article/details/82421684
    // int findDuplicate(vector<int>& nums){
    //     int fast = 0,slow = 0;
    //     do{
    //         fast = nums[nums[fast]];
    //         slow = nums[slow];
    //     }while(fast != slow);
    //     slow = 0;
    //     while(fast != slow){
    //         fast = nums[fast];
    //         slow = nums[slow];
    //     }
    //     return slow;
    // }
    //silu2:采用二分法,先计算mid,然后统计数组中小于等于mid元素个数K,若K<=mid说明重复值在[mid+1,n]之间,否则
    //       重复值在[1,mid],使用抽屉原理,是由于重复元素导致两遍不平衡,如果无重复元素,两边个数是一样的,
    //       然后依次类推,直到搜索完成,此时的low就是我们要求的重复值。
    int findDuplicate(vector<int>& nums){
        int l = 0, r = nums.size();
        int m = 0;
        while(l < r){
            m = l + (r - l) / 2;
            int count = 0;
            for(int i = 0; i < nums.size(); ++i){
                if(nums[i] <= m){++count;}
            }
            if(count <= m){
                l = m + 1;
            }
            else{
                r = m;
            }
        }
        return l;
    }
实现一个计算器 + - * / ()

本帖面试题已收录至模拟面试房间

开始模拟面试

更多模拟面试

全部评论

(6) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐