腾讯IEG后台开发实习(C++)面经
自我介绍
985本科软件工程,有过一段字节iOS的面试经历(拿到offer但还没实习)。因为本来有读研的打算,所以原本拿到字节实习offer之后就打算不再面试了,但是在字节hr面当天收到腾讯的面试邀请,之后便抱着“多一次面试不亏,被刷就算了”的心态踏上鹅厂面试的路。
面试总结下来的话,我感觉自己可能比较幸运,遇到的问题相比起牛客网内其他人的题,我感觉简单很多。其中考察比较多的是计算机网络,尤其是select/epoll。对比字节、鹅厂两家公司面试体验的话,字节的面试官比较温柔,腾讯的面试官虽然有些压力面,但是一直在引导我回答问题,并给了我一些读研和工作选择上的指点。
其实我觉得能过,很大部分原因也是因为学校名气和我自己绩点还可以的功劳,如果单看计算机技术,我可能一面就gg了。也是在面试的过程中,动摇了自己,重新审视是否读研(我大概是能保研的,大家可以给点建议www)。
腾讯IEG后台开发(共四面)
一面
- 手写:void memcpy(const void* pSrc, void *pDst, unsigned_t length)
 - 手写:快排
 - C++多态是什么,底层原理是什么(回答了虚函数的底层原理,忘记说静态多态:重载),然后让我拿画图软件画给他看
 - TCP三次握手,三次握手中第二次握手的SYN和ACK可不可以分开发(我现在也没搞清楚)
 - 知道TCP的连包吗(没听清,大概吧,然后回答不知道,回头查了知道是黏包)
 - 知道epoll和select吗(一面没答出来,因为没听过。)
 - 说下TCP拥塞控制
 - 开放题:为什么井盖一般是圆形的
 
二面
- C++ struct和class的区别
 - 函数调用的过程,其中使用了什么寄存器。为什么函数参数入栈顺序从右到左
 - 宏定义和枚举的区别(枚举分不分配内存)
 - 宏定义和函数定义的区别
 - 堆和栈的区别
 - 进程和线程的区别
 - 为什么构造函数不能是虚函数,析构函数呢
 - new和malloc,delete和free的区别
 - select、epoll、epoll的区别
 - TCP黏包问题
 - 指针和数组的区别
 - 函数中参数存放在栈,进栈顺序,为什么这样子
 - MySQL存储引擎了解吗(MyISAM和InnoDB)
 - B+树了解吗
 - 说下预编译(预编译是什么?是预处理吗。之后我说的是预处理)
 - 保护头文件被多次包含的方法有哪些?
 - STL的map底层原理
 - vector底层原理
 - 全局变量和局部变量的区别
 - 开放题:中国有多少个加油站
 
三面
- 空类在编译期会做什么,会有什么函数,sizeof是多少
 - 如果只给你一个对象的指针,你怎么才能够调用构造函数(没搞懂在问什么,感觉是问构造函数除了new的时候,其他时候能被调用吗?乱回答了一个,回答的是写一个getInstance(),返回new className()的时候就会调用了。)
 - 虚继承底层原理
 - const char *和 char *const有什么区别,可以修改指针指向的是哪一个
 - 类中函数加const修饰有什么用,还是要想修改类成员属性该怎么办
 - STL用过哪些,vector如果超过容量底层会怎么处理
 - map底层,说下红黑树
 - TCP里有个状态叫TIME_WAIT说一下有什么用
 - TCP报文头部多少个字节,里面有什么字段
 - UDP报文大小有限制吗,发送的时候有顺序吗
 - UDP的不可靠说一下
 - 说一下TCP黏包,拆包
 - 说一下select,poll,epoll
 - 说下进程通信机制
 - Linux下共享内存怎么使用,说一下之前自己是怎么做的
 - linux命令如何查看磁盘内存(回答了du,面试官说这个用来看文件夹的,还有其他吗)
 - linux如何查看满足特定查询条件的文件数量(awk)
 - linux如何查看运行的进程,如果是特定进程呢(ps -ef | grep)
 - 说下gdb怎么调试运行中的程序
 - 说下数据库事务ACID
 - 说下数据库中锁的机制
 - 说下数据局事务隔离级别,MySQL默认级别是什么
 - 索引是什么,存储在磁盘吗,哈希索引比起B+树索引的缺点是什么
 - 开放题:全国每个月每个人平均剪发次数
 - 口述算法题:找出两个链表第一个重复的节点。
 - 算法题:两个栈实现一个队列
 - 你玩游戏吗
 - 平时学习是通过什么渠道?知道TCP/IP协议详解这本书吗
 - 职业规划
 
四面
- 介绍项目,哪个项目收获最多,团队合作中学会了什么
 - 说下C++代码重用的机制有哪些
 - 你最擅长的科目
 - 你玩游戏吗?(回答的王者荣耀),说下王者荣耀的数据同步怎么做到的(答不上)。
 - 那给你两天时间回去了解一下王者荣耀的数据同步问题。
 - 两天后接着:说下游戏同步机制吧
 - 你刚说到的网络延迟,那TCP为什么比UDP慢
 - 说下做游戏的时候帧同步和状态同步怎么选择吧
 - 考虑情境:一般现在的网络延迟100ms到200ms的样子,也就是说用户屏幕点击事件0.1s之后才会有响应,其实还是会被用户察觉,说下怎么优化?
 - 打算读研吗?读研和工作的选择?
 


