794 lines
14 KiB
Markdown
794 lines
14 KiB
Markdown
|
|
# CSharp 复习题库(分层练习)
|
|||
|
|
|
|||
|
|
> 使用方式:每题都在“你的作答”填写答案;“批改区”由我批改后填写。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 入门(16题)
|
|||
|
|
|
|||
|
|
### 入门-1 [选择]
|
|||
|
|
C# 源文件常见扩展名是:A. `.cs` B. `.csharp` C. `.dotnet` D. `.clr`
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
A
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
- 结果:✅ 正确
|
|||
|
|
- 参考答案:A
|
|||
|
|
|
|||
|
|
### 入门-2 [选择]
|
|||
|
|
`Main` 方法作为入口,正确签名之一是:A. `void main()` B. `static void Main(string[] args)` C. `public Main()` D. `int Main(void)`
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
B
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
- 结果:✅ 正确
|
|||
|
|
- 参考答案:B
|
|||
|
|
|
|||
|
|
### 入门-3 [选择]
|
|||
|
|
下列哪个是值类型:A. `string` B. `object` C. `int` D. `Array`
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
C
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
- 结果:✅ 正确
|
|||
|
|
- 参考答案:C
|
|||
|
|
|
|||
|
|
### 入门-4 [选择]
|
|||
|
|
`var x = 10;` 中 `x` 的编译期类型是:A. `dynamic` B. `object` C. `int` D. `long`
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
C
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
- 结果:✅ 正确
|
|||
|
|
- 参考答案:C
|
|||
|
|
|
|||
|
|
### 入门-5 [选择]
|
|||
|
|
输出到控制台应使用:A. `Console.ReadLine` B. `Console.WriteLine` C. `Console.Open` D. `Console.Print`
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
B
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
- 结果:✅ 正确
|
|||
|
|
- 参考答案:B
|
|||
|
|
|
|||
|
|
### 入门-6 [填空]
|
|||
|
|
用于单行注释的符号是 `____`
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
`//`
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
- 结果:✅ 正确
|
|||
|
|
- 参考答案:`//`
|
|||
|
|
|
|||
|
|
### 入门-7 [填空]
|
|||
|
|
`if` 条件表达式的结果类型必须是 `____`
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
`bool`
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
- 结果:✅ 正确
|
|||
|
|
- 参考答案:`bool`
|
|||
|
|
|
|||
|
|
### 入门-8 [填空]
|
|||
|
|
将字符串 `"123"` 转 `int`,可用 `int.Parse("123")` 或 `____("123", out n)`
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
`Convert.Int32("123", out n)`
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
- 结果:❌ 错误
|
|||
|
|
- 参考答案:`int.TryParse("123", out n)`
|
|||
|
|
- 说明:`Convert.ToInt32` 没有 `out` 参数;带 `out` 的是 `TryParse`。
|
|||
|
|
|
|||
|
|
### 入门-9 [判断]
|
|||
|
|
`const` 字段的值可以在运行时修改。对/错
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
错
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
- 结果:✅ 正确
|
|||
|
|
- 参考答案:错
|
|||
|
|
|
|||
|
|
### 入门-10 [判断]
|
|||
|
|
`string` 在 C# 中是引用类型。对/错
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
对
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
- 结果:✅ 正确
|
|||
|
|
- 参考答案:对
|
|||
|
|
|
|||
|
|
### 入门-11 [代码结果]
|
|||
|
|
写出输出:
|
|||
|
|
|
|||
|
|
```csharp
|
|||
|
|
int a = 5;
|
|||
|
|
int b = 2;
|
|||
|
|
Console.WriteLine(a / b);
|
|||
|
|
Console.WriteLine(a / 2.0);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
`2`
|
|||
|
|
`1.0`
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
- 结果:❌ 错误
|
|||
|
|
- 参考答案:
|
|||
|
|
```text
|
|||
|
|
2
|
|||
|
|
2.5
|
|||
|
|
```
|
|||
|
|
- 说明:`a / b` 是整数除法,结果为 `2`。
|
|||
|
|
|
|||
|
|
### 入门-12 [代码改错]
|
|||
|
|
修复下面代码使其可编译:
|
|||
|
|
|
|||
|
|
```csharp
|
|||
|
|
Console.Writeline("Hello")
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
```csharp
|
|||
|
|
Console.Writeline("Hello");
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
- 结果:❌ 错误
|
|||
|
|
- 参考答案:
|
|||
|
|
```csharp
|
|||
|
|
Console.WriteLine("Hello");
|
|||
|
|
```
|
|||
|
|
- 说明:`WriteLine` 中 `L` 需要大写。
|
|||
|
|
|
|||
|
|
### 入门-13 [简答]
|
|||
|
|
`==` 与 `Equals` 的常见区别是什么(1-2句话)
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
`Equals` 可以用于更复杂判断,`==` 只比较值。
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
- 结果:⚠️ 部分正确
|
|||
|
|
- 参考要点:
|
|||
|
|
- `==` 是运算符,可被重载;不同类型语义可能不同。
|
|||
|
|
- `Equals` 是方法(实例/静态),常用于值相等判断。
|
|||
|
|
- 对 `string` 来说,`==` 比较的是内容(被重载),不是引用地址。
|
|||
|
|
|
|||
|
|
### 入门-14 [编程]
|
|||
|
|
从控制台读取姓名和年龄,输出:`你好,张三,你明年 19 岁。`
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
```csharp
|
|||
|
|
string name = Console.Readline();
|
|||
|
|
int age = int.Parse(Console.Readline());
|
|||
|
|
Console.WriteLine($"你好,{name},你明年 {age} 岁。");
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
- 结果:❌ 错误
|
|||
|
|
- 参考答案:
|
|||
|
|
```csharp
|
|||
|
|
string name = Console.ReadLine();
|
|||
|
|
int age = int.Parse(Console.ReadLine()!);
|
|||
|
|
Console.WriteLine($"你好,{name},你明年 {age + 1} 岁。");
|
|||
|
|
```
|
|||
|
|
- 说明:`ReadLine` 大小写错误,且“明年”应输出 `age + 1`。
|
|||
|
|
|
|||
|
|
### 入门-15 [编程]
|
|||
|
|
输入一个整数,判断奇偶并输出 `odd/even`
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
```Csharp
|
|||
|
|
int value = int.Parse(Console.ReadLine());
|
|||
|
|
if( value%2 != 0 )
|
|||
|
|
{
|
|||
|
|
Console.WriteLine("odd");
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
Console.WriteLine("even");
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
- 结果:❌ 错误
|
|||
|
|
- 主要问题:`int.TryParse(...)` 返回 `bool`,不能直接赋给 `int`
|
|||
|
|
- 参考答案:
|
|||
|
|
```csharp
|
|||
|
|
if (int.TryParse(Console.ReadLine(), out int value))
|
|||
|
|
Console.WriteLine(value % 2 == 0 ? "even" : "odd");
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 入门-16 [编程]
|
|||
|
|
输入三个整数,输出最大值
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
```Csharp
|
|||
|
|
int[] value;
|
|||
|
|
int maxValue = 0;
|
|||
|
|
value[0] = int.Parse(Console.ReadLine());
|
|||
|
|
value[1] = int.Parse(Console.ReadLine());
|
|||
|
|
value[2] = int.Parse(Console.ReadLine());
|
|||
|
|
for(int i = 0;i<2;i++)
|
|||
|
|
{
|
|||
|
|
if(value[i]>=value[i+1])
|
|||
|
|
{
|
|||
|
|
maxValue = value[i];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
Console.WriteLine(maxValue);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
- 结果:❌ 错误
|
|||
|
|
- 主要问题:数组未初始化
|
|||
|
|
- 参考答案:
|
|||
|
|
```csharp
|
|||
|
|
int a = int.Parse(Console.ReadLine()!);
|
|||
|
|
int b = int.Parse(Console.ReadLine()!);
|
|||
|
|
int c = int.Parse(Console.ReadLine()!);
|
|||
|
|
int maxValue = Math.Max(a, Math.Max(b, c));
|
|||
|
|
Console.WriteLine(maxValue);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
## 基础(18题)
|
|||
|
|
|
|||
|
|
### 基础-1 [选择]
|
|||
|
|
`for` 循环最适合:A. 已知次数迭代 B. 无限循环 C. 异常处理 D. 命名空间管理
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
A
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
- 结果:✅ 正确
|
|||
|
|
- 参考答案:A
|
|||
|
|
|
|||
|
|
### 基础-2 [选择]
|
|||
|
|
`break` 在循环中的作用是:A. 跳过本次 B. 结束当前循环 C. 结束程序 D. 重启循环
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
B
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
- 结果:✅ 正确
|
|||
|
|
- 参考答案:B
|
|||
|
|
|
|||
|
|
### 基础-3 [选择]
|
|||
|
|
`continue` 的作用是:A. 结束方法 B. 退出程序 C. 跳过本次迭代 D. 抛出异常
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
C
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
- 结果:✅ 正确
|
|||
|
|
- 参考答案:C
|
|||
|
|
|
|||
|
|
### 基础-4 [选择]
|
|||
|
|
数组声明正确的是:A. `int arr = new int[3]` B. `int[] arr = new int[3]` C. `array<int> arr` D. `int arr[] = 3`
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
B
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
- 结果:✅ 正确
|
|||
|
|
- 参考答案:B
|
|||
|
|
|
|||
|
|
### 基础-5 [选择]
|
|||
|
|
`List<T>` 位于命名空间:A. `System.Text` B. `System.Collections.Generic` C. `System.Linq.Expressions` D. `System.IO`
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
B
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
- 结果:✅ 正确
|
|||
|
|
- 参考答案:B
|
|||
|
|
|
|||
|
|
### 基础-6 [填空]
|
|||
|
|
定义一个可空整型变量:`int____ x = null;`
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
?
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
- 结果:✅ 正确
|
|||
|
|
- 参考答案:`?`
|
|||
|
|
|
|||
|
|
### 基础-7 [填空]
|
|||
|
|
声明并初始化字典:`Dictionary<string,int> d = new ____();`
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
`Dictionary<string,int>
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
- 结果:✅ 正确
|
|||
|
|
- 参考答案:`Dictionary<string,int>`
|
|||
|
|
- 说明:你填的类型名是对的,只是 Markdown 里的反引号没闭合。
|
|||
|
|
|
|||
|
|
### 基础-8 [填空]
|
|||
|
|
捕获异常的关键字是 `____`
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
try和catch
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
- 结果:⚠️ 部分正确
|
|||
|
|
- 参考答案:`catch`
|
|||
|
|
- 说明:`try` 用来包裹可能抛异常的代码,真正负责捕获异常的是 `catch`。
|
|||
|
|
|
|||
|
|
### 基础-9 [填空]
|
|||
|
|
释放非托管资源常用模式:实现 `____` 接口
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 基础-10 [代码结果]
|
|||
|
|
写出输出:
|
|||
|
|
|
|||
|
|
```csharp
|
|||
|
|
for (int i = 0; i < 5; i++)
|
|||
|
|
{
|
|||
|
|
if (i == 2) continue;
|
|||
|
|
if (i == 4) break;
|
|||
|
|
Console.Write(i);
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 基础-11 [代码结果]
|
|||
|
|
写出输出:
|
|||
|
|
|
|||
|
|
```csharp
|
|||
|
|
string s = null;
|
|||
|
|
Console.WriteLine(s?.Length ?? -1);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 基础-12 [改错]
|
|||
|
|
找出并修复问题:
|
|||
|
|
|
|||
|
|
```csharp
|
|||
|
|
int[] nums = {1,2,3};
|
|||
|
|
Console.WriteLine(nums[3]);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 基础-13 [简答]
|
|||
|
|
`throw;` 和 `throw ex;` 的差异是什么
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 基础-14 [编程]
|
|||
|
|
用 `while` 计算 `1..n` 的和(n 从输入读取)
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 基础-15 [编程]
|
|||
|
|
统计一个字符串中元音字母个数(忽略大小写)
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 基础-16 [编程]
|
|||
|
|
手写一个方法 `bool IsPrime(int n)`
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 基础-17 [编程]
|
|||
|
|
使用 `List<int>` 去重并升序输出
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 基础-18 [编程]
|
|||
|
|
使用 `Dictionary<string,int>` 统计一句话中每个单词出现次数
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 核心(18题)
|
|||
|
|
|
|||
|
|
### 核心-1 [选择]
|
|||
|
|
面向对象三大特性不包括:A. 封装 B. 继承 C. 多态 D. 事务
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 核心-2 [选择]
|
|||
|
|
`virtual` + `override` 用于:A. 字段隐藏 B. 运行时多态 C. 命名空间引用 D. 泛型约束
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 核心-3 [选择]
|
|||
|
|
`abstract` 类:A. 可直接实例化 B. 不能包含实现 C. 不能被继承 D. 不能直接实例化
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 核心-4 [选择]
|
|||
|
|
`interface` 成员默认:A. private B. protected C. public 合同 D. internal
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 核心-5 [选择]
|
|||
|
|
泛型约束 `where T : class` 的含义是:A. 值类型 B. 引用类型 C. 必须有无参构造 D. 必须实现 IDisposable
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 核心-6 [填空]
|
|||
|
|
声明一个自动属性:`public int Age { ____; ____; }`
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 核心-7 [填空]
|
|||
|
|
只读自动属性常见写法:`public string Id { get; ____; }`
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 核心-8 [填空]
|
|||
|
|
委托声明关键字是 `____`
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 核心-9 [填空]
|
|||
|
|
事件订阅语法:`publisher.SomeEvent ____ Handler;`
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 核心-10 [代码阅读]
|
|||
|
|
输出是什么:
|
|||
|
|
|
|||
|
|
```csharp
|
|||
|
|
class A { public virtual void M() => Console.Write("A"); }
|
|||
|
|
class B : A { public override void M() => Console.Write("B"); }
|
|||
|
|
A x = new B();
|
|||
|
|
x.M();
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 核心-11 [代码阅读]
|
|||
|
|
输出是什么:
|
|||
|
|
|
|||
|
|
```csharp
|
|||
|
|
int Add(int a, int b = 10) => a + b;
|
|||
|
|
Console.WriteLine(Add(5));
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 核心-12 [改错]
|
|||
|
|
指出并修复:
|
|||
|
|
|
|||
|
|
```csharp
|
|||
|
|
interface IRun { void Go() { Console.WriteLine("go"); } }
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 核心-13 [简答]
|
|||
|
|
`override` 与 `new` 隐藏成员的行为区别
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 核心-14 [简答]
|
|||
|
|
什么时候用接口,什么时候用抽象类(简述判断标准)
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 核心-15 [编程]
|
|||
|
|
设计 `Shape` 抽象类,派生 `Circle/Rectangle`,实现 `GetArea()`
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 核心-16 [编程]
|
|||
|
|
实现泛型方法 `Swap<T>(ref T a, ref T b)`
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 核心-17 [编程]
|
|||
|
|
定义一个 `event EventHandler<DataEventArgs>`,在数据变化时触发
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 核心-18 [编程]
|
|||
|
|
实现一个只读集合包装(对外不可修改,内部可维护)
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 进阶(18题)
|
|||
|
|
|
|||
|
|
### 进阶-1 [选择]
|
|||
|
|
`async/await` 中,`await` 作用是:A. 创建线程 B. 异步等待任务完成 C. 阻塞 UI 线程 D. 强制并行
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 进阶-2 [选择]
|
|||
|
|
表示“一个无返回值异步操作”的常用返回类型:A. `void` B. `Task` C. `object` D. `Result`
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 进阶-3 [选择]
|
|||
|
|
LINQ 中用于投影的操作符:A. `Where` B. `Select` C. `Any` D. `Count`
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 进阶-4 [选择]
|
|||
|
|
延迟执行是 LINQ 的常见特性之一,以下通常会立即执行的是:A. `Where` B. `Select` C. `ToList` D. `OrderBy`
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 进阶-5 [选择]
|
|||
|
|
`using` 语句主要用于:A. 导入命名空间 B. 自动释放资源 C. 定义别名 D. 启动任务
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 进阶-6 [填空]
|
|||
|
|
声明取消令牌源:`var cts = new ____();`
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 进阶-7 [填空]
|
|||
|
|
正则匹配常用类型:`System.Text.RegularExpressions.____`
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 进阶-8 [填空]
|
|||
|
|
线程安全递增可用:`Interlocked.____(ref x);`
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 进阶-9 [填空]
|
|||
|
|
文件全部文本读取:`File.____(path)`
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 进阶-10 [代码结果]
|
|||
|
|
写出输出:
|
|||
|
|
|
|||
|
|
```csharp
|
|||
|
|
var nums = new[] {1,2,3,4,5};
|
|||
|
|
var q = nums.Where(x => x % 2 == 1).Select(x => x * x);
|
|||
|
|
Console.WriteLine(string.Join(",", q));
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 进阶-11 [代码结果]
|
|||
|
|
判断是否死锁风险并说明一句原因:
|
|||
|
|
|
|||
|
|
```csharp
|
|||
|
|
Task.Run(async () => { await Task.Delay(100); }).Wait();
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 进阶-12 [简答]
|
|||
|
|
`Task.WhenAll` 与顺序 `await` 的区别
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 进阶-13 [简答]
|
|||
|
|
`IEnumerable<T>` 与 `IQueryable<T>` 的核心差异
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 进阶-14 [编程]
|
|||
|
|
异步读取文本文件并统计行数,支持取消(`CancellationToken`)
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 进阶-15 [编程]
|
|||
|
|
用 LINQ 完成:给定学生列表,按班级分组后求每组平均分并降序输出
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 进阶-16 [编程]
|
|||
|
|
实现一个简单缓存 `MemoryCache<TKey,TValue>`(带过期时间)
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 进阶-17 [编程]
|
|||
|
|
写一个扩展方法 `IsNullOrEmptyEx(this string? s)`
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|
|||
|
|
|
|||
|
|
### 进阶-18 [编程]
|
|||
|
|
设计一个可并发调用的计数器类,要求线程安全
|
|||
|
|
|
|||
|
|
**你的作答**
|
|||
|
|
(待填写)
|
|||
|
|
|
|||
|
|
**批改区**
|
|||
|
|
(待批改)
|