图形和C++面试题目

1,416 阅读5分钟

www.nowcoder.com/discuss/477…

图形学基础

  • 为什么使用齐次坐标,它有什么好处?
  • 纹理相关,如何在shader中采样,如何获取二维纹理中的具体像素值?
  • mipmap的实现,如何确定使用哪一层?
  • 如何渲染光照?
  • 如何渲染半透明物体?
  • 如何确定渲染顺序?
  • 什么情况下fs的执行次数会小于vs的执行次数(顶点数)?
  • 光栅化的作用?
  • 阴影图的实现?
  • 阴影图的改进?
  • 如何判断点O是否在三角形ABC之内?
  •   阐述opengl渲染管线
  •   编写shader时,有哪些注意优化的点?
  •   了解alpha blend吗?
  •   如果让你做一些直播上针对人脸的美化,你会怎么做?
  •   关于深度测试,有什么优化?
  •   phong与blinn-phong的不同点?..
  •   vs中的变换矩阵和空间变换。
  •   如果对一个模型仅沿X轴缩放,应该如何利用model矩阵正确计算光照?
  •   MSAA与FSAA?
  •   alpha融合?
  •   opengl与openglES
  • 正交矩阵的定义是?我们的变换矩阵中哪些是正交矩阵?
  • 旋转矩阵的特征值是?
  • 如何理解特征值和特征向量?写一下相关式子?
  • 如果A是二阶矩阵,如何理解特征向量呢?
  • 如何表示一个平面?
  • 数学上如何把一个非线性问题表示成线性问题?比如把一个函数值表示成多项式的和?
  • 写一下如何多元函数全微分?比如x1, x2, x3; f(x1), f(x2), f(x3)
  • 如何对函数求极值?必要条件?
  • 如果求f(x)的极值,但x满足约束条件H(x) = 0?
  • 最小二乘法还有印象吗?
  • 对四元数有了解吗?
  • 为什么使用齐次坐标?
  • 正交矩阵的特点?
  • view矩阵的功能?如何推导?
  • 世界坐标系到相机坐标系的转换。已知相机的正前方和正上方,相机视为原点,对世界坐标进行平移和旋转。
  • 介绍一下渲染方程。
  • mipmap的原理?各向异性mipmap?走样产生的原理?
  • 射线与1w面片求交?用octree如何加速?如何判断射线与AABB相交?
  • 给定一个极坐标表示的球面,给定两点,求两点间短弧的距离。
  • 图形渲染管线的基本流程。
  • 向量点乘和叉乘的几何意义。
  • 知道欧拉角吗?有什么用?它的优点和缺点是什么?
  • 图形渲染过程中哪些空间?
  • 什么是模板测试?它可以用来做什么?
  • 除了用模板测试做外阴影,还有什么方法?
  • 如何渲染一个半透明的物体?需要注意什么。
  • 如何优化着色器代码?
  • 如果判断一个多边形是凸多边形。
  • 如何判断光线与三角形相交。
  • 知道法线贴图吗?法线贴图是怎么存储的?存储法线贴图需要注意什么?
  • 知道怎么渲染阴影吗?阴影贴图怎么使用?
  • HDR是什么?
  • 伽马矫正是什么?
  • 什么是色调映射?你有使用过什么色调映射算法吗?
  • 有了解过PBR吗?
  • 图形渲染的基本流程?
  • 有哪些坐标空间?他们是如何进行变换的?
  • 正交投影和透视投影有什么区别?
  • 一般使用的向量是几维的?矩阵呢?为什么向量是三维,矩阵是四维的呢?
  • 什么是齐次坐标?齐次坐标能做什么?它是怎么去区分是一个位置,还是一个方向?
  • 写出一个旋转矩阵和平移矩阵,怎么叠加?
  • HDR?是一开始就超出1.0这个界限吗?
  • 什么是色调映射?你有使用过什么色调映射算法吗?写一下这些算法,说一下你对色调映射的理解。
  • Phone模型有哪些光照分量?说一下它们的作用是什么?
  • 写一下Phone模型中的镜面光和漫反射光计算的伪代码?

C++

  • 多继承的实现?可能出现什么问题?
  • 重载与重写?
  • 纯虚函数?
  • 内存泄露与智能指针。
  • const的用法有哪些?
  • STL容器相关
  • class与struct之间的区别与联系。
  • 内联函数在编译期间完成哪些事情?
  • 数组与链表的对比(存储空间,增删改查)
  • SLT容器相关。
  • C++的多态如何体现?
  • 构造函数可以是虚函数吗?析构函数呢?
  • 一个类中声明了一个虚函数,取他的sizeof()应该是多少?
  • 线程池和内存池了解吗?
  • DLL的加载方式有哪些?
  • 常用排序方法里哪些平均复杂度较高?
  • 介绍下快排思想。
  • STL相关,vector,set,map
  • 某个类取sizeof(),各种情况
  • 可以虚析构函数吗?为什么?
  • 多态的种类?
  • new与malloc的的区别?operator new?
  • STL相关
  • 指针和引用的区别?
  • 无效引用?
  • 调用函数的过程?
  • 虚析构函数?
  • 智能指针的原理?各个智能指针的特点?
  • extern关键字的用法?
  • 开始留了半个小时去实现一个定时器功能,要求实现定时器的注册,更新,注销三个函数。
  • 有哪些常用的数据结构?
  • 说一下你最熟悉的一个STL容器,讲一下你知道的具体实现细节。
  • C++是如何实现多态的?
  • 二叉搜索树搜索时间复杂度 最坏情况复杂度
  • 快排最坏情况是什么情况?
  • map底层,说一下红黑树
  • 哪些stl底层是哈希表?
  • 说一下智能指针,怎么实现shared ptr ?
  • 两个栈实现队列,一个栈怎么实现?
  • 定义一个struct,有int x,char c两个成员,这个结构体多大?为什么内存对齐?如果增加一个static int 这个结构体大小怎么变化?如果在结构体里定义一个虚函数,结构体大小怎么变化?
  • 基类不使用虚析构函数,会发生什么?
  • 类中静态变量初始化是什么时候?
  • 函数重载和覆盖的区别?
  • 拷贝构造函数和移动构造函数的区别?