C++:世界上唯一能让程序员在配置环境上比写代|

香菇0_0

园龄:2年7个月粉丝:10关注:1

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 中国大陆许可协议进行许可。

posted @   香菇0_0  阅读(54)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.