模拟面试题

1.装箱和拆箱是指什么?

        装箱——把栈中内容迁移到堆中去(值转引用)
        拆箱——把堆中内容迁移到栈中去(引用转值)

               

2.值和引用类型在变量赋值时的区别是什么?

        值类型:赋值时复制数据本身,每个变量拥有独立的数据副本,修改一个变量不会影响到其他变量。

        引用类型:赋值时复制引用,多个变量指向同一个数据对象,修改一个变量会影响到所有指向同一数据对象的变量。

3.委托和事件在使用上的区别是什么?
  • 委托可以直接调用被引用的方法,而事件只能通过发布者来触发。
  • 事件隐藏了委托的细节,提供了更加安全和易用的订阅和取消订阅接口。
  • 事件相对委托来说,事件在外部使用时只能 +=、-=。
4.有两个接口IA和IB,他们中有一个同名方法Test()一个类同时继承这两个接口,应该如何处理他们的同名方法?

        IA.Test();IB.Test();

5.请说明C#中的List是如何扩容的

        list的本质是动态数组,当创建时会有一个初始容量,如果当前的容量不足以容纳新元素,就会创建一个容量翻倍的数组将原始数组中的元素复制到新的数组中去。

6.Unity中点乘和叉乘对于我们来说的作用是什么?

        点乘用来判断一个点的大致方位以及计算两个向量之间的夹角

        叉乘用来判断两个向量的左右关系以及平面的法向量

7.请简述Unity中协程的原理

        Unity中的协同程序分为两部分
        1.协程函数本体(迭代器函数)
        2.协程调度器(协程管理器)
        协程利用迭代器函数的分步执行的特点
        加上
        协程调度器对迭代器函数们进行统一管理
        根据迭代器函数的返回值来决定下一次执行函数逻辑的时间点
        从而实现逻辑分时分步执行的目的

8.Unity底层如何处理C#代码?

1. Mono

  1. 概述

    • Mono 是 Unity 早期使用的运行时环境,也是一个跨平台的开源项目,提供了一套完整的实现了 .NET 标准的运行时环境和类库。

    • Unity 使用 Mono 来解释和执行编译后的 IL 代码,并提供了对 .NET 平台上的 API 的访问。

  2. 特点

    • 灵活性较高:Mono 运行时环境支持动态代码执行和反射等功能,使得 C# 代码具有较高的灵活性。

    • 开发者友好:Mono 提供了丰富的调试和性能分析工具,方便开发者进行代码调试和优化。

  3. 优势

    • 跨平台支持:Mono 可以在多个平台上运行,包括 Windows、macOS、Linux 和各种移动平台。

    • 实时脚本编译:Mono 支持实时脚本编译,允许开发者在编辑器中对脚本进行修改并立即看到效果。

2. IL2CPP(Intermediate Language to C++)

  1. 概述

    • IL2CPP 是 Unity 引入的新的运行时环境,它将 IL 代码编译成本地的 C++ 代码,然后再编译成本地机器码。

    • IL2CPP 的目标是提高游戏的运行性能和安全性,减少跨平台开发的难度。

  2. 特点

    • 高性能:IL2CPP 将 IL 代码编译成本地机器码,消除了 JIT 编译的开销,提高了游戏的性能。

    • 安全性:IL2CPP 生成的 C++ 代码可以在不支持 JIT 的平台上运行,提高了游戏的安全性和稳定性。

  3. 优势

    • 高性能:IL2CPP 生成的本地代码运行效率更高,尤其适用于需要较高性能的游戏。

    • 跨平台支持:IL2CPP 仍然保持了跨平台的特性,可以在多个平台上运行,包括移动平台和主流游戏主机。

总的来说,Mono 和 IL2CPP 是 Unity 中处理 C# 代码的两种主要方案。Mono 具有灵活性和开发者友好的特点,适用于大多数游戏开发场景;而 IL2CPP 则注重性能和安全性,适用于对性能要求较高的游戏项目。开发者可以根据项目需求和目标平台选择合适的方案。

11.请简要说明.Net跨语言原理

        .Net制定了了CLI公共语言基础结构的规则
        只要是按照该规则设计的语言在进行.Net相关开发时
        编译器会将源代码(C#、VB等等)编译为CIL通用中间代码。
        也就是说不管什么语言进行开发,最终都会统一规范变为中间代码
        最终通过CLR(公共语言运行时或者称为.Net虚拟)将中间代码翻译为对应操作系统的原生代码(机器码)在操作系统(Windows)上运行

12.请简要说明.Net跨平台原理

        由于.Net Framework中利用CLI和CLR实现了跨语言,CLR主要起到一个翻译、运行、管理中间代码的作用
        .Net Core和Mono就是利用了CLR的这一特点,为不同操作系统实现对应CLR(公共语言运行时或.Net虚拟机)
        那么不同操作系统对应的CLR就会将IL中间代码翻译为对应系统可以执行的原生代码(机器码)达到跨平台的目的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/13766.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Gitee在已有项目基础上创建仓库中遇到的问题和解决

问题一:fatal: remote origin already exists 解释:当前仓库添加了一个名为"origin"的远程仓库配置,此时输入 git remote add origin https://xxx就会提示上面的内容。 解决方案1:移除旧的origin git remote remove origin 解决方案…

C++——mapset红黑树

目录 一补充知识 1关联式容器 2键值对 二set 1set的介绍 2set的使用 三map 1map的说明 2map的使用 四容器在oj中的使用 五AVL树 1概念 2插入 3AVL的旋转 3.1右单旋 3.2左单旋 3.3左右双旋 3.4右左双旋 4判断AVL树是否平衡 完整源代码 六红黑树 1概念 2性…

紫光展锐突破创新终端品类,搭载展锐芯的全球首款二合一5G云电脑正式发布

近日,搭载紫光展锐5G芯片T760的中兴云电脑逍遥系列正式发布,亮点: 全球首款二合一5G云电脑,支持本地/云端双模式,一键切换,用户可同时享有Android平板和Windows云电脑两种形态;支持5G蜂窝网络&…

C++相关概念和易错语法(13)(string的模拟实现)

string由于存在字符串和单字符的概念,使得它的一些接口,实现要比vector多一些。本质上来看string的实现是在顺序表的基础上加入串相关的操作。下面我会分享如何模拟实现string,这可以进一步提高我们对string的熟练程度。 1.构造函数、拷贝构…

附代码:策略常用-正余弦优化算法

正余弦优化算法作为群智能优化算法的一种, 正弦余弦算法 (sine cosine algorithm, SCA) 是 2016 年由 Mirjalili 提出的一种新型仿自然优化算法, 通过创建多个随机候选解, 利用正余弦函数的数学性质来平衡算法在搜系过程中的全局探索和局部开发能力。该算法具有结构简单、参数少…

docker三种自定义网络(虚拟网络) overlay实现原理

docker提供了三种自定义网络驱动:bridge、overlay、macvlan。 bridge驱动类似默认的bridge网络模式。 overlay和macvlan是用于创建跨主机网络。 支持自定义网段、网关,docker network create --subnet 172.77.0.0/24 --gateway 172.77.0.1 my_n…

PPT大珩助手新功能-生成迷宫

大珩助手是一款功能丰富的办公软件插件,它主要分为两个版本:PPT大珩助手和Word大珩助手。这两个版本都旨在提高用户在处理演示文稿和文档时的效率。 PPT大珩助手 这是一款专门为Microsoft PowerPoint设计的插件。它提供了多种功能,例如素材…

盲人社区生活支持体系:织就一张温暖的网

在当今社会,构建一个全面、包容的盲人社区生活支持体系成为了推动社会进步、保障残障人士权益的重要议题。随着科技的不断革新,一款名为“蝙蝠避障”的辅助软件走进了盲人的日常生活,它如同一位无形的向导,通过实时避障与拍照识别…

element DatePicker 日期选择器设置禁用未来日期,时间范围为60天

需要用到 DatePicker 里面的 picker-options 方法 disabledDate onPick方法 <el-date-pickerv-model"form.xxxx"type"daterange"value-format"yyyy-MM-dd":clearable"false":picker-options"pickerOptions"start-placeho…

运行Android项目时,提示错误: 程序包javax.annotation.processing不存在

今天在运行项目时提示错误: 错误: 程序包javax.annotation.processing不存在 import javax.annotation.processing.Generated; 最后是修改了Android Studio的JDK的路径修改为你安装的JDK路径&#xff0c;完成的修复&#xff1a;

5.23 Linux中超时检测方式+模拟面试

1.IO多路复用的原理&#xff1f; IO多路复用使得一个或少量线程资源处理多个连接的IO事件的技术。对于要处理的多个阻塞的IO操作&#xff0c;建立集合并存储它们的文件描述符&#xff0c;利用单个阻塞函数去监控集合中文件描述符事件到达的情况&#xff0c;&#xff08;如果到…

cPanel中如何移除之前添加的域名

我这边想要移除我之前绑定到主机的域名&#xff0c;但是不知道如何在主机上面进行移除&#xff0c;由于我使用的Hostease的Linux虚拟主机产品默认带普通用户权限的cPanel面板&#xff0c;但是不知道如何在cPanel上操作移除域名&#xff0c;因为也是对于Hostease主机产品不是很了…

Linux磁盘高级操作

RAID RAID存储系统是一种数据存储虚拟化技术&#xff0c;它将多个物理磁盘驱动器组合成一个或多个逻辑单元&#xff0c;以提供数据冗余和/或提高性能。 1. RAID 0 无奇偶校验与冗余&#xff08;磁盘容错&#xff09;的条带存储&#xff08;带区卷/条带卷&#xff09; 由两块…

基于windows通过kind部署轻量级便携式k8s集群

感谢老师的视频教程&#xff1a; 基于windows通过kind部署轻量级便携式k8s集群 wsl windows下的linux wsl --set-default-version 2 wsl --help wsl --list --online wsl --install -d Ubuntu wsl -l -v &#xff08;看看版本是不是2&#xff0c;否则docker那边识别不到&…

从零开始:在线教育系统源码与知识付费小程序开发指南

开发一个功能完善的在线教育系统和知识付费小程序并不是一件简单的事情。今天&#xff0c;小编将从零开始&#xff0c;详细介绍如何开发在线教育系统和知识付费小程序。 一、需求分析与系统设计 在开始编写代码之前&#xff0c;首先需要进行需求分析和系统设计。这一步非常关键…

汽车摄像头智能画质增强解决方案,高品质车载视觉系统

在数字化与智能化浪潮的推动下&#xff0c;汽车行业正经历着一场前所未有的技术革命。其中&#xff0c;车载摄像头作为智能驾驶与安防监控的核心部件&#xff0c;其画质的高低直接关系到行车安全与驾驶体验。美摄科技&#xff0c;作为行业领先的智能图像技术解决方案提供商&…

机器学习圣经PRML作者Bishop推出重磅教材

图1 书籍《Pattern Recognition and Machine Learning》 只要学人工智能的人&#xff0c;必然学机器学习。 只要学机器学习的人&#xff0c;必然看PRML。 PRML为何物&#xff1f; PRML全名《Pattern Recognition and Machine Learning》&#xff0c;一部机器学习领域的内功…

数据库系列之MySQL数据库中内存使用分析

在实际系统环境中&#xff0c;MySQL实例的内存使用随着业务的增长缓慢增长&#xff0c;有些时候并没有及时的释放。本文简要介绍下MySQL数据库中和内存相关的配置&#xff0c;以及分析内存的实际使用情况&#xff0c;以进行应急和调优处理。 1、MySQL内存结构 在MySQL中内存的…

MySQL索引和视图

MySQL索引和视图是关系型数据库MySQL中的两个重要概念。索引用于优化数据库的查询性能&#xff0c;而视图用于提供一个逻辑上的表结构&#xff0c;方便用户查询和操作数据。 索引是一种数据结构&#xff0c;可以加速对数据库表中的数据进行查询的速度。通过创建索引&#xff0…

激光雷达SLAM算法综述

大家好呀&#xff0c;我是一个SLAM方向的在读博士&#xff0c;深知SLAM学习过程一路走来的坎坷&#xff0c;也十分感谢各位大佬的优质文章和源码。随着知识的越来越多&#xff0c;越来越细&#xff0c;我准备整理一个自己的激光SLAM学习笔记专栏&#xff0c;从0带大家快速上手激…