腾讯游戏客户端面经
腾讯光子工作室 一面
约1小时
自我介绍
怎么学习c++的,看了哪些书
(自学,c++primer,efficient c++等)
为什么想做游戏客户端
(技术栈相关,喜欢)
八股
1.对象的内存结构,考虑哪些因素
(虚函数,虚基类,字节对齐,继承体系)
2.字节对齐
3.32位和64位下一些数据大小的区别
(举例long,追问指针大小,没答上来)
4.位域
(知道但不了解)
5.为什么要做字节对齐
(CPU定长读取数据)
6.构造函数中调用虚函数相关
(可以调用但不应该,构造时仍为父类,顺便提出析构函数也是类似情况)
7.为什么析构函数是虚函数
(保证完全的析构,避免内存泄漏)
8.set和map底层
(红黑树)
9.红黑树的了解
(4阶b树的一种实现,对avl平衡条件的弱化,根节点到叶节点经过相同数量的黑色节点)
10.红黑树与avl的区别
(红黑树减少旋转次数)
11.哈希表的了解
(哈希函数计算索引,o(1)查询)
12.如何减少和处理哈希冲突
(取质数长度,开链表与二次探测)
13.内联函数的了解
(将函数在调用处展开)
14.内联展开能够从什么地方提高效率,从函数传参考虑
(减少参数拷贝操作,被纠正是减少了栈调用)
15.什么时候进行内联
(编译期)
手撕
最长不重复子串 讲思路
(滑动窗口+哈希去重)
项目
渲染引擎项目
1.如何搭建渲染管线
(讲述主要流程)
2.对渲染做了哪些优化
(通过批处理减少drawcall次数)
3.事件系统是怎么实现的
(逐层传递,触发事件)
4.日志系统做了哪些工作,是否考虑日志io
效率,是否采用多线程处理
(使用spdlog库,分模块产生log,通过变量开启与关闭部分模块log,实现时没有考虑性能优化)
目前所在城市,意向城市
反问
1.ue和unity的未来趋势
(取决于使用场景,底层原理相似)
2.未来的学习路线
(评价学习能力与实践能力不错,继续加深基础,游戏demo并不太重要,建议学习ue,了解源码与底层原理)
3.工作中ue和unity哪个使用比较多
(fps中使用ue较多)
跟面试官聊得还可以,但是感觉自己一些地方答得有点混乱,一些深层的东西说的不完全,可能总体感觉比较平庸
已寄
#腾讯游戏实习##游戏客户端开发#