说明
这是一篇短期内几乎没什么用的面试题,因为现在很少有人研究 ARKit。在面试中,即使招聘 AR 开发者,更多还是考察应聘者的 iOS 基础知识:OC 语法,block,KVC,KVO,runtime ,runloop,算法与数据结构等。其实只要基础牢固,又有 OpenGL 或 OpenCV 经验,就可以很快完成入门,开始 AR 开发。
不过,这些问题对于想要入门 ARKit 的开发者,仍然具有参考意义。而且这些问题实际上并不局限于 ARKit 和 iOS 开发者,对所有 AR 开发者(ARCore/Unity)都有一定的参考意义。
ARKit
- ARKit 中的坐标系是左手系,还是右手系?
- ARKit 中的矩阵是列主序,还是行主序?
- AR 中结点的 position 和 worldPosition 有什么区别?
- 你是如何理解 ARKit 中的锚点(ARAnchor)?常见锚点类型有哪些?
- 影响 ARKit 追踪质量的因素有哪些?谈谈看法
- 欧拉角表示旋转时的正方向是如何判断的?
- 什么是万向节死锁(Gimbal Lock)?ARKit 的欧拉角有这个问题么?
- ARKit 中常见灯光类型有哪些?
- SCNCamera 的 zFar, zNear, FOV 是什么含义?
- SCNNode 与 SCNGeometry 的关系是什么?谈谈你的理解
- 物理引擎中 physicsBody 有哪些,使用有什么区别?能否举例说明一下?
- 常见贴图有哪些?下面这些贴图中,哪个可能是法线贴图(normal)?简单说说理由
- SCNAction 和 CAAnimation 动画有什么区别?
- SCNLookAtConstraint 和 SCNBillboardConstraint 有什么区别?
- PBR 渲染有什么不一样?
- 什么是深度冲突(z-fighting)?
线性代数/几何
- 向量叉乘和点乘的几何含义是什么?
- 矩阵的每一列向量代表了什么?
- 矩阵乘法几何含义是什么?
- 逆矩阵(inverse matrix) 的几何意义是什么?
- 如何判断一个点在不在 AABB 盒之内?
- 四元数和轴角/旋转角都是 4 个数,可以直接通用么?
- 为什么旋转的插值要用四元数?谈谈自己的看法
- 矩阵的转置(transpose)一般用在什么场合?
- 矩阵乘法 的含义是什么?能否通俗地说明一下
- 如果在 4x4 矩阵中,计算左上角 3x3 矩阵的行列式,结果为 -2,说明了什么?
- 逆转置矩阵(inverse transpose matrix)有什么用?
- 如何从空间中若干个点,拟合出一个平面?谈谈思路
最后
所有这些问题,并不是为了难住别人,而是希望能以这些为线索,谈谈对 AR 和线性代数的理解。可以谈相关理论,也可以说实践中遇到的问题,和自己的思考。
总之这些问题,可深谈可浅谈,也不必过分追求什么正确答案。个人认为:能就一半问题谈谈自己的看法,就可以算是入门 AR 了;绝大部分问题都能回答两句,就可算是熟练了。