Z
ZHANK
🎯

C# 面试题

3 道题 · 2 个模块

简单 2中等 1

基础语法

2
Q1.值类型和引用类型的区别?
简单
参考答案
| | 值类型 | 引用类型 |
|---|--------|---------|
| 存储 | 栈 | 堆(引用在栈) |
| 赋值 | 复制值 | 复制引用 |
| 默认值 | 0/false | null |
| 示例 | int, bool, struct | class, string, array |
| 可空 | int? | 本身可为 null |

csharp
int a = 10; int b = a; b = 20;  // a 还是 10
var obj1 = new MyClass(); var obj2 = obj1;  // 指向同一对象
Q2.LINQ 是什么?常用的 LINQ 方法?
简单
参考答案
LINQ(Language Integrated Query)是 C# 的查询语法,可查询集合、数据库、XML。

csharp
var result = from u in users
             where u.Age > 18
             orderby u.Name
             select u.Name;

// 方法语法(更常用)
var result = users
    .Where(u => u.Age > 18)
    .OrderBy(u => u.Name)
    .Select(u => u.Name)
    .ToList();

// 常用:Where, Select, OrderBy, GroupBy, First, Any, Count, Sum, Take, Skip

.NET 特性

1
Q1.async/await 的原理?Task 和 Thread 的区别?
中等
参考答案
`async/await` 基于状态机——遇到 `await` 时方法挂起,释放当前线程,IO 完成后从线程池取线程继续执行。

**Task vs Thread**:
- Thread 是 OS 线程,重量级,适合长时间 CPU 操作
- Task 在线程池上运行,轻量级,适合异步 IO
- async/await 不创建新线程——它释放线程去做别的事

csharp
async Task<string> FetchAsync() {
    var client = new HttpClient();
    return await client.GetStringAsync(url);
}