【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选手记录的面经。

全部评论

相关推荐

刚刚笔试4道题只过了两道半,感觉悬了,第二题dp死活只有50%准确率,用dfs又超时了,当时一紧张完全忘了还能加memoization,唉,就是下面这道题,第二题挣扎了1个多小时导致第四题一点没碰,最后交卷前看了一眼好像不太难,亏死了你来到了一个迷宫,迷宫共有 n 关,每关有左侧和右侧两个宝箱,左侧宝箱的收益为 a_i,右侧宝箱的收益为 c_i。在每次只可以选择一个宝箱,然后到达下一关。当你在选择宝箱时,如果和上一关选择宝箱的方位相同则无损失。如果上一关选择了左侧宝箱,而这一关想要切换到右侧宝箱,那么需要支付 b_i 代价;如果上一关选择了右侧宝箱,而这一关想要切换到左侧宝箱,那么需要支付 d_i 代价(必须在进入下一关之前切换)。有些宝箱的收益和切换代价可能是负数!可以理解为,代价为负值相当于收益。你想知道,当通过 n 关后,总收益的最大值是多少?输入描述:本题为多组测试数据,第一行输入一个正整数 T(1 ≤ T ≤ 100),代表测试数据组数。对于每组测试数据,第一行输入一个正整数 n(1 ≤ n ≤ 1000),代表关卡数量。接下来有 n 行,每行四个整数 a_i, b_i, c_i, d_i(-100 ≤ a_i, b_i, c_i, d_i ≤ 100),具体代表题意中所述的数值。这道题dp怎么做,java输出描述:对于每组测试数据,输出一个整数,代表从小红总收益的最大值。
投递携程等公司10个岗位
点赞 评论 收藏
分享
12 20 评论
分享
牛客网
牛客企业服务