游戏开发面试题1

C#,泛型、反射?

C# 泛型是指可以让开发者在声明和使用类和方法时指定类型参数的编程技术。它可以减少代码重复,使程序的可维护性更高,并且能够更好地管理内存。

反射是指.NET程序集中类、方法、属性和字段的可编程性。它允许在不知道类型信息的情况下创建、使用和操作任意类型的对象,从而实现代码的动态性和可重用性。

说说对单例模式的了解

单例模式是一种常用的设计模式,它确保系统中只存在一个实例,通过其全局唯一性来满足一些特定的需求。它的实现通常是采用静态变量或构造函数私有化的方法,这样就可以确保在程序运行过程中,只有一个实例被创建。

单例模式的优缺点

优点:

1.节约资源,减少内存开支,减少系统开销,提高性能。
2.确保全局只有一个实例,提供全局访问,方便管理。

缺点:

1.由于单例模式只允许有一个实例存在,如果实例化对象长时间不被使用,则会浪费内存资源。

C#和Typescript的区别

  1. C#是一种静态类型语言,而Typescript是一种动态类型语言。
  2. C#支持多种编程范式,如面向对象和函数式编程,而Typescript只支持面向对象编程。
  3. C#支持静态类型检查,而Typescript支持动态类型检查。

U3D资源的动态加载

动态加载原理

当Unity构建完成后,它将在构建的输出文件夹中生成一个AssetBundle文件,这个文件包含了项目中打包的所有资源,可以使用AssetBundle.LoadFromFileAsync方法加载AssetBundle文件,加载完成后,就可以使用AssetBundle.LoadAssetAsync方法加载AssetBundle中的资源,这样就可以实现动态加载AssetBundle资源了。

动态加载步骤
  1. 构建AssetBundle
  2. 获取AssetBundle路径
  3. 加载 AssetBundle
  4. 加载AssetBundle中的资源
  5. 卸载AssetBundle

C#的内存管理

C#采用垃圾回收(Garbage Collection,GC)机制来管理内存,它可以自动检测出未使用的内存,然后把它们回收以释放内存供其他程序使用。

垃圾回收机制有三个步骤:
  1. 标记(Marking):标记那些仍然被应用程序使用的内存块,从而排除它们不被回收的可能性。
  2. 清除(Sweep):清除所有没有被标记的内存块,从而释放未使用的内存。
  3. 整理(Compact):整理内存块,使空闲内存连续,以便更好地利用内存。

数据量大的时候用快排可以吗?那用什么排序?为什么?

可以。用归并排序更好,因为它的时间复杂度更低,最坏情况下是O(nlogn),而快速排序的最坏情况是O(n2),所以当数据量很大的时候,用归并排序更好。

另外,归并排序使用稳定排序,而快速排序不是,所以当数用归并排序据中存在重复数据时,更好。

C#的委托实现原理?怎么使用?用到了什么设计模式?

C#的委托是一种引用类型,可以指向一个方法,允许将方法作为参数传递。它使用委托类型定义,一个委托类型就是一个指向方法的类型定义。

使用委托可以实现事件处理、异步调用和回调函数,它可以把方法作为参数传递,实现回调函数,把多个方法注册到事件上,让它们在事件发生时被调用。使用委托时,可以使用观察者模式 。

vector的底层实现原理是什么?查找map里面的元素可以用count()也可以用[],一般我们不用方括号是为什么?

  • vector的底层实现原理是动态数组,它会把所有的元素存放在一块连续的内存中,允许它们以数组的方式存取。
  • count()会检查是否存在指定的元素,而[]会返回指定的元素,一般我们不用方括号是因为如果查找的元素不存在,会抛出异常,造成程序崩溃。

相关推荐

  1. 游戏开发面试1

    2024-07-12 01:08:05       21 阅读
  2. 游戏开发面试1

    2024-07-12 01:08:05       17 阅读
  3. 游戏开发面试2

    2024-07-12 01:08:05       32 阅读
  4. 游戏开发面试2

    2024-07-12 01:08:05       19 阅读
  5. 【运维开发面试1

    2024-07-12 01:08:05       43 阅读
  6. 1.6 面试经典150 - 跳跃游戏

    2024-07-12 01:08:05       61 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-12 01:08:05       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-12 01:08:05       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-12 01:08:05       58 阅读
  4. Python语言-面向对象

    2024-07-12 01:08:05       69 阅读

热门阅读

  1. 一篇文章Scala语言入门

    2024-07-12 01:08:05       24 阅读
  2. html的浮动作用详解

    2024-07-12 01:08:05       23 阅读
  3. Perl语法作用域:深入探索变量的隐秘世界

    2024-07-12 01:08:05       22 阅读
  4. C#——Array类详情

    2024-07-12 01:08:05       26 阅读
  5. [202406] 一级 填空题 1~8题 答案解析

    2024-07-12 01:08:05       22 阅读
  6. 动态模型管理:Mojo模型的自定义保存与加载控制

    2024-07-12 01:08:05       24 阅读
  7. nginx-----web服务器

    2024-07-12 01:08:05       23 阅读
  8. Vue笔记10-其它Composition API

    2024-07-12 01:08:05       23 阅读
  9. Chromium编译指南2024 Linux篇-解决运行报错信息(六)

    2024-07-12 01:08:05       23 阅读
  10. prototype 和 __proto__的区别

    2024-07-12 01:08:05       24 阅读
  11. Spring-Data-Elasticsearch

    2024-07-12 01:08:05       27 阅读
  12. npm ERR! code ENOTEMPTY npm ERR! syscall rename npm ERR!

    2024-07-12 01:08:05       22 阅读
  13. sizeof()

    2024-07-12 01:08:05       24 阅读
  14. Python 四种字符串格式化方式

    2024-07-12 01:08:05       23 阅读