Unity开发工程师面试准备20200411
一、双向链表
1.概念:双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。
2.实现:
typedef struct DuLNode
{
ElemType data;
struct DuLNode *prior,*next;
}DuLNode,*DuLinkList;
二、伴随矩阵怎么求
1.概念
三、unity shader语法
见http://www.360doc.com/content/16/0531/20/10408243_563898002.shtml
四、unity shader渲染流程
见https://blog.csdn.net/qq_38721111/article/details/82687774
五、逐顶点和逐片元
顶点着色器是逐顶点进行的,依赖线性插值进行计算,但在非线性计算时容易产生棱角;片元着色器是逐片元计算,计算效率比顶点着色器低,但光照效果更为平滑。
六、向量点乘、叉乘的意义
1 )点乘描述了两个向量的相似程度,结果越大两向量越相似,还可表示投影
2 )叉乘得到的向量垂直于原来的两个向量
3 )标准化向量:用在只关系方向,不关心大小的时候
七、给定入射光线和法线求反射光
由于入射角和反射角相等,且I和R的长度也相等,所以三角形ION是等腰三角形。故有
ON = 2S
所以有
R = I + 2S
而S是-I在N上的投影,所以有
由于N是单位向量,简化一下得到
所以
八、快排流程和最好最坏的情况
1.实现:
public static void QuickSort(int[] arr,int low, int high)
{
if (low > high)
return;
int first, last, key;
first = low;
last = high;
key = arr[first];
while(first < last)
{
while(first < last && arr[last] >= key)
{
last--;
}
arr[first] = arr[last];
while(first < last && arr[first] <= key)
{
first++;
}
arr[last] = arr[first];
}
arr[first] = key;
QuickSort(arr,low,first-1);
QuickSort(arr, first + 1, high);
}
2.最好最坏情况分析:最好情况O(n*logn)——Partition函数每次恰好能均分序列,其递归树的深度就为.log2n.+1(.x.表示不大于x的最大整数),即仅需递归log2n次; 最坏情况O(n^2),每次划分只能将序列分为一个元素与其他元素两部分,这时的快速排序退化为冒泡排序,如果用数画出来,得到的将会是一棵单斜树,也就是说所有所有的节点只有左(右)节点的树;平均时间复杂度O(n*logn)。
九、Lua类实现
用元表实现
十、Lua如何优化
通过使用LuaJIT
JIT模式:这是LuaJIT高效所在,简单地说就是直接将代码编译成机器码级别执行,效率大大提升(事实上这个机制没有说的那么简单,下面会提到)。然而不幸的是这个模式在iOS下是无法开启的,因为iOS为了安全,从系统设计上禁止了用户进程自行申请有执行权限的内存空间,因此你没有办法在运行时编译出一段代码到内存然后执行,所以JIT模式在iOS以及其他有权限管制的平台(例如PS4,XBox)都不能使用。
Interpreter模式:那么没有JIT的时候怎么办呢?还有一个Interpreter模式。事实上这个模式跟原生Lua的原理是一样的,就是并不直接编译成机器码,而是编译成中间态的字节码(bytecode),然后每执行下一条字节码指令,都相当于switch到一个对应的function中执行,相比之下当然比JIT慢。但好处是这个模式不需要运行时生成可执行机器码(字节码是不需要申请可执行内存空间的),所以任何平台任何时候都能用,跟原生Lua一样。这个模式可以运行在任何LuaJIT已经支持的平台,而且你可以手动关闭JIT,强制运行在Interpreter模式下。
本文作者:香菇0_0
本文链接:https://www.cnblogs.com/Xiang-gu/p/16512359.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!