🎯
C# 面试题
3 道题 · 2 个模块
简单 2中等 1
基础语法
2 题Q1.值类型和引用类型的区别?简单
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 方法?简单
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 的区别?中等
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);
}