腾讯云智

一面:

C++怎么处理内存泄漏

C++ 析构函数为虚函数

C++多态

C++构造函数是否可以为虚函数,是否可以调用虚函数(effective C++第二章)

Linux epoll

TCP为什么是安全的

TCP三次握手的作用,两次握手可能会导致历史连接建立、三次握手可以重置序列号、防止冗余连接(网络阻塞,客户端没有收到ACK报文,服务的会建立大量连接,两次握手情况下)

TCP滑动窗口,其弊端

服务端为什么会产生大量Time_wait状态,怎么解决

TCP拆包粘包

TCP快重传

写一个简单的String类,包含构造函数,拷贝构造函数,移动构造函数,拷贝赋值函数,析构函数,通过通过指针初始化

二面:

问项目

算法题目描述:

思路:4->3->2->1 最后一个数是否为24, 方法:递归,没刷到 GG

24点游戏 https://leetcode.cn/problems/24-game/

static constexpr int TARGET = 24;
    static constexpr int ADD = 0, MUTILPLY = 1, SUBTRACT = 2, DIVDE = 3;
    static constexpr double EPSILON = 1E-6;

    bool judgePoint24(vector<int>& nums){
        vector<double> ret;
        for(int x : nums){
            ret.push_back(x);
        }

        return solve(ret);
    }

    bool solve(vector<double>& l){
        if(l.size() == 0){
            return false;
        }

        if(l.size() == 1){
            return fabs(l[0] - TARGET) < EPSILON;
        }
        
        int n = l.size();
        for(int i = 0; i < n; ++i){
            for(int j = 0; j < n; ++j){
                if(i != j){
                    vector<double> temp;
                    for(int k = 0; k < n; ++k){
                        if(k != i && k != j){
                            temp.push_back(l[k]);
                        }
                    }

                    for(int k = 0; k < 4; ++k){
                        if(k < 2 && i > j){
                            continue;
                        }

                        if(k == ADD){
                            temp.push_back(l[i] + l[j]);
                        }
                        else if(k == MUTILPLY){
                            temp.push_back(l[i] * l[j]);
                        }
                        else if(k == SUBTRACT){
                            temp.push_back(l[i] - l[j]);                       
                        }
                        else{
                            if(fabs(l[j]) < EPSILON){
                                    continue;   
                            }

                            temp.push_back(l[i] / l[j]);
                        }

                        if(solve(temp)){
                            return true;
                        }

                        temp.pop_back();
                    }
                }
            }
        }
        return false;
    }
全部评论
兄弟收到二面了嘛
2 回复 分享
发布于 2023-03-17 19:44 湖北
兄弟啥时候投递的啊,我都没消息
点赞 回复 分享
发布于 2023-03-17 15:04 浙江
同学,你是几号投的简历啊
点赞 回复 分享
发布于 2023-03-17 21:10 湖北
春招吗qwq
点赞 回复 分享
发布于 2023-03-20 09:40 湖北
老哥,我咋一直初筛从3月8到现在
点赞 回复 分享
发布于 2023-03-20 09:42 北京
你好,问一下,收到面评是不是挂了?
点赞 回复 分享
发布于 2023-03-20 21:39 江苏
楼主好,请问一面会问项目吗
点赞 回复 分享
发布于 2023-03-21 11:20 湖北
三面完没消息了
点赞 回复 分享
发布于 2023-04-04 14:42 江苏
楼主 面的哪个岗呀
点赞 回复 分享
发布于 2023-04-23 15:27 山西

相关推荐

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;一直面试只能让你把会的背的更熟,但想进步还是得回头看看不会的问题。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;今天回顾一下我遇到的一些有价值的问题,结合我自己的一些理解对这些问题尝试解答一下,相信对大家一些知识的理解也会有些帮助(有问题的话欢迎指出)。有用的话感谢大家点赞收藏送花~1.(滴滴提前批二面)Vue开启了keep&nbsp;alive之后会经历哪些生命周期?缓存了什么东西?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这个点我自己是没有仔细思考过的,当时面试官提问vue的生命周期,我提到了Vue开启keep&nbsp;alive前后生命周期的不同,面试官拓展的问了这个问题。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;背八股的时候都背过,使用组件包裹后可以在切换路由的时候不必销毁组件。并且会多出两个生命周期:activated和deactivated。其中activated在组件渲染的时候执行,deactivated在组件隐藏时执行,因此将这两个生命周期对比mounted和beforeDestory来学习。组件在初次渲染的时候会经历从beforeCreate到mounted这整个阶段,在后续切换的过程中则只会经历activated,随后的beforeUpdate和updated都会经历,隐藏时经历deactivated,最后销毁的时候才会经历beforeDestory和destoryed。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;那么缓存了什么?我们知道在mounted阶段,虚拟DOM转为真实DOM,此时data,method,虚拟DOM都有了;而activated阶段可以不经历前面的钩子,直接挂载DOM,说明keep-alive缓存了虚拟DOM,并且还有所有的数据/方法,也就是缓存了组件实例。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果面试阶段没有见过这个题,可以从每个生命周期干了什么开始联想,其中走到mounted阶段拥有了什么,那么actived阶段就也会有这些。2.(4399一面)http1.1的情况下,一个网页的图片是一张一张加载还是一批一批加载的?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;首先回顾一下http1.1的特性:&nbsp;&nbsp;&nbsp;&nbsp;●&nbsp;默认长连接,新增响应头Connection:keep-alive字段,保持TCP连接不断开&nbsp;&nbsp;&nbsp;&nbsp;●&nbsp;管道化:基于上面长连接的基础,管道化可以不等第一个请求响应继续发送后面的请求,但响应的顺序还是按照请求的顺序返回&nbsp;&nbsp;&nbsp;&nbsp;●&nbsp;缓存处理:新增catch-control字段&nbsp;&nbsp;&nbsp;&nbsp;●&nbsp;断点传输机制。文件传输时如果遇到网络故障,可以从已经上传/下载好的地方继续请求,不用从头开始&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;其中第二点提到的管道化基本可以解答整个问题,虽然可以发送多个请求,但是返回的顺序还是有序的。因此虽然TCP最大连接数有6~8个,但是返回时还是顺序返回的。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;但是需要注意,如果严谨一点的话还是要考虑一下预加载的情况。例如,当浏览器解析到&nbsp;HTML&nbsp;中的标签时,它可能会提前发起对指定资源(包括图片)的请求,这样在真正需要显示该图片时,可能已经加载完成或者部分加载,从而在一定程度上出现看似一批加载的情况。3.(Minimax一面)eval和new&nbsp;Function的this指向问题:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eval的this指向可以看这篇,很详细:https://ayk.moe/articles/javascript-change-this-in-eval-function/index.html&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;简单的说:eval函数只要是在全局直接运行或者是通过一个函数调用执行、作为对象属性被调用执行这种间接的执行方式,他的指向都是全局作用域。他不能直接被call/bind/apply改变this指向,改变的思路是在eval外面包一层函数,改变外面这个函数的this指向。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;Function:使用&nbsp;new&nbsp;Function&nbsp;创建的函数,它的&nbsp;[[Environment]]&nbsp;指向全局词法环境,而不是函数所在的外部词法环境。因此,我们不能在&nbsp;new&nbsp;Function&nbsp;中直接使用外部变量。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果你对这块不熟悉,来看看这个:https://zh.javascript.info/new-function4.(Minimax二面)React:在if&nbsp;else里书写hooks,为什么不可以?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我用我自己比较容易理解的话术来简述一下关键原因,这里面的具体细节还是比较复杂的,有兴趣的牛u可以找找资料了解一下。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;react的fiber树有两颗:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;current&nbsp;fiber树:&nbsp;当完成一次渲染之后,会产生一个current树,current会在commit阶段替换成真实的Dom树(可以看成虚拟dom转真实dom)。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;workInProgress&nbsp;fiber树:&nbsp;即将调和渲染的&nbsp;fiber&nbsp;树。再一次新的组件更新过程中,会从current复制一份作为workInProgress,更新完毕后,将当前的workInProgress树赋值给current树。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;workInProgress&nbsp;tree上有一个memoizedState属性,在函数组件中,memoizedState在一次调和渲染过程中,以链表的形式存放hooks信息。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;每一个hook函数执行,都会产生一个hook对象,里面存放了hook的当前信息,然后会以链表的形式串联每个hook对象,并赋值给workInProgress的memoizedState。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;每次组件更新的时候,会先复制一份current&nbsp;tree到workInProgress&nbsp;tree,此时在workInProgress上进行更新。一旦在条件语句中声明hooks,在下一次函数组件更新,hooks链表结构,将会被破坏(某个节点可能被跳过),current树的memoizedState缓存hooks信息,和当前workInProgress不一致,如果涉及到读取state等操作,就会发生异常。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;以上很多是自己的理解,可能讲述不准确但有助于自己理解,欢迎评论区留言指出错误~#面经##前端##滴滴##4399##minimax##24届软开秋招面试经验大赏#
点赞 评论 收藏
分享
17 138 评论
分享
牛客网
牛客企业服务