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

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

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

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

目录

C#

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

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

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

[4. 请说明Thread、ThreadPool、Task分别是什么?并简单说明彼此的区别](#4. 请说明Thread、ThreadPool、Task分别是什么?并简单说明彼此的区别)

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

Unity

[1. Unity中动态加载资源的方式有哪些?](#1. Unity中动态加载资源的方式有哪些?)

[2. Unity中的光照贴图的作用是什么?](#2. Unity中的光照贴图的作用是什么?)

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

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

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


C#

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

密封类seald

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

避免了拆装箱, 而且不确定类型可以让方法或者类更加灵活

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

不知道元组,所以我问了dp但要是学习的话这个视频可以帮到你 C# 元组(Tuple) .NET程序设计进阶_哔哩哔哩_bilibili

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

  1. 多返回值方法

    复制代码
    public (double avg, double stdDev) ComputeStats(List<double> data) {    // 计算逻辑    return (avg, stdDev);}
  2. 临时数据组合

    复制代码
    var userInfo = (Name: "Alice", Age: 30, IsVerified: true);Console.WriteLine(userInfo.Name);
  3. LINQ 查询结果增强

    复制代码
    var query = products.Select(p => (p.Name, Price: p.Cost * 1.2));
  4. 模式匹配(C# 8+)

    复制代码
    if (input is (int x, int y) && x > 0) { ... }

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

Thread:线程关键词 可以创建新线程

ThreadPool:线程对象池,管理线程的

Task:线程任务,用作异步操作的

三者是层层递进的关系:

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

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

出现无用的内存(不被引用的对象等)就会触发GC 其背后是一套自动化的代码工具

避免:

1.使用对象池

2.使用struct做数据结构

3.使用官方提供的一些优化APi,比如stringBuilder,using,TryChache

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

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

Unity

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

​​​​​​​ Resource的同步异步

Unity数据持久化 万物之源Resources动态资源加载_unity动态加载资源-CSDN博客

assetBundle的同步异步

Unity 热更新 之 一篇文章完全入门AssetBundle_unity assetbundle-CSDN博客

Addressable的同步异步 Unity热更新 之 Addressables(2) 本地/远端打包 流程测试_addressables 远程更新-CSDN博客

加载文件的几种方式

Unity 读取文本文档 方法总结_unity textasset-CSDN博客

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

布吉岛 我想到的是模拟光照效果

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

欧拉角Transform.eulerAngles

四元数Quaternion.Euler 或者直接乘四元数

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

LOD技术就是让一个模型有多种样式的 从低模到高模 可以在摄像机远的时候加载低模 优化性能,近则反之 通常玩家不可选

mimmap让我想起了我的世界,其不同程度等级可以控制纹理细节,玩家可选来优化游戏体验

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

布吉岛,网络还在入门 我一看答案 是TCP/IP的协议

相关推荐
freshman_y22 分钟前
Qt实现车载多媒体项目,包含天气、音乐、视频、地图、五子棋功能模块,免费下载源文件!
开发语言·qt
HelloZheQ1 小时前
Go:简洁高效,构建现代应用的利器
开发语言·后端·golang
悟能不能悟1 小时前
java实现一个操作日志模块功能,怎么设计
java·开发语言
Hxyle1 小时前
c++设计模式
开发语言·c++·设计模式
blammmp1 小时前
算法专题四:前缀和
java·开发语言·算法
www_pp_2 小时前
# 创建一个功能完备的计算器应用:使用PyQt5和Python
开发语言·python·qt
Aimyon_362 小时前
Java复习笔记-基础
java·开发语言·笔记
奥修的灵魂2 小时前
C#生成二维码和条形码
c#
androidwork2 小时前
Kotlin Android工程Mock数据方法总结
android·开发语言·kotlin
codefly-xtl3 小时前
责任链设计模式
java·开发语言·设计模式