目录

C-Unity-唐老狮-No.7-模拟面试题

C# &Unity 唐老狮 No.7 模拟面试题

本文章不作任何商业用途 仅作学习与交流 安利唐老狮与其他老师合作的网站,内有大量免费资源和优质付费资源,我入门就是看唐老师的课程 打好坚实的基础非常非常重要:

[全部 - 游习堂 - 唐老狮创立的游戏开发在线学习平台 - Powered By EduSoho]( “全部 - 游习堂 - 唐老狮创立的游戏开发在线学习平台

  • Powered By EduSoho”)

如果你发现了文章内特殊的字体格式,那是AI补充的知识,我发现原网站下面有答案,我将会把答案以不同样式穿插在回答之中


C#

1 C#中如何让一个类不能再被其他类所继承?

密封类seald

2 C#中使用泛型的好处是什么?

避免了拆装箱, 而且不确定类型可以让方法或者类更加灵活 https://i-blog.csdnimg.cn/direct/976712f1b5f54840b56aec37e6fe38ba.png

3 C#中元组对于我们的作用是什么?

不知道元组,所以我问了dp但要是学习的话这个视频可以帮到你[C# 元组(Tuple) .NET程序设计进阶_哔哩哔哩_bilibili]( card.all.click&vd_source=85dbb2fd9fc2a60e6532f595cd1b39db “C# 元组(Tuple) .NET程序设计进阶_哔哩哔哩_bilibili”)

元组(Tuple)的核心作用是提供一种轻量级、无需定义新类型即可临时组合多个数据值的机制

  1. 多返回值方法

public (double avg, double stdDev) ComputeStats(List data) { // 计算逻辑 return (avg, stdDev);}

  1. 临时数据组合

var userInfo = (Name: “Alice”, Age: 30, IsVerified: true);Console.WriteLine(userInfo.Name);

  1. LINQ 查询结果增强

var query = products.Select(p => (p.Name, Price: p.Cost * 1.2));

  1. 模式匹配(C# 8+)

if (input is (int x, int y) && x > 0) { … }

https://i-blog.csdnimg.cn/direct/b4df1c1160794e20b91699a25a1fc2a8.png

4 请说明Thread、ThreadPool、Task分别是什么?并简单说明彼此的区别

Thread:线程关键词 可以创建新线程 ThreadPool:线程对象池,管理线程的 Task:线程任务,用作异步操作的 三者是层层递进的关系:

特性ThreadThreadPoolTask
资源管理手动创建/销毁,成本高自动复用线程,成本低基于线程池,支持异步调度
控制粒度精细控制(优先级、名称等)无控制权通过 TaskScheduler 配置
适用任务类型长期运行的任务短期高频任务通用异步/并行任务
异常处理需手动捕获异常异常会终止进程支持聚合异常(AggregateException
现代性原始 API,已过时底层机制推荐使用(配合 async/await
https://i-blog.csdnimg.cn/direct/2baae787b2944d44a40a6455e1294140.png

5 请简述GC(垃圾回收)产生的原因,并至少说出避免GC发生的三种方式?

出现无用的内存(不被引用的对象等)就会触发GC 其背后是一套自动化的代码工具 避免: 1.使用对象池 2.使用struct做数据结构 3.使用官方提供的一些优化APi,比如stringBuilder,using,TryChache

补充:为什么要避免多次GC?

回收过程会暂停应用程序线程(Stop-the-World),频繁 GC 会导致性能波动,尤其是对实时性要求高的场景(如游戏、高频交易) https://i-blog.csdnimg.cn/direct/f52b7911b263446090b3f3fae98044aa.png

Unity

1 Unity中动态加载资源的方式有哪些?

​​​​​​​ Resource的同步异步 [Unity数据持久化 万物之源Resources动态资源加载_unity动态加载资源- CSDN博客]( task-blog-2blogfirst_rank_ecpm_v1rank_v31_ecpm-1-140407834-null- null.nonecase&utm_term=resources&spm=1018.2226.3001.4450 “Unity数据持久化 万物之源Resources动态资源加载_unity动态加载资源-CSDN博客”) assetBundle的同步异步 [Unity 热更新 之 一篇文章完全入门AssetBundle_unity assetbundle- CSDN博客]( task-blog-2blogfirst_rank_ecpm_v1rank_v31_ecpm-1-143663583-null- null.nonecase&utm_term=Asset&spm=1018.2226.3001.4450 “Unity 热更新 之 一篇文章完全入门AssetBundle_unity assetbundle-CSDN博客”) Addressable的同步异步[Unity热更新 之 Addressables(2) 本地/远端打包 流程测试_addressables 远程更新- CSDN博客]( task-blog-2blogfirst_rank_ecpm_v1rank_v31_ecpm-2-145062995-null- null.nonecase&utm_term=%E7%83%AD%E6%9B%B4&spm=1018.2226.3001.4450 “Unity热更新 之 Addressables(2) 本地/远端打包 流程测试_addressables 远程更新-CSDN博客”) 加载文件的几种方式 ****[Unity 读取文本文档 方法总结_unity textasset- CSDN博客]( task-blog-2blogfirst_rank_ecpm_v1rank_v31_ecpm-10-143650086-null- null.nonecase&utm_term=%E6%80%BB%E7%BB%93&spm=1018.2226.3001.4450 “Unity 读取文本文档 方法总结_unity textasset-CSDN博客”) https://i-blog.csdnimg.cn/direct/a0b22e33e8fb45aebc0ea76649c29d1c.png

2 Unity中的光照贴图的作用是什么?

布吉岛 我想到的是模拟光照效果https://i-blog.csdnimg.cn/direct/170808c3ad5d423f8631d12f9c8049c0.png

3 Unity场景中有两个点连成了一条线,想要旋转这条线,应该怎么做?

欧拉角 Transform.eulerAngles 四元数 Quaternion.Euler 或者直接乘四元数 https://i-blog.csdnimg.cn/direct/87289251f15c41348dd48c2ef39a3475.png

4 LOD(多细节层次)和 MipMap(纹理图)的作用是什么?

LOD技术就是让一个模型有多种样式的 从低模到高模 可以在摄像机远的时候加载低模 优化性能,近则反之 通常玩家不可选 mimmap让我想起了我的世界,其不同程度等级可以控制纹理细节,玩家可选来优化游戏体验 ****https://i-blog.csdnimg.cn/direct/55ca269c5f71477f9e4be61763c5e7ae.png

5 游戏开发中,客户端和服务端交互数据,程序中常用方式是什么?

布吉岛,网络还在入门 我一看答案 是TCP/IP的协议 https://i-blog.csdnimg.cn/direct/e34beef0cb2845b080b0964cbcb17c62.png