腾讯IEG后台开发实习(C++)面经

自我介绍

985本科软件工程,有过一段字节iOS的面试经历(拿到offer但还没实习)。因为本来有读研的打算,所以原本拿到字节实习offer之后就打算不再面试了,但是在字节hr面当天收到腾讯的面试邀请,之后便抱着“多一次面试不亏,被刷就算了”的心态踏上鹅厂面试的路。

面试总结下来的话,我感觉自己可能比较幸运,遇到的问题相比起牛客网内其他人的题,我感觉简单很多。其中考察比较多的是计算机网络,尤其是select/epoll。对比字节、鹅厂两家公司面试体验的话,字节的面试官比较温柔,腾讯的面试官虽然有些压力面,但是一直在引导我回答问题,并给了我一些读研和工作选择上的指点。

其实我觉得能过,很大部分原因也是因为学校名气和我自己绩点还可以的功劳,如果单看计算机技术,我可能一面就gg了。也是在面试的过程中,动摇了自己,重新审视是否读研(我大概是能保研的,大家可以给点建议www)。

腾讯IEG后台开发(共四面)

一面

  1. 手写:void memcpy(const void* pSrc, void *pDst, unsigned_t length)
  2. 手写:快排
  3. C++多态是什么,底层原理是什么(回答了虚函数的底层原理,忘记说静态多态:重载),然后让我拿画图软件画给他看
  4. TCP三次握手,三次握手中第二次握手的SYN和ACK可不可以分开发(我现在也没搞清楚)
  5. 知道TCP的连包吗(没听清,大概吧,然后回答不知道,回头查了知道是黏包)
  6. 知道epoll和select吗(一面没答出来,因为没听过。)
  7. 说下TCP拥塞控制
  8. 开放题:为什么井盖一般是圆形的

二面

  1. C++ struct和class的区别
  2. 函数调用的过程,其中使用了什么寄存器。为什么函数参数入栈顺序从右到左
  3. 宏定义和枚举的区别(枚举分不分配内存)
  4. 宏定义和函数定义的区别
  5. 堆和栈的区别
  6. 进程和线程的区别
  7. 为什么构造函数不能是虚函数,析构函数呢
  8. new和malloc,delete和free的区别
  9. select、epoll、epoll的区别
  10. TCP黏包问题
  11. 指针和数组的区别
  12. 函数中参数存放在栈,进栈顺序,为什么这样子
  13. MySQL存储引擎了解吗(MyISAM和InnoDB)
  14. B+树了解吗
  15. 说下预编译(预编译是什么?是预处理吗。之后我说的是预处理)
  16. 保护头文件被多次包含的方法有哪些?
  17. STL的map底层原理
  18. vector底层原理
  19. 全局变量和局部变量的区别
  20. 开放题:中国有多少个加油站

三面

  1. 空类在编译期会做什么,会有什么函数,sizeof是多少
  2. 如果只给你一个对象的指针,你怎么才能够调用构造函数(没搞懂在问什么,感觉是问构造函数除了new的时候,其他时候能被调用吗?乱回答了一个,回答的是写一个getInstance(),返回new className()的时候就会调用了。)
  3. 虚继承底层原理
  4. const char *和 char *const有什么区别,可以修改指针指向的是哪一个
  5. 类中函数加const修饰有什么用,还是要想修改类成员属性该怎么办
  6. STL用过哪些,vector如果超过容量底层会怎么处理
  7. map底层,说下红黑树
  8. TCP里有个状态叫TIME_WAIT说一下有什么用
  9. TCP报文头部多少个字节,里面有什么字段
  10. UDP报文大小有限制吗,发送的时候有顺序吗
  11. UDP的不可靠说一下
  12. 说一下TCP黏包,拆包
  13. 说一下select,poll,epoll
  14. 说下进程通信机制
  15. Linux下共享内存怎么使用,说一下之前自己是怎么做的
  16. linux命令如何查看磁盘内存(回答了du,面试官说这个用来看文件夹的,还有其他吗)
  17. linux如何查看满足特定查询条件的文件数量(awk)
  18. linux如何查看运行的进程,如果是特定进程呢(ps -ef | grep)
  19. 说下gdb怎么调试运行中的程序
  20. 说下数据库事务ACID
  21. 说下数据库中锁的机制
  22. 说下数据局事务隔离级别,MySQL默认级别是什么
  23. 索引是什么,存储在磁盘吗,哈希索引比起B+树索引的缺点是什么
  24. 开放题:全国每个月每个人平均剪发次数
  25. 口述算法题:找出两个链表第一个重复的节点。
  26. 算法题:两个栈实现一个队列
  27. 你玩游戏吗
  28. 平时学习是通过什么渠道?知道TCP/IP协议详解这本书吗
  29. 职业规划

四面

  1. 介绍项目,哪个项目收获最多,团队合作中学会了什么
  2. 说下C++代码重用的机制有哪些
  3. 你最擅长的科目
  4. 你玩游戏吗?(回答的王者荣耀),说下王者荣耀的数据同步怎么做到的(答不上)。
  5. 那给你两天时间回去了解一下王者荣耀的数据同步问题。
  6. 两天后接着:说下游戏同步机制吧
  7. 你刚说到的网络延迟,那TCP为什么比UDP慢
  8. 说下做游戏的时候帧同步和状态同步怎么选择吧
  9. 考虑情境:一般现在的网络延迟100ms到200ms的样子,也就是说用户屏幕点击事件0.1s之后才会有响应,其实还是会被用户察觉,说下怎么优化?
  10. 打算读研吗?读研和工作的选择?
#腾讯内推##腾讯##面经##实习##C++工程师#
全部评论
能保研建议保研。
1 回复
分享
发布于 2020-03-26 22:11
不去做算法的话建议早上车,后面形势会越来越不好。昨天我面teg挂了,面试官问的问题不走寻常路。
1 回复
分享
发布于 2020-03-26 22:26
联易融
校招火热招聘中
官网直投
还有你手写代码不多呀,真好!是因为本科生面试和研究生面试难度有区别吗?
1 回复
分享
发布于 2020-03-27 01:24
王者荣耀数据同步问题? 会不会和用户cookie有关?
点赞 回复
分享
发布于 2020-03-26 20:54
模板也算静多态吧
点赞 回复
分享
发布于 2020-03-27 00:03
为啥我腾讯云存储一面的面试问题跟你三面差不多,甚至更底层一些😅都把我问懵了,一面就这么底层,真心凉
点赞 回复
分享
发布于 2020-03-27 01:23
楼主四面是·hr面嘛🙃
点赞 回复
分享
发布于 2020-03-27 15:19
请问您是哪个工作室
点赞 回复
分享
发布于 2020-03-27 20:59
都是基础,没有问项目吗?
点赞 回复
分享
发布于 2020-03-29 13:14
读研的话一般实验室应该都是做深度学习,如果你喜欢算法岗就读研吧,读研期间多发论文,多打比赛。喜欢研发的话我觉得就没必要读吧,像我读研期间基本都在给老师做项目,没论文现在也找研发,水平跟我当初本科比我感觉也没提升很多。还有就是你可以看下有没有哪个老师比较放养,这样读研期间也可以继续实习,读研就当拿个硕士学位咯。
点赞 回复
分享
发布于 2020-03-29 13:38
算法岗竞争很激烈,如果不是特别有天赋或者想以后做科研就不要读研了吧,跟你是本科同专业后来保研本校的校友,现在蛮后悔的,因为本科读研有一半原因是想逃避,想再等等,现在发现如果都是做开发,本科跟研究生没有太大差别的,研究生还要背上毕业压力。
点赞 回复
分享
发布于 2020-03-31 23:14
楼主,问一下你从状态更到HR面,到进行HR面,大概用了多久呀?HR面后,多久官网刷新状态?多谢
点赞 回复
分享
发布于 2020-04-10 18:55

相关推荐

十几分钟的电话面试。    有的写了下回答,大伙指正一下+ 数学运算函数 + 字符串反转函数  + 处理字符串的类   + Java数据容器 集合都有哪些 LinkedList  HashTable(ConcurrentHashMap 代替其作为线程安全的锁. 使用分段锁)  TreeMap+ 多线程+ Spring 中的 AutoWired 和 Resource 的区别   AutoWired (参数 required  多一个构造器注入) 优先 byType   Resource(参数 name type  属性注入  setter注入) 优先 byName    优先 resource+ 断点续传怎么实现:保存进度,定位上次的上传位置+ 怎么进行数据库的优化 :一个复杂查询,语句报错,全量查询不报错,分析得知全量查询数据量太大,缓存区中的数据并没有报错。复杂查询查询到了异常数据。使用 explain 查询计划进行定位,确定报错位置,是某个表的某个字段出现了字符串不匹配的问题,有非法字符无法进行字符串转换(存的是数字字符串,要转换成数字后进行运算,无法改变数据类型,牵扯到其他业务),想修改数据,害怕影响其他业务,造成数据存坏或者污染,尝试对异常数据进行过滤处理。再有就是对于经常查询的字段加索引。+ 项目中哪里使用到了 redis  :redis 用来加速数据库数据的访问,我有一些数据太大了,因此访问的比较慢,加入了 redis 缓存。但是通过 jmeter 测试,发现有客户端阻塞卡顿的情况。原因就是 redis 是单线程,大 key,会阻塞 Redis。并且访问流量大,服务器也无法承受。最终分析该数据不是很敏感,还是选择了直接使用浏览器进行缓存。      session 共享 和 token 续期问题。 使用 有序集合实现延迟队列+ git 有一个开发版本,在开发版本(1)进行了一堆代码的开发,突然加了一个临时版本(2),如何将分支 1 上你的代码加入到版本 2 上,是用什么命令:使用 checkout 切换临时分支,使用 git merge 合并两个分支。解决冲突,拉取代码 上传代码+ SpringBoot 和 SpringCloud 讲一下
点赞 评论 收藏
转发
17 135 评论
分享
牛客网
牛客企业服务