【24年4月】腾讯QQ后台开发一面和二面(凉)
一面过了,二面挂了。
一面-45min
算法
- 求多个数组的交集
面试官让我先说思路,我说了两个
- 位图(需要说清楚,因为数组给的是INT32,那么我们就需要2的32比特的长度,需要开一个
2^32/64
长度的long long数组) - set
后来用set来写的。不难,先用一个数组创建一个set,再创建一个tempSet,然后遍历数组,得到两个数组的交集tempSet,set=tempSet
,直到遍历完毕全部数组。
八股
- 实习经历?巴拉巴拉随便说了下
- Linux用过那些命令?
- 磁盘满了怎么用命令看是哪一个文件夹占用的?(我说df可以看整个磁盘的占用,怎么找到某个文件夹就不知道了)
1、进入根目录:cd / 2、使用命令 : du -sh * 查看根目录下每个文件夹的大小 3、进入占用空间比较大的文件夹,然后再使用2中命令查找大文件。
- Linux下共享内存是什么(页表映射,我说用信号量来访问控制,面试官说信号量不是线程通信的吗,给我整慌了)
- TCP和UDP区别
- TCP粘包问题,为什么UDP没有
- UDP单个包的长度(UDP/IP都是16位,但是考虑到MTU,最好是1500-20-20)
- C++vector的内存管理(扩容策略)
- 线程/进程/携程区别
- 网卡收到一个数据到进程发生了什么(从下往上交付),有几次用户/内核态切换?(应该只有一次吧,不确定)
- 卡夫卡了解过吗?(nope)实习的时候项目有用到数据库吗?(没有,我顺便解释了一下实习干了什么,主要是补全单元测试,和数据库没啥关系)卡夫卡,MySQL、Redis了解哪一个(我说了MySQL)
- MySQL索引用的什么数据结构(B+)为什么不用B树(范围查询)
- Linux怎么实现高效的文件索引(不懂啊,我说一次性读取文件好过多次读取小字节)
反问
部门业务?QQ会员
二面
八股
- C++编译过程
- 编译出来的.O文件里面有几个?为什么两个.c文件会有两个.o,为什么不能是一个?(忘了)查了查,是因为这样可以方便分步编译,只需要重新编译有修改过的源文件就可以了,可以提高编译的速度
- .a和.so文件有什么区别?(动态库静态库)
动态库:运行时加载(可以由程序员控制),在内存中共享同一块空间,可以被多个进程使用。编译时只链接了动态库的符号表,可执行程序小,且方便独立更新库(增量更新)。缺点是运行环境中必须包含动态库。
静态库:编译时就被添加到了最终的可执行程序中,可以脱离于库文件而运行。缺点是静态库更新时,需要重新编译整个可执行程序,在进行软件更新的时候会很麻烦。
- 什么时候用动态库什么时候用静态库?区别?
- C++读写锁怎么实现的?(不知道,瞎蒙了个用计数器来实现)
- 计数器本身的操作要用互斥锁保证,互斥锁怎么实现的?(我说调用了系统原语,面试官追问底层汇编操作,不会)
- C++高版本新特性(说了几个14和17的)有没有什么性能提升的?(不知道,干)
- C++深拷贝是什么?
- 什么使用深拷贝?什么时候可以不用?(这里我提到了move移动构造)
- 实现一个LRU(共享屏幕用本地环境写的,写完之后说思路)
项目
随便问了点,不记得了
反问
- 技术栈(3年前开始转golang,服务都用腾讯云的)
- 问了我可到岗时间和可以实习的时间,还问了家在哪里。
二面前面的八股答的一塌糊涂,不出意外的G了
#暑期实习##腾讯#凉凉面试记录 文章被收录于专栏
笨蛋CPP选手记录的面经。