- 新增C++常见面经整理
-
- new / delete底层实现 (由全局函数operator new / delete实现,全局函数使用malloc和free)
- 如何不借助工具统计类内存泄漏情况:hook掉operator new / operator delete全局函数,增加创建时的堆栈信息链表,回收时删除
- 新增图形学面经学习
-
- 四种测试缓冲的顺序和功能(各种测试的相对顺序:裁剪测试->Alpha测试->模板测试->深度测试)
- Alpha测试影响性能原因:半透明物体无法使用early-Z功能(提前做深度测试以加速)。解决方法:PreZ算法
- 帧同步和状态同步
- 帧同步
- 帧同步的战斗逻辑在客户端;服务端只转发操作,不做任何逻辑处理。客户端按照一定的帧速率去上传当前的操作指令,服务端将操作指令广播给所有客户端。
- 缺陷:由于帧同步战斗逻辑都在客户端,服务器没有验证,会导致外挂问题
- 优化方案:乐观帧锁定、客户端预执行、指令流水线化、操作回滚
- 状态同步
- 把用户的操作作为输入实时上传到服务端,服务端通过计算返回结果给各个客户端。状态同步的战斗逻辑在服务端,在状态同步下,客户端更像是服务端数据的表现层
- 两种主要的同步手段:增量同步、RPC(远程过程调用)
- 缺陷:难做回放系统,延迟过大,客户端性能浪费,服务端压力大等
- 优化方式: 预测回滚、延迟补偿、插值
- 参加了第一次remote lab,实验没做完
- 实验基本内容:
- 静态分析:Strings检查exe文件可视字符串,PEViewer查看内部调用情况
- 简单动态分析:Process Manager查看恶意软件的操作,reg shotcut查看注册表执行前后变化
- 恶意代码分析实战 中文书学习
- 了解静态分析和动态分析基本内容,很巧复习了下PE文件(也就是C++win端可执行文件)基本格式,学到了运行时链接的第三种链接方法(一般只有静态链接和动态链接)
- 一半时间在问项目实现,包括做得很多的家园具体设计等。技术问题简单问了C++基础,算法题用非递归打印后序遍历。
- 整体感觉还好,没有答不上的问题。
- 反问:项目组是啥,地点在哪里,是不是lua写界面C++实现性能关键模块(是)。
- 讲了很多未来发展、行业看法、如何学习的非技术问题
- 详细聊了项目内容,包括游戏工具制作、整包管理、版本控制、补丁制作和检查处理、模块交互(MVC,MVVM,信号量,观察者模式)
- 技术问题只问了4个,但都是大问题(对C++三大特性的了解(三大面向对象的特性,继承封装多态)等)。问了下堆实现。
- 问题都回答上了,没有卡壳,反问啥时候更新进度(下周周三前,实际周一通知还要三面)
- 已挂,目测AC 1.4/3 无法达到要求,选择题做得也不好。