腾讯WXG后台开发实习一面总结

今天下午结束了腾讯WXG的初试,下面做一个简单的总结吧!

首先是自我面试,我就随便介绍了一下。然后直奔我的项目来问,不过我很奇怪为什么单单对我的第三个项目很感兴趣,因为之前的面试基本上没人关注那个项目的(偏硬件加速方面的,SIMD、CUDA),所以我没有花太长时间准备那个项目。面试官问到一些比较深的我就说不上来了。

然后又简单问了我另外一个关于Ceph的项目,可能他对这个兴趣不是很浓厚,没有问太多,基本上说得很流畅,没有问什么问题。

下面就开始问技术问题了:

  • C++的malloc和new的区别

new是一个运算符,而malloc是一个库函数
new会自动计算需分配的空间(数组需要指定数量),而malloc需要指定大小
new会调用构造函数,而malloc不会
new会返回指定类型的指针,n也就是带有类型信息的,而malloc只是返回void*,需要强制转换

  • 虚函数的作用

虚函数是C++中用于实现多态的机制,核心理念就是通过基类访问派生类定义的函数。使用动态联编的方法,在运行时识别实例化的对象,然后调用指定的函数。

  • 如何实现虚函数的

每个对象有一个指针,存放了指向虚函数表的地址,虚函数表存储了为类对象进行声明的虚函数地址。比如基类对象包含一个指针,该指针指向基类所有虚函数的地址表,派生类对象将包含一个指向独立地址表的指针,如果派生类提供了虚函数的新定义,该虚函数表将保存新函数的地址,如果派生类没有重新定义虚函数,该虚函数表将保存函数原始版本的地址。如果派生类定义了新的虚函数,则该函数的地址将被添加到虚函数表中。

调用虚函数时,程序将查看存储在对象中的虚函数表地址,转向相应的虚函数表,使用类声明中定义的第几个虚函数,程序就使用数组的第几个函数地址,并执行该函数。

  • Linux程序突然core掉,如何处理

如果有日志文件的话,先看日志文件,看看是那个进程蹦掉了
通过gdb查看core文件,然后用bt命令查看函数的堆栈信息

最后是两道算法题,腾讯做算法题的方式是共享一个腾讯文档,然后在上面出题,我们只需要根据提出说出算法的思路就行了。

第一道题是求从二叉树中选择节点(每个节点携带一个值),求选择节点的最大价值,选择的时候只能选择互相不连通的节点。

想到了两种方法,但是都被否决了。面试结束之后想了想,应该用图论的方法,用一个数组表示节点是否连通,然后通过动态规划的思想求出最佳结果。

第二道题是求二叉树中两个节点的最近公共祖先节点,这个二叉树是一般二叉树,既不是搜索树也没有指向父节点的指针。

可以先找到两个节点的路径,保存到数组中,然后通过比较数组找到最近的公共祖先。

#腾讯春招##腾讯##实习##C++工程师##面经#
全部评论
祝通过
点赞 回复
分享
发布于 2020-03-20 17:22
楼主搞ceph得什么方向啊
点赞 回复
分享
发布于 2020-03-20 17:26
滴滴
校招火热招聘中
官网直投

相关推荐

8 39 评论
分享
牛客网
牛客企业服务