Unity面试题 每日5题 02

目录

6.闭包实现

7. Action和function区别,以及内部实现,注册函数如何防止重复,如何删除

8. Map怎么实现的,Dictionary如何实现

9. 红黑树和avl树还有堆的区别,内存&效率

10. 快排的时间空间复杂度以及实现



6.C#闭包实现

闭包即闭包是指可以包含自由(未绑定到特定对象)变量的代码块.表现出来是调用函数结束后,函数内的变量的生存周期拉长到调用者的生命。

贴一段简单的闭包实现代码

var list =new Action[10];

for(int i=0;i<list.Length;i++){

list[i]=()=>{Console.WriteLine(i);};

}

foreach(var item in list)

{

item();

}

7. C#委托Action和function区别,注册函数如何防止重复,如何删除

Action和function的区别:

Action:表示不带返回值,可传递0-16个泛型参数委托;有传入int、string、bool类型的参数,无返回值的委托

Func:表示带泛型返回值,可传递0到16个泛型参数的委托;传入参数为object、string类型的参数,返回值为int的委托

两者直观的区分就是是否带返回值。

注册函数如何防止重复,如何删除
笔者认为自己实现观察者模式的事件机制框架为每个事件配置唯一标志就行了。
(会转载一个代码可以结合着 看看)


8. Map怎么实现的,Dictionary如何实现

map是一种key-value键值对的存储结构,其中key是不能重复的,其底层实现采用的是hash表。

C#中不含map但是同样可以实现map的效果 就是 Dictionary,贴一段Dictionary 初始化代码。

用法和map大同小异,有兴趣的可以去 每日五题02补充 看看。

Dictionary< string , string > hashMap = new Dictionary< string , string >();

        
9. 红黑树和avl树的区别,内存&效率

查询性能上:红黑树<avl树(但avl树在插入和删除时存在大量旋转操作,如果应用涉及频繁插入删除,还是选红黑树吧!)

内存:红黑树<avl树(同样因为avl树要存储平衡因子从而导致占用内存较高)


10. 快排的时间空间复杂度以及实现

快速排序是对冒泡排序的一种改进,

对快排时间复杂度讨论:最好O(n*logn) 最差O(n*n)

空间复杂度:  最好O(logn)最坏O(n)

下面用递归实现:

void Sort(int* array,int left,int right)
{
    assert(array);
    if(low >= high)//表示已经完成一个组
    {
        return;
    }
    int index = PartSort(array,low,high);//枢轴的位置
    Sort(array,low,index - 1);
    Sort(array,index + 1,high);
}

Unity面试题 每日5题 03 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值