图形开发/引擎开发(偏渲染 面经


面试过程中问题记录不太详细,而且各个厂之间也有重叠问题,所以最终面经整理直接按模块来回忆了。主要面了字节阿里百度中望广联达完美世界。

图形学
(个人的图形学基本就靠GAMES101这门课及learnopengl网站
基本渲染管线
顶点着色器坐标变换(XX空间、矩阵)
齐次空间作用、齐次位 向量和点
点乘叉乘意义
法线矩阵:当模型进行非等比收缩时,法线向量是模型矩阵的逆矩阵的转置
裁剪空间做了什么 正交透视的区别 视锥体定义参数
光栅化作用
深度测试过程、透明非透明物体渲染顺序
阴影图的生成 软阴影生成方法
抗锯齿方法(SSAA和MSAA区别)
MIPMAP实现、作用,如何选取合适的大小
各式贴图:法线贴图(法线空间、作用、纹理复用、纹理映射)位移贴图(实现,与凹凸区别)
HDR 色调映射 gamma校正
布林冯光照模型:环境光、漫反射、镜面反射(半角向量 优点)方程
PBR:微表面 能量守恒 BRDF 菲涅尔项 渲染方程 radiance/irradiance
延时渲染、离屏渲染
提高渲染效率的方法 如何保证稳定帧率
故障检测:花屏 撕裂 黑屏

opengl相关
glfw存在目的
上下文是什么
帧缓冲有什么 分别作用是什么
bufferdata作用
glfinish()glflush()区别

C++
数据类型(基本类型:整形浮点型字符型布尔型,复合类型:结构体联合体数组字符串)
static const
强制类型转换
模板声明与实现如何能不在同一个头文件
智能指针底层原理 什么时候构造什么时候释放 shared循环引用 weak不会增加引用计数
野指针及产生原因解决
多态 虚函数 类内存
局部变量的vector的堆栈存储形式
inline与普通函数区别 与宏区别
深拷贝浅拷贝(什么时候会发生浅拷贝,怎么实现深拷贝)

设计模式
知道哪些 用过哪些 应用场景 实现

数据结构与算法
STL的各种底层实现 时间负责度
Vector push_back 一万次时间复杂度
哈希表如何实现O(1) 哈希值
堆实现 优先队列
图 存储方式 
排序 复杂度 logn如何得出的(1/2∧n)
LRU实现 (哈希➕双向链表)
vector做底层实现queue

数组模拟哈希找数组重复次数最多的小写字母
反转链表
k个一组链表反转
二维数组查找目标值
交换两个数字得到能得到的最大数字
目标值和的数组对
约瑟夫环
cv中值滤波实现

两矩形面积包围面积
多边形面积(叉乘
空间点到空间三角形的最近距离
判断射线过不过球体 优化方法
两空间直线距离
已知法线向量和入射向量求反射向量
 
操作系统(因为我说只自学了一点面试官没咋难为这个)
进程线程区别
进程通信(内存共享 通道 消息)
线程同步(多任务并发处理 按输出输出)

每个知识点要吃透,面试官会一层层问的,比如虚函数和智能指针这种非常高频的cpp必考问题
虚函数一般从多态入手,cpp多态通过什么实现,虚函数如何实现多态的,构造函数和析构函数能不能是虚函数为什么,虚表指针是什么时候产生的,虚函数表是怎么生成的,是和类绑定还是类实例,在编译器还是运行器,重载重写的区别,子类重写了虚函数会对虚函数表有什么影响,类实例的内存存储形式是什么样子的,final和override。现场读代码说结果。
智能指针有什么类型,有什么区别,shared_ptr怎么实现多指针指向同一个地址,引用计数如何保证不同类实例的指针之间共享同步,循环引用会在什么情况下产生,如何解决,解决原理,shared_ptr的代码实现(主要是构造、赋值和析构)。

#引擎开发工程师##面经#
全部评论
许愿字节OC
3 回复 分享
发布于 2021-08-29 16:28
楼主字节到几面了,一共有几面啊,我这边字节引擎要5面🤣
1 回复 分享
发布于 2021-09-26 11:12
m
点赞 回复 分享
发布于 2023-02-13 11:09 宁夏

相关推荐

05-15 21:47
已编辑
哈尔滨工程大学 C++
Part1:自我介绍Part2:简历项目拷打,C++哪个项目问多但是不太深,Python测试脚本问的比较多(没答好)。主要是问解决什么问题,怎么实现的。Part3:八股相关1.http和https的区别?2.udp和tcp区别优劣适应场景。3.搭建一个tcp serve的步骤。4.常用的Linux指令说5个以上(讲了我OTA刷写的操作流程)5.我看你简历意向有测试有开发,为什么投递测试岗位,了解测试方法吗?(因为就这个给面了啊,还能是啥。)(我说对于实习生来说测试工作相对来说会好上手能立刻分担组内压力,上一份实习也是测试工作居多。又问有哪些具体工作。)6.看你简历写了C++/python,你比较擅长哪个,我说C++,他说哪我们来问个Python。什么is==,没答上来。part4:手撕,LeetCode2799,题目想复杂了,写了一半不知道怎么搞,面试官提醒我仔细读题,读完再问我思路,肯定了我的思路,说还可以用滑动窗口,此时的时间复杂度是多少(也答上来了)反问:工作性质,Python用的多还是C++用的多,有无转正,是部署到车机芯片上测实车表现还是部署到测试服务里去验证性能指标?总结:面试官人很好,一步步引导,如流是真抽象,撕题加载不出来最后打开LeetCode写的。非hot100的题目没做过是真不好撕出来。这居然是纯Python的测试岗😭Python语法都忘光了,感觉百度智驾跟其他智驾供应商考察的方式完全不一样啊,不是偏嵌入式的东西。5.7二面part1:自我介绍part2:问简历上一份实习内容、项目和比赛;part3:手撕,leetcode3,无重复字符的最长子串(看到题目觉得稳了,滑动窗口遍历,耗时十分钟,调试结果不对,还是要多练)可恶啊,忘了用unordered_set去重了。可能是自己离大厂最近的一次;好可惜,止步于此了更新 5.12三面!part1:自我介绍part2:问简历上一份实习内容、项目和比赛;还问了项目的结构框架,主体功能,代码量part3:手撕,问我了解数据结构动态规划吗?我说还可以,最长递增子序列,但是输出所有子序列的组合 没思路;斗胆申请换题(是可以的)输入一个链表,目标和为target的所有组合,我把list存vector,套lc组合总和,回溯解决;就快调用函数了,面试官说没事,讲讲实现的思路;我讲完思路他说可以,但是稍微想复杂了,面试官点了我说可以先给list排序,我顺着他的意思说了思路;part4;反问,有无开发任务(会有开发任务,所以三面都有算法考察),面试官追问了入职时间。
会自己做咖啡的牛:更新 约三面
查看17道真题和解析
点赞 评论 收藏
分享
04-14 15:01
已编辑
重庆邮电大学 C++
问项目项目中的优化在接触一个新的领域的时候,是怎么去了解的项目中有没有做具体的横向调研八股:1、介绍虚函数2、虚函数的实现,vptr、vtable3、能不能在构造函数中调用虚函数(可以,但是派生类没有构造完成时,调用虚函数并不会呈现多态)4、为什么父类的析构函数要定义为虚函数5、多态的实现6、介绍线程和进程的区别,在项目中有没有用过多线程?如何确保线程的安全?7、线程死锁,如何打破死锁(互斥、不可剥夺、循环等待、占有等待)8、TCP头格式(port、seq、ack、校验和、头部长、保留、码元比特、紧急指针)9、TCP为什么必须是3次握手(2的ACK->1的SYN,3的ACK->2的SYN,连接本质是两个套接字维护的有限状态机,同时到达establish之后,才能发送数据)。10、TCP可靠的实现(流控+拥控+差错)。为什么TCP的ISN必须是随机值(防止IP假冒攻击)11、拥塞控制12、TCP和UDP的区别13、介绍智能指针(auto/unique/shared/weak)14、shared_ptr的实现(实现的思路)15、shared_ptr是不是线程安全(引用计数是线程安全的,但多线程访问shared_ptr指向的对象不一定安全)16、weak_ptr和shared_ptr的搭配使用17、shared_ptr所存在的问题(1、创建/销毁的性能开销,频繁的话,考虑使用unique_ptr。2、循环计数问题:加入weak_ptr)18、mutex实现的思路做题反问:转正机会
查看21道真题和解析
点赞 评论 收藏
分享
评论
21
220
分享

创作者周榜

更多
牛客网
牛客企业服务