🗒️2023年秋招总结
type
status
date
slug
summary
tags
category
icon
password
游戏招聘期真难,公司又少HC又不多,总之每次招聘期我都特别想紫砂。但这次秋招我反而没啥感觉。
当时秋招启动的时候我还在阿里巴巴实习,当时还在冲转正,所以并没有特别投入秋招,而是将80%的精力放在工作,剩下一点精力拿来给秋招。
7月底米哈游提前批
米哈游提前批真几把搞,反正就是提前批和正式批有一批挂了就没戏。我无所谓,所以就投了提前批,反正八成拿不到😂。
做完笔试就没消息了。
8月中腾讯量子提前批
腾讯突然捞了我,很神奇。但是第二天就把我挂了,当时我状态也不好,准备了一点点也没啥用。具体面经:
- 介绍自己
- 实习做什么
- 说下GPU Instancing
- MVC和ECS你是怎么理解的
- C++右值引用是什么,和左值引用的区别
- 什么是虚函数,为什么要用到?
- 多线程同步怎么解决
- 多线程死锁了怎么办
- 介绍下你的图形学项目
- 渲染管线说一下
- 写过哪些shader
- SSR的原理讲一下
- 光线追踪的过程
- 网络编程学过吗
- TCP有几次握手,讲一下
- 有考虑过转正吗
emmmmm我想了想,似乎是因为我说考虑转正,他才把我挂了,因为其他答得虽然不能说很好,但到点上了。
8月中网易雷火工作室
笔试3道题a了两道,感觉很可以对吧!但是也是没消息,究竟是谁在面雷火??
8月底腾讯某工作室
我也不知道是什么工作室,反正是光子的,面了很久,我还以为很有把握呢,因为面试官夸我夸得有点猛,结果是秒挂。
- 自我介绍
- 实习经历
- 讲下渲染合批和gpu instancing
- 面向对象的概念
- 菱形继承的概念,以及缺陷
- STL中的map有多少种,分别是什么
- map用的是什么数据结构?
- 口撕红黑树。map为什么要用红黑树?他和unordered_map的区别在哪?
- 讲下Lua GC
- 给定含有结构体的结构体,算字节大小
- 讲下内存分布(栈、堆、静态数据区)?
- 什么是内存碎片?如何解决内存碎片问题?
- 什么是内存泄漏?如何解决?有什么工具可以解决吗?
- 多态的概念
- 什么是虚函数,为什么要有虚函数,虚函数表是什么
- 给定三个类,能告诉我输出吗?(跟虚函数相关)
- 如果一个子类同时继承了两个父类,能告诉我这个子类的内存结构是什么样的吗?
- 如何判断平面内一点是否在三角形内部?除了向量法还有什么方法?
- 如何判断光线是否会和三角面片相交
- 讲下多线程的概念?如何实现同步和异步
- 手撕算法:在边界为[m, n]内反转链表(这地方体验不好,面呗坏了,只能自己搭框架)
- 平时是怎么学习的?github链接给我看看?
- 面评:基础扎实,写代码也写得很快,但是debug能力还需要再提高一点。期待下一次的见面。
第二天又被捞了。
8月底阿里巴巴转正答辩
转正答辩PPT已经丢了,大致内容:
- 1024Demo游戏:使用GLFW+GLAD+LUA实现基础的1024游戏,基本思路是主程序C++控制LUA运行时栈,捕获键盘信号,运行LUA脚本的代码并得到ReturnVal给C++处理,此时会通过GLAD控制显示。同时使用开源的字体库Freetype显示分数和Helper。比较简陋,但符合基本的游戏底层逻辑。
- 战棋Demo游戏:使用公司的引擎Ejoy实现战旗类型的游戏,Ejoy是一款业务和底层分的非常开的引擎。对于客户端开发者来说,不考虑性能优化的话,完全用LUA开发是可以的。本人就处于这个角色,开发这个游戏的时候基本上只用LUA。由于保密问题,不能细说。
- 重构战旗Demo:具体不能说,涉及到底层。
- 进组工作-修复诸多BUGS
- 进组工作-设计三个Gameplay玩法系统的代码
进组的工作具体不能说,涉及到公司的保密。
转正结果是通过的,为什么能转正通过呢?我想了想主要是:
- 本人比较喜欢从底层思考。在做1024的时候,其他实习生都是采用Unity或者UE来方便自己的开发,效果好,而我是从底层的图形API学起,为了了解LUA,我特意去学习C++是如何控制LUA脚本的,并实现了还算不错的LUA驱动。
- 重构的结构很清晰。重构战旗的时候,我分别比较了MVC和ECS的设计思路,并且在写代码之前,花了很多时间去设计UML类图,也得到了领导的认可。
- 钻研精神。我在下班的时候,会花一点点时间去看SIGGRAPH、英伟达等的paper,当时居然被领导注意到了,还来询问我。这也是加分的一点吧可能
- 进组之后做的工作比较多。修了非常多的BUGS,并且参与了三个大的Gameplay系统设计。(虽然第一个系统设计很狗屎,被领导骂了)
9月初腾讯S工作室
做和平精英的,UE引擎。这次直接面到很后面,但因为没HC一个月后把我挂了。
一面:
- 讲下二级缓存表
- 导表得到的Lua Table,在读取的时候会出现什么问题?(速度慢,内存过大,这两种)
- 那为什么Lua Table会越来越大?在加入元素的时候,Lua Table的大小增长是什么趋势(指数型还是线性)
- 在Lua Table里增加元素的时候,经过了哪些流程?
- 延迟渲染和前向渲染
- 光线追踪概念
- 如果要你实现人物描边的效果,结合你说的渲染管线,说下你会怎么做?
- Sobel算子的话可能会有些慢,还有更好的方法吗?
- 面向对象的概念
- 为什么要有继承
- 为什么要有多态
- 讲下两种多态
- 讲下智能指针
- 说到智能指针,能说下UE中的C++的GC是怎么做的吗?
- 左值和右值,移动语义
- 说下完美转发
- 场景:说到继承,如果场景中有三个GO:地上、天上、游泳的英雄,如果这三个GO的技能可以任意组合,最多能派生多少种类,只考虑派生。
- 数据结构方面,数组和链表的区别
- 场景:删除方面数组慢,你可以说下优化的思路吗?(说了个伪删除的思路,用哈希表记录每个元素的下一个元素的地址或者迭代器)
- 虚幻的游戏项目中,你最有技术的项目部分是什么?
- 状态机?说下游戏AI用状态机和不用状态机的区别是什么?
- 玩过什么游戏?
- 哈哈,为什么觉得吃鸡会无聊呢?
- 没有反问
二面:
- 学编程学了多久(?)
- 玩过什么游戏
- R6这游戏怎么玩的介绍一下
- 段位多少
- 介绍下你的ue项目
- 是合作写的还是自己写的
- 蓝图还是c++
- 你负责哪个模块
- 为什么用状态机不用行为树呢
- 建议:从底层学习ue源码,了解系统之间的关系
- 介绍下你的基于CPU高度图生成的项目
- 这个项目是完全你自己写的吗?
- 写了多少行
- 什么是延迟渲染
- 屏幕空间反射是什么
- 介绍下mc shader
- SSAO算法
- ray marching算法
- CUDA架构介绍一下
- GPU的线程和CPU的线程区别在什么
- 我在GPU上执行分支语句和在CPU上执行的差别在哪
- 分支预测?其实这算是CPU的,GPU架构不太一样,再好好想想?
- 为什么会有这种差别
- 涉及到GPU多线程的同步问题采用哪些方式
- 加锁虽然安全但是性能会底下,有没有折中的方法
- 就比如你CUDA项目中,是怎么设计到性能优化的
- C++基础,面向对象的概念,虚函数相关
- 程序访问非法地址(数组越界),为什么不会影响其他进程(OS虚拟地址)
- 内存碎片,内存分段,TLB快表
- 数据结构成绩怎么样
- A啊,那你的成绩在班上的排名如何
- 那你说说二叉树广度优先搜索
- 深度优先搜索呢?
- 不用递归函数怎么实现呢?
- 有打算读研吗?
- 以后的发展方向说下
- 光子里其实客户端和引擎都是差不多的,所以这方面其实不需要担心那么多
- 手上的offer有哪些
- 噢拿到阿里的转正意向了,现在还在实习吗
- 你班上同学的offer情况如何呢
- 反问:项目,技术栈
- 反问:面试表现(在很短的时间里能学那么多东西,很不错,希望后续能往ue底层学学)
三面:
懒得说了,基本都是聊天。
后续就是,HR面结束后的一个月,HR告诉我没HC了😅但是可以转部门,于是又有一次。
9月中网易互娱
感觉是最难的一次面试,但是我过了,因为其实我觉得虽然难但我都基本会。
1. 介绍自己
2. 实习内容
3. GPU instancing
4. 手撕算法:(0,0)到(n,m)有多少条路经
5. 优化手撕写出来的算法,路径记录(剪枝),改用bfs
6. 渲染管线
7. 延迟渲染
8. 点是否在三角形内的判断
9. 圆内随机取点,求该点到圆心距离的期望
10. 什么是法线贴图
11. 切线空间
12. 渲染队列
13. 屏幕空间的相关算法
14. 推导TBN矩阵
15. 蒙特卡洛方法
16. C++编译过程
17. 实现线程安全的单例
18. lib和dll的区别
19. 虚拟内存和物理内存
20. 空class大小,含一个虚函数的class大小
21. 虚函数表存在哪
22. 指针大小,不同机器一样吗
23. 虚拟地址如何转换物理地址
24. TLB快表
25. 内存分段 内存分页 内存碎片
26. 多线程同步异步问题
27. 混合公式
28. 深度测试
29. 如何解决半透明物体渲染问题
还有很多不记得了。
总而言之,这是一场难度和广度都很大的面试,两个面试官疯狂问我,但是我丝毫不慌哈哈,有保底就是不一样。
后续没了,因为我拒绝二面了。现在很后悔,不然我有阿里和网易的offer就可以A一下腾讯了。
11月腾讯天玑智趣工作室
全程两个小时,记得不清楚,大概写下问了哪些方向吧
- 介绍自己
- C++基础
- 数据结构基础
- 一些算法
- 设计模式(观察者,建造者,策略,单例),还有单例的多线程写问题
- 渲染管线流程
- 智力题
- 两道算法题
- 最后就是聊天聊了20多分钟
总共两小时,非常久。
过了几天就约HR面,HR说还有个GM面试。
但是又过了几天说,GM只想和我聊聊天,其实已经过了,所以就跳过这个流程了。所以最终直接给我offer了。我的秋招之旅就这样结束了。
结局:最终我放弃了阿里的offer,而是签了腾讯。对于游戏和图形来说,还是腾讯的平台更大,我更希望能在腾讯发展。