MIL5——模拟面试题
MIL5——模拟面试题
问题
C#
以下代码,谁的效率更高?为什么?
123456789101112//代码1:List<int> list = new List<int>();for (int i = 0; i < 50; i++){ list.Add(i);}//代码2:List<int> list2 = new List<int>(50);for (int i = 0; i < 50; i++){ list2.Add(i);}
数组和链表的区别是什么?
C# 中的 Action 和 Func 是什么?Unity 中的 UnityAction 是什么?他们有什么区别?
请问最终的打印结果是什么?
123456public struct Record{ public int id; public string name; public int[] children;}
123456public void Do ...
MIL4——模拟面试题
MIL4——模拟面试题
问题
C#
请说明字符串中 string str = null、string str = ""、string str = string.Empty 三者的区别
C# 重载运算符,重载 == 和 != 以及 万物之父 object 基类中的虚方法 virtual bool Equals(Object obj) 对于我们的意义是什么?
在开发时,对 string 和 StringBuilder 我们应该如何选择
请简要说明 .NET 跨语言原理
请简要说明 .NET 跨平台原理
Unity
Unity中的 Destroy 和 DestroyImmediate 的区别是什么?
请问最终打印的 s 的结果为?
123456789101112string s = string.Empty;GameObject go = new GameObject();DestroyImmediate(go)if (!go) s += "A";if (go is null) s += "B ...
MIL3——模拟面试题
MIL3——模拟面试题
问题
C#
泛型的约束有哪几种?
什么是闭包?可以举例说明
内存泄漏指什么?常见的内存泄漏有哪些?
序列化是什么?常见的序列化方式有哪些?什么时候我们会用到序列化?
请问A、B、C 三处打印结果分别为多少?为什么?
1234567891011121314151617181920212223242526272829static unsafe void Main(string[] args){ int test1Value = 10; Test1(test1Value); Console.WriteLine($"A:{test1Value}"); int test2Value = 10; Test2(&test1Value); Console.WriteLine($"A:{test2Value}"); int test3Value = 10; Test3(ref test3Value); Con ...
MIL2——模拟面试题
MIL2——模拟面试题
问题
C#
请说说你认为 C# 中 == 和 Equals 的区别是什么?
浅拷贝和深拷贝的区别? 可以举例说明
下面两种获取10000个数的方式,哪种效率更高?为什么
12345678910List<int> list = new List<int>();for (int i = 0; i < 10000; i++){ list.Add(i);}float[] array = new float[10000];for (int i = 0; i < 10000; i++){ array[i] = i;}
现在有如下代码:
12345678910111213141516171819static void Main(string[] args){ int i = GetInt(); Console.WriteLine($"第A处 i = {i}");}static int GetIn ...
CS2L6——函数基础
CS2L6——函数基础
本章代码关键字
1return //可以结束函数的执行,并返回其后边的值给外部
函数(方法)
函数(方法)本质是一块具有名称的代码块,可以使用函数(方法)的名称来执行该代码块。
函数(方法)是封装代码进行重复使用的一种机制
函数(方法)的主要作用:
封装代码
提升代码复用率
抽象化行为
例如,Main 就是一个函数,在程序启动时调用,为程序的起点,
其中 Console.WriteLine() 就是调用的 Console 类中的 WriteLine() 函数
1234static void Main(string[] args){ Console.WriteLine("函数")}
函数写在 class 或者 struct 里,return 可以提前结束函数逻辑 程序是线性执行的
函数写在哪里
一定写在 class 语句块 和 struct 语句块中!!!
函数基本语法
12345678910//1 2 3 4static 返回类型 函数名 (参数类型 ...
CS2L5——特殊的引用类型string
CS2L5——特殊的引用类型string
回顾值类型与引用类型
引用类型:string 数组 类(未学习)
值类型:其他类型 结构体(未学习)
值类型 在相互赋值时 把内容拷贝给了对方 它变我不变
引用类型 在相互赋值时 是 让两者指向同一个值 它变我也变
为什么有这样的区别
值类型和引用类型 存储在内存的区域是不同的 存储方式是不同的
值类型 存储在 栈空间 —— 系统分配,自动回收,小而快
引用类型 存储在 堆空间 —— 手动申请和释放,大而慢,引用类型的地址存储在栈空间里,地址指向堆空间里的数据
特殊的引用类型string
因为 string 是引用类型 按理说 应该是“它变我也变”,
但是 C# 做了特别处理,让 string 非常的特殊 它具备 值类型的特征 即“它变我不变”
12345string str1 = "123";string str2 = str1;str2 = "321";Console.WriteLine(str1);Console.WriteLine(str2);
输出:
12123321
在 st ...
CS2L4——值类型和引用类型
CS2L4——值类型和引用类型
变量类型的复习
基本数据类型
//1、有符号的整形变量 能存储一定范围内的正负数包括0的变量类型
sbyte sb = 1; // -128~127
int i = 1; // -21亿~21亿
short s = 1; // -32768~32767
long l = 1; // -九百万兆~九百万兆
//2、无符号的整型变量 能存储一定范围内0和正数的变量类型
byte b = 1; // 0~255
uint ui = 1; // 0~42亿
ushort us = 1; // 0~65535
ulong ul = 1; // 0~18百万兆
//3、浮点数(小数)
float f = 0.1f; // 数字后必须加f声明float,因为小数会被默认为double,从非0数算起为有效数字,7/8位有效数字,根据编译器不同有可能不同,超出部分会四舍五入
double d = 0.1; // 从非0数算起为有效数字,15~17位有效数字,超出部分会四舍五入
decimal de = 0.1 ...
CS5L13-3——使用分组统计出现频率
CS5L13-3——使用分组统计出现频率
本章代码关键字
12345group ... by ... into ... //第一个空传入集合中的单个元素,第二个空传入分组依据(表达式),第三空为分组得到某个组集合,后续可以使用IEnumerable<>.GroupBy() //传入分组方法,对集合进行分组,返回分组出来的集合IEnumerable<>.Select() //传入选择方法,返回一个新集合IEnumerable<>.ToDictionary() //传入两个方法,一个是获取键的方法,一个是获取值的方法,根据这两个方法将集合转换为字典
统计频率
假设有一个长度为200的数组,其中值是随机的,范围在0到19之间
1234Random random = new Random(1334); //使用种子使数组内部的值是唯一的var arr = new int[200];for (int i = 0; i < arr.Length; i++) arr[i] = ...
CS5L13-2——求两个数据集合的交集
CS5L13-2——求两个数据集合的交集
本章代码关键字
1IEnumerable<>.Intersect() //传入另一个集合,返回该集合和传入的集合的交集
交集
假设有两个数组,求两个数组的交集
123//假设有两个数组,求两个数组的交集int[] arr1 = new int[] { 1, 2, 3, 4, 5, 6 };int[] arr2 = new int[] { 4, 5, 6, 7, 8, 9 };
不使用LINQ
12345678910private static void Normal2(int[] arr1, int[] arr2){ Console.WriteLine("不使用LINQ"); var result = new List<int>(); foreach (var i in arr1) if (arr2.Contains(i)) result.Add(i); foreach (var ...
CS5L13-1——筛选和排序
CS5L13-1——筛选和排序
本章代码关键字
123456789//查询表达式from ... in ... //从某个集合内选出单个元素where //筛选,后跟和集合内单个元素相关的条件表达式orderby //排序。后跟要排序的单个元素select //将单个元素放入到新集合内//链式表达式IEnumerable<> //公开枚举数,该枚举数支持在指定类型的集合上进行简单迭代IEnumerable<>.Where() //筛选,需要传入条件表达式,可以使用lambda表达式IEnumerable<>.OrderBy() //排序
用LINQ来筛选和排序
假设有一个列表,要筛选出里面的所有的偶数,且大于等于4的数据,再对挑选出来的数字进行排序,最后打印出来
1234//假设有一个列表List<int> list ...