看来你在面试中遇到了一些挑战,不过没关系,面试失败是求职过程中的一部分。从你的描述来看,面试官主要关注了C++和图形学的基础知识。 对于C++的问题,栈溢出通常是由于在函数调用过程中,栈空间被耗尽导致的。无限递归调用就是一个常见的例子,因为每次递归调用都会在栈上创建一个新的活动记录,直到栈空间耗尽。在这种情况下,谁在占用栈空间并不明确,因为每个函数调用都会在栈上创建一个新的活动记录。如果一个函数的函数体里使用new,这个函数无限递归,可能会导致堆溢出,因为new操作会在堆上分配内存。堆溢出通常是由于在堆上分配了过多的内存,导致堆空间耗尽。 对于vector的问题,vector的扩容通常是通过重新分配内存来实现的。当vector的大小达到其容量时,它会分配一个更大的内存块,并将原有的元素复制到新的内存块中。空vector的大小通常是0。在一个装满元素的数组后面添加新元素,可以直接构造,但可能需要重新分配内存。 对于dfs的问题,dfs使用了栈这种数据结构。 对于图形学的问题,shadowmap的噪点是由于采样不足或采样不均匀导致的。软阴影是通过多次采样来减少噪点的。ibl的蒙特卡洛是一种用于模拟全局光照的技术,它通过在球面上随机采样来计算间接光照。 虽然这次面试可能没有达到你的预期,但这也是一个学习和成长的机会。你可以根据面试中遇到的问题,有针对性地复习和准备,提高自己的技能水平。加油!

相关推荐

牛客网
牛客企业服务