201909 腾讯后台开发 社招电话二面

电话一面是上周五。晚上8点左右,周三,图书馆自习,收到腾讯电话,面试官是企鹅电竞部门,说简单来个10分钟电面。面试基本上是说到哪问哪。以下是面试题目,顺序不分先后,供需要的同学参考下,参考答案有误请及时指出。

1. 构造函数可以是虚函数吗?

不可以。原因有两点:

  1. 构造对象的时候,必须知道对象的实际类型。而虚函数行为是在运行期间确定实际类型的,在构造对象的时,对象还没有构造成功,编译器无法知道对象的实际类型是该类本身还是其派生类。
  2. 虚函数的运行依赖于虚函数指针,而虚函数指针在构造函数中进程初始化,让它指向正确的虚函数表,而在对象构造期间,虚函数指针还未构造完成。

2. 网络字节序是大端序还是小端序?

大端序。

3. Linux中如何创建进程以及创建进程后如何区分子进程?

使用fork()调用创建子进程,fork()调用返回两个值,大于0的表示父进程,等于0的表示子进程。

4. fork创建的子进程继承了父进程哪些内容

子进程继承了父进程的地址空间,打开的文件描述符等。

5. fork创建的子进程继承了父进程打开的文件描述符,如何让这种继承不发生

可以在打开文件的时候,设置FD_CLOSEXEC标志位,如果文件描述符中这个标志位置位,那么调用exec时会自动关闭对应的文件。

6. c++虚函数原理

虚函数是依赖于虚函数指针实现,每个拥有虚函数的类都有一个虚表,类的对象存在一个虚函数指针,指向实际类型的虚表。虚函数运行的时候,会根据虚函数指针找到正确的虚表,从而执行正确的虚函数。

7. c++多态的实现

多态分为两种,一种是运行时的多态,一种是编译时的多态。前者称为动态绑定,后者称为静态绑定。动态绑定时由虚函数来实现,静态绑定是由函数重载来实现。

8. c++ vector和list的区别?

vector是动态数组,会动态进行分配内存,进行扩容操作。

list是双向链表。

9. 访问vector的迭代器的时候可以删减元素吗?list呢

任何对vector的修改都将导致vector的迭代器失效。

list因为是双向链表,所以不会失效。

10. c++ vector的底层实现原理

vector底层是基于动态数组实现。

12. c++ map的底层实现

map的底层实现是基于红黑树的。

11. 红黑树的特点以及常见的二叉平衡树

红黑树性能比较高,插入删除时间复杂度保持在logn。和AVL相比,要求不是那么严格,它只要求到叶节点的最长路径不超过最短路径的两倍。相比之下,AVL要求左右子树相差高度不超过一,简单的插入或者删除都会导致树的不平衡需要旋转操作。

(我只说这么多,后来的同学建议说下红黑树的五个特点)

11. c++空类的sizeof大小

c++空类的大小为1,如果含有虚函数的话,大小为指针的大小。32位系统指针大小是4。

c++要求即使是空类,对象也要有存储空间。含有虚函数的空类则是因为对象由虚函数指针。

13. 快速排序的时间复杂度

快速排序平均时间复杂度位nlogn,最差O(n^2)

14. nLogn是排序最好的时间复杂度吗?

不是,还有O(n)的算法,比如说基数排序。

15. 基数排序的原理以及应用

基数排序根据一个数的高低位进行排序。应用不知道,缺点是对负数的处理不太好。

16. 介绍负载均衡的应用

不知道。

17. http协议有用过吗?

这个没用过。

18. protobuf协议

我们公司之前使用的是json协议,没有用过protobuf协议。

19. 数据库

没用过。

20. redis

这个是自己学习使用的,生产环境没用过(这里说了下,我用它干嘛的,使用python的flask web框架基于redis的list结构开发一个网络聊天程序)

21. 解释线程安全和可重入函数

这个是关于多线程访问的吗?可重入函数这个名词听过,但是忘记干啥了,面试官说pass.

(一个可重入函数被称为可重入的,表明该函数被重入之后,不会产生任何不良后果,一个函数被重入,表示这个函数没有执行完成,由于内部原因或外部原因调用,又一次进入该函数执行)

22. top的命令cache和buffer区别

这个平常没有关注过。

(buffer是块设备的读写缓冲区,比如磁盘,cache是文件系统的缓存,常用于文件)

23. 常见Linux命令是否用过,比如strace和netstat

这个有用过,strace用来跟踪程序的执行,top查看内存,以及tcpdump等进行抓包等等。

24. 多个动态库的连接顺序有区别吗,顺序怎么排

有顺序的,如果顺序错误的话可能导致编译失败。这里的编译顺序应该是被依赖的库放在后面。

(这个我之前工作中遇到这个坑,所以知道。不过当时面试的时候,把顺序忘了)

25. 智力题,100本书,两个人轮流拿,每次拿1~5本,你先拿,有没有啥策略可以保证你可以拿到最后一本?

这个我承认,智力题不是我的强项,每次遇到的话都要N天才思考明白( ̄_ ̄|||),当时考虑了大概30秒,想着100本这么多,要不先来10本试试,我一本,他一本,我一本.......挣扎了几秒,老实承认,没想到啥好方法。

(此题解法可以是先手拿4本,后续双方每次拿6的倍数,这样可以保证最终可以拿到最后一本)。

通过上述题目可以看出,腾讯考察范围还是相当广的,包括操作系统、计算机网络、算法与数据结构、编程语言,数据库等等。对于软件工程的全面性要求比较高。面试前一定要做好充足准备。然后祝大家一切顺利,拿到自己心仪的offer。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值